OASIS logo

OASIS Committee Note

XHE 1.0 Migration and Implementation Guide Version 1.0

Committee Note 01

19 June 2019

This version:

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/cn01/xhe-migration-v1.0-cn01.docx (Authoritative)

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/cn01/xhe-migration-v1.0-cn01.html

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/cn01/xhe-migration-v1.0-cn01.pdf

Previous version:

N/A

Latest version:

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/xhe-migration-v1.0.docx (Authoritative)

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/xhe-migration-v1.0.html

https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/xhe-migration-v1.0.pdf

Technical Committee:

OASIS Business Document Exchange (BDXR) TC

Chairs:

Anders Grangard (anders.grangard@gs1.org), GS1

Kenneth Bengtsson (kbengtsson@efact.pe), Individual member

Editor:

Kenneth Bengtsson (kbengtsson@efact.pe), Individual member

Related work:

This document is related to:

·         Exchange Header Envelope (XHE) Version 1.0. Edited by G. Ken Holman. Latest version: https://docs.oasis-open.org/bdxr/xhe/v1.0/xhe-v1.0-oasis.html.

Abstract:

This document provides guidance and examples for users of the UN/CEFACT SBDH 1.3 and OASIS BDE 1.1 specifications migrating to XHE 1.0, as well as an analysis of the mapping of the business objects of these specifications to those of XHE. It also provides background information and implementation guidance to those new to header envelope standards and the XHE specification.

Status:

This is a Non-Standards Track Work Product. The patent provisions of the OASIS IPR Policy do not apply.

This document was last revised or approved by the OASIS Business Document Exchange (BDXR) TC on the above date. The level of approval is also listed above. Check the "Latest version" location noted above for possible later revisions of this document. Any other numbered Versions and other technical work produced by the Technical Committee (TC) are listed at https://www.oasis-open.org/committees/tc_home.php?wg_abbrev=bdxr#technical.

TC members should send comments on this document to the TC's email list. Others should send comments to the TC's public comment list, after subscribing to it by following the instructions at the "Send A Comment" button on the TC's web page at https://www.oasis-open.org/committees/bdxr/.

Citation format:

When referencing this document the following citation format should be used:

[XHE-Migration-v1.0]

XHE 1.0 Migration and Implementation Guide Version 1.0. Edited by Kenneth Bengtsson. 19 June 2019. OASIS Committee Note 01. https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/cn01/xhe-migration-v1.0-cn01.html. Latest version: https://docs.oasis-open.org/bdxr/xhe-migration/v1.0/xhe-migration-v1.0.html.

Notices

Copyright © OASIS Open 2019.  All Rights Reserved.

All capitalized terms in the following text have the meanings assigned to them in the OASIS Intellectual Property Rights Policy (the "OASIS IPR Policy"). The full Policy may be found at the OASIS website.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published, and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this section are included on all such copies and derivative works. However, this document itself may not be modified in any way, including by removing the copyright notice or references to OASIS, except as needed for the purpose of developing any document or deliverable produced by an OASIS Technical Committee (in which case the rules applicable to copyrights, as set forth in the OASIS IPR Policy, must be followed) or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by OASIS or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and OASIS DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY OWNERSHIP RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Table of Contents

1       Introduction. 5

1.1 Overview. 5

1.2 Terminology. 5

1.3 References (non-normative) 5

1.4 XML Schemas used. 6

2       Migrating from SBDH 1.3. 7

2.1 Introduction. 7

2.2 SBDH mapping guide. 7

2.3 XHE as a header technology. 16

2.3.1 Introduction. 16

2.3.2 Example SBDH to XHE header transformation. 16

2.3.2.1 Original SBDH instance. 16

2.3.2.2 SBDH instance transformed to XHE. 18

2.3.2.3 XHE header with multiple payloads example. 21

2.4 XHE as an envelope technology. 25

2.4.1 Introduction. 25

2.4.2 Example SBDH to XHE envelope transformation. 26

2.4.2.1 Original SBDH instance. 26

2.4.2.2 SBDH instance transformed to XHE. 27

3       Migrating from BDE 1.1. 29

3.1 Introduction. 29

3.2 BDE mapping guide. 29

3.2.1 Introduction. 29

3.2.2 BDE Envelope class mapping. 29

3.2.3 BDE Party class mapping. 31

3.2.4 BDE Payload class mapping. 31

3.2.5 BDE External Reference class mapping. 34

3.2.6 Migrating BDE extensions. 35

3.3 Example BDE to XHE envelope transformation. 35

3.3.1 Original BDE instance. 35

3.3.2 BDE instance transformed to XHE. 38

Appendix A.     Acknowledgments. 42

Appendix B.     Revision History. 43

 

1      Introduction

1.1 Overview

The Exchange Header Envelope ([XHE]) is a joint specification between the UN/CEFACT and the OASIS Business Document Exchange Technical Committee, which supersedes the UN/CEFACT Standard Business Document Header ([SBDH]) and the OASIS Business Document Envelope ([BDE]) to provide a single universal specification.

This document serves as a migration and implementation guide for existing users of SBDH and BDE who are migrating to XHE. It provides a mapping of the business objects of SBDH and BDE to those of the XHE, background information for understanding and translation of elements, as well as examples of header and envelope transformations.

1.2 Terminology

The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in [RFC2119].

1.3 References (non-normative)

[BDE]                     Business Document Envelope Version 1.1, edited by G. Ken Holman and Kenneth Bengtsson, December 2016, OASIS Committee Specification, http://docs.oasis-open.org/bdxr/bdx-bde/v1.1/bdx-bde-v1.1.html.

[CCTS]                   UN/CEFACT Core Components Technical Specification, Version 2.01 15 November 2003, http://www.unece.org/fileadmin/DAM/cefact/codesfortrade/CCTS/CCTS_V2-01_Final.pdf.

[GS1_Guide]           Standard Business Document Header (SBDH) Version 1.3 Technical Implementation Guide, Issue 3, July 2012, https://www.gs1.org/sites/default/files/docs/xml/SBDH_v1_3_Technical_Implementation_Guide.pdf.

[GS1_Invoice]         GS1 Invoice Business Message Standard (BMS) Version 3.4, October 2018, https://www.gs1.org/standards/edi-xml/xml-invoice/3-4.

[PEPPOL_BME]      PEPPOL Business Message Envelope (SBDH), Version 1.2, February 2019, https://github.com/OpenPEPPOL/documentation/raw/master/TransportInfrastructure/PEPPOL-EDN-Business-Message-Envelope-1.2-2019-02-01.pdf.

[RFC2119]               Bradner, S., Key words for use in RFCs to Indicate Requirement Levels, BCP 14, RFC 2119, March 1997, http://www.rfc-editor.org/info/rfc2119.

[SBDH]                   UN/CEFACT Standard Business Document Header Technical Specification, Version 1.3, June 2004, https://www.gs1.org/sites/default/files/docs/gs1_un-cefact_%20xml_%20profiles/CEFACT_SBDH_TS_version1.3.pdf.

[SHA-256]               Secure Hash Standard (SHS) (FIPS PUB 180-4), National Institute of Standards and Technology (NIST), August 2015, https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf.

[XHE]                     Exchange Header Envelope (XHE) Version 1.0, joint UN/CEFACT and OASIS BDXR TC Technical Specification, edited by G. Ken Holman, 21 March 2019, http://docs.oasis-open.org/bdxr/xhe/v1.0/xhe-v1.0-oasis.html (OASIS version).

[XML]                     Extensible Markup Language (XML) 1.0 (Fifth Edition), T. Bray, J. Paoli, C. M. Sperberg-McQueen, E. Maler, F. Yergeau, Editors, W3C Recommendation, 26 November 2008, http://www.w3.org/TR/2008/REC-xml-20081126/. Latest version available at http://www.w3.org/TR/xml.

[XSD1]                    XML Schema Part 1: Structures Second Edition, H. S. Thompson, D. Beech, M. Maloney, N. Mendelsohn, Editors, W3C Recommendation, 28 October 2004, http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/. Latest version available at http://www.w3.org/TR/xmlschema-1.

[XSD2]                    XML Schema Part 2: Datatypes Second Edition, P. V. Biron, A. Malhotra, Editors, W3C Recommendation, 28 October 2004, http://www.w3.org/TR/2004/REC-xmlschema-2-20041028/. Latest version available at http://www.w3.org/TR/xmlschema-2.

1.4 XML Schemas used

To exemplify the implementation of [XHE] and to simplify the mapping to [SBDH] and [BDE] objects and elements, this document uses the XML Schema ([XSD1]  [XSD2]) implementation included with the OASIS distribution of XHE.

Please see the [XHE] documentation for descriptions and mappings to the respective UN/CEFACT and OASIS semantic identifiers.

2      Migrating from SBDH 1.3

2.1 Introduction

An [SBDH] implementation can be migrated to [XHE] without loss of data, meaning or context. Whether used as a header technology or as an envelope technology, XHE can seamlessly replace any instance of SBDH in the exact same position, context and environment where it is used, and without the need to modify any additional business processes, documents, conventions or other related systems or components outside of the SBDH itself.

In addition to the data model and structure required to migrate an existing SBDH implementation, XHE provides functionality that cannot be accomplished using SBDH, such as envelopes containing multiple documents and artefacts, encryption of payloads for enhanced security and confidentiality, capability to verify the integrity of business documents, as well as capacity to enhance the understanding of the content and context of the header envelope elements by using OPTIONAL [XML] attributes corresponding to [CCTS] supplementary components. This migration guide covers the migration and transformation of existing SBDH elements to XHE. For information about additional functionalities and features please consult the [XHE] documentation itself.

2.2 SBDH mapping guide

The following table contains a comprehensive list of [SBDH] business objects and elements, and their equivalent positions in [XHE]:

SBDH

XHE

Comments

StandardBusinessDocumentHeader

XHE

The header envelope container.

└ HeaderVersion

XHE/xhb:XHEVersionID

For both standards, this is the identification of the specific version in use.

└ Sender

XHE/xha:FromParty/xha:Partyidentification

The identification of the party or parties who originated the header envelope.

Main differences between the SBDH Sender and the XHE FromParty are:

1) When specifying multiple sender parties in SBDH, the entire Sender block is repeated for each party. In XHE, this is achieved by adding more PartyIdentification children to the FromParty structure.

2) Verbose contact information has been omitted in XHE. The receiver is expected to identify the sending party by the unique ID.

└ └ Identifier

XHE/xha:FromParty/xha:Partyidentification/xhb:ID

Unambiguously identifies a sending party. In SBDH, the generic Authority attribute can be added to the Identifier to qualify the origin and disposition of the identification being used. In comparison, XHE uses the more verbose standard data type definitions and [XML] attributes derived from [CCTS]. When migrating from SBDH to XHE, the value of the Sender/Identifier element can be transferred literally to the XHE PartyIdentification/ID element, whereas the implementer SHOULD evaluate the nature of the Authority attribute and locate its appropriate equivalent in CCTS.

Please see section 8.2 of the [CCTS] documentation for detailed information about the supplementary components, section 4.7 of the [XHE] specification for the corresponding serialization attribute names, as well as the examples in section 2.3.2 below.

└ Receiver

XHE/xha:ToParty/xha:Partyidentification

The identification of the recipient or recipients of the header envelope.

Main differences between the SBDH Receiver and the XHE ToParty are:

1) When specifying multiple recipients in SBDH, the entire Receiver block is repeated for each party. In XHE, this is achieved by adding more PartyIdentification children to the ToParty structure.

2) Verbose contact information has been omitted in XHE. The sender is expected to identify the recipient by the unique ID.

└ └ Identifier

XHE/xha:ToParty/xha:Partyidentification/xhb:ID

Unambiguously identifies a receiving party. In SBDH, the generic Authority attribute can be added to the Identifier to qualify the origin and disposition of the identification being used. In comparison, XHE uses the more verbose standard data type definitions and [XML] attributes derived from [CCTS]. When migrating from SBDH to XHE, the value of the Receiver/Identifier element can be transferred literally to the XHE PartyIdentification/ID element, whereas the implementer SHOULD evaluate the nature of the Authority attribute and locate its appropriate equivalent in CCTS.

Please see the [CCTS] documentation for detailed information, as well as the examples in section 2.3.2  below.

└ DocumentIdentification

XHE/xha:Header

The SBDH DocumentIdentification contains elements that both describe the standard business document as well as the standard business document header itself. In XHE, the relation between an XHE instance and its associated business documents is one-to-many and it is necessary to distinguish between elements that describe the header envelope instance and the elements that describe its individual business documents.

The XHE elements describing the XHE instance itself are found in the XHE Header container, while the elements describing an associated or contained business documents are found in the XHE Payloads container.

XHE/xha:Payloads

└ └ Standard

XHE/xha:Payloads/xha:Payload/xhb:ValidationTypeCode

For both SBDH and XHE, indicates the document standard, data dictionary or similar being used for validating the structure of a business document. The SBDH Standard can be transferred literally to the XHE ValidationTypeCode.

└ └ TypeVersion

XHE/xha:Payloads/xha:Payload/xhb:ValidationVersionID

For both SBDH and XHE, indicates the version of the document standard, data dictionary or similar being used for validating the structure of a business document. The SBDH TypeVersion can be transferred literally to the XHE ValidationVersionID.

└ └ InstanceIdentifier

XHE/xha:Header/xhb:ID

Uniquely identifies business document header and business document instances. In SBDH, the relationship between the business document header and the business document is one-to-one why only one DocumentIdentification/InstanceIdentifier is necessary to identify both. In XHE, a business document envelope can contain multiple business documents and it is therefore necessary to be able to identify the envelope separately from the documents contained within it.

XHE/xha:Payloads/xha:Payload/xhb:ID

└ └ Type

XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode

Indicates the type of business document. In XHE, this is indicated for each business document associated with the header envelope.

└ └ MultipleType

N/A

Not used in XHE. The presence of more than one Payload within the XHE provides evidence that there are multiple documents within or referenced from the XHE instance.

└ └ CreationDateAndTime

XHE/xha:Header/xhb:CreationDateTime

The SBDH CreationDateTime can be transferred literally to the XHE CreationDateTime. This is the timestamp when the header envelope was created. The creation timestamps of business documents associated with the XHE header envelope are expected to be shown within the business documents themselves and their values are not reflected in the header envelope structure.

└ Manifest

XHE/xha:Payloads

The SBDH Manifest object provides information about documents related to or referenced from the business document. In XHE, this is achieved by associating business documents by either including their content in the XHE/xha:Payloads/xha:Payload/xha:PayloadContent element, or by referencing them from the XHE/xha:Payloads/xha:Payload/xha:PayloadExternalReference element.

└ └ NumberOfItems

N/A

The number of Payload children of the XHE/xha:Payloads element is evidence of how many payloads are contained within or referenced from an XHE.

└ └ ManifestItem

XHE/xha:Payloads/xha:Payload

The XHE/xha:Payloads/xha:Payload element provides information about an included or referenced business document, similar to the SBDH ManifestItem, and is repeated for each business document and artefact associated with the XHE instance.

└ └ └ MimeTypeQualifierCode

XHE/xha:Payloads/xha:Payload/xhb:ContentTypeCode

Provides information about the file format of the business document or artefact associated with the XHE instance. The SBDH MimeTypeQualifierCode can be transferred literally to the XHE ContentTypeCode.

└ └ └ UniformResourceIdentifier

XHE/xha:Payloads/xha:Payload/xha:PayloadExternalReference/xhb:ID

The xha:PayloadExternalReference/xhb:ID identifies an externally referenced document by its URI, similar to the SBDH UniformResourceIdentifier.

Note that the xha:PayloadExternalReference/xhb:ID MAY use any unambiguous identifier and is not restricted to use a URI.

└ └ └ Description

XHE/xha:Payloads/xha:Payload/xhb:Description

A textual description of the business document or artefact associated with the XHE instance. The SBDH Description can be transferred literally to the XHE Description.

└ └ └ LanguageCode

XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode/@languageID

The SBDH LanguageCode element provides information about the language of a referenced document. In XHE this is achieved by using the [CCTS] LanguageID attribute of the DocumentTypeCode element. The LanguageID attribute is of type xsd:language why the ISO 639 value of the SBDH LanguageCode can be transferred literally to XHE.

└ BusinessScope

 

The SBDH BusinessScope object describes one or more agreements between parties, which define the context of the SBDH and SBD such as its relation and position in a transaction or business process, or a convention of business document requirements.

 

The XHE may similarly contain information about any such agreements. However, the XHE differentiates between whether such agreements apply to the business document itself, the XHE header envelope, the business process, or any other convention that defines the understanding of the information being exchanged.

 

The following guidelines apply when migrating an SBDH business scope to XHE:

└ └ Scope

 

The SBDH BusinessScope/Scope is an object that repeats for each agreement and convention that applies to the business document. Each Scope contains as a minimum a Scope/Type and Scope/InstanceIdentifier pair, where the value of the Scope/Type element defines the type of business scope and the Scope/InstanceIdentifier defines the meaning or rules that applies to the business scope type.

 

When migrating from SBDH to XHE it is necessary to evaluate the Type of each SBSH Scope individually, in order to assess its meaning and relevance so that its appropriate position in the XHE structure can be determined. As a general guideline, XHE elements that describe the header envelope itself are found in the root element of the XML structure, XHE elements that describe a business document are found in the Payloads structure, and conventions and agreements that describe a general understanding of the scope of the header envelope and its related business documents are expressed using the Header structure.

└ └ └ Type

└ └ └ InstanceIdentifier

└ └ └ Identifier

XHE/xhb:CustomizationID

The XHE/CustomizationID describes an agreement to use a subset or a user defined model of the header envelope itself. When an SBDH business scope type is used for describing such a convention, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the XHE CustomizationID, while the SBDH BusinessScope/Scope/Identifier can be expressed using the [XML] attributes derived from [CCTS] of the CustomizationID element.

 

For example, the SBDH business scope

 

<BusinessScope>
  
<Scope>
    
<Type>HEADER_SCHEMA</Type>
    
<InstanceIdentifier>
      Example Header version 1.0
    
</InstanceIdentifier>
    
<Identifier>
      http://www.example.com/CustomHeader
    
</Identifier>
  
</Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:CustomizationID schemeDataURI="http://www.example.com/CustomHeader">Example Header version 1.0
</xhb:CustomizationID>

 

Not to be misidentified for the XHE CustomizationID in the XHE Payloads/Payload structure.

XHE/xha:Payloads/xha:Payload/xhb:CustomizationID

The Payload/CustomizationID identifies an agreement to use a subset or a user defined model of a business document associated with the XHE header envelope. When an SBDH business scope type is used for describing such a convention, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the XHE Payload/CustomizationID, while the SBDH Identifier can be expressed using the [CCTS] derived attributes of the Payload/CustomizationID element.

 

For example, the SBDH business scope

 

<BusinessScope>
  
<Scope>
    
<Type>DOCUMENT_SCHEMA</Type>
    
<InstanceIdentifier>
      Example Document version 1.0
    
</InstanceIdentifier>
    
<Identifier>
      http://www.example.com/CustomDoc
    
</Identifier>
  
</Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:CustomizationID schemeDataURI="http://www.example.com/CustomDoc">Example Document version 1.0
</xhb:CustomizationID>

 

Not to be misidentified for the XHE CustomizationID in the root element of the XHE.

XHE/xhb:ProfileID

The XHE/ProfileID describes the profile of the business process or business scope that the header envelope itself is part of. When an SBDH business scope type is used for describing such a convention, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the XHE ProfileID, while the SBDH Identifier can be expressed using the [CCTS] derived attributes of the ProfileID element.

 

For example, the SBDH business scope

 

<BusinessScope>
  
<Scope>
    
<Type>BUSINESS_PROCESS</Type>
    
<InstanceIdentifier>
      Messaging Process version 1.0
    
</InstanceIdentifier>
    
<Identifier>
      http://www.example.com/MsgProcess
    
</Identifier>
  
</Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:ProfileID schemeDataURI="http://www.example.com/MsgProcess">Messaging Process version 1.0
</xhb:ProfileID>

 

Not to be misidentified for the XHE ProfileID in the XHE Payloads/Payload structure.

XHE/xha:Payloads/xha:Payload/xhb:ProfileID

The Payload/ProfileID describes the profile of the business process or business scope that a business document associated with the header envelope is part of. When an SBDH business scope type is used for describing such a convention, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the XHE Payload/ProfileID, while the SBDH Identifier can be expressed using the [CCTS] derived attributes of the Payload/ProfileID element.

 

For example, the SBDH business scope

 

<BusinessScope>
  
<Scope>
    
<Type>INVOICING_PROCESS</Type>
    
<InstanceIdentifier>
      Invoicing Process version 1.0
    
</InstanceIdentifier>
    
<Identifier>
      http://www.example.com/Invoice
    
</Identifier>
  
</Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:ProfileID schemeDataURI="http://www.example.com/Invoice">Invoicing Process version 1.0
</xhb:ProfileID>

 

Not to be misidentified for the XHE ProfileID in the root element of the XHE.

XHE/xhb:ProfileExecutionID

The XHE/ProfileExecutionID is used to keep track of the specific instance within a business profile or process that the header envelope itself constitutes. It can as such be seen as a “business process session identifier”. When an SBDH business scope type is used for tracking messages or documents within a business process, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the XHE ProfileExecutionID.

 

For example, the SBDH business scope

 

<BusinessScope>
  <Scope>
    <Type>PROCESS_INSTANCE_ID</Type>
    <InstanceIdentifier>
      xyz123
    </InstanceIdentifier>
  </Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:ProfileExecutionID>
  xyz123
</xhb:ProfileExecutionID>

 

Not to be misidentified for the XHE Payload/ProfileExecutionID.

XHE/xha:Payloads/xha:Payload/xhb:ProfileExecutionID

The Payload/ProfileExecutionID is used to keep track of the specific instance within a business profile or process that a business document associated with a header envelope constitutes. It can as such be seen as a “business process session identifier”. When an SBDH business scope type is used for tracking business documents within a business process, the SBDH BusinessScope/Scope/InstanceIdentifier value is placed as the value of the Payload/ProfileExecutionID.

 

For example, the SBDH business scope

 

<BusinessScope>
  <Scope>
    <Type>PROCESS_INSTANCE_ID</Type>
    <InstanceIdentifier>
      xyz123
    </InstanceIdentifier>
  </Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:ProfileExecutionID>
  xyz123
</xhb:ProfileExecutionID>

 

Not to be misidentified for the XHE ProfileExecutionID in the root element of the XHE.

XHE/xha:Payloads/xha:Payload/xhb:HandlingServiceID

The XHE Payload/HandlingServiceID provides a mechanism to identify the service at the receiver’s end that should process the business document. In SBDH, this functionality is generally achieved by using the BusinessService/BusinessServiceName element (see description below), however the SBDH documentation also provides an option to implement this by the use of the BusinessScope/Scope/Identifier element. SBDH implementations using a set of Scope/Type, Scope/InstanceIdentifier and Scope/Identifier elements to describe the a receiving service to process a business document, the value of the Scope/Identifier element can be transferred literally to the XHE Payload/HandlingServiceID while the Scope/InstanceIdentifier value can be described using the [CCTS] attibutes of the XHE Payload/HandlingServiceID.

 

For example, the SBDH business scope

 

<BusinessScope>
  <Scope>
    <Type>BUSINESS_SERVICE</Type>
    <InstanceIdentifier>
      EDI-Order-Sell
    </InstanceIdentifier>
    <Identifier>
      Order-Sell
    </Identifier>
  </Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xhb:HandlingServiceID schemeName="EDI-Order-Sell">

  Order-Sell

</xhb:HandlingServiceID>

XHE/xha:Header/xha:BusinessScope/xhb:BusinessScopeCriterionTypeCode XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion

SBDH business scopes describing any convention or agreement that provides a general context for the scope of the SBDH and its associated business document can similarly be expressed in XHE using the Header/BusinessScope structure. It is a generic code/value combination analogous to the SBDH Scope/Type and Scope/InstanceIdentifier. When using this format in XHE, the BusinessScope/BusinessScopeCriterionTypeCode can be used identically to the SBDH Scope/Type, and the BusinessScope/BusinessScopeCriterion can be used identically to the SBDH Scope/InstanceIdentifier.

 

For example, the SBDH business scope

 

<BusinessScope>
  <Scope>
    <Type>MESSAGE_STATUS</Type>
    <InstanceIdentifier>
      Test
    </InstanceIdentifier>  </Scope>
</BusinessScope>

 

Can be expressed in XHE as

 

<xha:BusinessScopeCriterion>
  <xhb:BusinessScopeCriterionTypeCode>
    MESSAGE_STATUS
  </xhb:BusinessScopeCriterionTypeCode>
  <xhb:BusinessScopeCriterionValue>
    Test
  </xhb:BusinessScopeCriterionValue>
</xha:BusinessScopeCriterion>

 

When using the XHE BusinessScopeCriterion it is RECOMMENDED to make use of  [CCTS] derived attributes to provide context and to document the codes being used (see example in section 0 below).

└ └ └ BusinessService

 

The BusinessService is an extension to the SBDH business scope, which provides information about the business application expected to process a document in the receiver’s end, as well as additional instructions to be passed to the business application. The properties of the SBDH BusinessService are in general agreed upon in advance.

 

XHE provides similar functionality, however the anticipated comportment of the receiving business application is expected to be documented in the agreed-upon business process or business scope identified by the XHE Payload/ProfileID element.

└ └ └ └ BusinessServiceName

XHE/xha:Payloads/xha:Payload/xhb:HandlingServiceID

The SBDH BusinessServiceName element identifies the business service or application at the receiver’s end that is expected to process a business document. In most XHE use cases, this is inferred using the Payload/ProfileID. In cases where this is not possible, the optional Payload/HandlingServiceID is analogous to the SBDH BusinessServiceName.

XHE/xha:Payloads/xha:Payload/xhb:ProfileID

└ └ └ └ ServiceTransaction

XHE/xha:Payloads/xha:Payload/xhb:ProfileID

XHE/xhb:ProfileID

The SBDH ServiceTransaction element provides a fixed set of attributes through which a sender can include agreed-upon instructions expected to be carried out by the receiver’s business application. In XHE, such business level processing instructions and agreements are expected to be documented in the business process convention identified by either the XHE Payload/ProfileID element when referring to the business document, or in the XHE/ProfileID when it is the header envelope itself that is part of the business process.

└ └ └ └ ServiceTransaction/@TypeOfServiceTransaction

└ └ └ └ ServiceTransaction/@IsNonRepudiationRequired

└ └ └ └ ServiceTransaction/@IsAuthenticationRequired

└ └ └ └ ServiceTransaction/@IsNonRepudiationOfReceiptRequired

└ └ └ └ ServiceTransaction/@IsIntelligibleCheckRequired

└ └ └ └ ServiceTransaction/@IsApplicationErrorResponseRequested

└ └ └ └ ServiceTransaction/@TimeToAcknowledgeReceipt

└ └ └ └ ServiceTransaction/@TimeToAcknowledgeAcceptance

└ └ └ └ ServiceTransaction/@TimeToPerform

└ └ └ └ ServiceTransaction/@Recurrence

└ └ └ CorrelationInformation

XHE/xha:Payloads/xha:Payload/xhb:ProfileID

XHE/xhb:ProfileID

SBDH provides the Scope/CorrelationInformation as an alternative to the Scope/BusinessService. When used, CorrelationInformation provides information about a business document’s position within the choreography of a business process. As with the Scope/BusinessService above, XHE requires that such information is documented in the business process convention identified by either the XHE Payload/ProfileID element when referring to the business document, or in the XHE/ProfileID when it is the header envelope itself that is part of the business process.

└ └ └ └ RequestingDocumentCreationDateTime

└ └ └ └ RequestingDocumentInstanceIdentifier

└ └ └ └ └ ExpectedResponseDateTime

2.3 XHE as a header technology

2.3.1 Introduction

XHE can be used as a header technology meaning that the XHE instance is included within the structure of the business document itself. When used as a header technology, information that describes the XHE instance itself is placed within the XHE/Header element, while OPTIONAL information that describes the business document(s) is placed within the XHE/Payloads/Payload element.

When used as a business document header, one or more optional payloads MAY be included in the XHE. When including payloads in an XHE header instance, the first Payload child of the XHE/Payloads element MUST refer to the bounding business document itself while any additional Payload children refer to additional business documents or artefacts included in or referenced from the XHE header. See also the example XHE header with multiple payloads in section 2.3.2.3.

2.3.2 Example SBDH to XHE header transformation

2.3.2.1 Original SBDH instance

The below example shows the orderMessage example from the GS1 SBDH 1.3 Technical Implementation Guide ([GS1_Guide]) using the SBDH as a header technology. The annotations in the XML comments show the location of XHE elements in the SBDH header:

<?xml version="1.0" encoding="UTF-8"?>
<order:orderMessage xmlns:order="urn:gs1:ecom:order:xsd:3"
  xmlns:sh="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:gs1:ecom:order:xsd:3 ../Schemas/gs1/ecom/Order.xsd">
  <sh:StandardBusinessDocumentHeader>
    <!-- XHE/xhb:XHEVersionID -->
    <sh:HeaderVersion>1.0</sh:HeaderVersion>
    
    <!-- XHE/xha:Header/xha:FromParty -->
    <sh:Sender>
      <sh:Identifier Authority="GS1">8764321000003</sh:Identifier>
      <sh:ContactInformation>
        <sh:Contact>John Doe</sh:Contact>
        <sh:EmailAddress>John_Doe@purchasing.XYZretailer.com</sh:EmailAddress>
        <sh:FaxNumber>+1-212-555-1213</sh:FaxNumber>
        <sh:TelephoneNumber>+1-212-555-2122</sh:TelephoneNumber>
        <sh:ContactTypeIdentifier>EDI co-ordinator</sh:ContactTypeIdentifier>
      </sh:ContactInformation>
    </sh:Sender>
    
    <!-- XHE/xha:Header/xha:ToParty -->
    <sh:Receiver>
      <sh:Identifier Authority="GS1">8712345000004</sh:Identifier>
      <sh:ContactInformation>
        <sh:Contact>Mary Smith</sh:Contact>
        <sh:EmailAddress>Mary_Smith@widgets.com</sh:EmailAddress>
        <sh:FaxNumber>+1-312-555-1214</sh:FaxNumber>
        <sh:TelephoneNumber>+1-312-555-2125</sh:TelephoneNumber>
        <sh:ContactTypeIdentifier>EDI Helpdesk</sh:ContactTypeIdentifier>
      </sh:ContactInformation>
    </sh:Receiver>
    
    <sh:DocumentIdentification>
      <!-- XHE/xha:Payloads/xha:Payload/xhb:ValidationTypeCode -->
      <sh:Standard>GS1</sh:Standard>
      
      <!-- XHE/xha:Payloads/xha:Payload/xhb:ValidationVersionID -->
      <sh:TypeVersion>3.0</sh:TypeVersion>
      
      <!-- XHE/xha:Header/xhb:ID -->
      <sh:InstanceIdentifier>100002</sh:InstanceIdentifier>
      
      <!-- XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode -->
      <sh:Type>Order</sh:Type>
      
      <!--
        Not available in XHE. The presense of multiple payloads is evidence of

        multiple documents in the XHE instance.
      -->
      <sh:MultipleType>false</sh:MultipleType>
      
      <!-- XHE/xha:Header/hxb:CreationDateTime -->
      <sh:CreationDateAndTime>2006-01-10T12:00:01.000-05:00</sh:CreationDateAndTime>
      
    </sh:DocumentIdentification>
    <sh:BusinessScope>
      
      <sh:Scope>
        
        <!--
          This Scope Type indicates that the scope of the entire document instance is

          to be treated as a test

          XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/

          xhb:BusinessScopeCriterionTypeCode
        -->
        <sh:Type>MESSAGE_STATUS</sh:Type>
        
        <!--

          XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/

          xhb:BusinessScopeCriterionValue

        -->
        <sh:InstanceIdentifier>Test</sh:InstanceIdentifier>
        
      </sh:Scope>
      <sh:Scope>
        
        <!--
          This Scope Type indicates that InstanceIdentifier contains "the name and

          version of the guideline / set of processing rules that are applicable to this

          particular instance of the business document. The format of the name and

          version of the guideline / set of processing rules must be previously agreed

          upon between the sender and recipient of the message."

          XHE/xha:Payloads/xha:Payload/xhb:CustomizationID
        -->
        <sh:Type>SCHEMA_GUIDE</sh:Type>
        <sh:InstanceIdentifier>

          Dutch Fruit and Vegetable Industry Reference Model v. 1.1

        </sh:InstanceIdentifier>
        <sh:Identifier>urn:FrugICom:AGF:1.1</sh:Identifier>
        
      </sh:Scope>
    </sh:BusinessScope>
  </sh:StandardBusinessDocumentHeader>
  <order>
    <creationDateTime>2011-03-11T11:00:00.000-05:00</creationDateTime>
    <documentStatusCode>ORIGINAL</documentStatusCode>
    <orderIdentification>
      <entityIdentification>PO3352</entityIdentification>
    </orderIdentification>
    <orderTypeCode>220</orderTypeCode>
    <isApplicationReceiptAcknowledgementRequired>

      true

    </isApplicationReceiptAcknowledgementRequired>
    <additionalOrderInstruction languageCode="en">

      Pack all items individually

    </additionalOrderInstruction>
    <totalMonetaryAmountExcludingTaxes currencyCode="EUR">

      12675

    </totalMonetaryAmountExcludingTaxes>
    <totalTaxAmount currencyCode="EUR">2661.75</totalTaxAmount>
    <buyer>
      <gln>5412345000013</gln>
    </buyer>
    <seller>
      <gln>4098765000010</gln>
    </seller>
    <orderLogisticalInformation>
      <shipFrom>
        <gln>4098765000010</gln>
      </shipFrom>
      <shipTo>
        <gln>5412345000037</gln>
      </shipTo>
    </orderLogisticalInformation>
    <paymentTerms>
      <paymentTermsEventCode>AFTER_DATE_OF_DELIVERY</paymentTermsEventCode>
      <paymentTermsTypeCode>1</paymentTermsTypeCode>
      <proximoCutOffDay>---31</proximoCutOffDay>
    </paymentTerms>
    <orderLineItem>
      <lineItemNumber>1</lineItemNumber>
      <requestedQuantity measurementUnitCode="EA">48</requestedQuantity>
      <additionalOrderLineInstruction languageCode="en">FRAGILE</additionalOrderLineInstruction>
      <netAmount currencyCode="EUR">8016</netAmount>
      <netPrice currencyCode="EUR">167</netPrice>
      <transactionalTradeItem>
        <gtin>04098765000027</gtin>
      </transactionalTradeItem>
    </orderLineItem>
  </order>
</order:orderMessage>

 

2.3.2.2 SBDH instance transformed to XHE

The below example shows the same header as in 2.3.2.1, but transformed to XHE. The annotations in the XML comments show the location of values in the original SBDH header:

<?xml version="1.0" encoding="UTF-8"?>
<order:orderMessage xmlns:order="urn:gs1:ecom:order:xsd:3"
  xmlns:xhe="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
  xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
  xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:gs1:ecom:order:xsd:3 ../Schemas/gs1/ecom/Order-XHE.xsd">
  <xhe:XHE >
  
  <!-- XHE/xhb:XHEVersionID -->
  <xhb:XHEVersionID>1.0</xhb:XHEVersionID>
  
  <xha:Header>
    
    <!-- StandardBusinessDocumentHeader/DocumentIdentification/InstanceIdentifier -->
    <xhb:ID>100002</xhb:ID>
    
    <!-- StandardBusinessDocumentHeader/DocumentIdentification/CreationDateAndTime -->
    <xhb:CreationDateTime>2006-01-10T12:00:01.000-05:00</xhb:CreationDateTime>
    
    <xha:BusinessScope>
    
    <!--
      StandardBusinessDocumentHeader/BusinessScope/Scope/Type =

      a code at header level that applies to the entire message.
      StandardBusinessDocumentHeader/BusinessScope/Scope/InstanceIdentifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/Identifier
    -->
    <xha:BusinessScopeCriterion>
      <xhb:BusinessScopeCriterionTypeCode listAgencyName="GS1"

        listURI="urn:gs1:gdd:cl:BusinessDocumentProcessingTypeCode"

        listName="BusinessDocumentProcessingTypeCode"

        listVersionID="R1">MESSAGE_STATUS</xhb:BusinessScopeCriterionTypeCode>
      <xhb:BusinessScopeCriterionValue>Test</xhb:BusinessScopeCriterionValue>
    </xha:BusinessScopeCriterion>
    
    </xha:BusinessScope>
    
    <!-- StandardBusinessDocumentHeader/Sender -->
    <xha:FromParty>
    <xha:PartyIdentification>
      <xhb:ID schemeAgencyID="GS1" schemeID="GLN">8764321000003</xhb:ID>
    </xha:PartyIdentification>
    </xha:FromParty>
    
    <!-- StandardBusinessDocumentHeader/Receiver -->
    <xha:ToParty>
    <xha:PartyIdentification>
      <xhb:ID schemeAgencyID="GS1" schemeID="GLN">8712345000004</xhb:ID>
    </xha:PartyIdentification>
    </xha:ToParty>
    
  </xha:Header>
  <xha:Payloads>
    <xha:Payload>
    
    <!-- StandardBusinessDocumentHeader/DocumentIdentification/Type -->
    <xhb:DocumentTypeCode>Order</xhb:DocumentTypeCode>
    
    <!--
      StandardBusinessDocumentHeader/BusinessScope/Scope/Type =

      a document type identifier.
      StandardBusinessDocumentHeader/BusinessScope/Scope/InstanceIdentifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/Identifier
    -->
    <xhb:CustomizationID schemeURI="urn:FrugICom:AGF:1.1">

      Dutch Fruit and Vegetable Industry Reference Model v. 1.1

    </xhb:CustomizationID>
    
    <!-- StandardBusinessDocumentHeader/DocumentIdentification/Standard -->
    <xhb:ValidationTypeCode>GS1</xhb:ValidationTypeCode>
    
    <!-- StandardBusinessDocumentHeader/DocumentIdentification/TypeVersion -->
    <xhb:ValidationVersionID>3.0</xhb:ValidationVersionID>
    
    <!-- No SBDH equivalent but mandatory in XHE -->
    <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
    
    </xha:Payload>
  </xha:Payloads>
  </xhe:XHE>
  <order>
  <creationDateTime>2011-03-11T11:00:00.000-05:00</creationDateTime>
  <documentStatusCode>ORIGINAL</documentStatusCode>
  <orderIdentification>
    <entityIdentification>PO3352</entityIdentification>
  </orderIdentification>
  <orderTypeCode>220</orderTypeCode>
  <isApplicationReceiptAcknowledgementRequired>

    true

  </isApplicationReceiptAcknowledgementRequired>
  <additionalOrderInstruction languageCode="en">

    Pack all items individually

  </additionalOrderInstruction>
  <totalMonetaryAmountExcludingTaxes currencyCode="EUR">

    12675

  </totalMonetaryAmountExcludingTaxes>
  <totalTaxAmount currencyCode="EUR">2661.75</totalTaxAmount>
  <buyer>
    <gln>5412345000013</gln>
  </buyer>
  <seller>
    <gln>4098765000010</gln>
  </seller>
  <orderLogisticalInformation>
    <shipFrom>
    <gln>4098765000010</gln>
    </shipFrom>
    <shipTo>
    <gln>5412345000037</gln>
    </shipTo>
  </orderLogisticalInformation>
  <paymentTerms>
    <paymentTermsEventCode>AFTER_DATE_OF_DELIVERY</paymentTermsEventCode>
    <paymentTermsTypeCode>1</paymentTermsTypeCode>
    <proximoCutOffDay>---31</proximoCutOffDay>
  </paymentTerms>
  <orderLineItem>
    <lineItemNumber>1</lineItemNumber>
    <requestedQuantity measurementUnitCode="EA">48</requestedQuantity>
    <additionalOrderLineInstruction languageCode="en">

      FRAGILE

    </additionalOrderLineInstruction>
    <netAmount currencyCode="EUR">8016</netAmount>
    <netPrice currencyCode="EUR">167</netPrice>
    <transactionalTradeItem>
    <gtin>04098765000027</gtin>
    </transactionalTradeItem>
  </orderLineItem>
  </order>
</order:orderMessage>

 

As an alternative to the above example, the XHE namespace declarations can also be moved into the apex of the XHE header itself so as to not be included in the transformation of the business document itself:

<?xml version="1.0" encoding="UTF-8"?>
<order:orderMessage xmlns:order="urn:gs1:ecom:order:xsd:3"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="urn:gs1:ecom:order:xsd:3 ../Schemas/gs1/ecom/Order-XHE.xsd ">
  <xhe:XHE xmlns:xhe="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
    xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
    xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents">

 

2.3.2.3 XHE header with multiple payloads example

The below example shows the invoiceMessage example from the GS1 SBDH Invoice Business Message Standard ([GS1_Invoice]) with its SBDH header transformed to XHE and additional XHE payloads added to its header:

<?xml version="1.0" encoding="UTF-8"?>
<invoice:invoiceMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:gs1:ecom:invoice:xsd:3 ../Schemas/gs1/ecom/Invoice-XHE.xsd"
 xmlns:eanucc="urn:ean.ucc:2" xmlns:invoice="urn:gs1:ecom:invoice:xsd:3">
  <xhe:XHE xmlns:xhe="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
    xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
    xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents">
    <xhb:XHEVersionID>1.0</xhb:XHEVersionID>
    <xha:Header>
      <xhb:ID>IN11-548</xhb:ID>
      <xhb:CreationDateTime>2011-04-12T10:15:00.000-05:00</xhb:CreationDateTime>
      <xha:BusinessScope>
        <xha:BusinessScopeCriterion>
          <xhb:BusinessScopeCriterionTypeCode>

            MESSAGE_STATUS

          </xhb:BusinessScopeCriterionTypeCode>
          <xhb:BusinessScopeCriterionValue>Test</xhb:BusinessScopeCriterionValue>
        </xha:BusinessScopeCriterion>
      </xha:BusinessScope>
      <xha:FromParty>
        <xha:PartyIdentification>
          <xhb:ID schemeAgencyID="GS1" schemeID="GLN">4098765000010</xhb:ID>
        </xha:PartyIdentification>
      </xha:FromParty>
      <xha:ToParty>
        <xha:PartyIdentification>
          <xhb:ID schemeAgencyID="GS1" schemeID="GLN">5412345000013</xhb:ID>
        </xha:PartyIdentification>
      </xha:ToParty>
    </xha:Header>
    <xha:Payloads>
      <!—
        First payload occurrence refers to the business document itself, in this
        case the IN11-548 invoice
      -->
      <xha:Payload>
        <xhb:ID>IN11-548</xhb:ID>
        <xhb:Description>This invoice document</xhb:Description>
        <xhb:DocumentTypeCode>Invoice</xhb:DocumentTypeCode>
        <xhb:ValidationTypeCode>GS1</xhb:ValidationTypeCode>
        <xhb:ValidationVersionID>3.2</xhb:ValidationVersionID>
        <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
      </xha:Payload>
      <!-- Additional payloads refer to any additional documents -->
      <!-- Includes the original purchase order document -->
      <xha:Payload>
        <xhb:ID>PO3352</xhb:ID>
        <xhb:Description>Purchase order associated with IN11-548</xhb:Description>
        <xhb:DocumentTypeCode>Order</xhb:DocumentTypeCode>
        <xhb:CustomizationID schemeURI="urn:FrugICom:AGF:1.1">

          Dutch Fruit and Vegetable Industry Reference Model v. 1.1

        </xhb:CustomizationID>
        <xhb:ValidationTypeCode>GS1</xhb:ValidationTypeCode>
        <xhb:ValidationVersionID>3.0</xhb:ValidationVersionID>
        <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
        <xha:PayloadContent>
          <order:orderMessage xmlns:order="urn:gs1:ecom:order:xsd:3"
            xmlns:xhe="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="urn:gs1:ecom:order:xsd:3

            ../Schemas/gs1/ecom/Order-XHE.xsd">
            <xhe:XHE xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
              xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents">
              <xhb:XHEVersionID>1.0</xhb:XHEVersionID>
              <xha:Header>
                <xhb:ID>100002</xhb:ID>
                <xhb:CreationDateTime>

                  2006-01-10T12:00:01.000-05:00

                </xhb:CreationDateTime>
                <xha:BusinessScope>
                  <xha:BusinessScopeCriterion>
                    <xhb:BusinessScopeCriterionTypeCode>

                      MESSAGE_STATUS

                    </xhb:BusinessScopeCriterionTypeCode>
                    <xhb:BusinessScopeCriterionValue>

                      Test

                    </xhb:BusinessScopeCriterionValue>
                  </xha:BusinessScopeCriterion>
                </xha:BusinessScope>
                <xha:FromParty>
                  <xha:PartyIdentification>
                    <xhb:ID schemeAgencyID="GS1" schemeID="GLN">8764321000003</xhb:ID>
                  </xha:PartyIdentification>
                </xha:FromParty>
                <xha:ToParty>
                  <xha:PartyIdentification>
                    <xhb:ID schemeAgencyID="GS1" schemeID="GLN">8712345000004</xhb:ID>
                  </xha:PartyIdentification>
                </xha:ToParty>
              </xha:Header>
              <xha:Payloads>
                <xha:Payload>
                  <xhb:DocumentTypeCode>Order</xhb:DocumentTypeCode>
                  <xhb:CustomizationID schemeURI="urn:FrugICom:AGF:1.1">

                    Dutch Fruit and Vegetable Industry Reference Model v. 1.1

                  </xhb:CustomizationID>
                  <xhb:ValidationTypeCode>GS1</xhb:ValidationTypeCode>
                  <xhb:ValidationVersionID>3.0</xhb:ValidationVersionID>
                  <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
                </xha:Payload>
              </xha:Payloads>
            </xhe:XHE>
            <order>
              <creationDateTime>2011-03-11T11:00:00.000-05:00</creationDateTime>
              <documentStatusCode>ORIGINAL</documentStatusCode>
              <orderIdentification>
                <entityIdentification>PO3352</entityIdentification>
              </orderIdentification>
              <orderTypeCode>220</orderTypeCode>
              <isApplicationReceiptAcknowledgementRequired>

                true

              </isApplicationReceiptAcknowledgementRequired>
              <additionalOrderInstruction languageCode="en">

                Pack all items individually

              </additionalOrderInstruction>
              <totalMonetaryAmountExcludingTaxes currencyCode="EUR">

                12675

              </totalMonetaryAmountExcludingTaxes>
              <totalTaxAmount currencyCode="EUR">2661.75</totalTaxAmount>
              <buyer>
                <gln>5412345000013</gln>
              </buyer>
              <seller>
                <gln>4098765000010</gln>
              </seller>
              <orderLogisticalInformation>
                <shipFrom>
                  <gln>4098765000010</gln>
                </shipFrom>
                <shipTo>
                  <gln>5412345000037</gln>
                </shipTo>
              </orderLogisticalInformation>
              <paymentTerms>
                <paymentTermsEventCode>AFTER_DATE_OF_DELIVERY</paymentTermsEventCode>
                <paymentTermsTypeCode>1</paymentTermsTypeCode>
                <proximoCutOffDay>---31</proximoCutOffDay>
              </paymentTerms>
              <orderLineItem>
                <lineItemNumber>1</lineItemNumber>
                <requestedQuantity measurementUnitCode="EA">48</requestedQuantity>
                <additionalOrderLineInstruction languageCode="en">

                  FRAGILE

                </additionalOrderLineInstruction>
                <netAmount currencyCode="EUR">8016</netAmount>
                <netPrice currencyCode="EUR">167</netPrice>
                <transactionalTradeItem>
                  <gtin>04098765000027</gtin>
                </transactionalTradeItem>
              </orderLineItem>
            </order>
          </order:orderMessage>
        </xha:PayloadContent>
      </xha:Payload>
      <xha:Payload>
        <xhb:ID>PO3352-PDF</xhb:ID>
        <xhb:Description>

          PDF rendering of purchase order associated with IN11-548

        </xhb:Description>
        <xhb:ContentTypeCode>application/pdf</xhb:ContentTypeCode>
        <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
        <xha:RelevantExternalReference>
          <xhb:ID>http://www.example.com/PO3352-PDF</xhb:ID>
        </xha:RelevantExternalReference>
      </xha:Payload>
    </xha:Payloads>
  </xhe:XHE>
  <invoice>
    <creationDateTime>2011-04-12T10:15:00.000-05:00</creationDateTime>
    <documentStatusCode>ORIGINAL</documentStatusCode>
    <invoiceIdentification>
      <entityIdentification>IN11-548</entityIdentification>
      <contentOwner>
        <gln>4098765000010</gln>
      </contentOwner>
    </invoiceIdentification>
    <digitalSignature>
      <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"
        xsi:schemaLocation="http://www.w3.org/2000/09/xmldsig#

        ../Schemas/xmldsig/xmldsig-core-schema.xsd">
        <SignedInfo>
          <CanonicalizationMethod
            Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
          <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#dsa-sha1"/>
          <Reference URI="http://example.org">
            <Transforms>
              <Transform
                Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
            </Transforms>
            <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
            <DigestValue>K8M/lPbKnuMDsO0Uzuj75lQtzQI=</DigestValue>
          </Reference>
        </SignedInfo>
        <SignatureValue>DpEylhQoiUKBoKWmYfajXO7LZxiDYgVtUtCNyTgwZgoChzorA2nhkQ==</SignatureValue>
        <KeyInfo>
          <KeyValue>
            <DSAKeyValue>
              <P>
                rFto8uPQM6y34FLPmDh40BLJ1rVrC8VeRquuhPZ6jYNFkQuwxnu/wCvIAMhukPBLFET8bJf/b2ef+oqxZajEb+88zlZoyG8g/wMfDBHTxz+CnowLahnCCTYBp5kt7G8qUobJuvjylwj1st7V9Lsu03iXMXtbiriUjFa5gURasN8= </P>
              <Q>kEjAFpCe4lcUOdwphpzf+tBaUds=</Q>
              <G>
                oe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqw= </G>
              <Y>
                pA5NnZvcd574WRXuOA7ZfC/7Lqt4cB0MRLWtHubtJoVOao9ib5ry4rTk0r6ddnOvAIGKktutzK3ymvKleS3DOrwZQgJ+/BDWDW8kO9R66o6rdjiSobBi/0c2V1+dkqOgjFmKz395mvCOZGhC7fqAVhHat2EjGPMfgSZyABa7+1k=
              </Y>
            </DSAKeyValue>
          </KeyValue>
          <X509Data>
            <X509Certificate>
              MIIDbTCCAyygAwIBAgIGAOCdrKxkMAkGByqGSM44BAMwezELMAkGA1UEBhMCSUUxDzANBgNVBAgTBkR1YmxpbjElMCMGA1UEChMcQmFsdGltb3JlIFRlY2hub2xvZ2llcywgTHRkLjERMA8GA1UECxMIWC9TZWN1cmUxITAfBgNVBAMTGFgvU2VjdXJlIDEwMjQtYml0IERTQSBDQTAeFw0wMDA3MjcxNzEzMzNaFw0wMTA3MjcxNzEzMjZaMHwxCzAJBgNVBAYTAklFMQ8wDQYDVQQIEwZEdWJsaW4xJTAjBgNVBAoTHEJhbHRpbW9yZSBUZWNobm9sb2dpZXMsIEx0ZC4xETAPBgNVBAsTCFgvU2VjdXJlMSIwIAYDVQQDExlYL1NlY3VyZSAxMDI0LWJpdCBEU0EgY3J0MIIBuDCCASwGByqGSM44BAEwggEfAoGBAKxbaPLj0DOst+BSz5g4eNASyda1awvFXkarroT2eo2DRZELsMZ7v8AryADIbpDwSxRE/GyX/29nn/qKsWWoxG/vPM5WaMhvIP8DHwwR08c/gp6MC2oZwgk2AaeZLexvKlKGybr48pcI9bLe1fS7LtN4lzF7W4q4lIxWuYFEWrDfAhUAkEjAFpCe4lcUOdwphpzf+tBaUdsCgYEAoe14R2OtyKx+s+60O5BRNMOYpIg2TU/f15N3bsDErKOWtKXeNK9FS7dWStreDxo2SSgOonqAd4FuJ/4uva7GgNL4ULIqY7E+mW5iwJ7n/WTELh98mEocsLXkNh24HcH4BZfSCTruuzmCyjdV1KSqX/Eux04HfCWYmdxN3SQ/qqwDgYUAAoGBAKQOTZ2b3Hee+FkV7jgO2Xwv+y6reHAdDES1rR7m7SaFTmqPYm+a8uK05NK+nXZzrwCBipLbrcyt8prypXktwzq8GUICfvwQ1g1vJDvUeuqOq3Y4kqGwYv9HNldfnZKjoIxZis9/eZrwjmRoQu36gFYR2rdhIxjzH4EmcgAWu/tZozswOTAPBgNVHQ8BAf8EBQMDAIAAMBEGA1UdDgQKBAiA4IML4dndEDATBgNVHSMEDDAKgAiHoMnYnDxZUDAJBgcqhkjOOAQDAzAAMC0CFQCEXa1E2ueJ8WMX5nP1lCcBWhxC2wIUGUCBb6M6Oj3NQAJbnZsdY63rKa0=
            </X509Certificate>
          </X509Data>
        </KeyInfo>
      </Signature>
    </digitalSignature>
    <invoiceType>INVOICE</invoiceType>
    <invoiceCurrencyCode>EUR</invoiceCurrencyCode>
    <buyer>
      <gln>5412345000013</gln>
    </buyer>
    <seller>
      <gln>4098765000010</gln>
    </seller>
    <invoiceTotals>
      <totalInvoiceAmount currencyCode="EUR">999.6</totalInvoiceAmount>
      <totalAmountInvoiceAllowancesCharges currencyCode="EUR"
        >0</totalAmountInvoiceAllowancesCharges>
      <totalLineAmountInclusiveAllowancesCharges currencyCode="EUR"
        >999.6</totalLineAmountInclusiveAllowancesCharges>
      <totalTaxAmount currencyCode="EUR">159.6</totalTaxAmount>
      <taxSubtotal>
        <dutyFeeTaxAmount currencyCode="EUR">159.6</dutyFeeTaxAmount>
        <dutyFeeTaxBasisAmount currencyCode="EUR">840</dutyFeeTaxBasisAmount>
        <dutyFeeTaxCategoryCode>STANDARD_RATE</dutyFeeTaxCategoryCode>
        <dutyFeeTaxPercentage>19.00</dutyFeeTaxPercentage>
        <dutyFeeTaxTypeCode>VALUE_ADDED_TAX</dutyFeeTaxTypeCode>
      </taxSubtotal>
    </invoiceTotals>
    <invoiceLineItem>
      <lineItemNumber>1</lineItemNumber>
      <invoicedQuantity>48</invoicedQuantity>
      <amountInclusiveAllowancesCharges currencyCode="EUR"
        >480</amountInclusiveAllowancesCharges>
      <itemPriceInclusiveAllowancesCharges currencyCode="EUR"
        >10</itemPriceInclusiveAllowancesCharges>
      <transferOfOwnershipDate>2011-04-11</transferOfOwnershipDate>
      <transactionalTradeItem>
        <gtin>40987650000223</gtin>
      </transactionalTradeItem>
      <invoiceLineTaxInformation>
        <dutyFeeTaxAmount currencyCode="EUR">91.2</dutyFeeTaxAmount>
        <dutyFeeTaxBasisAmount currencyCode="EUR">480</dutyFeeTaxBasisAmount>
        <dutyFeeTaxCategoryCode>STANDARD_RATE</dutyFeeTaxCategoryCode>
        <dutyFeeTaxPercentage>19.00</dutyFeeTaxPercentage>
        <dutyFeeTaxTypeCode>VALUE_ADDED_TAX</dutyFeeTaxTypeCode>
      </invoiceLineTaxInformation>
      <invoiceLineItemInformationAfterTaxes>
        <amountInclusiveAllowancesCharges currencyCode="EUR"
          >571.2</amountInclusiveAllowancesCharges>
      </invoiceLineItemInformationAfterTaxes>
      <purchaseOrder>
        <entityIdentification>PO3352</entityIdentification>
        <creationDateTime>2011-03-11T11:00:00.000-05:00</creationDateTime>
        <lineItemNumber>1</lineItemNumber>
      </purchaseOrder>
    </invoiceLineItem>
    <invoiceLineItem>
      <lineItemNumber>2</lineItemNumber>
      <invoicedQuantity>24</invoicedQuantity>
      <amountInclusiveAllowancesCharges currencyCode="EUR"
        >360</amountInclusiveAllowancesCharges>
      <itemPriceInclusiveAllowancesCharges currencyCode="EUR"
        >15</itemPriceInclusiveAllowancesCharges>
      <transferOfOwnershipDate>2011-04-11</transferOfOwnershipDate>
      <transactionalTradeItem>
        <gtin>40987650000346</gtin>
      </transactionalTradeItem>
      <invoiceLineTaxInformation>
        <dutyFeeTaxAmount currencyCode="EUR">68.4</dutyFeeTaxAmount>
        <dutyFeeTaxBasisAmount currencyCode="EUR">360</dutyFeeTaxBasisAmount>
        <dutyFeeTaxCategoryCode>STANDARD_RATE</dutyFeeTaxCategoryCode>
        <dutyFeeTaxPercentage>19.00</dutyFeeTaxPercentage>
        <dutyFeeTaxTypeCode>VALUE_ADDED_TAX</dutyFeeTaxTypeCode>
        <extension/>
      </invoiceLineTaxInformation>
      <invoiceLineItemInformationAfterTaxes>
        <amountInclusiveAllowancesCharges currencyCode="EUR"
          >571.2</amountInclusiveAllowancesCharges>
      </invoiceLineItemInformationAfterTaxes>
      <purchaseOrder>
        <entityIdentification>PO3352</entityIdentification>
        <creationDateTime>2011-03-11T11:00:00.000-05:00</creationDateTime>
        <lineItemNumber>1</lineItemNumber>
      </purchaseOrder>
    </invoiceLineItem>
  </invoice>
</invoice:invoiceMessage>

 

2.4 XHE as an envelope technology

2.4.1 Introduction

XHE can be used as an envelope technology meaning that the XHE instance is an entity in itself and includes one or more business documents as payloads within its structure. Whether used as a header or as an envelope technology, information that describes the XHE instance itself is placed within the XHE/Header element while information that describes an associated business document is placed within the business document’s respective XHE/Payloads/Payload element.

2.4.2 Example SBDH to XHE envelope transformation

2.4.2.1 Original SBDH instance

The below example shows the Invoice example from the PEPPOL Business Message Envelope ([PEPPOL_BME]) using the SBDH as an envelope technology. The annotations in the XML comments show the location of SBDH elements in an XHE:

<?xml version="1.0" encoding="UTF-8"?>
<StandardBusinessDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader xsd/StandardBusinessDocumentHeader.xsd"
  xmlns="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <StandardBusinessDocumentHeader>
    <!-- XHE/xhb:XHEVersionID -->
    <HeaderVersion>1.0</HeaderVersion>

    <!-- XHE/xha:Header/xha:FromParty -->
    <Sender>
      <Identifier Authority="iso6523-actorid-upis">0088:7315458756324</Identifier>
    </Sender>

    <!-- XHE/xha:Header/xha:ToParty -->
    <Receiver>
      <Identifier Authority="iso6523-actorid-upis">0088:4562458856624</Identifier>
    </Receiver>

    <DocumentIdentification>

      <!-- XHE/xha:Payloads/xha:Payload/xhb:ValidationTypeCode -->
      <Standard>urn:oasis:names:specification:ubl:schema:xsd:Invoice-2</Standard>

      <!-- XHE/xha:Payloads/xha:Payload/xhb:ValidationVersionID -->
      <TypeVersion>2.1</TypeVersion>

      <!-- XHE/xha:Header/xhb:ID -->
      <InstanceIdentifier>123123</InstanceIdentifier>

      <!-- XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode -->
      <Type>Invoice</Type>

      <!-- XHE/xha:Header/hxb:CreationDateTime -->
      <CreationDateAndTime>2019-02-01T15:42:10Z</CreationDateAndTime>

    </DocumentIdentification>
    <BusinessScope>

      <!--
        BusinessScope/Scope/Type = a Document Type Identifier
        XHE/xha:Payloads/xha:Payload/xhb:CustomizationID
      -->
      <Scope>
        <Type>DOCUMENTID</Type>
        <InstanceIdentifier>urn:oasis:names:specification:ubl:schema:xsd:Invoice- 2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1</InstanceIdentifier>
        <Identifier>busdox-docid-qns</Identifier>
      </Scope>

      <!--
        BusinessScope/Scope/Type = a Process Type Identifier
        XHE/xha:Payloads/xha:Payload/xhb:ProfileID
      -->
      <Scope>
        <Type>PROCESSID</Type>
        <InstanceIdentifier>

          urn:fdc:peppol.eu:2017:poacc:billing:01:1.0

        </InstanceIdentifier>
        <Identifier>cenbii-procid-ubl</Identifier>
      </Scope>

    </BusinessScope>
  </StandardBusinessDocumentHeader>

  <!-- XHE/xha:Payloads/xha:Payload/xha:PayloadContent -->
  <Invoice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
    xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
    xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
    <!-- reduced instance file -->
  </Invoice>
</StandardBusinessDocument>

 

2.4.2.2 SBDH instance transformed to XHE

The below example shows the same envelope as in 2.4.2.1, but transformed to XHE. The annotations in the XML comments show the location of values in the original SBDH document:

<?xml version="1.0" encoding="UTF-8"?>
<XHE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope xsd/XHE-1.0.xsd"
  xmlns="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
  xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
  xmlns:ext="oasis-cefact-xhe-1.0-ExtensionComponents"
  xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents">

  <!-- StandardBusinessDocumentHeader/HeaderVersion -->
  <xhb:XHEVersionID>1.0</xhb:XHEVersionID>
  <xha:Header>
  
  <!-- StandardBusinessDocumentHeader/DocumentIdentification/InstanceIdentifier -->
  <xhb:ID>123123</xhb:ID>

  <!-- StandardBusinessDocumentHeader/DocumentIdentification/CreationDateAndTime -->
  <xhb:CreationDateTime>2019-02-01T15:42:10Z</xhb:CreationDateTime>

  <!-- StandardBusinessDocumentHeader/Sender -->
  <xha:FromParty>
    <xha:PartyIdentification>
    <xhb:ID schemeID="iso6523-actorid-upis">0088:7315458756324</xhb:ID>
    </xha:PartyIdentification>
  </xha:FromParty>
  
  <!-- StandardBusinessDocumentHeader/Receiver -->
  <xha:ToParty>
    <xha:PartyIdentification>
    <xhb:ID schemeID="iso6523-actorid-upis">0088:4562458856624</xhb:ID>
    </xha:PartyIdentification>
  </xha:ToParty>

  </xha:Header>
  <xha:Payloads>
  <xha:Payload>

    <!-- StandardBusinessDocumentHeader/DocumentIdentification/Type -->
    <xhb:DocumentTypeCode>Invoice</xhb:DocumentTypeCode>

    <!--
      StandardBusinessDocumentHeader/BusinessScope/Scope/Type = a document type

      identifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/InstanceIdentifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/Identifier
    -->
    <xhb:CustomizationID schemeID="busdox-docid-qns">urn:oasis:names:specification:ubl:schema:xsd:Invoice- 2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1</xhb:CustomizationID>

    <!--
      StandardBusinessDocumentHeader/BusinessScope/Scope/Type = a process type

      identifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/InstanceIdentifier
      StandardBusinessDocumentHeader/BusinessScope/Scope/Identifier
    -->
    <xhb:ProfileID schemeID="cenbii-procid-ubl">urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</xhb:ProfileID>

    <!-- StandardBusinessDocumentHeader/DocumentIdentification/Standard -->
    <xhb:ValidationTypeCode>urn:oasis:names:specification:ubl:schema:xsd:Invoice-2</xhb:ValidationTypeCode>

    <!-- StandardBusinessDocumentHeader/DocumentIdentification/TypeVersion -->
    <xhb:ValidationVersionID>2.1</xhb:ValidationVersionID>

    <!-- No SBDH equivalent but mandatory in XHE -->
    <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
    
    <!-- StandardBusinessDocument -->
    <xha:PayloadContent>
    <Invoice xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2"
      xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
      xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2">
      <!-- reduced instance file -->
    </Invoice>
    </xha:PayloadContent>
  </xha:Payload>
  </xha:Payloads>
</XHE>

3      Migrating from BDE 1.1

3.1 Introduction

A [BDE] implementation can be migrated to [XHE] without loss of data, meaning or context. Since the distinct purpose of BDE is to function as an autonomous and content-agnostic business document envelope, XHE can replace its role in the same context and environment where BDE used, and without the need to modify any additional business processes, documents, conventions or other related systems or components except for the BDE itself. Furthermore, XHE can be used as a header technology, and provides functionality that cannot be accomplished using BDE. Both BDE and XHE a consist of [CCTS]-modeled objects, why the migration from BDE to XHE should not be complex for anyone with a basic understanding of BDE and CCTS.

This migration guide covers the migration and transformation of existing BDE instances to XHE. For information about additional functionalities and features please consult the [XHE] documentation itself.

3.2 BDE mapping guide

3.2.1 Introduction

This section contains a complete list of [BDE] business objects and their equivalent positions in [XHE]. Most elements in BDE can be mapped one-to-one to an equivalent XHE element as can their [XML] attributes derived from the [CCTS] supplementary components.

3.2.2 BDE Envelope class mapping

BDE

XHE

Comments

Envelope

XHE

When used as an envelope technology, the XHE element is the root element of the XML document, analogous to the BDE Envelope.

└ BDEVersionID

XHE/xhb:XHEVersionID

For both standards, this is the identification of the specific version in use.

└ CustomizationID

XHE/xhb:CustomizationID

For both BDE and XHE, the CustomizationID, when not within a Payload element, describes an agreement to use a subset or a user defined model of the envelope itself. It is in both cases different from the Payload/CustomizationID, which describes a user defined model of a business document associated with an envelope (see section Error! Reference source not found. below).

The XHE/xhb:CustomizationID is analogous to the BDE Envelope/cbc:CustomizationID.

└ ID

XHE/xha:Header/xhb:ID

Uniquely identifies the envelope instance. In XHE, elements describing the header envelope instance itself are placed in the Header structure. The XHE/xha:Header/xhb:ID is analogous to the BDE Envelope/cbc:ID.

└ CreationDateTime

XHE/xha:Header/xhb:CreationDateTime

The timestamp of when the envelope instance was created. In XHE, elements describing the header envelope instance itself are placed in the Header structure. The XHE/xha:Header/xhb:CreationDateTime is analogous to the BDE Envelope/cbc:CreationDateTime.

└ TestIndicator

XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/xhb:BusinessScopeCriterionTypeCode

XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/xhb:BusinessScopeCriterionValue

The BDE TestIndicator is a convention defined in the BDE specification, which describes the scope and context of the envelope and its content as either being testing or production. When used, and its value is set to “true”, the scope and context of the BDE envelope, including its content, is that it is a test.

 

In XHE, such scopes and conventions are revealed in the BusinessScope element within the XHE Header structure. The XHE BusinessScope element MAY contain any number of business scopes by including repeatable BusinessScopeCriterion elements. Each BusinessScopeCriterion identifies a business scope that applies to the XHE and MUST contain a pair of BusinessScopeCriterionTypeCode and BusinessScopeCriterionValue elements. The BusinessScopeCriterionTypeCode describes the type and nature of the business scope being defined, and the BusinessScopeCriterionValue describes the value being assigned to the business scope. Together they define a context for the header envelope. Consequently, to define that the context of an XHE as testing, an implementer must include a BusinessScopeCriterion with a BusinessScopeCriterionTypeCode that is defined as whether a header envelope is a test or not, and a BusinessScopeCriterionValue that defines that it is a test. For example:

 

<xha:BusinessScopeCriterion>

  <xhb:BusinessScopeCriterionTypeCode>

    Test

  </xhb:BusinessScopeCriterionTypeCode>

  <xhb:BusinessScopeCriterionValue>

    True

  </xhb:BusinessScopeCriterionValue>

</xha:BusinessScopeCriterion>

 

It is important to understand that the specific business scopes and their definitions are not defined within the XHE specification itself. Such conventions are expected to be agreed upon and documented by the implementing parties or user communities, and XHE simply provides the methodology and structure to reveal them within a header envelope instance.

└ FromParty

XHE/xha:Header/xha:FromParty

Describes a sending party. The XHE/xha:Header/xhb:FromParty is analogous to the BDE Envelope/eac:FromParty (see section Error! Reference source not found. for information about the Party class).

└ ToParty

XHE/xha:Header/xha:ToParty

Describes a recipient. The XHE/xha:Header/xhb:ToParty is analogous to the BDE Envelope/eac:ToParty (see section Error! Reference source not found. for information about the Party class).

└ Payload

XHE/xha:Payloads/xha:Payload

For both BDE and XHE, the Payload is a repeatable element where each instance describes the properties of a business document as well as either contains the business document itself or a contains reference to an external business document. While the BDE Payload repeats in the root element of the envelope, the XHE Payload repeats within an XHE/xha:Payloads container. See section Error! Reference source not found. for more information about the Payload class.

 

3.2.3 BDE Party class mapping

BDE

XHE

Comments

Party

Party

 

└ ID

Party/xha:PartyIdentification/xhb:ID

Unambiguously identifies a party. The XHE/xha:Party/xhb:ID is analogous to the BDE cac:Party/cbc:ID.

 

3.2.4 BDE Payload class mapping

BDE

XHE

Comments

Payload

Payload

 

└ ID

Payload/xhb:ID

Unambiguously identifies a payload (a business document contained within or referenced from an envelope) instance. The XHE/xha:Payloads/xha:Payload/xhb:ID is analogous to the BDE cac:Payload/cbc:ID.

└ DocumentTypeID

Payload/xhb:DocumentTypeCode

The BDE DocumentTypeID identifies the document type of a business document, such as “Order”, “Invoice”, a URN, or using any convention agreed upon by the parties. The equivalent in XHE is the DocumentTypeCode, with the important difference that the BDE DocumentTypeID is a [CCTS] Identifier type, while the XHE DocumentTypeCode is a [CCTS] Code type.

 

As an example, the BDE DocumentTypeID

 

<ebc:DocumentTypeID>

  Invoice

</ebc:DocumentTypeID>

 

Can be expressed in XHE as

 

<xhb:DocumentTypeCode>

  Invoice

</xhb:DocumentTypeCode>

└ CustomizationID

Payload/xhb:CustomizationID

The Payload/CustomizationID describes an agreement to use a subset or a user defined model of a business document associated with an envelope.  The XHE/xha:Payloads/xha:Payload/xhb:CustomizationID is analogous to the BDE cac:Payload/cbc:CustomizationID.

└ ProfileID

Payload/xhb:ProfileID

The Payload/ProfileID describes the profile of the business process or business scope that a business document associated with an envelope is part of. The XHE/xha:Payloads/xha:Payload/xhb:ProfileID is analogous to the BDE cac:Payload/cbc:ProfileID.

└ ProfileExecutionID

Payload/xhb:ProfileExecutionID

The Payload/ProfileExecutionID is used to keep track of the specific instance within a business profile or process that a business document associated with an envelope constitutes. It can as such be seen as a “business process session identifier”. The XHE/xha:Payloads/xha:Payload/xhb:ProfileExecutionID is analogous to the BDE Payload/cbc:ProfileExecutionID and is different from the XHE/xhb:ProfileExecutionID, which identifies the header envelope itself within such process.

└ HandlingServiceID

Payload/xhb:HandlingServiceID

The Payload/HandlingServiceID provides a mechanism to identify the service at the receiver’s end that should process the business document. The XHE/xha:Payloads/xha:Payload/xhb:HandlingServiceID is analogous to the BDE cac:Payload/cbc:HandlingServiceID.

└ InstanceSyntaxID

Payload/xhb:ContentTypeCode

The BDE InstanceSyntaxID indicates the syntax used to express and structure a business document, such as a MIME type or a markup language. The equivalent in XHE is the ContentTypeCode, with the important difference that the BDE InstanceSyntaxID is a [CCTS] Identifier type, while the XHE ContentTypeCode is a [CCTS] Code type.

 

As an example, the BDE InstanceSyntaxID

 

<ebc:InstanceSyntaxID schemeID="MIME">
  text/plain
</ebc:InstanceSyntaxID>

 

Can be expressed in XHE as

 

<xhb:ContentTypeCode listID="MIME">
  text/plain
</xhb:ContentTypeCode>

└ InstanceEncryptionIndicator

Payload/xhb:InstanceEncryptionIndicator

Reveals whether the business document associated with the envelope payload instance is encrypted or not. When set to “true”, the business document is encrypted. The InstanceEncryptionIndicator is a mandatory element of the XHE Payload class, while it is optional in BDE.

└ InstanceEncryptionMethod

Payload/xhb:InstanceEncryptionMethod

When the business document associated with the envelope payload is encrypted, the InstanceEncryptionMethod reveals the method that was used for encrypting it. The XHE/xha:Payloads/xha:Payload/xhb:InstanceEncryptionMethod is analogous to the BDE cac:Payload/cbc:InstanceEncryptionMethod.

└ InstanceHashValue

Payload/xhb:InstanceHashValue

When used, the InstanceHashValue contains the computed hash total of the entire business document being sent with the payload instance, enabling the receiver and other parties to compute the hash total of the business document received and thereby verifying its integrity. XHE REQUIRES that the hash total is computed using the [SHA-256] algorithm. This is different from BDE. which allows the implementer to specify the algorithm used (see InstanceHashAlgorithm below).

└ InstanceHashAlgorithm

N/A

In BDE, the InstanceHashAlgorithm indicates the algorithm and methodology used to compute the hash total value (see InstanceHashValue above). This is not used in XHE. For XHE payloads, users MUST use the [SHA-256] algorithm to compute the InstanceHashValue.

└ InstanceDecryptionInformationExternalReference

Payload/xha:InstanceDecryptionInformationExternalReference

The InstanceDecryptionInformationExternalReference holds information about an externally available (not within the envelope itself) resource with information about how to decrypt an encrypted business document. The XHE/xha:Payloads/xha:Payload/xha:InstanceDecryptionInformationExternalReference is analogous to the BDE cac:Payload/cac:InstanceDecryptionInformationExternalReference. See section 3.2.5 for information about the External Reference class

└ InstanceDecryptionKeyExternalReference

Payload/xha:InstanceDecryptionKeyExternalReference

The InstanceDecryptionKeyExternalReference holds information about an externally available (not within the envelope itself) decryption key necessary to transform an encrypted business document into a readable form. The XHE/xha:Payloads/xha:Payload/xha:InstanceDecryptionKeyExternalReference is analogous to the BDE cac:Payload/cac:InstanceDecryptionKeyExternalReference. See section 3.2.5 for information about the External Reference class.

└ RelevantExternalReference

Payload/xha:RelevantExternalReference

For both BDE and XHE, the RelevantExternalReference is a repeatable element within an envelope payload instance. Each RelevantExternalReference holds information about any document or other resource externally available (not within the envelope itself) to the envelope and which is not a business document associated with the envelope itself but is relevant for a business document associated with the envelope. An envelope payload can have any number of RelevantExternalReference available to it. The XHE/xha:Payloads/xha:Payload/xha:RelevantExternalReference is analogous to the BDE cac:Payload/cac:RelevantExternalReference. See section 3.2.5 for information about the External Reference class.

└ PayloadExternalReference

Payload/xha:PayloadExternalReference

The PayloadExternalReference holds information about a business document associated with the envelope when it is not included within the envelope itself. Because BDE is exclusively an envelope technology, a BDE instance must always have a business document associated with it, either as an external PayloadExternalReference or included in the PayloadContent. This is different in XHE, which can also be used as a header technology where the XHE instance is included in the business document instead of the other way around. For both BDE and XHE applies that a Payload instance MUST NOT have both a PayloadExternalReference element and a PayloadContent element. The BDE MUST have one or the other and the XHE MAY have one or the other, but neither a BDE nor an XHE payload instance can have both.

See also PayloadContent below, and section 3.2.5 for more information about the External Reference class.

└ PayloadContent

Payload/PayloadContent

When present, the PayloadContent contains a business document associated with the envelope, either as well-formed XML content or as text. Because BDE is exclusively an envelope technology, a BDE instance must always have a business document associated with it, either as an external PayloadExternalReference or included in the PayloadContent. This is different in XHE, which can also be used as a header technology where the XHE instance is included in the business document instead of the other way around. For both BDE and XHE applies that a Payload MUST NOT have both a PayloadExternalReference element and a PayloadContent element. The BDE MUST have one or the other and the XHE MAY have one or the other, but neither a BDE nor an XHE payload instance can have both.

See also PayloadExternalReference above.

 

3.2.5 BDE External Reference class mapping

BDE

XHE

Comments

External Reference

External Reference

 

└ ID

External Reference/xhb:ID

The ID element of the External Reference class unambiguously identifies a resource not included in the header envelope so that its location can be unequivocally determined, and the resource retrieved. This is usually done by using a URL or URI as ID value; however, any ID can be used, which can fulfill the requirement of unambiguously identifying how to retrieve a resource. The XHE External Payload/xhb:ID is analogous to the BDE External Payload/cbc:ID.

└ AvailabilityStartDateTime

External Reference/xhb:AvailabilityStartDateTime

An external resource related to a header envelope may be available for a limited time only. This is necessary in some business transactions, for example when submitting a tender or a bid in an envelope that should not be opened before a certain date and time. The AvailabilityStartDateTime and AvailabilityEndDateTime exist to support such processes. The AvailabilityStartDateTime is a timestamp that reveals from when a resource will be available, and the AvailabilityEndDateTime timestamp reveals until when a resource will be available.

The XHE External Payload/xhb:AvailabilityStartDateTime is analogous to the BDE External Payload/cbc:AvailabilityStartDateTime and the XHE External Payload/xhb:AvailabilityStartDateTime is analogous to the BDE External Payload/cbc:AvailabilityStartDateTime.

└ AvailabilityEndDateTime

External Reference/xhb:AvailabilityEndDateTime

└ Login

External Reference/xhb:Login

When access is restricted to an external resource, OPTIONAL information necessary to access the resource can be included in a header envelope through the Login and Password elements. The Login reveals any required login details such as a username, while the Password reveals the password or access code for the login. It should be emphasized that neither BDE nor XHE specify any practice for scrambling or otherwise protecting the values of the Login and Password elements. The parties exchanging header envelopes MAY define their own practice for protecting sensitive login and password details, either bilaterally or within a community of users, but the default expectation is that this information is included in clear text and implementer must be aware that it will be available to anyone in possession of the header envelope instance. When using XHE to convey sensitive information it is RECOMMENDED to implement more secure manners of protecting information, such as by using the encryption functionalities of XHE (see section Error! Reference source not found. above).

The XHE External Payload/xhb:Login is analogous to the BDE External Payload/cbc:Login and the XHE External Payload/xhb:Password is analogous to the BDE External Payload/cbc:Password.

└ Password

External Reference/xhb:Password

 

3.2.6 Migrating BDE extensions

XHE supports extending its data model with user-defined content in the same manner as BDE, and the XHE extension points are modeled identical to the BDE as well. Users who have developed extensions for BDE can migrate these extensions to XHE without the need for adaptation or refactoring.

See sections 2.10 and 5.6.2 of the XHE specification for information about extending the XHE data model.

3.3 Example BDE to XHE envelope transformation

3.3.1 Original BDE instance

The below example shows a BDE instance with examples of included Invoice Response and Invoice documents. The annotations in the XML comments show the location of XHE elements in the BDE envelope:

<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://docs.oasis-open.org/bdxr/ns/bde/1.0/Envelope

  xsd/BDE-Envelope-1.1.xsd"
  xmlns="http://docs.oasis-open.org/bdxr/ns/bde/1.0/Envelope"
  xmlns:eac="http://docs.oasis-open.org/bdxr/ns/bde/1.0/AggregateComponents"
  xmlns:ebc="http://docs.oasis-open.org/bdxr/ns/bde/1.0/BasicComponents">
  <!-- XHE/xhb:XHEVersionID -->
  <ebc:BDEVersionID>1.1</ebc:BDEVersionID>

  <!-- XHE/xha:Header/xhb:ID -->
  <ebc:ID>123</ebc:ID>

  <!-- XHE/xha:Header/xhb:CreationDateTime -->
  <ebc:CreationDateTime>2017-12-01T12:00:00Z</ebc:CreationDateTime>

  <!--
   XHE/xha:Header/xha:BusinessScope
   XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion
   XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/

   xhb:BusinessScopeCriterionTypeCode
   XHE/xha:Header/xha:BusinessScope/xha:BusinessScopeCriterion/

   xhb:BusinessScopeCriterionValue
  -->
  <ebc:TestIndicator>true</ebc:TestIndicator>

  <!--
    XHE/xha:Header/xha:FromParty
    XHE/xha:Header/xha:FromParty/xha:PartyIdentification
    XHE/xha:Header/xha:FromParty/xha:PartyIdentification/xhb:ID
    XHE/xha:Header/xha:FromParty/xha:PartyIdentification/xhb:ID/@schemeAgencyName
    XHE/xha:Header/xha:FromParty/xha:PartyIdentification/xhb:ID/@schemeID
  -->
  <eac:FromParty>
    <ebc:ID schemeAgencyName="GS1" schemeID="GLN">5798000012345</ebc:ID>
  </eac:FromParty>

  <!--
    XHE/xha:Header/xha:ToParty
    XHE/xha:Header/xha:ToParty/xha:PartyIdentification
    XHE/xha:Header/xha:ToParty/xha:PartyIdentification/xhb:ID
    XHE/xha:Header/xha:ToParty/xha:PartyIdentification/xhb:ID/@schemeAgencyName
    XHE/xha:Header/xha:ToParty/xha:PartyIdentification/xhb:ID/@schemeID
  -->
  <eac:ToParty>
    <ebc:ID schemeAgencyName="GS1" schemeAgencyID="GLN">7330001000001</ebc:ID>
  </eac:ToParty>

  <!-- XHE/xha:Payloads/xha:Payload -->
  <eac:Payload>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:ID -->
    <ebc:ID>imrid001</ebc:ID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode -->
    <ebc:DocumentTypeCode>ApplicationResponse</ebc:DocumentTypeCode>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:CustomizationID -->
    <ebc:CustomizationID>urn:fdc:peppol.eu:poacc:trns:invoice_response:3</ebc:CustomizationID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:ProfileID -->
    <ebc:ProfileID>urn:fdc:peppol.eu:poacc:bis:invoice_response:3</ebc:ProfileID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xha:PayloadContent -->
    <eac:PayloadContent>
      <ApplicationResponse
        xmlns="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2"
        xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
        xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:CustomizationID>
          urn:fdc:peppol.eu:poacc:trns:invoice_response:3
        </cbc:CustomizationID>
        <cbc:ProfileID>urn:fdc:peppol.eu:poacc:bis:invoice_response:3</cbc:ProfileID>
        <cbc:ID>imrid001</cbc:ID>
        <cbc:IssueDate>2017-12-01</cbc:IssueDate>
        <cbc:IssueTime>12:00:00</cbc:IssueTime>
        <cbc:Note>text</cbc:Note>
        <cac:SenderParty>
          <cac:PartyIdentification>
            <cbc:ID schemeID="0184">DK88776655</cbc:ID>
          </cac:PartyIdentification>
          <cac:PartyLegalEntity>
            <cbc:RegistrationName>Buyer organization</cbc:RegistrationName>
          </cac:PartyLegalEntity>
          <cac:Contact>
            <cbc:Name>Jens Jensen</cbc:Name>
            <cbc:Telephone>23232323</cbc:Telephone>
            <cbc:ElectronicMail>jj@test-company.dk</cbc:ElectronicMail>
          </cac:Contact>
        </cac:SenderParty>
        <cac:ReceiverParty>
          <cac:PartyIdentification>
            <cbc:ID schemeID="0192">98765432</cbc:ID>
          </cac:PartyIdentification>
          <cac:PartyLegalEntity>
            <cbc:RegistrationName>Seller company</cbc:RegistrationName>
          </cac:PartyLegalEntity>
        </cac:ReceiverParty>
        <cac:DocumentResponse>
          <cac:Response>
            <cbc:ResponseCode>RE</cbc:ResponseCode>
            <cbc:EffectiveDate>2018-09-24</cbc:EffectiveDate>
            <cac:Status>
              <cbc:StatusReasonCode listID="OPStatusAction">REF</cbc:StatusReasonCode>
              <cbc:StatusReason>VAT Reference not found</cbc:StatusReason>
              <cac:Condition>
                <cbc:AttributeID>BT-48</cbc:AttributeID>
                <cbc:Description>EU123456789</cbc:Description>
              </cac:Condition>
            </cac:Status>
          </cac:Response>
          <cac:DocumentReference>
            <cbc:ID>inv021</cbc:ID>
            <cbc:IssueDate>2018-09-22</cbc:IssueDate>
            <cbc:DocumentTypeCode>380</cbc:DocumentTypeCode>
          </cac:DocumentReference>
          <cac:IssuerParty>
            <cac:PartyIdentification>
              <cbc:ID schemeID="0192">999888777</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyName>
              <cbc:Name>Test Company AS</cbc:Name>
            </cac:PartyName>
          </cac:IssuerParty>
        </cac:DocumentResponse>
      </ApplicationResponse>
    </eac:PayloadContent>
  </eac:Payload>
  
  <!-- XHE/xha:Payloads/xha:Payload -->
  <eac:Payload>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:ID -->
    <ebc:ID>inv021</ebc:ID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:DocumentTypeCode -->
    <ebc:DocumentTypeCode>Invoice</ebc:DocumentTypeCode>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:CustomizationID -->
    <ebc:CustomizationID>
      urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
    </ebc:CustomizationID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xhb:ProfileID -->
    <ebc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</ebc:ProfileID>
    
    <!-- XHE/xha:Payloads/xha:Payload/xha:PayloadContent -->
    <eac:PayloadContent>
      <Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
        xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
        xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
        <cbc:CustomizationID>
          urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
        </cbc:CustomizationID>
        <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
        <cbc:ID>inv021</cbc:ID>
        <cbc:IssueDate>2018-09-22</cbc:IssueDate>
        <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
        <cac:AccountingSupplierParty>
          <cac:Party>
            <cac:PartyIdentification>
              <cbc:ID schemeID="0184">DK88776655</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyLegalEntity>
              <cbc:RegistrationName>Buyer organization</cbc:RegistrationName>
            </cac:PartyLegalEntity>
            <cac:Contact>
              <cbc:Name>Jens Jensen</cbc:Name>
              <cbc:Telephone>23232323</cbc:Telephone>
              <cbc:ElectronicMail>jj@test-company.dk</cbc:ElectronicMail>
            </cac:Contact>
          </cac:Party>
        </cac:AccountingSupplierParty>
        <cac:AccountingCustomerParty>
          <cac:Party>
            <cac:PartyIdentification>
              <cbc:ID schemeID="0192">98765432</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyLegalEntity>
              <cbc:RegistrationName>Seller company</cbc:RegistrationName>
            </cac:PartyLegalEntity>
          </cac:Party>
        </cac:AccountingCustomerParty>
        <!-- reduced instance file -->
      </Invoice>
    </eac:PayloadContent>
  </eac:Payload>
</Envelope>

 

3.3.2 BDE instance transformed to XHE

The below example shows the same envelope as in 3.3.1, but transformed to XHE. The annotations in the XML comments show the location of values in the original BDE envelope:

<?xml version="1.0" encoding="UTF-8"?>
<XHE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope xsd/XHE-1.0.xsd"
  xmlns="oasis-cefact-xhe-1.0-ExchangeHeaderEnvelope"
  xmlns:xha="oasis-cefact-xhe-1.0-AggregateComponents"
  xmlns:ext="oasis-cefact-xhe-1.0-ExtensionComponents"
  xmlns:xhb="oasis-cefact-xhe-1.0-BasicComponents">
  <!-- Envelope/ebc:BDEVersionID -->
  <xhb:XHEVersionID>1.1</xhb:XHEVersionID>
  
  <xha:Header>
    <!-- Envelope/ebc:ID -->
    <xhb:ID>123</xhb:ID>
    
    <!-- Envelope/ebc:CreationDateTime -->
    <xhb:CreationDateTime>2017-12-01T12:00:00Z</xhb:CreationDateTime>
    
    <!--<ebc:TestIndicator>true</ebc:TestIndicator>-->
    <xha:BusinessScope>
      <xha:BusinessScopeCriterion>
        <xhb:BusinessScopeCriterionTypeCode>Test</xhb:BusinessScopeCriterionTypeCode>
        <xhb:BusinessScopeCriterionValue>true</xhb:BusinessScopeCriterionValue>
      </xha:BusinessScopeCriterion>
    </xha:BusinessScope>
    
    <!--
      Envelope/eac:FromParty/ebc:ID
      Envelope/eac:FromParty/ebc:ID/@schemeAgencyName
      Envelope/eac:FromParty/ebc:ID/@schemeID
    -->
    <xha:FromParty>
      <xha:PartyIdentification>
        <xhb:ID schemeAgencyName="GS1" schemeID="GLN">5798000012345</xhb:ID>
      </xha:PartyIdentification>
    </xha:FromParty>
    
    <!--
      Envelope/eac:ToParty/ebc:ID
      Envelope/eac:ToParty/ebc:ID/@schemeAgencyName
      Envelope/eac:ToParty/ebc:ID/@schemeID
    -->
    <xha:ToParty>
      <xha:PartyIdentification>
        <xhb:ID schemeAgencyName="GS1" schemeAgencyID="GLN">7330001000001</xhb:ID>
      </xha:PartyIdentification>
    </xha:ToParty>
    
  </xha:Header>
  
  <xha:Payloads>
    <!-- Envelope/eac:Payload -->
    <xha:Payload>
      
      <!-- Envelope/eac:Payload/ebc:ID -->
      <xhb:ID>imrid001</xhb:ID>
      
      <!-- Envelope/eac:Payload/ebc:DocumentTypeCode -->
      <xhb:DocumentTypeCode>ApplicationResponse</xhb:DocumentTypeCode>
      
      <!-- Envelope/eac:Payload/ebc:CustomizationID -->
      <xhb:CustomizationID>
        urn:fdc:peppol.eu:poacc:trns:invoice_response:3
      </xhb:CustomizationID>
      
      <!-- Envelope/eac:Payload/ebc:ProfileID -->
      <xhb:ProfileID>urn:fdc:peppol.eu:poacc:bis:invoice_response:3</xhb:ProfileID>
      
      <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
      <!-- Envelope/eac:Payload/eac:PayloadContent -->
      <xha:PayloadContent>
        <ApplicationResponse
          xmlns="urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2"
          xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
          xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
          <cbc:CustomizationID>
            urn:fdc:peppol.eu:poacc:trns:invoice_response:3
          </cbc:CustomizationID>
          <cbc:ProfileID>urn:fdc:peppol.eu:poacc:bis:invoice_response:3</cbc:ProfileID>
          <cbc:ID>imrid001</cbc:ID>
          <cbc:IssueDate>2017-12-01</cbc:IssueDate>
          <cbc:IssueTime>12:00:00</cbc:IssueTime>
          <cbc:Note>text</cbc:Note>
          <cac:SenderParty>
            <cac:PartyIdentification>
              <cbc:ID schemeID="0184">DK88776655</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyLegalEntity>
              <cbc:RegistrationName>Buyer organization</cbc:RegistrationName>
            </cac:PartyLegalEntity>
            <cac:Contact>
              <cbc:Name>Jens Jensen</cbc:Name>
              <cbc:Telephone>23232323</cbc:Telephone>
              <cbc:ElectronicMail>jj@test-company.dk</cbc:ElectronicMail>
            </cac:Contact>
          </cac:SenderParty>
          <cac:ReceiverParty>
            <cac:PartyIdentification>
              <cbc:ID schemeID="0192">98765432</cbc:ID>
            </cac:PartyIdentification>
            <cac:PartyLegalEntity>
              <cbc:RegistrationName>Seller company</cbc:RegistrationName>
            </cac:PartyLegalEntity>
          </cac:ReceiverParty>
          <cac:DocumentResponse>
            <cac:Response>
              <cbc:ResponseCode>RE</cbc:ResponseCode>
              <cbc:EffectiveDate>2018-09-24</cbc:EffectiveDate>
              <cac:Status>
                <cbc:StatusReasonCode listID="OPStatusAction"
                  >REF</cbc:StatusReasonCode>
                <cbc:StatusReason>VAT Reference not found</cbc:StatusReason>
                <cac:Condition>
                  <cbc:AttributeID>BT-48</cbc:AttributeID>
                  <cbc:Description>EU123456789</cbc:Description>
                </cac:Condition>
              </cac:Status>
            </cac:Response>
            <cac:DocumentReference>
              <cbc:ID>inv021</cbc:ID>
              <cbc:IssueDate>2018-09-22</cbc:IssueDate>
              <cbc:DocumentTypeCode>380</cbc:DocumentTypeCode>
            </cac:DocumentReference>
            <cac:IssuerParty>
              <cac:PartyIdentification>
                <cbc:ID schemeID="0192">999888777</cbc:ID>
              </cac:PartyIdentification>
              <cac:PartyName>
                <cbc:Name>Test Company AS</cbc:Name>
              </cac:PartyName>
            </cac:IssuerParty>
          </cac:DocumentResponse>
        </ApplicationResponse>
      </xha:PayloadContent>
    </xha:Payload>
    
    <!-- Envelope/eac:Payload/eac:Payload -->
    <xha:Payload>
      
      <!-- Envelope/eac:Payload/ebc:ID -->
      <xhb:ID>inv021</xhb:ID>
      
      <!-- Envelope/eac:Payload/ebc:DocumentTypeCode -->
      <xhb:DocumentTypeCode>Invoice</xhb:DocumentTypeCode>
      
      <!-- Envelope/eac:Payload/ebc:CustomizationID -->
      <xhb:CustomizationID>
        urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
      </xhb:CustomizationID>
      
      <!-- Envelope/eac:Payload/ebc:ProfileID -->
      <xhb:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</xhb:ProfileID>
      
      <!-- Envelope/eac:Payload/eac:PayloadContent -->
      <xhb:InstanceEncryptionIndicator>false</xhb:InstanceEncryptionIndicator>
      <xha:PayloadContent>
        <Invoice xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xmlns="urn:oasis:names:specification:ubl:schema:xsd:Invoice-2"
          xmlns:cac="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2"
          xmlns:cbc="urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2">
          <cbc:CustomizationID>
            urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0
          </cbc:CustomizationID>
          <cbc:ProfileID>urn:fdc:peppol.eu:2017:poacc:billing:01:1.0</cbc:ProfileID>
          <cbc:ID>inv021</cbc:ID>
          <cbc:IssueDate>2018-09-22</cbc:IssueDate>
          <cbc:DocumentCurrencyCode>EUR</cbc:DocumentCurrencyCode>
          <cac:AccountingSupplierParty>
            <cac:Party>
              <cac:PartyIdentification>
                <cbc:ID schemeID="0184">DK88776655</cbc:ID>
              </cac:PartyIdentification>
              <cac:PartyLegalEntity>
                <cbc:RegistrationName>Buyer organization</cbc:RegistrationName>
              </cac:PartyLegalEntity>
              <cac:Contact>
                <cbc:Name>Jens Jensen</cbc:Name>
                <cbc:Telephone>23232323</cbc:Telephone>
                <cbc:ElectronicMail>jj@test-company.dk</cbc:ElectronicMail>
              </cac:Contact>
            </cac:Party>
          </cac:AccountingSupplierParty>
          <cac:AccountingCustomerParty>
            <cac:Party>
              <cac:PartyIdentification>
                <cbc:ID schemeID="0192">98765432</cbc:ID>
              </cac:PartyIdentification>
              <cac:PartyLegalEntity>
                <cbc:RegistrationName>Seller company</cbc:RegistrationName>
              </cac:PartyLegalEntity>
            </cac:Party>
          </cac:AccountingCustomerParty>
          <!-- reduced instance file -->
        </Invoice>
      </xha:PayloadContent>
    </xha:Payload>
  </xha:Payloads>
</XHE>

 

Appendix A.     Acknowledgments

The following individuals have participated in the creation of this specification and are gratefully acknowledged:

Participants:

Kenneth Bengtsson, Individual (co-chair and editor)

Anders Grandgaard, GS1 (co-chair)

G. Ken Holman, Crane Softwrights Ltd.

 

Appendix B.     Revision History

Revision

Date

Editor

Changes Made

WD01

2019/05/14

Kenneth Bengtsson

First version