XML schema changes

Changes in UK versions of R2.0.8 and R2.0.9 schemas

The following changes have been made in R2.0.8.UK1, R2.0.9.UK1 and XSLT 1 compared with the previous Find a Tender versions, R2.0.8.S05, R2.0.9.S04 and XSLT 037.

1. XSLT validation updates


(a) URL format

R2.0.8 rule R103 and R2.0.9 rule R125 will require URLs to match the regex pattern (((http|HTTP|https|HTTPS|ftp|FTP|ftps|FTPS|sftp|SFTP)://)|((w|W){3}(\d)?.))[\w?!./:;,-_=#+*%@"()&]+

(b) Award value must be less than or equal to maximum tender value

Severity of rule R2.0.8 and R2.0.9 rule R619 increased from WARNING to ERROR. Same update made by TED.

(c) Maximum number of lots a supplier can bid for is not more than the total number of lots (R2.0.9 only)

Severity of R2.0.9 rule R378 increased from WARNING to ERROR.

(d) Remove unsupported F20 legal bases (R2.0.9 only)

Code of R2.0.9 rule R118 updated removing legal bases 32007R1370 (transport) and 32009L0081 (defence). Same update made by TED.

(e) Previous notice number required if there is a previous notice (R2.0.8 only)

Severity of rule R2.0.8 rule R197 increased from INFO to ERROR, and code updated. Same update made by TED.

(f) Warn if descriptions are the same as titles (R2.0.9 only) - not an error in this version

New rules V001 and V002 added with severity WARNING. This may be increased to ERROR in a future version to improve data quality. The fields and XML elements being compared are:

  • II.1.1. Title (OBJECT_CONTRACT/TITLE)
  • II.1.4. Short description (OBJECT_CONTRACT/SHORT_DESCR)
  • II.2.4. Description of the procurement (OBJECT_CONTRACT/OBJECT_DESCR/SHORT_DESCR)

These rules are not applied to F14 or F20 notices so that their titles and descriptions can be as stated in the original notices.

2. Require publication number of previous notice in F14

In F14 notices, the COMPLEMENTARY_INFO/NOTICE_NUMBER_OJ publication number of the notice being corrected is now mandatory. Find a Tender does not have access to the NO_DOC_EXT number of notices published on TED, so requires the publication number in all cases to provide a link to the original notice.

3. Add more T01 procedure types

In T01 notices, additional procedure types are now allowed in addition to the existing list, by using the following XML elements in PROCEDURE:

  • PT_REQUEST_EXPRESSION_INTEREST - Request for expression of interest - only for rail
  • PT_DA_EXCEPTIONAL_CIRCUMSTANCE_RAIL - Direct award, if justified by exceptional circumstances - only for rail
  • PT_DA_MARKET_NETWORK_RAIL - Direct award, if justified by relevant structural and geographical characteristics of the market and the network - only for rail
  • PT_DA_OPERATOR_MANAGER_RAIL - Direct award, to an operator which manages simultaneously the entire or the major part of the railway infrastructure on which the services are provided - only for rail

Same update made by TED.

4. Add previous notice fields to allow linking back to pipeline notices

The following forms now allow linking back to pipeline notices where relevant:

  • F01
    • prior information only
    • reducing time limits
    • call for competition
  • F04
    • periodic indicative only
    • reducing time limits
    • call for competition
  • F16
  • F21
    • prior information notice
  • F22
    • periodic indicative only

The R2.0.9 schema forms include the XML element PROCEDURE/NOTICE_NUMBER_OJ as already used by other forms in that schema.

F16 uses the following structure:

<PROCEDURE_DEFINITION_PRIOR_INFORMATION>
  <ADMINISTRATIVE_INFORMATION_PRIOR_INFORMATION>
    <PREVIOUS_PUBLICATION_INFORMATION_NOTICE_F16>
      <PREVIOUS_PUBLICATION_EXISTS_F16>
        <PREVIOUS_PUBLICATION_NOTICE_F16>
          <PRIOR_INFORMATION_NOTICE_F16 CHOICE="UK1"/>
          <NOTICE_NUMBER_OJ>2022/S 000-123456</NOTICE_NUMBER_OJ>
        </PREVIOUS_PUBLICATION_NOTICE_F16>
      </PREVIOUS_PUBLICATION_EXISTS_F16>
    </PREVIOUS_PUBLICATION_INFORMATION_NOTICE_F16>
  </ADMINISTRATIVE_INFORMATION_PRIOR_INFORMATION>
</PROCEDURE_DEFINITION_PRIOR_INFORMATION>

5. Remove unsupported legal bases

The following LEGAL_BASIS values have been removed from the R2.0.9 schema:

  • 32015R0323 - Regulation (EU) 2015/323
  • 32016D0002 - Decision (EU) 2016/245
  • 32018R1046 - Regulation (EU, Euratom) 2018/1046

6. Add field for buyer/supplier ID register - optional in this version

XML elements have been added to both R2.0.8 and R2.0.9 schemas alongside NATIONALID to indicate which register an ID is taken from. This has been done for:

  • Buyer
  • Additional buyer
  • Supplier
  • Shareholder (T02 only)

This has NOT been done for:

  • Additional info address
  • Specifications address (F17/F19 only)
  • Tender address
  • Tax info service (F16 only)
  • Environmental protection info service (F16 only)
  • Employment protection info service (F16 only)
  • Review body
  • Mediation body
  • Review info service

The additional elements are:

  • REGISTER - Code for register from controlled list
  • REGISTER_OTHER - Free text register name
  • JUSTIFICATION - Justification for not providing an organisation register/identifier

Exactly one new element may optionally be included. NATIONALID must be included with REGISTER and REGISTER_OTHER. It must NOT be included with JUSTIFICATION.

The new elements are optional in this version, but may be made mandatory in a future version.

Values allowed by REGISTER/@VALUE:

  • GB-COH - Companies House
  • GB-CHC - Charity Commission (England and Wales)
  • GB-SC - Scottish Charity Register
  • GB-NIC - Charity Commission for Northern Ireland
  • GB-NHS - NHS Organisation Data Service
  • GB-UKPRN - UK Register of Learning Providers (UKPRN number)
  • GB-MPR - Mutuals Public Register
  • GG-RCE - Guernsey Registry
  • JE-FSC - Jersey Financial Services Commission Registry
  • IM-CR - Isle of Man Companies Registry

REGISTER_OTHER should include the country and the official register name in English, for example “Ireland Companies Registration Office”.

Values allowed by JUSTIFICATION/@VALUE:

  • PARTNERSHIP
  • SOLE_TRADER
  • NOT_ON_ANY_REGISTER

Changes from previous Find a Tender versions

The following changes have been made in R2.0.8.S05, R2.0.9.S04 and XSLT 037.

1. Increase version numbers

XML using the current schemas is distinguished from that using the old schemas by the VERSION attribute on <TED_EXPORT> (for publication XML) or <TED_ESENDERS> (for reception XML). The previous versions:

  • R2.0.8.S04
  • R2.0.9.S03

have been changed to:

  • R2.0.8.S05
  • R2.0.9.S04

2. NUTS 2021 update

An updated list of NUTS codes is used by the current schemas for specifying regions.

(a) Namespace change

Both publication and reception XML will now refer to NUTS 2021 instead of 2016, changing:

xmlns:n2016="http://enotice.service.gov.uk/resource/schema/ted/2016/nuts"

to:

xmlns:n2021="http://enotice.service.gov.uk/resource/schema/ted/2021/nuts"

(b) 250 NUTS codes allowed

The number of NUTS codes allowed when specifying contract location has been increased to 250:

  • R2.0.8 - previously 99 codes allowed
    • Section II - Type of contract and location of works, place of delivery or of performance
  • R2.0.9 - previously 20 codes allowed
    • II.2.3. Place of performance
    • F20 - VII.1.3. Place of performance

(c) Buyer countries matched to NUTS codes

(R2.0.9 XSLT rule R127)

NUTS code 00 has been removed and all missing country codes added to the NUTS 2021 list.

Previously, in R2.0.9 forms only, in I.1 and V.2.3, NUTS code 00 had to be used for country codes not in the NUTS 2016 list. Now the NUTS code must match the country code in these cases.

For example, NUTS 2016 code 00 previously had to be used with country code AQ for Antarctica, but now NUTS 2021 code AQ must be used.

3. Currencies update

The R2.0.8 and R2.0.9 schemas previously allowed different currencies to be used. Both have been updated to use a common list of 157 currencies.

(a) R2.0.9 update

Currencies removed:

  • CYP (Cypriot pounds)
  • EEK (Estonian kroon)
  • LTL (Litas Litai)
  • LVL (Lats Lati)
  • MRO (Ouguiya Ouguiyas) – changed to MRU
  • MTL (Maltese lira)
  • SKK (Slovak koruna)
  • SQS (Somaliland shilling)
  • STD (Dobra Dobras) – changed to STN
  • TVD (Tuvaluan dollar)
  • VEF (Bolívar) – changed to VES

Currencies added:

  • MRU (Ouguiya Ouguiyas) – changed from MRO
  • STN (Dobra Dobras) – changed from STD
  • SVC (Salvadorian colón)
  • VES (Bolívar soberano) – changed from VEF

(b) R2.0.8 update

Currencies removed:

  • CYP (Cypriot pounds)
  • EEK (Estonian kroon)
  • LTL (Litas Litai)
  • LVL (Lats Lati)
  • MTL (Maltese lira)
  • SKK (Slovak koruna)

140 codes have been added.

4. Buyer emails mandatory

(R2.0.8 XSLT rule R123)

R2.0.8 notices must now include an email address for the first/main buyer. It was already mandatory in R2.0.9 notices.

5. Previous notice mandatory for unsuccessful awards

(R2.0.9 XSLT rule R560)

If “No tenders or requests to participate were received or all were rejected” (<PROCUREMENT_UNSUCCESSFUL>) is selected in V.1 of an award notice then the previous notice must be included in IV.2.1.

6. Link to canonical OCDS

Find a Tender's OCDS output may now contain links to alternative OCDS per release that the data provider has declared as the canonical version that should be used in preference. If present, it will be included in releases/links. Example:

{
   "releases": [
      {
         "links": [
            {
               "rel": "canonical",
               "href": "https://www.example.com/ocds-abcdef-111111"
            }
         ]
      }
   ]
}

Data providers can optionally include the URL in submission XML in URL_CANONICAL_OCDS as the first element in:

  • R2.0.9 - OBJECT_CONTRACT
  • F16 - OBJECT_WORKS_SUPPLIES_SERVICES_PRIOR_INFORMATION
  • F17 - OBJECT_CONTRACT_INFORMATION_DEFENCE
  • F18 - OBJECT_CONTRACT_INFORMATION_CONTRACT_AWARD_NOTICE_DEFENCE
  • F19 - OBJECT_CONTRACT_SUB_DEFENCE

Prior information notices may contain multiple objects, each for different procurements with different OCIDs, so a URL can be supplied per object. F01 R2.0.9 example:

<TED_ESENDERS>
   ...
   <FORM_SECTION>
      <F01_2014 CATEGORY="ORIGINAL" FORM="F01" LG="EN">
         <LEGAL_BASIS VALUE="32014L0024"/>
         <NOTICE TYPE="PRI_ONLY"/>
         ...
         <OBJECT_CONTRACT ITEM="1">
            <URL_CANONICAL_OCDS PUBLICATION="NO">https://www.example.com/ocds-abcdef-111111</URL_CANONICAL_OCDS>
            <TITLE>
               <P>Example first object</P>
            </TITLE>
            ...
         </OBJECT_CONTRACT>
         <OBJECT_CONTRACT ITEM="2">
            <URL_CANONICAL_OCDS PUBLICATION="NO">https://www.example.com/ocds-abcdef-222222</URL_CANONICAL_OCDS>
            <TITLE>
               <P>Example second object</P>
            </TITLE>
            ...
         </OBJECT_CONTRACT>
         ...
      </F01_2014>
   </FORM_SECTION>
</TED_ESENDERS>

Changes from TED schemas

Find a Tender XML formats are based on those used by Tenders Electronic Daily (TED), but there are some differences as follows.

Publication XML changes

Data consumers will see different namespaces defined in the <TED_EXPORT> element, changing:

  • http://publications.europa.eu/resource/schema/ted/R2.0.9/publication
  • http://publications.europa.eu/resource/schema/ted/2021/nuts
  • http://publications.europa.eu/resource/schema/ted/R2.0.9/publication TED_EXPORT.xsd

to:

  • http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/publication
  • http://enotice.service.gov.uk/resource/schema/ted/2021/nuts
  • http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/publication TED_EXPORT.xsd

Example:

<TED_EXPORT xmlns="http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/publication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:n2021="http://enotice.service.gov.uk/resource/schema/ted/2021/nuts" VERSION="R2.0.9.S04.E01" xsi:schemaLocation="http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/publication TED_EXPORT.xsd" DOC_ID="123456-2021" EDITION="2021001">

Reception XML changes

Data providers (eSenders) must submit XML with different namespaces defined in the <TED_ESENDERS> element, changing:

  • http://publications.europa.eu/resource/schema/ted/R2.0.9/reception
  • http://publications.europa.eu/resource/schema/ted/2021/nuts
  • http://publications.europa.eu/resource/schema/ted/R2.0.9/reception TED_ESENDERS.xsd

to:

  • http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/reception
  • http://enotice.service.gov.uk/resource/schema/ted/2021/nuts
  • http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/reception TED_ESENDERS.xsd

Example:

<TED_ESENDERS xmlns="http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/reception" xmlns:n2021="http://enotice.service.gov.uk/resource/schema/ted/2021/nuts" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="R2.0.9.S04" xsi:schemaLocation="http://enotice.service.gov.uk/resource/schema/ted/R2.0.9/reception TED_ESENDERS.xsd">

XSLT validation changes

In rule R107, we allow issue 000 as used by Find a Tender as well as issues 001 to 259 for TED, by changing:

<xsl:when test="matches(./text(),'^(20|19)\d{2}/S (((00)?[1-9])|([0]?[1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-9]))-\d{6}$')"/>

to:

<xsl:when test="matches(./text(),'^(20|19)\d{2}/S (((00)?[0-9])|([0]?[1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-9]))-\d{6}$')"/>

New rule in full:

<xsl:template match="*:NOTICE_NUMBER_OJ" mode="R107">
<xsl:choose>
<xsl:when test="matches(./text(),'^(20|19)\d{2}/S (((00)?[0-9])|([0]?[1-9][0-9])|(1[0-9][0-9])|(2[0-5][0-9]))-\d{6}$')"/>
<xsl:otherwise>
<xsl:call-template name="msg">
<xsl:with-param name="rule" select="'R107'"/>
<xsl:with-param name="content" select="concat(local-name(.),' with value ',current())"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>