This document describes the new version of EHF Catalogue (called "EHF Katalog" in Norwegian). The document is part of Norwegian Agency for Public and Financial Management (DFØ) standardization work related to electronic commerce.

1. Principles and prerequisites

1.1. Business Process in scope

This Peppol EHF supports a process for suppliers to send a catalogue and for buyers to return a catalogue response. It is intended to support transmission of electronic catalogue-messages for processing in semi-automated processes by the receiver. The EHF mandates no procurement related data but supports different ways of referring to products and services. By selective use of such references it can be used as basis for automated processing of ordering and invoicing.

The intended scope for this EHF is:

  • B2B and B2G

  • Common business processes for cross industry and cross border procurement

  • Regional procurement within EU and EEA

  • For supporting purchase of goods and services and/or services that can be itemized.

This Peppol EHF supports a set of “common use cases / process”. These are processes that are used widely or understood as being relevant for most companies.

The main activities supported by this EHF are:

  • Description of goods and services

  • Maintaining content of framework contract

  • Item comparison

  • Item dependency and composition

  • Description of packaging and storage requirements

  • TAX classification (e.g. for VAT, GST and Sales Tax)

  • Item instance description

  • Maintenance of catalogue

This Peppol EHF supports requirements by providing elements for information needed to meet the requirement. This EHF also provides a set of business rules to clarify content and implementers can use them as basis for validation where it provides business value.

1.2. Peppol EHF 1A - Benefits

Catalogues are used as basis for maintenance of information about products and services that are part of a contract, like a framework agreement.

  • The buyer (or a catalogue provider on his behalf) can present the information in a web shop where he can ensure correctness of product description, prices and other terms that may apply.

  • The supplier can provide the customer with correct information at all times and ensure high data quality in orders based on the catalogue he prepares.

  • Implementing the catalogue provides the possibility of designing fully automated purchasing flows in which the electronic documents can be validated and matched automatically, thereby saving resources compared to manual processing.

  • Implementation of a catalogue can be the first step in automating the purchasing process followed by an order and an invoice, leading to entire purchasing process running from sourcing, ordering and invoicing to payment.

  • Buyers can accept or reject the catalogue using a catalogue response

This Peppol EHF is based on the CEN/ISSS WS/BII Profile BII01 specification, see [BII_Catalogue].

1.2.1. Parties and roles

Business partners Description

Customer

The customer is the legal person or organization who is in demand of a product or service.

Examples of customer roles: buyer, consignee, debtor, contracting authority.

Supplier

The supplier is the legal person or organization who provides a product or service.

Examples of supplier roles: seller, consignor, creditor, economic operator.

Role/actor

Description

Catalogue Provider

Represents a party sending catalogues to receivers, being the supplier or on behalf of the supplier.

The Catalogue Provider has to ensure that the latest catalogue is sent to the receiver.

Catalogue Receiver

Represents a party receiving catalogues and sending the request how and what parts of the catalogues have to be updated in an update process.

Buyer

The buyer is the legal person or organization acting on behalf of the customer and who buys or purchases the goods or services.

Seller

The seller is the legal person or organization acting on behalf of the supplier and who sells goods or services to the customer.

The following diagram links the business processes to the roles performed by the Business Partners:

image3
Figure 1. Business partners and roles in the catalogue
image4
Figure 2. Business partners and roles in the catalogue response

1.3. Interoperability

This Peppol EHF structure is based on the European Interoperability Framework 2.0 EIF. This Peppol EHF applies the Framework as follows:

Legal Interoperability
  • Legal:

    • In implementations supporting public sector buyers, the use of this EHF has to be monitored in order to secure that the parties act in line with EU procurement directives.

Organizational interoperability
  • Organization (Organization/Business):

    • This Peppol EHF supports B2B and B2G.

    • This Peppol EHF supports cross border, regional and domestic ordering in EU and EEA.

    • This Peppol EHF can function as a component in an EDI agreement within a trading community.

    • This Peppol EHF supports linking of business processes within the sending and receiving organization. The process of order transmission in electronic form can be linked into internal processes of both sender and receiver, which may differ for various reasons.

  • Organization (Process):

    • This Peppol EHF supports a set of “common business processes” that is assumed to be supported by most enterprises whether public or private. These are processes that are used widely or understood as being relevant for most companies.

Semantic interoperability
  • Semantic: The set of information elements is assumed to be sufficient to support organizational business and processing requirements stated above.

    • A CORE business message:

      • Data model, a set of elements that the receiver MUST be able to process.

      • Business rules, a set of business rules that ensure a common way of processing the information elements. The rules are stated in a way that allows for automated validation of document instances. Issuers and receivers can verify that the exchanged document conforms to the rules of this EHF.
        Peppol adds business rules on top of the data model to clarify certain design choices left open by the CEN WS/BII. These choices are intended to lower the implementation threshold by limiting options for implementers and thereby increase interoperability of Peppol transactions.

Technical interoperability
  • Technical Interaction (Process and semantic implementation):

    • Binding to OASIS UBL 2.2, see UBL 2.2

    • ISO/IEC 19757-3 Schematron, for automation of document validation, see Schematron

  • Technical Interaction (eSignature Validation):

    • Not mandatory in this Peppol EHF. Not supported.

2. Process and Typical Use Cases

2.1. Process Diagram

image5
Figure 3. BPMN process covered by this EHF

Any time limits for the catalogue response must be agreed between the parties as a part of the collaboration agreement. Any further processing is outside scope of this EHF, and is in most cases done in the customers catalogue tool.

2.2. use case 1 – A new catalogue from the Seller and accept from the Buyer

This use case includes a simple catalogue containing mandatory information and information required to get a high performance from the buyers search engine. The catalogue contains both products and services. This is the first catalogue to the receiver.

Description

The provider sends a catalogue to the receiver. The catalogue contains the articles that the buyer and seller have agreed on in a contract. This is the first catalogue being sent on this contract. After receiving the catalogue, the buyer accepts the catalogue using a response message.

Parties involved

Catalogue Provider (same legal entity as the Supplier/Seller in this use case)
Catalogue Receiver (same legal entity as the Customer/Buyer in this use case)

Assumptions
  1. The Seller and the Buyer have a contract of products and services that the buyer may purchase from the Seller.

  2. The parties have agreed to exchange the catalogue and catalogue response messages

  3. The articles are

    1. Physical articles (pens and papers)

    2. Fruits

    3. Services

Flow
  1. The Seller identifies the contracted items

  2. The Provider creates a Catalogue message

  3. The Provider sends the message to the Receiver

  4. The Buyer verifies the content in the message consider to accept or reject the catalogue.

  5. The Buyer sends a Catalogue response with accept.

  6. The Buyer inserts the articles from the catalogue message in the local ERP-system.

Result
  1. The Buyer have all the articles and the contracted prices in the ERP-system and may start ordering

  2. The ordering process is easy when you have all necessary information in the ERP-system.

2.3. Use case 2 - Catalogues update from the provider and reject from the receiver

This is an Update of the catalogue based on Use case 1.

Description

The provider sends a catalogue update to the receiver. The catalogue contains changes in the previous catalogue. After receiving the catalogue, the buyer rejects the catalogue using a response message.

Parties involved

Catalogue Provider (same legal entity as the Supplier/Seller in this use case)
Catalogue Receiver (same legal entity as the Customer/Buyer in this use case)

Assumptions
  1. The Seller has previously sent a catalogue to the Buyer.

  2. The Seller wants to update the catalogue

    1. One article is updated (GTIN is added)

    2. One new article is added

    3. One article is deleted

Flow
  1. The Seller identifies the items to be in the Catalogue update

  2. The Provider creates a Catalogue message

  3. The Provider sends the message to the Receiver

  4. The Buyer verifies the content in the message and considers to accept or reject the catalogue.

  5. The Buyer sends a Catalogue response with reject.

  6. The Seller handles the negative response.

Result
  1. The Buyer did not insert the changes in the ERP-system

  2. The Seller needs to correct the information in his ERP-system.

2.4. Use case 3 – Catalogues replace from the provider and accept from the receiver

This is a Replace of the catalogue based on Use case 1 and 2.

Description

The provider sends a catalogue replace to the receiver. The catalogue contains all the contracted items and replaces the previous accepted catalogue. After receiving the catalogue, the buyer accepts the catalogue using a response message.

Parties involved

Catalogue Provider (same legal entity as the Supplier/Seller in this use case)
Catalogue Receiver (same legal entity as the Customer/Buyer in this use case)

Assumptions
  1. The Seller has previously sent a new catalogue to the Buyer which has been accepted.

  2. The Seller has sent an update of the catalogue which was rejected by the buyer

  3. The Seller sends a replace catalogue

    1. All articles that the supplier had identified in the contract, including the new one in the rejected catalogue.

    2. One article from the previous accepted catalogue is not in this catalogue.

    3. Three more new articles are added. Shampoo presented in a hierarchy.

Flow
  1. The Seller identifies the items to be in the Catalogue update

  2. The Provider creates a Catalogue message

  3. The Provider sends the message to the Receiver

  4. The Buyer verifies the content in the message and accepts the catalogue.

  5. The Buyer sends a Catalogue response with accept.

Result
  1. The Buyer has all the articles and the contracted prices in the ERP-system and may start ordering

  2. The ordering process is easy when you have all necessary information in the ERP-system.

2.5. Use case 4 – Catalogue deletion

This is a Deletion of the catalogue based on Use case 3.

Description

The provider sends a catalogue deletion to the receiver. The catalogue deletes the previous accepted catalogue. After receiving the catalogue deletion, the buyer accepts the catalogue using a response message.

Parties involved

Catalogue Provider (same legal entity as the Supplier/Seller in this use case)
Catalogue Receiver (same legal entity as the Customer/Buyer in this use case)

Assumptions
  1. The Seller has previously sent a catalogue to the Buyer which has been accepted.

  2. The Seller and the Buyer have ended their contract

Flow
  1. The Seller identifies the current active catalogue to be deleted

  2. The Provider creates a Catalogue message

  3. The Provider sends the message to the Receiver

  4. The Buyer verifies the content in the message and accepts the catalogue.

  5. The Buyer sends a Catalogue response with accept.

  6. The Buyer, in his ERP system, deactivates the items identified in the catalogue message.

Result
  1. The Buyer can no longer make en order to the supplier from this catalogue.

2.6. Use case 5 – Catalogue with all information

This is an Update of a previous sent catalogue and not based on any of the other uses cases. The catalogue includes all possible information in a EHF catalogue. Some information may not be relevant, but is in the catalogue for giving an example.

Description

The provider sends a catalogue deletion to the receiver.

Parties involved

Supplier/Seller
Catalogue Receiver
Customer/Buyer

Assumptions
  1. The Seller has previously sent a catalogue to the Buyer which has been accepted.

  2. The Seller needs to send a new article to update the previous catalogue.

Flow
  1. The Seller identifies the article to be added

  2. The Provider creates a Catalogue message

  3. The Provider sends the message to the Receiver

  4. The Buyer verifies the content in the message and considers the catalogue acceptable.

  5. The Buyer sends a Catalogue response with accept.

  6. The Buyer inserts/updates the information from the catalogue message in the local ERP-system..

Result
  1. The Buyer have the articles and the contracted prices in the ERP-system and may start ordering.

3. Description of selected parts of the catalogue message

3.1. Parties

The following parties/roles may be specified in the message:

3.1.1. Catalogue Provider (ProviderParty)

The party that is responsible for the preparation and transfer of the Catalogue to the Catalogue receiver. Can be the Supplier itself or a third party providing this service.

Example:
<cac:ProviderParty>
  <cbc:EndpointID schemeID="0192">987654325</cbc:EndpointID>
  <cac:PartyIdentification>
    <cbc:ID schemeID="0088">5790000435951</cbc:ID>
  </cac:PartyIdentification>
  <cac:PartyLegalEntity>
    <cbc:RegistrationName>Suuplier AS</cbc:RegistrationName>
  </cac:PartyLegalEntity>
</cac:ProviderParty>

3.1.2. Catalogue Receiver (ReceiverParty)

The party that is responsible for the reception and control of the Catalogue. Can be the Customer itself or a third party providing this service to the Customer.

Example:
<cac:ReceiverParty>
  <cbc:EndpointID schemeID="0192">123456785</cbc:EndpointID>
  <cac:PartyIdentification>
    <cbc:ID schemeID="0088">5790000435944</cbc:ID>
  </cac:PartyIdentification>
  <cac:PartyLegalEntity>
    <cbc:RegistrationName>DEF Customer Ltd.</cbc:RegistrationName>
  </cac:PartyLegalEntity>
</cac:ReceiverParty>

3.1.3. Supplier (SellerSupplierParty)

The party that is responsible for the delivery of products or services specified in the Catalogue.

Example:
<cac:SellerSupplierParty>
  <cac:Party>
    <cac:PartyName>
      <cbc:Name>Office AS</cbc:Name>
    </cac:PartyName>
    <cac:PostalAddress>
      <cbc:StreetName>Office street 12</cbc:StreetName>
      <cbc:CityName>oslo</cbc:CityName>
      <cbc:PostalZone>1163</cbc:PostalZone>
      <cbc:CountrySubentity>Oslo</cbc:CountrySubentity>
      <cac:Country>
        <cbc:IdentificationCode>NO</cbc:IdentificationCode>
      </cac:Country>
    </cac:PostalAddress>
    <cac:Contact>
      <cbc:ElectronicMail>kontor@online.no</cbc:ElectronicMail>
    </cac:Contact>
  </cac:Party>
</cac:SellerSupplierParty>

3.1.4. Buyer (ContractorCustomerParty)

The party buying products or services from the Catalogue.

Example:
<cac:ContractorCustomerParty>
  <cac:Party>
    <cbc:EndpointID schemeID="0184">DK16356706</cbc:EndpointID>
    <cac:PartyIdentification>
      <cbc:ID schemeID="0184">DK16356706</cbc:ID>
    </cac:PartyIdentification>
    <cac:PartyName>
      <cbc:Name>DIGST</cbc:Name>
    </cac:PartyName>
    <cac:Contact>
      <cbc:ElectronicMail>postmottak@digst.dk</cbc:ElectronicMail>
    </cac:Contact>
  </cac:Party>
</cac:ContractorCustomerParty>

3.1.5. Manufacturer (ManufacturerParty)

The name of the Manufacturer.

Example:
<cac:ManufacturerParty>
  <cac:PartyName>
    <cbc:Name>The PC Manufacturing Party</cbc:Name>
  </cac:PartyName>
</cac:ManufacturerParty>

3.2. Action code

The Action code holds instructions about the treatment of the Catalogue by the recipients system. The Action code can be stated either on header or line level. Please be aware that the below mentioned are codes, and hence the correct use of upper and lower case must be used. Example: Replace is valid, REPLACE is not valid.

Legal codes on Catalogue header level:

  • Add – Used when a catalogue is sent for the first time to the Catalogue Receiver referring to the contract in the header of the catalogue.

  • Replace – Replaces the entire catalogue referring to the contract. This is the default action.

  • Update – Updates a current catalogue.

  • Delete – deletes the entire catalogue

    Example:
    <cbc:ActionCode>Replace</cbc:ActionCode>

Legal codes on Catalogue Line level:

  • Add – Used to add items to the catalogue.

  • Update – Used to update an item. The entire Catalogue Line is updated. Only used if Action code on header level is Update

  • Delete – Used to delete an entire Catalogue line. Only used if Action code on header level is Update.

It is important to note that when updating or deleting on line level, the key identifier is the item ID (sellers item identification or standard item identification, see chapter 10.2.2.), not the line ID. If CatalogueLineReference is used in the corresponding order message (outside scope of this EHF), the numbering of Line ID must be consistent in all versions of the catalogue.

Example:
<cbc:ActionCode>Update</cbc:ActionCode>

3.3. Item identification

Item identification must be sent using the identifiers described below.

  • Sellers item identification

  • Standard item identification, e.g. GTIN

  • Manufacturers item identification which is necessary when the same product is bought from several suppliers.

  • Buyers item identification

Either Sellers item identification or Standard item identification must be sent. Manufacturer’s item identification shall be sent if available. Buyers item identification can be used if known. Which identifier to use depends on what is known at the time of catalogue exchange or what is commonly used in the relevant business sector.

Example 1, Seller item identification
<cac:SellersItemIdentification>
  <cbc:ID>MNTR01</cbc:ID>
</cac:SellersItemIdentification>
Example 2, Standard item identification
<cac:StandardItemIdentification>
  <cbc:ID schemeID="0160">1234567890124</cbc:ID>
</cac:StandardItemIdentification>

3.4. Hazardous item

If an item is classified as Hazardous item, a reference to the relevant UNDG-code must be stated and further specification must be provided in an attached document or on a web-site (URI).

Example:
<cac:HazardousItem>
  <cbc:UNDGCode>ADR</cbc:UNDGCode>
</cac:HazardousItem>

3.5. Item name and description

The Item name shall be sent in tag cac:Item/cbc:Name on line level. It is the short description of an item commonly used in ERP-systems. An item name should make it possible for the user to distinguish between similar items. The Item name is often sent in the order from buyer to seller. The field length could be an agreement between parties, to make sure the supporting systems can handle the length.

cac:Item/cbc:Description is used to provide additional relevant description of the item, in free text.

Example:
<cac:Item>
  <cbc:Description> Ballpoint pen, comes in different colours and tip
    sizes</cbc:Description>
  <cbc:PackQuantity unitCode="XCT">10</cbc:PackQuantity>
  <cbc:Name> Ballpoint pen. Blue colour 0.7 mm</cbc:Name>
  <cac:SellersItemIdentification>
    <cbc:ID>34234-324</cbc:ID>
  </cac:SellersItemIdentification>
</cac:Item>

3.6. Classification

An item may be classified according to UNSPSC being the mandatory public classification schemes in some countries/sectors. The code "TST" (The UNSPSC commodity classification system) from codelist UNCL7143 is used. Products can also be classified according to regulatory schemes or classification schemes used in certain business sectors.

Example:
<cac:CommodityClassification>
  <cbc:ItemClassificationCode listID="TST" listVersionID="20.0601"
    >14111511</cbc:ItemClassificationCode>
</cac:CommodityClassification>

3.7. Keyword

Keywords are sent to let the Buyer search for an item without knowing the item identification or name. Keywords tag can be repeated (0..n), but the number should be limited to ensure correct handling in the receiving system.

It is also possible to send several keywords in the same tag, by using a separator between the different keywords. Which separator that should be used, must be agreed between the parties. Example of a separator can be the %-sign, as this is not used anywhere else.

Example of several keywords by using several <KeyWord>-tags:
<cac:Item>
  <cbc:Description>Day cream</cbc:Description>
  <cbc:PackQuantity unitCode="EA">50</cbc:PackQuantity>
  <cbc:Name>Ultimate Day cream, 250 ml</cbc:Name>
  <cbc:Keyword>Moisturizer</cbc:Keyword>
  <cbc:Keyword>Balm</cbc:Keyword>
  <cbc:Keyword>Lotion</cbc:Keyword>
  <cac:SellersItemIdentification>
    <cbc:ID>654321</cbc:ID>
  </cac:SellersItemIdentification>
</cac:Item>
Example of several keywords using “%” as separator:
<cbc:Keyword>write equipment%felt pen</cbc:Keyword>

3.8. Quantities and units

The table below lists quantities and units in the catalogue transaction. All quantities must be based on a Unit Of Measure (UOM) according UNECE Recommendation 20 and Recommendation 21 for UOM. For xml-examples for quantities and units, we refer to Example files (ZIP).

Following are two examples showing the use of different elements.

Example 1: Bottles that contain 250m of shampoo are packed in cases, 6 bottles in each case. The cases are stacked 18 on each pallet. The minimum order quantity is always one unit.

Example 2: Printing paper is sold in packs of 500 sheets. 6 packs of paper are packed in cases and 18 cases are stacked on a pallet. Minimum order quantity is one unit.

  1 bottle
image
Case of 6 bottles
image
Pallet of 18 cases
image

Line identifier (tir19-032)

4

5

6

Seller Item identifier (tir19-091)

1111

111

11

Item Name (tir19-078)

Shampoo 250 ml

6x250 ml Shampoo

Shampoo

Orderable unit (tir19-035)

EA

CS

PF

Packaging level (tir19-102)

CU

TU

DU

Packed quantity (tir19-066)

 

6

18

-Packed units

 

EA

CS

Consumable unit quantity (tir19-036)

1

6

108

ItemNetQuantity (tir19-061)

250

1500

27000

-Unit

MLT

MLT

MLT

MinimumOrderQuantity (tir19-038)

1

1

1

-Unit

EA

EA

EA

Component related item Identifier (tir19-045)

 

1111

111

Component related item quantity (tir19-046)

 

6

18

  Pack of 500 sheets paper Case of 5 packs paper Pallet of 18 cases copypaper

Line identifier (tir19-032)

7

8

9

Seller Item identifier (tir19-091)

A

AA

AAA

Item Name (tir19-078)

500 copy paper

5*500 Copy paper

Pallet of paper

Orderable unit (tir19-035)

EA

CS

PX

Packaging level (tir19-102)

CU

TU

DU

Packed quantity (tir19-066)

 

5

18

-Packed units

 

EA

EA

Consumable unit quantity (tir19-036)

1

5

90

ItemNetQuantity (tir19-061)

500

2500

45000

-Unit

EA

EA

EA

MinimumOrderQuantity (tir19-038)

1

1

1

-Unit

EA

EA

EA

Component related item Identifier (tir19-045)

 

A

AA

Component related item quantity (tir19-046)

 

5

18

Following table shows the definition of the business terms shown in the example as well as their syntax binding.

Id Description Element /xPath

tir19-032

Each line must have an identifier that is unique within the document to make it possible to positively reference the line. For example, from other documents.

/cac:CatalogueLine/cbc:ID

tir19-091

An identifier, assigned by the seller, for the item. Associates the item with its identification according to the seller’s system.

/cac:CatalogueLine/cac:Item/cac:SellersItemIdentification/cbc:ID

tir19-078

A short name for an item.

/cac:CatalogueLine/cac:Item/cbc:Name

tir19-035

The unit in which the item described in this catalogue line can be ordered. The same item can be described in more than one catalogue line with different orderble units. E.g. catalogue line 1 describes item X that can be ordered in boxes at a given price. Line 2 may describe the same item X as orderable in pallets where the price is lower.

/cac:CatalogueLine/cbc:OrderableUnit

tir19-102

The packing level of the catalogue line.

cac:CatalogueLine/cbc:PackLevelCode

tir19-066

The number of packed units that are in the orderable unit. E.g. if the orderable unit is a pallet that contains 30 boxes then the packed units are BOX and the packed quantity is 30.

/cac:CatalogueLine/cac:Item/cbc:PackQuantity

UOM

The prepacking the article is available in inside the orderable unit (next lower level packing), and which contains the number of unit described in PackSizeNumeric. Unit desciption to PackQuantity. The value shoud be a valid UOM code like XCS for case.

/cac:CatalogueLine/cac:Item/cbc:PackQuantity/@unitCode

tir19-036

Specifies the number of consumable units that are in each orderable unit.

/cac:CatalogueLine/cac:Item/cbc:PackSizeNumeric

tir19-061

The net quantity of the item that is contained in each consumable unit, excluding any packaging materials.

/cac:CatalogueLine/cbc:ContentUnitQuantity

UOM

The unit of measure that applies to the item net quantity

cac:CatalogueLine cbc:ContentUnitQuantity @unitCode

tir19-038

The minimum number of orderable units that can be ordered according to details provided in the catalogue line, such as price.

/cac:CatalogueLine/cbc:MinimumOrderQuantity

UOM

The unit of measure that applies to the minimum order quantity

/cac:CatalogueLine/cbc:MinimumOrderQuantity/@unitCode

tir19-045

The sellers identifier for the related item.

cac:CatalogueLine/cac:ComponentRelatedItem/cbc:ID

tir19-046

The quantity that applies to the relationship.

cac:CatalogueLine/cac:ComponentRelatedItem/cbc:Quantity

3.9. Prices

All prices in the format are related to the article or service within this Catalogue identified by an item identification. The following prices can be stated:

  • Net price including all discounts and charges but excluded TAX.

  • Item comparison price defining price for a certain quantity. Used for comparing prices for different articles with various quantities.

  • Conditional price related to a specific location, validity period or ordered quantity.

  • Approximate price. The current price will be set on the order date. Commonly used for fruit, vegetables, fresh fish etc.

Example:
<cac:RequiredItemLocationQuantity>
  <cbc:LeadTimeMeasure unitCode="DAY">2</cbc:LeadTimeMeasure>
  <cac:Price>
    <cbc:PriceAmount currencyID="NOK">20.0000</cbc:PriceAmount>
  </cac:Price>
</cac:RequiredItemLocationQuantity>

3.10. Environment, Social Responsibility and Ecological

Public actors will have requirements related to the environment, ecologically produced food and fair trade. They will also demand that basic human rights are respected in the product production and trade. To be able to highlight products that meet some of these criteria, the EHF Catalogue contains elements to document Environmental labeling and Social certificates. The labels are connected to the relevant product or service on line level enabling the Search engines to make them visible for the buyer during the purchasing process. Detailed information about the different labels can be found on the issuing party’s web-site which is referred to via an URI.

Several labels can be connected to each product.

Table 1. Example of Classification codes
Logo Information

Svanemerket

Svanemerket
Classification Code (ID): NEO
Certificate TypeCode: EcoLabel (Environment)

Fairtrade

Fairtrade
Classification Code (ID): FBL
Certificate TypeCode: SosialLabel (Social responsibility)

EU organic products label

EU organic products label
Classification Code (ID): EOP
Certificate TypeCode: OrganicLabel (Ecological)

Example of labeling in an EHF Catalogue message
<cac:Certificate>
  <cbc:ID>NEO</cbc:ID>
  <cbc:CertificateTypeCode>EcoLabel</cbc:CertificateTypeCode>
  <cbc:CertificateType>EcoLabel</cbc:CertificateType>
  <cac:IssuerParty>
    <cac:PartyName>
      <cbc:Name>Svanemerket</cbc:Name>
    </cac:PartyName>
  </cac:IssuerParty>
  <cac:DocumentReference>
    <cbc:ID>http://www.svanemerket.no</cbc:ID>
  </cac:DocumentReference>
</cac:Certificate>

Items can be related to each other for ordering or logistic purposes. All related items must also be sent as separate Catalogue lines. Sellers article number is the only permitted type of article number and there for it is important that the Sellers article numbers is provided in catalogue line with the related item.
Types of relations:

  • Products that are bundled and ordered/invoiced together, e.g. bottles and deposits.

  • Products that are connected in a product line or a logistics structure, e.g. consumer units and trading units of the same article.

  • Accessories that might be sold together with a product, e.g. disk station to a laptop.

Example, The current item consists of 6 of Sellers article number 7690211, and 5 of article 523467:
<cac:ComponentRelatedItem>
  <cbc:ID>7690211</cbc:ID>
  <cbc:Quantity unitCode="XCT">6</cbc:Quantity>
</cac:ComponentRelatedItem>
<cac:ComponentRelatedItem>
  <cbc:ID>523467</cbc:ID>
  <cbc:Quantity unitCode="XCT">5</cbc:Quantity>
</cac:ComponentRelatedItem>

3.12. Logistics information

The Logistics elements can be used to specify different pack levels for the same item:

  • Each pack level is regarded as a unique item and must be sent as a separate Catalogue line and identified with a unique identification such as GTIN.

  • Information about pack level is done in the element PackLevelCode on line level. The Pack level codes are based on the Edifact/Eancom-standard and the following codes are available:

    • DU = Dispatch Unit

    • HN = Handling Unit (level between TU and DU).

    • TU = Traded Unit

    • CU = Consumer Unit

  • It should be stated if the pack level is orderable.

  • The relation between pack levels should be specified by using Component Related Item, e.g. that a Dispatch unit contains Traded units. For the higher level Packed Quantity should be used.

    Example:
    <cbc:PackLevelCode>TU</cbc:PackLevelCode>

3.13. Dimension

Physical properties are important for logistics. The following values can be stated:

  • Height (HT)

  • Width (WD)

  • Length (LN)

  • Weight (WT)

  • Net Volume (AAX)

For some items it is important to inform about storage regulations. The following values can be stated:

  • Temperature

  • Humidity

Example:
<cac:Dimension>
  <cbc:AttributeID>HT</cbc:AttributeID>
  <cbc:Measure unitCode="CMT">270</cbc:Measure>
</cac:Dimension>
<cac:Dimension>
  <cbc:AttributeID>LN</cbc:AttributeID>
  <cbc:Measure unitCode="CMT">300</cbc:Measure>
</cac:Dimension>

3.14. Additional properties

Additional properties are meant for product properties that cannot be sent in any of the defined elements in this Peppol EHF. Additional properties consist of the Name of the property and the actual Value.
Example of additional properties:

  • Color

  • Allergens.
    Legal values: YES, NO, UNKNOWN, FREE.

  • Nutrition.
    Stated with amount per 100 g/ml.

  • Genetically modified.
    Legal values: True, False

Example simple:
<cac:AdditionalItemProperty>
  <cbc:Name>Color</cbc:Name>
  <cbc:Value>Red</cbc:Value>
  <cbc:ValueQualifier>Color</cbc:ValueQualifier>
</cac:AdditionalItemProperty>
Example showing code properties:
<cac:AdditionalItemProperty>
  <cbc:Name>Allergens</cbc:Name>
  <cbc:NameCode listID="CodeListID">Allergens</cbc:NameCode>
  <cbc:Value>Item contains 5% hazelnuts by volume.</cbc:Value>
  <cbc:ValueQuantity unitCode="60">5</cbc:ValueQuantity>
  <cbc:ValueQualifier>HAZELNUTS</cbc:ValueQualifier>
</cac:AdditionalItemProperty>

3.15. Replaced item

Replaced item is used to identify an existing item being replaced by an item in this Catalogue.

Example:
<cac:ReplacedRelatedItem>
  <cbc:ID>12345</cbc:ID>
  <cbc:Quantity unitCode="EA">5</cbc:Quantity>
</cac:ReplacedRelatedItem>

3.16. Line TAX Category

TAX information on line level is provided in the class cac:ClassifiedTaxCategory.

Each line may have the item TAX information including category code and percentage.

UBL example of line TAX category, when TAX is VAT
<cac:ClassifiedTaxCategory>
    <cbc:ID>S</cbc:ID> (1)
    <cbc:Percent>18</cbc:Percent>(2)
    <cac:TaxScheme>
  <cbc:ID>VAT</cbc:ID>(3)
    </cac:TaxScheme>
</cac:ClassifiedTaxCategory>
1 TAX category according to codelist Code list UNCL5305
2 Value must identify the correct tax type. For example VAT, GST or sales tax.

Appendix A: UBL 2.2

This implementation guide builds on UBL 2.2 Schemas, available from OASIS.

These schemas are used when performing syntax validation.

Please see the homepage for information about the standard or further resources available.

Appendix B: Semantic Datatypes

Semantic data types are used to bridge the gap between the semantic concepts expressed by the information elements and the technical implementation. The semantic data types define the allowed value domain for the content, and any additional information components (attributes) needed in order to ensure its precise interpretation.

B.1. Primitive types

Semantic data type content may be of the following primitive types. These primitive types were taken from ISO 15000-5:2014, Annex A.

Primitive type Definition

Binary

A set of finite-length sequences of binary digits.

Date

Time point representing a calendar day on a time scale consisting of an origin and a succession of calendar ISO 8601:2004.

Decimal

A subset of the real numbers, which can be represented by decimal numerals.

String

A finite sequence of characters.

B.2. Semantic data types

The different semantic data types are described in the tables below, where various features such as attributes, format, and decimals as well as the basic type are defined for each semantic data type. They are based on ISO 15000-5:2014.

When used in an instance document, each data element will contain data. In the below tables this is identified as the “content”. Whenever a business term is used this term shall always have content and therefore the content is always mandatory.

B.2.1. Amount

An amount states a numerical monetary value. The currency of the amount is defined as a separate business term.

Amount is floating up to two fraction digits.
Component Use Primitive Type Example

Content

Mandatory

Decimal

10000.25

B.2.2. Price Amount

A price amount states a numerical monetary amount value for data elements that contain item prices that may be multiplied by item quantities. The currency of the amount is defined as a separate business term.

Unit price amount does not set restrictions on number of decimals, as contrast to the Amount type
Component Use Primitive Type Example

Content

Mandatory

Decimal

10000.1234

B.2.3. Percentage

Percentages are given as fractions of a hundred (per cent) e.g. the value 34,78 % in percentage terms is given as 34,78.

No restriction on number of decimals for percentages.
Component Use Primitive Type Example

Content

Mandatory

Decimal

34.7812

B.2.4. Quantity

Quantities are used to state a number of units such as for items. The code for the Unit of Measure is defined as a separate business term.

No restriction on number of decimals for quantities.
Component Use Primitive Type Example

Content

Mandatory

Decimal

10000.1234

B.2.5. Code

Codes are used to specify allowed values in elements as well as for lists of options. Code is different from Identifier in that allowed values have standardized meanings that can be known by the recipient.

Codes shall be entered exactly as shown in the selected code list
Component Use Primitive Type Example

Content

Mandatory

String

Abc123

B.2.6. Identifier

Identifiers (IDs) are keys that are issued by the sender or recipient of a document or by a third party.

The use of the attributes is specified for each information element.
Component Use Primitive Type Example

Content

Mandatory

String

abc:123-DEF

Scheme identifier

Conditional

String

0088

Scheme version identifier

Conditional

String

1.0

B.2.7. Date

Dates shall be in accordance to the “Calendar date complete representation” as specified by ISO 8601:2004, format YYYY-MM-DD.

Dates shall not include timezone information.
Table 2. EN 16931_ Date. Type
Component Use Primitive Type Example

Content

Mandatory

Date

2017-12-01

B.2.8. Time

Time shall be in accordance to the “Extended time format” as specified by ISO 8601:2004, format [hh]:[mm]:[ss].

Time shall not include timezone information. Decimal fraction on seconds SHALL not be used.
Table 3. EN 16931_ Date. Type
Component Use Primitive Type Example

Content

Mandatory

Date

09:30:12

B.2.9. Document Reference

Document Reference Types are identifiers that were assigned to a document or document line.

Table 4. Document Reference. Type
Component Use Primitive Type Example

Content

Mandatory

String

abc:123-DEF

B.2.10. Text

Text is the actual wording of anything written or printed. Line breaks in the text may be present, and any line breaks should be preserved and respected by the receiver’s system

Component Use Primitive Type Example

Content

Mandatory

String

5% allowance when paid within 30 days

B.2.11. Binary objects

Binary objects can be used to describe files which are transmitted together with the business document. Attachments shall be transmitted together with the business document. The binary object has two supplementary components: a Mime Code, which specifies the Mime type of the attachment and a Filename that is provided by (or on behalf of) the sender of the business document.

Component Use Primitive Type Example

Content

Mandatory

Binary

QmFzZTY0IGNvbnRlbnQgZXhhbXBsZQ==

Mime Code

Mandatory

String

image/jpeg

Filename

Mandatory

String

drawing5.jpg

B.2.12. Boolean

Boolean indicators are used to specify the two allowed values, true or false. All elements of datatype Boolean, must have either true or false as their value.

Component Use Primitive Type Example

Content

Mandatory

String

true