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.
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
<
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
{?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
{?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
{?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
{?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
{?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
{?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
>"}
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
<
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
>
{?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:
In your Power Center installation find the folder DataTransformation/ServiceDB and make a backup of this folder.
Stop the GDSN workflows.
Stop Power Center, Data Exchange and MFT.
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.
Extract all files and open DT_Services folder.
Depending on whether you use GDSN as a
Data Source (e. g. manufacturer), copy the content of the DataSource folder to the DataTransformation/ServiceDB folder of your B2B installation.
Data Recipient (e. g. retailer), copy the content of the DataRecipient folder to the Data Transformations/ServiceDB folder of your B2B installation.
Start Power Center, Data Exchange and MFT.
Start the workflows.