XKatalog
Background
Currently, Public E-Procurement faces a variety of issues, including an unregulated transition between pre- and post-award phases and a lack of structured and reusable procurement data. For this purpose, the XKatalog is being developed as a procurement standard in Germany. In short, the standard is intended to enable suppliers to catalogue their product information in an XML-based data standard. This catalogued data can subsequently be carried over to further procurement documents such as the electronic order (XBestellung) and electronic invoice (XRechnung).
Hence, the profiling of the XKatalog as an electronic catalogue standard is essential in order to provide the basis for a holistic data transformation from the specification of a procurement requirement through to invoice receipt. As such, E-Procurement standards of both the pre-award and post-award phases
The standard is very much informed about the ongoing development of EN17015 on electronic catalogues as well as the Peppol BIS Catalogue.
Key Requirements
- Bridging the pre-award and post-award worlds of Public E-Procurement
- Dependence on ongoing EN17015 and Peppol BIS Catalogue (moving targets)
- Upstream/Downstream development
Crucial features of SeMoX for XKatalog
Developing the XKatalog has presented unique challenges to the national data standardization process. The XKatalog is based on the EN17015-2 and the Peppol BIS Catalogue, both of which are (still) under active development. Consequently, three simultaneously moving targets must be managed during the standardization process:
- Dynamically changing legal requirements of EN17015-2
- Dynamically changing de-facto requirements of Peppol
- Dynamically changing national requirements towards electronic catalogues
When presented with such a challenge, it may be argued that the data standardization process should go on hold until the targets’ movement has settled. However, SeMoX has supported us in continuously hitting all of them throughout the standardization process:
Bilingualism
Upfront, to deal with both national and international standardization bodies, both English and German must be used within XKatalog. This ensures that international and national experts alike can read, understand and validate the standard. Hence, we use SeMoX to display and manage both English and German throughout the model. While names are always kept in English, semantic descriptions are available in both DE and EN. When generating the PDF specification, either EN or DE can be chosen as an output language for its reviewers.
<m:term datatype="date" id="BT-6" p:id="tir19-006">
<m:name xml:lang="en">Catalogue issue date</m:name>
<m:name xml:lang="de">Catalogue issue date</m:name>
<m:description xml:lang="en">The date on which the catalogue
instance was issued.</m:description>
<m:description xml:lang="de">Das Datum, an dem die Kataloginstanz
ausgestellt wurde.</m:description>
</m:term>
Interoperability to EN17015-2
Interoperability to the EN17015-2 is checked by sharing the semantic model (XML) + specification (PDF) with the EN’s convenor. The XML is used to identify inconsistencies between the data models and the PDF is utilized to identify semantic and legal errors in the model. Notably, proposed national extensions such as allowances and charges can be easily modeled and checked against the EN. The following example was used in an initial discussion to determine how allowances and charges could be handled in the EU and Germany:
<!-- National Extension for Allowances and Charges.
Information can be re-used in XBestellung and XRechnung.-->
<m:term datatype="group" id="BG-21">
<m:name xml:lang="en">Price allowances and charges</m:name>
<m:name xml:lang="de">Price allowances and charges</m:name>
<m:description xml:lang="en">A group of business terms providing
information about price charges and allowances (VAT excluded).
</m:description>
<m:description xml:lang="de">Eine Gruppe von Geschäftsbegriffen,
die Informationen über Preisnachlässe und Preisaufschläge
(ohne Mehrwertsteuer) enthalten.</m:description>
</m:term>
<m:term datatype="indicator" id="BT-94">
<m:name xml:lang="en">Charge indicator</m:name>
<m:name xml:lang="de">Charge indicator</m:name>
<m:description xml:lang="en">Can be used to indicate charges or
allowances of prices. Use “true” when informing about charges
and “false” when informing about allowances.</m:description>
<m:description xml:lang="de">Kann verwendet werden,
um Preisnachlässe oder Preisaufschläge für Preise anzugeben.
Der Wert „true“ wird für Preisaufschläge verwendet,
der Begriff „false“ für Preisnachlässe.</m:description>
</m:term>
<!-- ... -->
<m:term datatype="code" id="BT-98">
<m:name xml:lang="en">Allowance or charge reason code</m:name>
<m:name xml:lang="de">Allowance or charge reason code</m:name>
<m:description xml:lang="en">The reason for the document level allowance
or charge, expressed as a code. For allowances, a subset of codelist
UNCL5189 is to be used, and for charges codelist UNCL7161 applies.
The allowance reason code and the allowance reason shall indicate
the same allowance reason.</m:description>
<m:description xml:lang="de">Der Grund für den Preisnachlass oder
Preisaufschlag auf Dokumentebene, ausgedrückt als Code. Für Rabatte
ist eine Teilmenge der Codeliste UNCL5189 zu verwenden, und für
Aufschläge gilt die Codeliste UNCL7161.</m:description>
</m:term>
Interoperability to Peppol BIS Catalogue
Peppol identifiers are either assigned (XKatalog ID = Peppol Catalogue ID) or annotated (p:id) to all applicable terms, codelists, and rules in the XKatalog’s semantic model. Hence, the origin of all Peppol-related building blocks is captured and all components can be adjusted seamlessly once changes from Peppol occur (~quarterly), including the binding to Peppol’s syntax.
<!-- Direct assignment of Peppol ID to a Business Rule -->
<m:rule id="PEPPOL-T19-R010" groups="peppol-rules" on-terms="BT-79 BT-80">
<m:description xml:lang="en">
The maximum quantity <m:termname>BT-80</m:termname>
SHALL be greater than or equal to the minimum quantity
<m:termname>BT-79</m:termname>.
</m:description>
</m:rule>
<!-- Annotation of a Business Term with p:id -->
<m:term datatype="text" id="BT-113" p:id="tir19-064">
<m:name xml:lang="en">Item keywords</m:name>
<m:description xml:lang="en">
Used to specify searchable keywords
and/or synonyms for the Item. E.g. Item
Name = Colgate or Total / Keyword = Toothpaste
</m:description>
</m:term>
<!-- Binding BT-113 to Peppol (via UBL) in the Syntax-Binding -->
<m:term ref="BT-113"
path="/Catalogue/cac:CatalogueLine/cac:Item/cbc:Keyword"/>
Interoperability to national requirements
National requirements can be mediated against (1.) and (2.) with German domain experts via the PDF. All national requirements are implemented and annotated as such in the semantic model, for example, via the use of rule-groups:
<!-- Example of a national rule -->
<m:rule id="BR-2" groups="national-rules" on-terms="BT-157">
<m:description xml:lang="en">Allowance/charge amount of
<m:termname>BT-157</m:termname> must equal base amount * percentage/100
if base amount and percentage (<m:termname>BT-159</m:termname>) exist.
</m:description>
<m:description xml:lang="de">Der Aufschlag-/Nachlass-Betrag von
<m:termname>BT-157</m:termname> muss dem Basis-Betrag * Prozentsatz/100
entsprechen falls ein Betrag and ein Prozentsatz
(<m:termname>BT-159</m:termname>) angegeben sind.</m:description>
</m:rule>
Hence, we have been able to develop the XKatalog in parallel to the upstream standards it is based on. Using SeMoX has thus lead to some significant advantages:
- We can manage interoperability across multiple standardization efforts
- European de-jure standards (EN)
- International de-facto standards (Peppol)
- National legacy processes and systems (BMEcat, KdB)
- We can influence and contribute to these standardization efforts due to our timely development
- We are able to quickly and accurately react to changing requirements from any source
- We make fewer mistakes when dealing with these changes