F14: Corrigendum

Quick links: PDF form | sample XML

F14 is about changes to the notice. See the Instructions for the use of the standard form 14 "Corrigendum" (F14).

Similar to F20, the European Commission in its eForms consultation proposes to republish notices – adding a short section to summarize and justify the change – instead of using F14 (see discussion).

Release model

Create an OCDS release and:

  1. Add 'tenderUpdate' to tag.

What's new

If you have already implemented all prior forms, this notice adds:

  • VI.6 Original notice reference

  • VII Changes

Preamble

Index Label and XPath OCDS guidance

Unlabeled
/@LG

Lowercase, and map to language

Unlabeled
/@CATEGORY

Discard. TED translates at form-level. OCDS translates at field-level.

Unlabeled
/LEGAL_BASIS

Set tender.legalBasis.scheme to ‘CELEX’, and map to tender.legalBasis.id

Unlabeled
/LEGAL_BASIS_OTHER

Set tender.legalBasis.scheme to ‘CELEX’, and map to tender.legalBasis.id

Section I

Index Label and XPath OCDS guidance
I

Contracting authority / entity
/CONTRACTING_BODY

as stated in the original notice

I.1

Name and addresses
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY

Add a party, and add ‘buyer’ to its .roles

Set buyer.id to its .id, and set buyer.name to its .name

Official name
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/OFFICIALNAME

Map to the party’s .name and .identifier.legalName

National registration number
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/NATIONALID

Map to the party’s .identifier.id, and set .identifier.scheme

Postal address
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/ADDRESS

Map to the party’s .address.streetAddress

Town
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/TOWN

Map to the party’s .address.locality

NUTS code
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/NUTS

Take the NUTS code in the CODE attribute, and map to the party’s .address.region

There’s an open issue (#739) about region codes. Issue

Postal code
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/POSTAL_CODE

Map to the party’s .address.postalCode

Country
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/COUNTRY

Take the country code in the VALUE attribute, translate to a country name, and map to the party’s .address.countryName

There’s an open issue (#524) to add a .countryCode field to the Address object, to avoid translation. Issue

Contact person
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/CONTACT_POINT

Map to the party’s .contactPoint.name

Telephone
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/PHONE

Map to the party’s .contactPoint.telephone

E-mail
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/E_MAIL

Map to the party’s .contactPoint.email

Fax
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/FAX

Map to the party’s .contactPoint.faxNumber

Internet address(es)

Main address (URL)
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/URL_GENERAL

Map to the party’s .details.url

Address of the buyer profile (URL)
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY/URL_BUYER

Map to the party’s .details.buyerProfile

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL

Add a party, add ‘buyer’ to its .roles, and set its fields as above

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/OFFICIALNAME

Same as Official name above

Map to the party’s .name and .identifier.legalName

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/NATIONALID

Same as National registration number above

Map to the party’s .identifier.id, and set .identifier.scheme

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/ADDRESS

Same as Postal address above

Map to the party’s .address.streetAddress

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/TOWN

Same as Town above

Map to the party’s .address.locality

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/POSTAL_CODE

Same as Postal code above

Map to the party’s .address.postalCode

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/COUNTRY

Same as Country above

Take the country code in the VALUE attribute, translate to a country name, and map to the party’s .address.countryName

There’s an open issue (#524) to add a .countryCode field to the Address object, to avoid translation. Issue

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/CONTACT_POINT

Same as Contact person above

Map to the party’s .contactPoint.name

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/PHONE

Same as Telephone above

Map to the party’s .contactPoint.telephone

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/E_MAIL

Same as E-mail above

Map to the party’s .contactPoint.email

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/FAX

Same as Fax above

Map to the party’s .contactPoint.faxNumber

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/NUTS

Same as NUTS code above

Take the NUTS code in the CODE attribute, and map to the party’s .address.region

There’s an open issue (#739) about region codes. Issue

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/URL_GENERAL

Same as Main address above

Map to the party’s .details.url

Unlabeled
/CONTRACTING_BODY/ADDRESS_CONTRACTING_BODY_ADDITIONAL/URL_BUYER

Same as Address of the buyer profile above

Map to the party’s .details.buyerProfile

Section II

Index Label and XPath OCDS guidance
II

Object
/OBJECT_CONTRACT

as stated in the original notice

II.1

Scope of the procurement

II.1.1

Title
/OBJECT_CONTRACT/TITLE

Map to tender.title

Reference number
/OBJECT_CONTRACT/REFERENCE_NUMBER

If not set, let Reference number be equal to the ocid value. Map to tender.id (string).

II.1.2

Unlabeled
/OBJECT_CONTRACT/CPV_MAIN

Main CPV code
/OBJECT_CONTRACT/CPV_MAIN/CPV_CODE

Set tender.classification.scheme to ‘CPV’, take the CPV code in the CODE attribute, and map to tender.classification.id

Supplementary CPV code
/OBJECT_CONTRACT/CPV_MAIN/CPV_SUPPLEMENTARY_CODE

For each CODE attribute, add a Classification object to the tender.additionalClassifications array, set its .scheme to ‘CPVS’, prefix by the Main CPV code, and map to its .id. Remove any duplicate entries from the tender.additionalClassifications array.

II.1.3

Type of contract
/OBJECT_CONTRACT/TYPE_CONTRACT

Set tender.mainProcurementCategory as follows:

Works
/OBJECT_CONTRACT/TYPE_CONTRACT/@CTYPEis WORKS

Map to ‘works’

Supplies
/OBJECT_CONTRACT/TYPE_CONTRACT/@CTYPEis SUPPLIES

Map to ‘goods’

Services
/OBJECT_CONTRACT/TYPE_CONTRACT/@CTYPEis SERVICES

Map to ‘services’

II.1.4

Short description
/OBJECT_CONTRACT/SHORT_DESCR

Map to tender.description

Section VI

Index Label and XPath OCDS guidance
VI

Complementary information
/COMPLEMENTARY_INFO

VI.5

Date of dispatch of this notice (dd/mm/yyyy)
/COMPLEMENTARY_INFO/DATE_DISPATCH_NOTICE

Map to date

VI.6

Original notice reference

Notice number in the OJ S
/COMPLEMENTARY_INFO/NOTICE_NUMBER_OJ

Reference a previous publication

Section VII

Index Label and XPath OCDS guidance
VII

Changes
/CHANGES

Add an Amendment object to the tender.amendments array, and set its .id (string). The .id can be any value guaranteed to be globally unique. For example, it can be set to a version 4 UUID, or it can be assigned sequentially across all F14/F20 notices for this procedure (the first notice sets it to ‘1’, the second to ‘2’, etc.).

VII.1

Information to be changed or added

VII.1.2

Text to be corrected in the original notice (please provide the related section and the paragraph number in the original notice)
/CHANGES/CHANGE

For each CHANGE element, add an UnstructuredChange object to the amendment’s .unstructuredChanges array, and set its .where, .oldValue and .newValue as follows:

Unlabeled
/CHANGES/CHANGE/WHERE

Section number
/CHANGES/CHANGE/WHERE/SECTION

Map to .where.section

Instead of
/CHANGES/CHANGE/OLD_VALUE

Read
/CHANGES/CHANGE/NEW_VALUE

Lot No
/CHANGES/CHANGE/WHERE/LOT_NO

Map to .relatedLot

Place of text to be modified
/CHANGES/CHANGE/WHERE/LABEL

Map to .where.label

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/NOTHING

Set .oldValue.text to “” (an empty string)

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/NOTHING

Set .newValue.text to “” (an empty string)

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/TEXT

Map to .oldValue.text

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/TEXT

Map to .newValue.text

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/CPV_MAIN

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/CPV_MAIN

Main CPV code
/CHANGES/CHANGE/OLD_VALUE/CPV_MAIN/CPV_CODE

Add a Classification object to the .oldValue.classifications array, set its .scheme to ‘CPV’, take the CPV code in the CODE attribute, and map to its .id

Main CPV code
/CHANGES/CHANGE/NEW_VALUE/CPV_MAIN/CPV_CODE

Add a Classification object to the .newValue.classifications array, set its .scheme to ‘CPV’, take the CPV code in the CODE attribute, and map to its .id

Supplementary CPV code
/CHANGES/CHANGE/OLD_VALUE/CPV_MAIN/CPV_SUPPLEMENTARY_CODE

For each CODE attribute, add a Classification object to the .oldValue.classifications array, set its .scheme to ‘CPVS’, prefix by the Main CPV code, and map to its .id. Remove any duplicate entries from the .oldValue.classifications array.

Supplementary CPV code
/CHANGES/CHANGE/NEW_VALUE/CPV_MAIN/CPV_SUPPLEMENTARY_CODE

For each CODE attribute, add a Classification object to the .newValue.classifications array, set its .scheme to ‘CPVS’, prefix by the Main CPV code, and map to its .id. Remove any duplicate entries from the .newValue.classifications array.

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/CPV_ADDITIONAL

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/CPV_ADDITIONAL/CPV_CODE

For each CODE attribute, add a Classification object to the .oldValue.classifications array, set its .scheme to ‘CPV’, and map to its .id. Remove any duplicate entries from the .oldValue.classifications array.

Unlabeled
/CHANGES/CHANGE/OLD_VALUE/CPV_ADDITIONAL/CPV_SUPPLEMENTARY_CODE

For each CODE attribute, add a Classification object to the .oldValue.classifications array, set its .scheme to ‘CPVS’, prefix by the Main CPV code, and map to its .id. Remove any duplicate entries from the .oldValue.classifications array.

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/CPV_ADDITIONAL

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/CPV_ADDITIONAL/CPV_CODE

For each CODE attribute, add a Classification object to the .newValue.classifications array, set its .scheme to ‘CPV’, and map to its .id. Remove any duplicate entries from the .newValue.classifications array.

Unlabeled
/CHANGES/CHANGE/NEW_VALUE/CPV_ADDITIONAL/CPV_SUPPLEMENTARY_CODE

For each CODE attribute, add a Classification object to the .newValue.classifications array, set its .scheme to ‘CPVS’, prefix by the Main CPV code, and map to its .id. Remove any duplicate entries from the .newValue.classifications array.

Date (dd/mm/yyyy)
/CHANGES/CHANGE/OLD_VALUE/DATE

Map to the date component of .oldValue.date `

Date (dd/mm/yyyy)
/CHANGES/CHANGE/NEW_VALUE/DATE

Map to the date component of .newValue.date

Local time (hh:mm)
/CHANGES/CHANGE/OLD_VALUE/TIME

Map to the time component of .oldValue.date

Local time (hh:mm)
/CHANGES/CHANGE/NEW_VALUE/TIME

Map to the time component of .newValue.date

VII.2

Other additional information
/CHANGES/INFO_ADD

Map to the amendment’s .description