GDSN Migration Guide for version 3.1.12

Overview

This migration guide covers all changes we have made in Product 360 (versions 8.1.1.05 and 10.0.0.01) to support GDSN version 3.1.12, it refers to changes since GDSN version 3.1.8.

We have added some new fields with corresponding enumerations as well as added new entries to existing enumerations.

There is no need to do any data migration.

In addition to that we have introduced some new data quality rule configurations to cover new validations. Our example export templates for submitting item data to the GDSN pools have been extended as well.

Product 360 data model changes

In this release we have nine new fields in context of GDSN or Food & Beverage in total, for two fields the descriptions have changed.

New data fields

The following table lists all new fields we have added.

GDSN attribute name

GDSN module

GDSN/F&B

P360 field name

P360 entity name

Remarks

deliveryFrequencyCode

DeliveryPurchasingInformationModule

GDSN

Delivery frequency code

Delivery purchasing information

isCertificateRequired

CertificationInformationModule

F&B

Is Certificate required?

Certification

Used in "Certification information" entity of items

isCertificateRequired

DietInformationModule

F&B

Is Certificate required?

Certification

Used in "Diets" entity of items ("Diets" is a sub-entity of "Diet related information")

fatPercentageInDryMatterMeasurementPrecisionCode

DairyFishMeatPoultryItemModule

F&B

Fat percentage in dry matter measurement precision code

Cheese information

"Cheese information" is a sub-entity of "Dairy fish meat poultry"

nutritionalScore

HealthRelatedInformationModule

F&B

Nutritional score

Health related information

nutritionalValue

HealthRelatedInformationModule

F&B

Nutritional value

Health related information

cannabisCBDTypeCode

HealthRelatedInformationModule

F&B

Cannabis CBD type

Health related information

nutritionalProgramIngredientTypeCode

HealthRelatedInformationModule

F&B

Nutritional program ingredient type

Health related information

nutritionalProgramIngredientMeasurement

HealthRelatedInformationModule

F&B

Nutritional program ingredient value

Nutritional program ingredient unit

Health related information UOM

As usual, we have implemented this attribute by two fields, the value and the corresponding unit.

Note: As with other similar fields, we do not support the maintenance of multiple values per uom type.

Data quality rule and configuration changes

We have added new data quality rule configuration for two GDSN rules.

images/download/attachments/385821383/image2020-3-24_18-57-59.png

images/download/attachments/385821383/image2020-3-24_18-57-35.png

The following table lists all new rule configurations we have added.

Please notice that the value <No code> for Organism code in Microbiological information is not allowed anymore. For compatibility reasons, we do not yet delete this value from the enumeration, but this will probably happen in a later version.

GDSN Rule ID

GDSN Rule Description

GDSN Error Message

IDQ Rule Name

P360 Rule Configuration Name

P360 Rule Configuration Description

Error Message Code

P360 Error Message

1694

If any attributes in class microbiologicalInformation is provided, then the attribute microbiologicalOrganismCode must be provided.

If attribute XY (any attribute of class microbiologicalInformation) is provided, therefore microbiologicalOrganismCode SHALL be populated

Check_ConditionalNotEqual

Check 'Organism code' is not optional

Checks that 'Organism code' is not optional if in use. Optional value '<No code>' is not allowed

GDSN1694

Value 'No code' is not allowed for 'Organism code'

1699

nutritionalProgramIngredientMeasurement shall only be used if nutritionalProgramIngredientTypeCode is used.

nutritionalProgramIngredientTypecode is not used.

Check_IfNotEmptyConditionNotEmpty

Check items with 'Nutritional program ingredient unit' have a 'Nutritional program ingredient type' populated

Check items with 'Nutritional program ingredient unit' have a 'Nutritional program ingredient type' populated

GDSN1699

Items with 'Nutritional program ingredient unit' or 'Nutritional program ingredient value' must have a 'Nutritional program ingredient type' populated

Check_IfNotEmptyConditionNotEmpty

Check items with 'Nutritional program ingredient value' have a 'Nutritional program ingredient type' populated

Check items with 'Nutritional program ingredient value' have a 'Nutritional program ingredient type' populated

GDSN1699

Items with 'Nutritional program ingredient unit' or 'Nutritional program ingredient value' must have a 'Nutritional program ingredient type' populated

Check_IfNotEmptyConditionNotEmpty

Check items with 'Nutritional program ingredient unit' have a 'Nutritional program ingredient value' populated

Check items with 'Nutritional program ingredient unit' have a 'Nutritional program ingredient value' populated.

Ext030

Items with 'Nutritional program ingredient unit' must have a 'Nutritional program ingredient value' populated

Check_IfNotEmptyConditionNotEmpty

Check items with 'Nutritional program ingredient value' have a 'Nutritional program ingredient unit' populated

Check items with 'Nutritional program ingredient value' have a 'Nutritional program ingredient unit' populated.

Ext029

Items with 'Nutritional program ingredient value' must have a 'Nutritional program ingredient unit' populated

Changes in data source export templates

If you use the provided default "Catalog request item" (IM) or "Catalog item notification" (DSE) export template you should replace it by the new one. In case this is not possible because of customizations, you'll find a detailed description of changes below.

New XSD file set

A new XSD file set has been provided for GDSN version 3.1.12. All old XSD files used for export post steps have to be deleted, then all new XSD files must be uploaded. Export templates do not have to be adapted due to the changed XSD files.

DSE export template changes

The only changed export template for DSE is CIN_CatalogItemNotification.ext. The following fields have been added to that template.

Delivery frequency code

Export template module: Delivery purchasing information: Collect distribution details

Changes: line 7 has been added

Delivery purchasing information: Collect distribution details
<distributionDetails>
{?CreateXMLTagWithValue {?EnumerationKeyStandard {&Distribution details.Distribution method code}},"<distributionMethodCode>?</distributionMethodCode>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Distribution details.Is distribution method primary}},"<isDistributionMethodPrimary>?</isDistributionMethodPrimary>"}
{?CreateXMLTagWithValue {?FormatDecimal {&Distribution details.Ordering lead time (UOM type)}, ".", 6},"<orderingLeadTime measurementUnitCode=\"{&Distribution details.Ordering lead time UOM (UOM type).Code (Unit system)}\">?</orderingLeadTime>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Distribution details.Delivery frequency code}},"<deliveryFrequencyCode>?</deliveryFrequencyCode>"}
</distributionDetails>

Is certificate required? (Diets)

Export template module: Diet related information: Collect diets

Changes: lines 20 and 21 have been added

Diet related information: Collect diets
{?CreateXMLTagWithValue {&Diets.Certification.Certification standard}
, "<certificationStandard>?</certificationStandard>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Diets.Certification.Is certificate required?}}
, "<isCertificateRequired>?</isCertificateRequired>"}
{?IfEmptyThenNotEnc "", {?ValueGet {?ValueGet "tmpCertifications"}}}
</dietCertification>
</dietTypeInformation>

Fat percentage in dry matter measurement precision code

Export template module: Dairy fish meat poultry

Changes:

  • line11: added new field "Fat percentage in dry matter measurement precision code" as part of check

  • lines 30, 31: added new field, output the code of the maintained value

Dairy fish meat poultry
{?IfNotEmptyThenNotEnc {&Dairy fish meat poultry.Cheese maturation period description (Language)}{&Dairy fish meat poultry.Cheese maturation container process type}{&Dairy fish meat poultry.Fat in dry matter [%]}{&Dairy fish meat poultry.Is rind edible}{&Dairy fish meat poultry.Rennet type code}{&Dairy fish meat poultry.Ripening time period (UOM type)}{&Dairy fish meat poultry.Surface of cheese at end of ripening}{&Dairy fish meat poultry.Fat percentage in dry matter measurement precision code}
, {?Concat "<cheeseInformation>"
, {?CreateXMLTagWithValue {&Dairy fish meat poultry.Cheese maturation period description (Language)}
, "<cheeseMaturationPeriodDescription languageCode=\"{?GDSNEnumerationCode {&Dairy fish meat poultry.Language (Language)}, "GDSN"}\">?</cheeseMaturationPeriodDescription>"}
, {?IfNotEmptyThen {?ValueGet "LanguageDiffs"}, {?CreateXMLTagWithValue {&Dairy fish meat poultry.Cheese maturation period description (Language second)}
, "<cheeseMaturationPeriodDescription languageCode=\"{?GDSNEnumerationCode {&Dairy fish meat poultry.Language (Language second)}, "GDSN"}\">?</cheeseMaturationPeriodDescription>"}}
, {?IfEmptyThenNotEnc "", {?SplitKeywords {?EnumerationKey {&Dairy fish meat poultry.Cheese maturation container process type}}
, "<cheeseMaturationProcessContainerTypeCode>", "</cheeseMaturationProcessContainerTypeCode>"}}
, {?CreateXMLTagWithValue {?FormatDecimal {&Dairy fish meat poultry.Fat in dry matter [%]}, ".", 2}
, "<fatPercentageInDryMatter>?</fatPercentageInDryMatter>"}
, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Is rind edible}}
, "<isRindEdible>?</isRindEdible>"}
, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Rennet type code}}
, "<rennetTypeCode>?</rennetTypeCode>"}
{!No second UOM allowed}
, {?CreateXMLTagWithValue {?FormatDecimal {&Dairy fish meat poultry.Ripening time period (UOM type)}, ".", 6}
, "<ripeningTimePeriod measurementUnitCode=\"{&Dairy fish meat poultry.Ripening time period UOM (UOM type).Code (Unit system)}\">?</ripeningTimePeriod>"}
, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Surface of cheese at end of ripening}}
, "<surfaceOfCheeseAtEndOfRipeningCode>?</surfaceOfCheeseAtEndOfRipeningCode>"}
, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Fat percentage in dry matter measurement precision code}}
, "<fatPercentageInDryMatterMeasurementPrecisionCode>?</fatPercentageInDryMatterMeasurementPrecisionCode>"}
, "</cheeseInformation>"}}

IM export template changes

The only changed export template for Item Management is CR_CatalogueRequest Item.ext. The following fields have been added to that template.

Delivery frequency code

Export template module: Primary delivery information

Changes: lines 11 and 12 have been added

Primary delivery information
{?IfNotEmptyThenNotEnc {&Distribution details.Ordering lead time},
"<attrQualMany name="orderingLeadTime">
{?CreateXMLTagWithValue {?FormatDecimal {&Distribution details.Ordering lead time},".","6",}
,"<value qual="{&Distribution details.Ordering lead time UOM.Code (Unit system)}">?</value>"}
</attrQualMany>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Distribution details.Delivery frequency code}}
,"<attr name=\"deliveryFrequencyCode\">?</attr>"}
</row>

Is Certificate required? (Item certifications)

Export template module: Certifications

Changes: line 8 has been added

Certifications
{?CreateXMLTagWithValue {&Certification information.Certification.Certification organisation.Name}, "<attr name=\"certificationAgency\">?</attr>"}
{?CreateXMLTagWithValue {&Certification information.Certification.Certification organisation.GLN}, "<attr name=\"certificationOrganisationIdentifier\">?</attr>"}
{?CreateXMLTagWithValue {&Certification information.Certification.Certification standard}, "<attr name=\"certificationStandard\">?</attr>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Certification information.Certification.Is certificate required?}}, "<attr name=\"isCertificateRequired\">?</attr>"}

Is Certificate required? (Diets)

Export template module: Collect diets

Changes: line 23 has been added

Collect diets
{?CreateXMLTagWithContent {?ValueGet {?ValueGet "tmpCertifications"}},
"<attrGroupMany name=\"certification\">?</attrGroupMany>"}
{!Reset variable}{?ValueSet {?ValueGet "tmpCertifications"}, ""}
{?CreateXMLTagWithValue {&Diets.Certification (Diet type code selectable).Is certificate required?}, "<attr name=\"isCertificateRequired\">?</attr>"}
</row>

Fat percentage in dry matter measurement precision code

Export template module: Dairy fish meat poultry

Changes: lines 19 and 20 have been added

Dairy fish meat poultry
{?CreateXMLTagWithValue {?FormatDecimal {&Dairy fish meat poultry.Ripening time period},.,6}, <attrQual name="ripeningTimePeriod" qual="{&Dairy fish meat poultry.Ripening time period UOM.Code (Unit system)}">?</attrQual>}
{?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Surface of cheese at end of ripening}},<attr name="surfaceOfCheeseAtEndOfRipeningCode">?</attr>}
{?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Fat percentage in dry matter measurement precision code}}
,"<attr name=\"fatPercentageInDryMatterMeasurementPrecisionCode\">?</attr>"}

Fields of health related information

Affected fields: Cannabis CBD type, Nutritional program ingredient type, Nutritional program ingredient unit, Nutritional program ingredient value, Nutritional score, Nutritional value

Export template module: Health related information

Changes: lines 31 - 43 have been added

Health related information
{?CreateXMLTagWithContent {?SplitKeywords {?EnumerationKey {&Health related information.Nutritional program code}}
,"<value>", "</value>"}
,"<attrMany name=\"nutritionalProgramCode\">?</attrMany>"}
{?CreateXMLTagWithValue {&Health related information.Nutritional score}, "<attr name=\"nutritionalScore\">?</attr>"}
{?CreateXMLTagWithValue {?FormatDecimal {&Health related information.Nutritional value},".", 6}
,"<attr name=\"nutritionalValue\">?</attr>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Health related information.Cannabis CBD type}}
,"<attr name=\"cannabisCBDTypeCode\">?</attr>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Health related information.Nutritional program ingredient type}}
,"<attr name=\"nutritionalProgramIngredientTypeCode\">?</attr>"}
{?IfNotEmptyThenNotEnc {&Health related information.Nutritional program ingredient value (UOM type)}
,"<attrQualMany name="nutritionalProgramIngredientMeasurement">
{?CreateXMLTagWithValue {?FormatDecimal {&Health related information.Nutritional program ingredient value (UOM type)},".","6",}
,"<value qual="{&Health related information.Nutritional program ingredient unit (UOM type).Code (Unit system)}">?</value>"}
</attrQualMany>"
}

Changes according to XSD change

The position of the field "Product form" has been changed from flex attribute to named attribute.

Export template module: Items

Changes:

  • lines 53 and 54 have been removed

  • line 37 has been added

Old content for Product form in module
<attrGroup name="gpcBrickAttributes">
<attr name="gpcBrickCode">{&Item.Structure group(s) (GPC Structure).Structure group identifier}</attr>
{?CreateXMLTagWithContent {$Brick attributes},
"<attrGroupMany name=\"gpcBrickAttributeValues\">?</attrGroupMany>"}
</attrGroup>
{?CreateXMLTagWithContent {?SplitKeywords {&Item.Product form}
, "<value>", "</value>", "true"}, <attrQualOptMany name="productForm">?</attrQualOptMany>}
</flex>
</globalAttributes>
New content for Product form in module
{?CreateXMLTagWithValue {?FormatDecimal {&Item.Quantity of next level items},".",0},
"<totalQuantityOfNextLowerTradeItem>?</totalQuantityOfNextLowerTradeItem>"}
{?SplitKeywords {&Item.Product form}, "<productForm>", </productForm>}
{?CreateXMLTagWithValue {?CompareBooleanValue {&Item.Is base unit}, true, false,""},<isBaseUnit>?</isBaseUnit>}

B2B

With the Update to GDSN 3.1.12 the XSDs of DSE/Atrify and IM changed. These are used by the data transformations in B2B.

If you are a cloud customer, you don't need to do anything. A new EC2 instance with an updated B2B will be created for you from a new AMI.

If you use an on premise installation of B2B, you need to execute the following steps to update your system:

  1. In your Power Center installation find the folder DataTransformation/ServiceDB and make a backup of this folder.

  2. Stop the GDSN workflows.

  3. Stop Power Center, Data Exchange and MFT.

  4. In the PIM_<version>_resources_gdsn.delta.zip of the GDSN Accelerator Package in the folder Common you will find a file called B2B_GDSN.zip.

  5. Extract all files and open DT_Services folder.

  6. Depending on whether you use GDSN as a

    1. Data Source (e. g. manufacturer), copy the content of the DataSource folder to the DataTransformation/ServiceDB folder of your B2B installation.

    2. Data Recipient (e. g. retailer), copy the content of the DataRecipient folder to the Data Transformations/ServiceDB folder of your B2B installation.

  7. Start Power Center, Data Exchange and MFT.

  8. Start the workflows.