GDSN Migration Guide for version 3.1.19
Product 360 data model changes
In this release we have x new fields and y changed fields in context of GDSN or Food & Beverage in total, for z 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 identifier |
P360 entity |
Remarks |
|
isTradeItemUnitOfUse |
Trade item |
GDSN |
GDSNTargetMarketExtension.IsUnitOfUse |
Target market specific GDSN data |
|
|
diameter |
Trade item measurements |
GDSN |
GDSNTargetMarketExtensionUOM.Diameter GDSNTargetMarketExtensionUOM.DiameterUOM |
UOM of Target market specific GDSN data |
|
|
cheeseMilkAcquisitionTypeCode |
Dairy fish meat poultry |
F&B |
ArticleCheese.CheeseMilkAcquisitionTypeCode |
Cheese information |
Changed data fields
|
GDSN attribute name |
GDSN module |
GDSN/F&B |
P360 field identifier |
P360 entity |
Change |
Valid value list changes
New valid values
With this update, several new valid values were added to the corresponding lists.
Code changes with auto-migration
In addition to that, we fixed a few wrong valid value codes. Existing data will be migrated by the database update scripts we provide with this version. The following valid values are affected:
|
Field (Entity) |
Enumeration |
Valid value name |
Old code |
New code |
|
Packaging material type code (Packaging material) |
Packaging material type codes |
Medium-density fibre board |
WOOD_MEDIUM_DENSITY_FIBERBOARD |
WOOD_MEDIUM_DENSITY_FIBREBOARD |
|
Nutritional claim element code (Nutritional claims) |
Nutritional claim nutrient element code |
Fluoride |
FLOURIDE |
FLUORIDE |
|
Nutrient type (Nutrients) |
Nutrient types |
Nettle leaf extract |
NETTE_LEAF_EXTRACT |
NETTLE_LEAF_EXTRACT |
Discontinuation
Following valid values have been marked as deprecated (see documents for GDSN 3.1.19 and IM 8.28), they will be deleted in a future release.
|
Field (Entity) |
Enumeration |
Valid value name (code) |
Comment |
|
Allergen type (Allergen related information - Allergens) |
Allergen types |
Queensland Nut and its derivatives (SQ) |
Use Macadamia nut and its derivatives (SM) instead |
|
Other gluten containing grain and its derivatives (AX) |
Use Cereals and its derivatives (AW) instead |
Deletion (manual checks needed)
Some codes had to be deleted as they are no longer supported.
Please complete the checks listed below before updating.
|
Field (Entity) |
Enumeration |
Valid value name |
Comment |
|
Nutrient type (Nutrients) |
Nutrient types |
Water (WATER-) |
All existing values will be migrated to "Water (WATER)" Note: If there are already entries for WATER, the migration script will fail. This is intended as you need to adjust your data before migration. The following script lists all entries which have to be checked. MSSQL Server
SELECT Article.Identifier Item_identifier, Article.RevisionID, ArticleNutrient.TargetMarket, ArticleNutrient.Std_LK_Text100_02 PreparationState, ArticleNutrientList.Std_LK_Text250_01 NutrientTypeCodeFROM ArticleSubDomain ArticleNutrientListINNER JOIN ArticleDomain ArticleNutrient ON ArticleNutrient.ID = ArticleNutrientList.ArticleDomainIDINNER JOIN ArticleRevision Article ON Article.ID = ArticleNutrient.ArticleRevisionIDWHERE ArticleNutrientList.EntityID = 10063AND ArticleNutrient.EntityID = 10060AND Article.EntityID = 1000AND Std_LK_Text250_01 = 'WATER-'ORACLE
SELECT Article."Identifier" Item_identifier, Article."RevisionID", ArticleNutrient."TargetMarket", ArticleNutrient."Std_LK_Text100_02" PreparationState, ArticleNutrientList."Std_LK_Text250_01" NutrientTypeCodeFROM "ArticleSubDomain" ArticleNutrientListINNER JOIN "ArticleDomain" ArticleNutrient ON ArticleNutrient."ID" = ArticleNutrientList."ArticleDomainID"INNER JOIN "ArticleRevision" Article ON Article."ID" = ArticleNutrient."ArticleRevisionID"WHERE ArticleNutrientList."EntityID" = 10063AND ArticleNutrient."EntityID" = 10060AND Article."EntityID" = 1000AND "Std_LK_Text250_01" = 'WATER-'; |
|
Allergen type (Allergens) |
Allergen types |
Methyl 2-Octynoate (MO) |
All existing values will be migrated to "Methyl 2-octynoate (Methyl heptin carbonate) (BQ)" Note: If there are already entries for BQ, the migration script will fail. This is intended as you need to adjust your data before migration. The following script lists all entries which have to be checked. MSSQL Server
SELECT Article.Identifier Item_identifier, Article.RevisionID, ArticleAllergen.TargetMarket, ArticleAllergen.Std_LK_Text100_01 SpecificationAgency, ArticleAllergen.Std_LK_Text100_02 SpecificationName, ArticleAllergenList.Std_LK_Text250_01 AllergenTypeCodeFROM ArticleSubDomain ArticleAllergenListINNER JOIN ArticleDomain ArticleAllergen ON ArticleAllergen.ID = ArticleAllergenList.ArticleDomainIDINNER JOIN ArticleRevision Article ON Article.ID = ArticleAllergen.ArticleRevisionIDWHERE ArticleAllergenList.EntityID = 10022AND ArticleAllergen.EntityID = 10020AND Article.EntityID = 1000AND Std_LK_Text250_01 = 'MO'ORACLE
SELECT Article."Identifier" Item_identifier, Article."RevisionID", ArticleAllergen."TargetMarket", ArticleAllergen."Std_LK_Text100_01" SpecificationAgency, ArticleAllergen."Std_LK_Text100_02" SpecificationName, ArticleAllergenList."Std_LK_Text250_01" AllergenTypeCodeFROM "ArticleSubDomain" ArticleAllergenListINNER JOIN "ArticleDomain" ArticleAllergen ON ArticleAllergen."ID" = ArticleAllergenList."ArticleDomainID"INNER JOIN "ArticleRevision" Article ON Article."ID" = ArticleAllergen."ArticleRevisionID"WHERE ArticleAllergenList."EntityID" = 10022AND ArticleAllergen."EntityID" = 10020AND Article."EntityID" = 1000AND "Std_LK_Text250_01" = 'MO'; |
|
Packaging material type code (Packaging information - Packaging material) |
Packaging material type codes |
Wire |
This value was only available for IM. An auto-migration is not possible, all existing values have to be checked and migrated manually. The corresponding recommendation is to use the value "Wire" for the "Packaging type" field. The following script lists all entries which have to be checked. MSSQL Server
SELECT Article.Identifier Item_identifier, Article.RevisionID, PackagingInformation.TargetMarket, PackagingInformation.Std_LK_Text100_01 PackagingType, PackagingMaterial.Std_LK_Text250_01 PackagingMaterialTypeCodeFROM ArticleSubDomain PackagingMaterialINNER JOIN ArticleDomain PackagingInformation ON PackagingInformation.ID = PackagingMaterial.ArticleDomainIDINNER JOIN ArticleRevision Article ON Article.ID = PackagingInformation.ArticleRevisionIDWHERE PackagingMaterial.EntityID = 17114AND PackagingInformation.EntityID = 17112AND Article.EntityID = 1000AND Std_LK_Text250_01 = 'WIRE';ORACLE
SELECT Article."Identifier" Item_identifier, Article."RevisionID", PackagingInformation."TargetMarket", PackagingInformation."Std_LK_Text100_01" PackagingType, PackagingMaterial."Std_LK_Text250_01" PackagingMaterialTypeCodeFROM "ArticleSubDomain" PackagingMaterialINNER JOIN "ArticleDomain" PackagingInformation ON PackagingInformation."ID" = PackagingMaterial."ArticleDomainID"INNER JOIN "ArticleRevision" Article ON Article."ID" = PackagingInformation."ArticleRevisionID"WHERE PackagingMaterial."EntityID" = 17114AND PackagingInformation."EntityID" = 17112AND Article."EntityID" = 1000AND "Std_LK_Text250_01" = 'WIRE'; |
Data quality rule and configuration changes
The following table lists all rule configurations we have added, changed or deleted.
|
GDSN Rule ID |
GDSN Rule |
P360 Rule configuration |
P360 error message |
Remarks |
|
531 |
Check_ConditionalNotContainsString |
Check consumer unit items don't contain 'Brand name' in 'Functional name' (TM: US, en) |
GDSN531: If 'Is consumer unit' is equal to 'true' then 'Functional name' must not contain a value from 'Brand name' |
New Rule and rule configuration are new |
|
|
Check_ConditionalGreaterThan |
Check 'Is dispatch unit' items have a 'Gross weight (imperial)' greater than 0 (TM: US) |
GDSN108: 'Is dispatch unit' items must have a 'Gross weight' greater than 0 |
Changed Changed rule from Check_ConditionalEmpty to Check_ConditionalGreaterThan Adjusted name and error message Note: The error code doesn't match the actual GDSN rule ID. For historical reasons, we cannot change it since the same error code is used by another validation. |
|
1293 |
Check_ConditionalNotEmpty |
Check if 'Packaging type' equals <No code> then 'Platform type code' is populated |
GDSN1293: If the Packaging class is used then either 'Packaging type' or 'Platform type code' must not be empty |
Changed Moved from "Packaging information (Item Management)" to "Packaging information (Standard GDSN)" group |
|
1312 |
Check_IfNotEmptyConditionNotEmpty |
Check items with 'Platform terms and conditions' have a 'Platform type code' populated |
GDSN1312: If 'Platform terms and conditions' is not empty then 'Platform type code' must not be empty |
Changed Moved from "Packaging information (Item Management)" to "Packaging information (Standard GDSN)" group |
Changes in data source export templates
New XSD file set
A new XSD file set has been provided for GDSN version 3.1.19. 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 or modules have been added to that template.
Is unit of use
Export template module: Items
Changes: line 25 was added
{?CreateXMLTagWithValue {?CompareBooleanValue {&Item.Is service}, true, false, ""}, "<isTradeItemAService>?</isTradeItemAService>"}{?CreateXMLTagWithValue {?GDSNEnumerationCode {&Item.Product type}, "GDSN"}, "<tradeItemUnitDescriptorCode>?</tradeItemUnitDescriptorCode>"}{?CreateXMLTagWithValue {?CompareBooleanValue {&Item.Is unit of use (Target market)}, true, false, ""}, "<isTradeItemUnitOfUse>?</isTradeItemUnitOfUse>"}{?CreateXMLTagWithValue {&Item.Brand owner.GLN},"<brandOwner><gln>?</gln></brandOwner>"}Diameter, Diameter UOM
Export template module: Trade item measurement
Changes: lines 4 - 6 were added
{!No second UOM allowed}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Depth (Target market, UOM type)}, ".", 3} , "<depth measurementUnitCode=\"{&Item.Depth UOM (Target market, UOM type).Code (Unit system)}\">?</depth>"} {!No second UOM allowed}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Diameter (Target market, UOM type)}, ".", 3} , "<diameter measurementUnitCode=\"{&Item.Diameter UOM (Target market, UOM type).Unit system Code}\">?</diameter>"} {!No second UOM allowed}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Height (Target market, UOM type)}, ".", 3} , "<height measurementUnitCode=\"{&Item.Height UOM (Target market, UOM type).Code (Unit system)}\">?</height>"}Cheese milk acquisition type
Export template module: Dairy fish meat poultry
Changes: line 32 - 33 were added
, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Fat percentage in dry matter measurement precision code}} , "<fatPercentageInDryMatterMeasurementPrecisionCode>?</fatPercentageInDryMatterMeasurementPrecisionCode>"}, {?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Cheese milk acquisition type}} , "<cheeseMilkAcquisitionTypeCode>?</cheeseMilkAcquisitionTypeCode>"}, "</cheeseInformation>"}}New valid value for nutrient basis quantity type codes
The new value "By child nutrition serving" had to be considered and requires changes in some modules of the export template.
Export template module: Items
Changes: line 188 was changed, line 189 was added
{$Nutritional information: Collect Nutrient quantities}{$Nutritional information: Assemble Nutrient quantities}{?CreateXMLTagWithContent {?Concat , {$Nutritional claims} , {$Nutritional information} }, "<nutritional_information:nutritionalInformationModule xsi:schemaLocation="urn:gs1:gdsn:nutritional_information:xsd:3 http://www.gdsregistry.org/3.1/schemas/gs1/gdsn/NutritionalInformationModule.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:nutritional_information="urn:gs1:gdsn:nutritional_information:xsd:3"> ? </nutritional_information:nutritionalInformationModule>"}Export template module: Nutritional information
Changes: lines 1-3 were changed, lines 4 and 86-110 were added
{?ValueSetLocal "ByContainer", "BY_PACKAGE_OR_CONTAINER_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"}{?ValueSetLocal "ByMeasure", "BY_MEASURE_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"}{?ValueSetLocal "ByServing", "BY_SERVING_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"}{?ValueSetLocal "ByChildServing", "BY_CHILD_NUTRITION_SERVING_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"}{!BY_CHILD_NUTRITION_SERVING only export when there is data for "by child nutrition serving"} {?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal "ByChildServing"}},<nutrientHeader> <preparationStateCode>{?EnumerationKey {&Nutritional information.Preparation state}}</preparationStateCode> {?CreateXMLTagWithValue {&Nutritional information.Daily value intake reference (Language)} , "<dailyValueIntakeReference languageCode=\"{?GDSNEnumerationCode {&Nutritional information.Language (Language)}, "GDSN"}\">?</dailyValueIntakeReference>"} {?IfNotEmptyThenNotEnc {?ValueGet "LanguageDiffs"} , {?CreateXMLTagWithValue {&Nutritional information.Daily value intake reference (Language second)} , "<dailyValueIntakeReference languageCode=\"{?GDSNEnumerationCode {&Nutritional information.Language (Language second)}, "GDSN"}\">?</dailyValueIntakeReference>"} } <nutrientBasisQuantityTypeCode>BY_CHILD_NUTRITION_SERVING</nutrientBasisQuantityTypeCode> {?CreateXMLTagWithValue {?FormatDecimal {&Nutritional information.Nutrient basis quantity (UOM type)}, ".", "6"} , "<nutrientBasisQuantity measurementUnitCode=\"{&Nutritional information.Nutrient basis quantity UOM (UOM type).Code (Unit system)}\">?</nutrientBasisQuantity>"} {?CreateXMLTagWithValue {?FormatDecimal {&Nutritional information.Serving size (UOM type)},.,6,} , "<servingSize measurementUnitCode=\"{&Nutritional information.Serving size UOM (UOM type).Code (Unit system)}\">?</servingSize>"} {?CreateXMLTagWithValue {&Nutritional information.Serving size description (Language)} , "<servingSizeDescription languageCode=\"{?GDSNEnumerationCode {&Nutritional information.Language (Language)}, "GDSN"}\">?</servingSizeDescription>"} {?IfNotEmptyThenNotEnc {?ValueGet "LanguageDiffs"} , {?CreateXMLTagWithValue {&Nutritional information.Serving size description (Language second)} , "<servingSizeDescription languageCode=\"{?GDSNEnumerationCode {&Nutritional information.Language (Language second)}, "GDSN"}\">?</servingSizeDescription>"} } {?IfEmptyThenNotEnc "", {?ValueGetLocal {?ValueGetLocal "ByChildServing"}}} {!Reset variable}{?ValueSetLocal {?ValueGetLocal "ByChildServing"}, ""} </nutrientHeader>}Export template module: Nutritional information: Collect nutrients
Changes: this module was deleted
Export template module: Nutritional information: Collect Nutrient quantities
This module was added, its data type filter was configured exactly like the data type filter of the second new module Nutritional information: Assemble Nutrient quantities
{?ValueSetLocal "key", {?Concat {&Nutrient quantities.Nutrient basis quantity type}, {&Nutrient quantities.Nutrient type}, {&Nutrient quantities.Preparation state}, {&Nutrient quantities.Target market} }}{!store each attribute under the previously built key as group and its attribute name; take only the first non-empty value}{?ValueSetLocal {?ValueGetLocal "key"}, "expressedAsPartOf", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "expressedAsPartOf"}, {?EnumerationKey {&Nutrient quantities.Expressed as part of}}}}{?ValueSetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"}, {&Nutrient quantities.Percentage of daily intake}}}{?ValueSetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"}, {?EnumerationKey {&Nutrient quantities.Measurement precision}}}}{!take all values, we assume that there is a uom for each value, but exclude a second entry if it has the same uom as the first one}{?ValueSetLocal "uomAttributeName", {?Compare {?ValueGetLocal {?ValueGetLocal "key"}, "uom"}, "", "uom",{?Compare {?ValueGetLocal {?ValueGetLocal "key"}, "uom"}, {&Nutrient quantities.Quantity contained UOM.Code (Unit system)}, "uom_ignore", "uom2"}}}{?ValueSetLocal {?ValueGetLocal "key"}, {?ValueGetLocal "uomAttributeName"}, {&Nutrient quantities.Quantity contained UOM.Code (Unit system)}}{?ValueSetLocal "valueAttributeName", {?Compare {?ValueGetLocal "uomAttributeName"}, "uom", "value", {?Compare {?ValueGetLocal "uomAttributeName"}, "uom2", "value2", "value_ignore"} }}{?ValueSetLocal {?ValueGetLocal "key"}, {?ValueGetLocal "valueAttributeName"}, {&Nutrient quantities.Quantity contained}}Export template module: Nutritional information: Assemble Nutrient quantities
This module was added, its data type filter is configured as displayed in the following screen:
{!collect all existing entries grouped by nutrient basis quantity type, preparation state and target markt, this key will be used to embed data into nutritional information}{?ValueSetLocal "groupKey", {?EnumerationKey {&Nutrient quantities.Nutrient basis quantity type}}}{?ValueSetLocal {?ValueGetLocal "groupKey"},{?ValueGetLocal "groupKey"}_{&Nutrient quantities.Preparation state}_{&Nutrient quantities.Target market} }{?IfEmptyThenNotEnc , {!avoid encoding problems}{!append if there is already data for the group}{?ValueSetLocal {?ValueGetLocal {?ValueGetLocal "groupKey"}}, {?ValueGetLocal {?ValueGetLocal {?ValueGetLocal "groupKey"}}}{!this is the local key we use to get collected nutrient quantities, this is necessary because there could be two entries for each group, one for metric and one for imperial uom} {?ValueSetLocal "key", {?Concat {&Nutrient quantities.Nutrient basis quantity type}, {&Nutrient quantities.Nutrient type}, {&Nutrient quantities.Preparation state}, {&Nutrient quantities.Target market} }}{?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"}{?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"}{?ValueGetLocal {?ValueGetLocal "key"},"value"}{?ValueGetLocal {?ValueGetLocal "key"},"value2"},<nutrientDetail> <nutrientTypeCode>{?EnumerationKey {&Nutrient quantities.Nutrient type}}</nutrientTypeCode> {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"},".",2} ,"<dailyValueIntakePercent>?</dailyValueIntakePercent>"} {?CreateXMLTagWithValue {?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"} ,"<measurementPrecisionCode>?</measurementPrecisionCode>"} {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"},"value"},".","6"}, "<quantityContained measurementUnitCode=\"{?ValueGetLocal {?ValueGetLocal "key"},"uom"}\">?</quantityContained>"} {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"},"value2"},".","6"}, "<quantityContained measurementUnitCode=\"{?ValueGetLocal {?ValueGetLocal "key"},"uom2"}\">?</quantityContained>"} {?CreateXMLTagWithValue {?ValueGetLocal {?ValueGetLocal "key"}, "expressedAsPartOf"} ,"<expressedAsPartOf>?</expressedAsPartOf>"}</nutrientDetail>}}}{!output done for this key -> delete all values for this key}{?ValueSetLocal {?ValueGetLocal "key"}, "expressedAsPartOf", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "uom", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "value", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "uom2", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "value2", ""}IM export template changes
The only changed export template for Item Management is CR_CatalogueRequest Item.ext. The following fields or modules have been added to that template.
Diameter, Diameter UOM
Export template module: Items
Changes: line 119 was added
{?CreateXMLTagWithValue {?FormatDecimal {&Item.Height (Target market, UOM type)}, ".", "6"}, "<height uom=\"{&Item.Height UOM (Target market, UOM type).Code (Unit system)}\">?</height>"}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Width (Target market, UOM type)}, ".", "6"}, "<width uom=\"{&Item.Width UOM (Target market, UOM type).Code (Unit system)}\">?</width>"}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Diameter (Target market, UOM type)}, ".", "6"}, "<diameter uom=\"{&Item.Diameter UOM (Target market, UOM type).Unit system Code}\">?</diameter>"}{?CreateXMLTagWithValue {?FormatDecimal {&Item.Volume (Target market, UOM type)}, ".", "6"}, "<volume uom=\"{&Item.Volume UOM (Target market, UOM type).Code (Unit system)}\">?</volume>"}Cheese milk acquisition type
Export template module: Dairy fish meat poultry
Changes: line 14 was added
{?CreateXMLTagWithContent {?SplitKeywords {?EnumerationKey {&Dairy fish meat poultry.Cheese maturation container process type}}, "<value>", "</value>"}, "<attrMany name="cheeseMaturationProcessContainerTypeCode">?</attrMany>"}{?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Cheese milk acquisition type}},<attr name="cheeseMilkAcquisitionTypeCode">?</attr>}{?CreateXMLTagWithValue {?FormatDecimal {&Dairy fish meat poultry.Fat percentage in dry matter},.,2}, <attr name="fatPercentageInDryMatter">?</attr>}{?CreateXMLTagWithValue {?EnumerationKey {&Dairy fish meat poultry.Is rind edible}},<attr name="isRindEdible">?</attr>}New valid value for nutrient basis quantity type codes
The new value "By child nutrition serving" had to be considered and requires changes in some modules of the export template.
Export template module: Items
Changes: line 132 was changed, line 133 was added
{$Collect Microbiological information}{$Collect allergens}{$Collect Nutrient quantities}{$Assemble Nutrient quantities}{$Collect product yield information}{$Collect additional diet certification information}Export template module: Nutritional information
Changes: lines 2, 32, 62 were changed, lines 100-128 were added
{?ValueSetLocal "tmpNutrientListByContainerName",BY_PACKAGE_OR_CONTAINER_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}}{?ValueSetLocal "tmpNutrientListByMeasureName",BY_MEASURE_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}}{?ValueSetLocal "ByServing",BY_SERVING_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}}{!BY_CHILD_NUTRITION_SERVING only export when there is data for this basis quantity type code}{?ValueSetLocal "byChildNutritionServing",BY_CHILD_NUTRITION_SERVING_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}}{?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal "byChildNutritionServing"}}, <row> <attr name="preparationStateCode">{?EnumerationKey {&Nutritional information.Preparation state}}</attr> {?IfNotEmptyThenNotEnc {&Nutritional information.Daily value intake reference (Language)}{&Nutritional information.Daily value intake reference (Language second)}, "<attrQualMany name="dailyValueIntakeReference"> {?CreateXMLTagWithValue {&Nutritional information.Daily value intake reference (Language)}, "<value qual="{?GDSNEnumerationCode {&Nutritional information.Language (Language)},"GDSN"}">?</value>"} {?IfNotEmptyThenNotEnc {?ValueGet "LanguageDiffers"}, {?CreateXMLTagWithValue {&Nutritional information.Daily value intake reference (Language second)}, "<value qual="{?GDSNEnumerationCode {&Nutritional information.Language (Language second)},"GDSN"}">?</value>"}} </attrQualMany>" } <attr name="nutrientBasisQuantityTypeCode">BY_CHILD_NUTRITION_SERVING</attr> {?CreateXMLTagWithValue {?FormatDecimal {&Nutritional information.Nutrient basis quantity (UOM type)},.,6,}, "<attrQual name="nutrientBasisQuantity" qual="{&Nutritional information.Nutrient basis quantity UOM (UOM type).Code (Unit system)}">?</attrQual>" } {!IM accepts here multi values which we currently do not support } {?CreateXMLTagWithContent {?FormatDecimal {&Nutritional information.Serving size (UOM type)},.,6,}, <attrQualMany name="servingSize"><value qual="{&Nutritional information.Serving size UOM (UOM type).Code (Unit system)}">?</value></attrQualMany> } {?CreateXMLTagWithContent {?ValueGetLocal {?ValueGetLocal "byChildNutritionServing"}}, "<attrGroupMany name=\"nutrientDetail\">?</attrGroupMany>"} {!Reset variable}{?ValueSetLocal {?ValueGetLocal "byChildNutritionServing"}, ""} </row>}Export template module: Collect nutrients
Changes: this module was deleted
Export template module: Collect Nutrient quantities
This module was added, its data type filter was configured exactly like the data type filter of the second new module Assemble Nutrient quantities
{?ValueSetLocal "key", {?Concat {&Nutrient quantities.Nutrient basis quantity type}, {&Nutrient quantities.Nutrient type}, {&Nutrient quantities.Preparation state}, {&Nutrient quantities.Target market} }}{!store each attribute under the previously built key as group and its attribute name; take only the first non-empty value}{?ValueSetLocal {?ValueGetLocal "key"}, "expressedAsPartOf", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "expressedAsPartOf"}, {?EnumerationKey {&Nutrient quantities.Expressed as part of}}}}{?ValueSetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"}, {&Nutrient quantities.Percentage of daily intake}}}{?ValueSetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode", {?GetValue {?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"}, {?EnumerationKey {&Nutrient quantities.Measurement precision}}}}{!take all values, we assume that there is a uom for each value, but exclude a second entry if it has the same uom as the first one}{?ValueSetLocal "uomAttributeName", {?Compare {?ValueGetLocal {?ValueGetLocal "key"}, "uom"}, "", "uom", {?Compare {?ValueGetLocal {?ValueGetLocal "key"}, "uom"}, {&Nutrient quantities.Quantity contained UOM.Code (Unit system)}, "uom_ignore", "uom2"}}}{?ValueSetLocal {?ValueGetLocal "key"}, {?ValueGetLocal "uomAttributeName"}, {&Nutrient quantities.Quantity contained UOM.Code (Unit system)}}{?ValueSetLocal "valueAttributeName", {?Compare {?ValueGetLocal "uomAttributeName"}, "uom", "value", {?Compare {?ValueGetLocal "uomAttributeName"}, "uom2", "value2", "value_ignore"} }}{?ValueSetLocal {?ValueGetLocal "key"}, {?ValueGetLocal "valueAttributeName"}, {&Nutrient quantities.Quantity contained}}Export template module: Assemble Nutrient quantities
This module was added, its data type filter is configured as displayed in the following screen:
{!collect all existing entries grouped by nutrient basis quantity type, preparation state and target markt, this key will be used to embed data into nutritional information}{?ValueSetLocal "groupKey", {?EnumerationKey {&Nutrient quantities.Nutrient basis quantity type}}}{?ValueSetLocal {?ValueGetLocal "groupKey"},{?ValueGetLocal "groupKey"}_{&Nutrient quantities.Preparation state}_{&Nutrient quantities.Target market} }{?IfEmptyThenNotEnc , {!avoid encoding problems}{!append if there is already data for the group}{?ValueSetLocal {?ValueGetLocal {?ValueGetLocal "groupKey"}}, {?ValueGetLocal {?ValueGetLocal {?ValueGetLocal "groupKey"}}}{!this is the local key we use to get collected nutrient quantities, this is necessary because there could be two entries for each group, one for metric and one for imperial uom} {?ValueSetLocal "key", {?Concat {&Nutrient quantities.Nutrient basis quantity type}, {&Nutrient quantities.Nutrient type}, {&Nutrient quantities.Preparation state}, {&Nutrient quantities.Target market} }}{?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"}{?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"}{?ValueGetLocal {?ValueGetLocal "key"},"value"}{?ValueGetLocal {?ValueGetLocal "key"},"value2"},<row> {?CreateXMLTagWithValue {?EnumerationKey {&Nutrient quantities.Nutrient type}} ,<attr name=\"nutrientTypeCode\">?</attr>} {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent"},".",2} ,"<attr name="dailyValueIntakePercent">?</attr>" } {?CreateXMLTagWithValue {?ValueGetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode"} ,"<attr name="measurementPrecisionCode">?</attr>" } {?CreateXMLTagWithValue {?ValueGetLocal {?ValueGetLocal "key"}, "expressedAsPartOf"} ,"<attr name="expressedAsPartOf">?</attr>" } {?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal "key"},"value"}{?ValueGetLocal {?ValueGetLocal "key"},"value2"}, <attrQualMany name="quantityContained"> {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"},"value"},".","6"}, "<value qual="{?ValueGetLocal {?ValueGetLocal "key"},"uom"}">?</value>"} {?CreateXMLTagWithValue {?FormatDecimal {?ValueGetLocal {?ValueGetLocal "key"},"value2"},".","6"}, "<value qual="{?ValueGetLocal {?ValueGetLocal "key"},"uom2"}">?</value>"} </attrQualMany> }</row>}}}{!output done for this key -> delete all values for this key}{?ValueSetLocal {?ValueGetLocal "key"}, "expressedAsPartOf", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "dailyValueIntakePercent", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "measurementPrecisionCode", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "uom", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "value", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "uom2", ""}{?ValueSetLocal {?ValueGetLocal "key"}, "value2", ""}Units
New Units
|
Code |
Name |
Enumeration |
|
W/m2 |
Watt per square metre |
Enum.GDSNDefaultUnits |
|
NTU |
Nephelometric turbidity unit |
Enum.GDSNDefaultUnits |
Deprecated Units
The unit with code 'g/L' is deprecated. We've set its visibility for the GDSN unit system to false. This means you can still see the value if it has been maintained, but it is no longer part of the valid values lists.
Please use existing unit "gram per litre [GL]" instead.
Affected fields are:
|
Field name |
Field identifier |
Entity |
|
Suggested serving size UOM |
GDSNCanadaExtensionUOM.SuggestedServingSizeUOM |
Canada-specific GDSN data |
|
Unit |
ArticleMicrobiologicsUOM.Unit |
Microbiological information |
|
Serving size UOM |
ArticleNutrientBasisQuantity.ServingSizeUOM |
Nutritional information - Nutrient basis quantity |
|
Physiochemical characteristic value UOM |
ArticlePhysioChemicalUOM.PhysiochemicalCharacteristicValueUOM |
Physiochemical information |
|
Nutritional program ingredient unit |
ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit |
Health related information - Nutritional program |
|
Minimum fish meat poultry content UOM |
ArticleFishMeatPoultryContentUOM.MinimumFishMeatPoultryContentUOM |
Dairy fish meat poultry - Fish meat poultry content |
Categories
We cleaned up the unit enumerations with this release. The valid values lists for all unit of measure fields should be correct in respect to the IM Participant Dictionary for version 8.26. There still might be some units missing which are not yet part of the overall set of GDSN units we support in Product360.
The following fields are associated with the changes.
|
Field |
new units |
excluded units |
Enumeration |
|
ArticleNutrientBasisQuantity.ServingSizeUOM |
- |
'AIU', 'AM', 'AP', 'AR', 'AV', 'DC', 'FG', 'GN', 'IH', 'JC', 'JL', 'JN', 'JT', 'JV', 'JX', 'NT', 'PA', 'PT', 'RO', 'SZ', 'TB', 'US', 'VI', 'Y4' |
Changed from Enum.GDSNUnits to Enum.GDSNDefaultUnits (with category 'Default') |
|
GDSNCanadaExtensionUOM.SuggestedServingSizeUOM |
|||
|
ArticlePhysioChemicalUOM.PhysiochemicalCharacteristicValueUOM |
|||
|
ArticleMicrobiologicsUOM.Unit |
|||
|
ArticleFishMeatPoultryContentUOM.MinimumFishMeatPoultryContentUOM |
|||
|
ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit |
|||
|
GDSNExtensionUOM.NetContentUOM |
'AM', 'AP', 'AR', 'AV', 'BAR', 'DAY', 'DC', 'F27', 'G21', 'GN', 'IH', 'JC', 'JL', 'JN', 'JT', 'JV', 'JX', 'NU', 'PRS', 'SZ', 'TB', 'VI', 'Y4' |
'AIU', 'PTN' |
Added categories 'VolumeExtension' and 'Quantity' to Enum.GDSNQuantityUnits |
|
ArticlePackagingMaterialUOM.PackagingMaterialCompositionQuantityUOM |
|||
|
GDSNTargetMarketExtensionUOM.DiameterUOM |
'AWG', 'C45', 'C52', 'CFU' |
- |
Added category 'DimensionsExtension' to Enum.GDSNDimensionUnits |
|
GDSNTargetMarketExtensionUOM.DepthUOM |
|||
|
GDSNTargetMarketExtensionUOM.HeightUOM |
|||
|
GDSNTargetMarketExtensionUOM.WidthUOM |
|||
|
ArticlePackagingUOM.PackagingWeightUOM |
'NIU' |
- |
Added category 'MassExtension' to Enum.GDSNMassUnits |
|
ArticleTradeItemHandlingStackingUOM.StackingWeightMaximumUOM |
|||
|
GDSNTargetMarketExtensionUOM.GrossWeightUOM |
|||
|
ArticleDairyFishMeatPoultryUOM.CasingTareWeightUOM |
|||
|
GDSNTargetMarketExtensionUOM.NetweightUOM |
|||
|
ArticleCheeseUOM.RipeningTimePeriodUOM |
'MIN' |
- |
|
|
ArticleDistributionDetailUOM.OrderingLeadTimeUOM |
|||
|
ArticlePackagingUOM.UsableProductVolumeUOM |
'G21', 'NIU', 'Q32', 'Q33', 'Q34' |
Added categories 'VolumeExtMicro' and 'VolumeExtension' to Enum.GDSNVolumeUnits |
|
|
GDSNTargetMarketExtensionUOM.VolumeUOM |
|||
|
ArticleTradeItemHandlingUOM.ClampPressureUOM |
'F79', 'HN', 'KNM', 'KPA', 'N16', 'N17' |
||
|
ArticlePreparationServingProductYieldUOM.ProductYieldUOM |
'1N', 'H87', 'NIU' |
Add category 'MassExtension' to Enum.GDSNProductYieldUnits |
|
|
ArticleNutrientBasisQuantity.NutrientBasisQuantityUOM |
Renamed category 'MassEnergyVolumeInfoStorage' to 'NutritionQuantity' of Enum.GDSNNutritionQuantityUnits |
||
|
ArticleNutrientListQuantity.QuantityContainedUOM |
When the units are removed from the enumerations and you previously used some of those units, they will no longer be visible. In order to find out if your data is affected by the changes, here you find helpful database statements.
-- IDs are defined by Informatica, so they should be the same in each systemSELECT UnitID FROM UnitSystemUnitMap WHERE UnitSystemID = 70 AND Code in ('AIU', 'AM', 'AP', 'AR', 'AV', 'DC', 'FG', 'GN', 'IH', 'JC', 'JL', 'JN', 'JT', 'JV', 'JX', 'NT', 'PA', 'PT', 'RO', 'SZ', 'TB', 'US', 'VI', 'Y4')SELECT UnitID FROM UnitSystemUnitMap WHERE UnitSystemID = 70 AND Code in ('AIU', 'PTN') -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticleNutrientBasisQuantity.ServingSizeUOM (EntityID = 10062, ArticleDomainUOMType.Std_UnitProxy_02) -- GDSNCanadaExtensionUOM.SuggestedServingSizeUOM (EntityID = 10002, ArticleDomainUOMType.Std_UnitProxy_01) -- ArticlePhysioChemicalUOM.PhysiochemicalCharacteristicValueUOM (EntityID = 10111, ArticleDomainUOMType.Std_UnitProxy_01) -- ArticleMicrobiologicsUOM.Unit (EntityID = 10011, ArticleDomainUOMType.Std_LK_UnitProxy_01) SELECT ar.ArticleID, ar.Identifier, ad.TargetMarket, ad.Std_LK_Text100_01, ad.Std_LK_Text100_02, adu.EntityID, adu.UOMType, adu.Std_LK_UnitProxy_01, adu.Std_UnitProxy_01, adu.Std_UnitProxy_02 FROM ArticleRevision AS ar JOIN ArticleDomain AS ad ON ar.ID = ad.ArticleRevisionID JOIN ArticleDomainUOM as adu ON ad.ID = adu.ArticleDomainID WHERE (adu.EntityID = 10062 AND adu.Std_UnitProxy_02 in (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) OR ((adu.EntityID = 10002 OR adu.EntityID = 10111)AND adu.Std_UnitProxy_01 in (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) OR (adu.EntityID = 10011 AND adu.Std_LK_UnitProxy_01 in (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticleFishMeatPoultryContentUOM.MinimumFishMeatPoultryContentUOM (EntityID = 10126, ArticleSubDomainUOMType.Std_UnitProxy_01) -- ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit (EntityID = 17186, ArticleSubDomainUOMType.Std_UnitProxy_01) SELECT ar.ArticleID, ar.Identifier, ad.TargetMarket, asd.Std_LK_Text250_01, asdu.EntityID, asdu.UOMType, asdu.Std_UnitProxy_01 FROM ArticleRevision AS ar JOIN ArticleDomain AS ad ON ar.ID = ad.ArticleRevisionID JOIN ArticleSubDomain AS asd ON ad.ID = asd.ArticleDomainID JOIN ArticleSubDomainUOM as asdu ON asd.ID = asdu.ArticleSubDomainID WHERE ((asdu.EntityID = 10126 OR asdu.EntityID = 17186) AND asdu.Std_UnitProxy_01 in (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- GDSNExtensionUOM.NetContentUOM SELECT ar.ArticleID, ar.Identifier, ameu.EntityID, ameu.UOMType, ameu.Std_UnitProxy_01 FROM ArticleRevision AS ar JOIN ArticleMarketExtension AS ame ON ar.ID = ame.ArticleRevisionID JOIN ArticleMarketExtensionUOM AS ameu ON ame.ID = ameu.ArticleMarketExtensionID WHERE (ameu.EntityID = 1042 AND ameu.Std_UnitProxy_01 in (7002, 7038)) -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticlePackagingMaterialUOM.PackagingMaterialCompositionQuantityUOM SELECT ar.ArticleID, ar.Identifier, ad.TargetMarket, ad.Std_LK_Text100_01, asd.Std_LK_Text250_01, asdu.EntityID, asdu.UOMType, asdu.Std_UnitProxy_01 FROM ArticleRevision AS ar JOIN ArticleDomain AS ad ON ar.ID = ad.ArticleRevisionID JOIN ArticleSubDomain AS asd ON ad.ID = asd.ArticleDomainID JOIN ArticleSubDomainUOM as asdu ON asd.ID = asdu.ArticleSubDomainID WHERE (asdu.EntityID = 17115 AND asdu.Std_UnitProxy_01 in (7002, 7038))-- IDs are defined by Informatica, so they should be the same in each systemSELECT "UnitID" FROM "UnitSystemUnitMap" WHERE "UnitSystemID" = 70 AND "Code" in ('AIU', 'AM', 'AP', 'AR', 'AV', 'DC', 'FG', 'GN', 'IH', 'JC', 'JL', 'JN', 'JT', 'JV', 'JX', 'NT', 'PA', 'PT', 'RO', 'SZ', 'TB', 'US', 'VI', 'Y4'); SELECT "UnitID" FROM "UnitSystemUnitMap" WHERE "UnitSystemID" = 70 AND "Code" in ('AIU', 'PTN'); -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticleNutrientBasisQuantity.ServingSizeUOM (EntityID = 10062, ArticleDomainUOMType.Std_UnitProxy_02) -- GDSNCanadaExtensionUOM.SuggestedServingSizeUOM (EntityID = 10002, ArticleDomainUOMType.Std_UnitProxy_01) -- ArticlePhysioChemicalUOM.PhysiochemicalCharacteristicValueUOM (EntityID = 10111, ArticleDomainUOMType.Std_UnitProxy_01) -- ArticleMicrobiologicsUOM.Unit (EntityID = 10011, ArticleDomainUOMType.Std_LK_UnitProxy_01) SELECT ar."ArticleID", ar."Identifier", ad."TargetMarket", ad."Std_LK_Text100_01", ad."Std_LK_Text100_02", adu."EntityID", adu."UOMType", adu."Std_LK_UnitProxy_01", adu."Std_UnitProxy_01", adu."Std_UnitProxy_02" FROM "ArticleRevision" ar INNER JOIN "ArticleDomain" ad ON ar."ID" = ad."ArticleRevisionID" INNER JOIN "ArticleDomainUOM" adu ON ad."ID" = adu."ArticleDomainID" WHERE (adu."EntityID" = 10062 AND adu."Std_UnitProxy_02" IN (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) OR ((adu."EntityID" = 10002 OR adu."EntityID" = 10111) AND adu."Std_UnitProxy_01" IN (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)) OR (adu."EntityID" = 10011 AND adu."Std_LK_UnitProxy_01" IN (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)); -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticleFishMeatPoultryContentUOM.MinimumFishMeatPoultryContentUOM (EntityID = 10126, ArticleSubDomainUOMType.Std_UnitProxy_01) -- ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit (EntityID = 17186, ArticleSubDomainUOMType.Std_UnitProxy_01) SELECT ar."ArticleID", ar."Identifier", ad."TargetMarket", asd."Std_LK_Text250_01", asdu."EntityID", asdu."UOMType", asdu."Std_UnitProxy_01" FROM "ArticleRevision" ar INNER JOIN "ArticleDomain" ad ON ar."ID" = ad."ArticleRevisionID" INNER JOIN "ArticleSubDomain" asd ON ad."ID" = asd."ArticleDomainID" INNER JOIN "ArticleSubDomainUOM" asdu ON asd."ID" = asdu."ArticleSubDomainID" WHERE ((asdu."EntityID" = 10126 OR asdu."EntityID" = 17186) AND asdu."Std_UnitProxy_01" IN (7001,147,936,426,246,116,205,249,1008,294,149,265,806,876,7005,7006,7007,7008,7009,7010,7011,7012,7034,7038)); -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- GDSNExtensionUOM.NetContentUOM SELECT ar."ArticleID", ar."Identifier", ameu."EntityID", ameu."UOMType", ameu."Std_UnitProxy_01" FROM "ArticleRevision" ar INNER JOIN "ArticleMarketExtension" ame ON ar."ID" = ame."ArticleRevisionID" INNER JOIN "ArticleMarketExtensionUOM" ameu ON ame."ID" = ameu."ArticleMarketExtensionID" WHERE (ameu."EntityID" = 1042 AND ameu."Std_UnitProxy_01" in (7002, 7038)); -- Find out if you have stored values that will no longer be part of the valid values lists for fields -- ArticlePackagingMaterialUOM.PackagingMaterialCompositionQuantityUOM SELECT ar."ArticleID", ar."Identifier", ad."TargetMarket", ad."Std_LK_Text100_01", asd."Std_LK_Text250_01", asdu."EntityID", asdu."UOMType", asdu."Std_UnitProxy_01" FROM "ArticleRevision" ar INNER JOIN "ArticleDomain" ad ON ar."ID" = ad."ArticleRevisionID" INNER JOIN "ArticleSubDomain" asd ON ad."ID" = asd."ArticleDomainID" INNER JOIN "ArticleSubDomainUOM" asdu ON asd."ID" = asdu."ArticleSubDomainID" WHERE (asdu."EntityID" = 17115 AND asdu."Std_UnitProxy_01" in (7002, 7038));Compatibility
The relevant changes of GDSN Major Release 3.1.19 will be supported from version 10.1.0.04 upwards. All older versions won´t have any of the changes mentioned in this migration guide so we highly recommend to update to the latest version.
As there are no structural changes in the XSD files compared to version 3.1.15 all export templates are compatible to version 3.1.19.
B2B
With the Update to GDSN 3.1.19 the XSDs 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.