GDSN Migration Guide for version 3.1.15
Product 360 data model changes
In this release we have 5 new fields, 4 changed fields and 5 moved 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/ |
P360 field name |
P360 entity |
Remarks |
isDietTypeMarkedOnPackage |
Diet information |
F&B |
ArticleDietList.IsDietTypeMarkedOnPackage |
Diets |
|
expressedAsPartOf |
Nutritional information |
F&B |
ArticleNutrientListQuantity.ExpressedAsPartOf |
Nutrient list quantity |
|
nutritionalProgramDetail |
Health related information |
F&B |
ArticleNutritionalProgramLang.NutritionalProgramDetail |
Nutritional program - Language specific data |
|
claimMarkedOnPackage |
Nuritional Claim |
F&B |
ArticleNutritionalClaim.ClaimMarkedOnPackage |
Nutritional claims |
|
ingredientStatement |
Ingredient information |
F&B |
ArticleIngredientStatement.IngredientStatement
|
Ingredient information - Ingredient statements |
The existing "Ingredient statement" field has been renamed into "Ingredient statement, computed" and can still be used |
Changed data fields
GDSN attribute name |
GDSN module |
GDSN/F&B |
P360 field name |
P360 entity |
Change |
compulsoryAdditive |
Health related information |
F&B |
ArticleHealthCareLang.
|
ArticleHealthCare |
Fieldtype changed
|
additionalDescription |
TradeItem Description |
GDSN |
GDSNTargetMarketExtensionLang.
|
Target market specific GDSN language data |
Fieldtype changed
from
|
certificationIdentification |
Diet information Certification Information |
F&B |
Certificate.Identification |
Certificates |
Length increased from 35 to 120 |
certificationStandard |
Diet information Certification Information |
F&B |
Certification.Standard |
Certification |
Length shortened from 200 to 120 |
If you are using DSE, please adjust the max length of Certificate.Value to 120 in the custom area of the repository.
Moved data fields
The following table lists fields that have been moved to another entity
GDSN attribute name |
GDSN module |
GDSN/ |
P360 field name |
P360 entity |
Remarks |
nutritionalProgramCode |
Health related information |
F&B |
From: ArticleHealthCare. To: ArticleNutritionalProgram. |
From: Health related information To: Nutritional program |
since it is now a logical key in its own entity, it is no longer a multi value field |
nutritionalScore |
Health related information |
F&B |
From: ArticleHealthCare. To: ArticleNutritionalProgram. |
From: Health related information To: Nutritional program |
|
nutritionalValue |
Health related information |
F&B |
From: ArticleHealthCare. To: ArticleNutritionalProgram. |
From: Health related information To: Nutritional program |
|
nutritionalProgramIngredientTypeCode |
Health related information |
F&B |
From: ArticleHealthCare. To: ArticleNutritionalProgramUOM. |
From: Health related information To: Nutritional program UOM |
|
nutrientProgramIngredientMeasurement |
Health related information |
F&B |
From: ArticleHealthCareUOM. To: ArticleNutritionalProgramUOM. |
From: Health related information UOM To: Nutritional program UOM |
Units of measure
The following table lists units that have been added.
An empty category means that the corresponding unit is part of the overall list of GDSN units, units with a category are part of the corresponding special unit enumeration, e.g. time units.
Code |
Name (EN) |
Description (EN) |
Category |
/L |
per litre (/L) |
Per Litre [/L] (Unified code) |
|
/mL |
per millilitre (/mL) |
Per millilitre [/mL] (Unified Code) |
|
/mmol |
per millimole (/mmol) |
Per millimole [/mmol] (Unified code) |
|
[APL'U] |
IgA phospholipid units [APL'U] |
IgA phospholipid units - biologic activity of anticardiolipin [APL'U] (Unified code) |
|
[beth'U] |
Bethesda unit [beth'U] |
Bethesda unit - biologic activity of factor VIII inhibitor [beth'U] (Unified Code) |
|
[GPL'U] |
IgG phospholipid units [GPL'U] |
IgG phospholipid units - biologic activity of anticardiolipin IgG [GPL'U] (Unified Code) |
Volume |
[HPF] |
per high power field [HPF] |
Per high power field - view area in microscope [/[HPF]] (Unified Code) |
Energy |
[iU]/d |
international unit per day [iU/d] |
International unit per day [iU/d] (Unified Code) |
Time |
[iU]/L |
international unit per litre [iU/L] |
International unit per litre [iU/L] (Unified Code) |
|
[iU]/mL |
international unit per millilitre [iU/mL] |
International unit per millilitre [iU/mL] (Unified Code) |
Time |
[LPF] |
per low power field [LPF] |
Per low power field - view area in microscope [/[LPF]] (Unified Code) |
Energy |
[MPL'U]/L |
IgM phospholipid units [MPL'U] per litre |
IgM phospholipid units -biologic activity of anticardiolipin IgM – MPL unit per litre [[MPL'U]/L] (Unified code) |
|
B |
Bel - level [B] |
Bel - level [B] (Unified code) |
|
diop |
dioptre - refraction of a lens [diop] |
Dioptre - refraction of a lens [diop] (Unified code) |
Mass |
fmol/L |
femtomole per litre [fmol/L] |
Femtomole per litre [fmol/L] (Unified code) |
Mass |
g(48.h) |
gram per 48 hour [g/48 hr] |
Gram per 48 hour [g/48 hr] (Unified code) |
Time |
g/(12.h) |
gram per 12 hour [g/12 hr] |
Gram per 12 hour [g/12 hr] (Unified code) |
Time |
g/(4.h) |
gram per 4 hour [g/4 hr] |
Gram per 4 hour [g/4 hr] (Unified code) |
Time |
g/(6.h) |
gram per 6 hour [g/6 hr] |
Gram per 6 hour [g/6 hr] (Unified code) |
Time |
g/(72.h) |
gram per 72 hour [g/72 hr] |
Gram per 72 hour [g/72 hr] (Unified code) |
Time |
g/d |
gram per day [g/d] |
Gram per day [g/d] (Unified code) |
Time |
g/g |
gram per gram [g/g] |
Gram per gram [g/g] (Unified code) |
|
kat |
katal - catalytic activity [kat] |
Katal - catalytic activity [kat] (Unified code) |
|
kU/L |
kilo unit per litre [kU/L] |
Kilo unit per litre [kU/L] (Unified code) |
|
L/L |
litre per litre [L/L] |
Litre per litre [L/L] (Unified code) |
|
m[iU]/L |
milliinternational units per litre [m[iU]/L] |
Milliinternational units per litre [m[iU]/L] (Unified code) |
|
mg/(12.h) |
milligram per 12 hour [mg/12 hr] |
Milligram per 12 hour [mg/12 hr] (Unified code) |
Time |
mg/d |
milligram per day [mg/d] |
Milligram per day [mg/d] (Unified Code) |
|
mg/g |
milligram per gram [mg/g] |
Milligram per gram [mg/g] (Unified code) |
|
mg/L |
milligram per litre [mg/L] |
Milligram per litre [mg/L] (Unified code) |
|
mg/mg |
milligram per milligram [mg/mg] |
Milligram per milligram [mg/mg] (Unified code) |
|
mg/mL |
milligram per millilitre [mg/mL] |
Milligram per millilitre [mg/mL] (Unified code) |
|
mL/(10.h) |
millilitre per 10 hour [mL/10 hr] |
Millilitre per 10 hour [mL/10 hr] (Unified code) |
Time |
mL/(12.h) |
millilitre per 12 hour [mL/12 hr] |
Millilitre per 12 hour [mL/12 hr] (Unified code) |
Time |
mL/(2.h) |
millilitre per 2 hour [mL/2 hr] |
Millilitre per 2 hour [mL/2 hr] (Unified code) |
Time |
mL/(4.h) |
millilitre per 4 hour [mL/4 hr] |
Millilitre per 4 hour [mL/4 hr] (Unified code) |
Time |
mL/(5.h) |
millilitre per 5 hour [mL/5 hr] |
Millilitre per 5 hour [mL/5 hr] (Unified code) |
Time |
mL/(6.h) |
millilitre per 6 hour [mL/6 hr] |
Millilitre per 6 hour [mL/6 hr] (Unified code) |
Time |
mL/(72.h) |
millilitre per 72 hour [mL/72 hr] |
Millilitre per 72 hour [mL/72 hr] (Unified code) |
Time |
mL/(8.h) |
millilitre per 8 hour [mL/8 hr] |
Millilitre per 8 hour [mL/8 hr] (Unified Code) |
Time |
mL/d |
millilitre per day [mL/d] |
Millilitre per day [mL/d] (Unified Code) |
Time |
mL/h |
millilitre per hour [mL/hr] |
Millilitre per hour [mL/hr] (Unified Code) |
Time |
mmol/(12.h) |
millimole per 12 hour [mmol/12 hr] |
Millimole per 12 hour [mmol/12 hr] (Unified code) |
Time |
mmol/(5.h) |
millimole per 5 hour [mmol/5 hr] |
Millimole per 5 hour [mmol/5 hr] (Unified code) |
Time |
mmol/(6.h) |
millimole per 6 hour [mmol/6 hr] |
Millimole per 6 hour [mmol/6 hr] (Unified code) |
Time |
mmol/d |
millimole per day [mmol/d] |
Millimole per day [mmol/d] (Unified code) |
Time |
mmol/g |
millimole per gram [mmol/g] |
Millimole per gram [mmol/g] (Unified code) |
|
mmol/kg[H2O] |
millimole per kilogram [H2O] [mmol/kg Water] |
Millimole per kilogram [H2O] [mmol/kg Water] (Unified code) |
|
mmol/L |
millimole per litre [mmol/L] |
Millimole per litre [mmol/L] (Unified code) |
|
mmol/mmol |
millimole per millimole [mmol/mmol] |
Millimole per millimole [mmol/mmol] (Unified code) |
|
mU |
milliUnit [mU] |
MilliUnit [mU] (Unified code) |
Mass |
mU/L |
milliUnit per litre [mU/L] |
MilliUnit per litre [mU/L] (Unified code) |
|
ng/d |
nanogram per day [ng/d] |
Nanogram per day [ng/d] (Unified code) |
Time |
ng/g |
nanogram per gram [ng/g] |
Nanogram per gram [ng/g] (Unified code) |
|
ng/L |
nanogram per litre [ng/L] |
Nanogram per litre [ng/L] (Unified code) |
|
ng/mL |
nanogram per millilitre [ng/mL] |
Nanogram per millilitre [ng/mL] (Unified code) |
|
nmol/d |
nanomole per day [nmol/d] |
Nanomole per day [nmol/d] (Unified code) |
Time |
nmol/g |
nanomole per gram [nmol/g] |
Nanomole per gram [nmol/g] (Unified code) |
|
nmol/h/mL |
nanomole per hour per millilitre [nmol/hr/mL] |
Nanomole per hour per millilitre [nmol/h/mL] (Unified code) |
|
nmol/L |
nanomole per litre [nmol/L] |
Nanomole per litre [nmol/L] (Unified code) |
|
nmol/mmol |
nanomole per millimole [nmol/mmol] |
Nanomole per millimole [nmol/mmol] (Unified code) |
|
nmol/nmol |
nanomole per nanomole [nmol/nmol] |
Nanomole per nanomole [nmol/nmol] (Unified code) |
|
pg |
picogram [pg] |
Picogram [pg] (Unified code) |
Mass |
pg/mL |
picogram per millilitre [pg/mL] |
Picogram per millilitre [pg/mL] (Unified code) |
|
pmol/d |
picomole per day [pmol/d] |
Picomole per day [pmol/d] (Unified code) |
Time |
pmol/g |
picomole per gram [pmol/g] |
Picomole per gram [pmol/g] (Unified code) |
|
pmol/h/mg |
picomole per hour per milligram [pmol/hr/mg] |
Picomole per hour per milligram [pmol/hr/mg] (Unified code) |
Time |
pmol/h/mL |
picomole per hour per millilitre [pmol/hr/mL] |
Picomole per hour per millilitre [pmol/hr/mL] (Unified code) |
|
pmol/L |
picomole per litre [pmol/L] |
Picomole per litre [pmol/L] (Unified code) |
|
pmol/mmol |
picomole per millimole [pmol/mmol] |
Picomole per millimole [pmol/mmol] (Unified code) |
|
U/(12.h) |
unit per 12 hour [U/12 hr] |
Unit per 12 hour [U/12 hr] (Unified code) |
Time |
U/(2.h) |
unit per 2 hour [U/2 hr] |
Unit per 2 hour [U/2 hr] (Unified code) |
Time |
U/d |
unit per day [U/d] |
Unit per day [U/d] (Unified code) |
Time |
U/g |
unit per gram [U/g] |
Unit per gram [U/g] (Unified code) |
- |
U/h |
unit per 1 hour [U/hr] |
Unit per 1 hour [U/hr] (Unified code) |
Time |
U/kg |
unit per kilogram [U/kg] |
Unit per kilogram [U/kg] (Unified code) |
|
U/mL |
unit per millilitre [U/mL] |
Unit per millilitre [U/mL] (Unified code) |
|
ug/d |
microgram per day [ug/d] aka [mcg/d] |
Microgram per day [ug/d] (Unified code) aka [mcg/d] |
Time |
ug/g |
microgram per gram [ug/g] aka [mcg/g] |
Microgram per gram [ug/g] (Unified code) aka [mcg/g] |
|
ug/L |
microgram per litre [ug/L] aka [mcg/L] |
Microgram per litre [ug/L] (Unified code) aka [mcg/L] |
|
ug/min |
microgram per minute [ug/min] aka [mcg/min] |
Microgram per minute [ug/min] (Unified code) aka [mcg/min] |
Time |
ug/mL |
microgram per millilitre [ug/mL] aka [mcg/mL] |
Microgram per millilitre [ug/mL] (Unified code) aka [mcg/mL] |
|
um/s |
micrometre per second [um/s] |
Micrometre per second [um/s] (Unified code) |
Time |
umol/(2.h) |
micromole per 2 hour [umol/2 hr] |
Micromole per 2 hour [umol/2 hr] (Unified code) |
Time |
umol/d |
micromole per day [umol/d] |
Micromole per day [umol/d] (Unifed Code) |
Time |
umol/g |
micromole per gram [umol/g] |
Micromole per gram [umol/g] (Unified code) |
|
umol/L |
micromole per litre [umol/L] |
Micromole per litre [umol/L] (Unified code) |
|
umol/min/L |
enzyme unit [micromoles/minute] per litre [umol/min/L] |
Enzyme unit [micromoles/minute] per litre [umol/min/L] (Unified code) |
|
umol/mmol |
micromole per millimole [umol/mmol] |
Micromole per millimole [umol/mmol] (Unified code) |
|
umol/umol |
micromole per micromole [umol/umol] |
Micromole per micromole [umol/umol] (Unified code) |
|
g/L |
gram per litre [g/L] |
Gram per litre [g/L] (Unified code) |
|
mm[Hg] |
millimetre of mercury [pressure] |
Millimetre of mercury [pressure] (Unified code) |
Pressure |
u |
unified atomic mass unit [u] |
Unified atomic mass unit [u] (Unified code) |
Mass |
cd |
Candela |
Candela [cd] (Unified code) |
|
C |
Coulomb |
Coulomb - electric charge [C] (Unifed Code) |
Energy |
eV |
electronvolt |
Electronvolt - energy [eV] (Unifed code) |
Energy |
F |
Farad |
Farad - electric capacitance [F] (unified code) |
Energy |
Gy |
Gray [Gy] |
Gray - energy dose [Gy] (Unified Code) |
Energy |
har |
Hecto - Hectare [ha] |
Hectare: Hecto-are and hectare are equivalent units [har] (Unified code) |
Mass |
H |
Henry [H] |
Henry - inductance [H] (Unified Code) |
|
mL/min |
millilitre per minute |
Millilitre per minute [mL/min] (Unified Code) |
Time |
mL/s |
millilitre per second |
Millilitre per second [mL/s] (Unified Code) |
Time |
mmol/kg |
millimole per kilogram [mmol/kg] |
Millimole per kilogram [mmol/kg] (Unified code) |
|
Np |
Neper |
Neper - level [Np] (Unified code) |
|
S |
Siemens - electric conductance [S] |
Siemens - electric conductance [S] (Unified code) |
|
Sv |
Sievert [Sv] |
Sievert - dose equivalent [Sv] (Unified code) |
|
T |
Tesla [T] |
Tesla - magnetic flux density [T] (Unified code) |
|
D53 |
Watt per metre Kelvin |
Specifies the thermal conductivity (lambda value): a measure of the product's ability to conduct heat. |
Energy |
Wb |
Weber - magnetic flux [Wb] |
Weber - magnetic flux [Wb] (Unified code) |
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 |
1699 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1699 Message: |
Deleted because nutritionalProgramIngredientTypeCode is now a logical key ensuring this rule. |
1699 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1699 Message: |
Deleted because nutritionalProgramIngredientTypeCode is now a logical key ensuring this rule. |
- |
- |
Name: Description: IDQ rule name: |
Code: Ext030 Message: |
Adjusted changed field (ArticleHealthCareUOM.NutritionalProgramIngredientUnit → ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit) |
- |
- |
Name: Description: IDQ rule name: |
Code: Ext029 Message: |
Adjusted changed field (ArticleHealthCareUOM.NutritionalProgramIngredientUnit → ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit) |
1698 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1698 Message: |
New rule configuration |
457 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN234 Message: |
Deleted rule (according to GDSN validation documentation) |
1705 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1705 Message: |
|
1706 |
Description: Error message: |
Name: Description: Checks that 'Diet subtype' equals one of the provided values from the list 'Ovo,Lacto,Lacto-Ovo', if 'Diet type' is set to 'Vegetarian' and 'Target market' is not USA. IDQ rule name: Note: |
Code: GDSN1706 Message: |
Only added for target market 'Germany'. Please copy this configuration and adjust it to additional target markets you need to check. |
1707 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1707 Message: |
|
1708 |
Description: Error message: |
Name: Description: IDQ rule name: |
Code: GDSN1708 Message: |
Changes in data source export templates
New XSD file set
A new XSD file set has been provided for GDSN version 3.1.15. 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 diet type marked on package
Export template module: Diet related information: Collect diets
Changes: line 10 and 11 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Diets.Diet subtype}}
,
"<dietTypeSubcode>?</dietTypeSubcode>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Diets.Is diet type marked on
package
}}
,
"<isDietTypeMarkedOnPackage>?</isDietTypeMarkedOnPackage>"
}
Expressed as part of
Export template module: Nutritional information: Collect nutrients
Changes: line 21 and 22 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By serving, UOM type)}}
,
"<expressedAsPartOf>?</expressedAsPartOf>"
}
</nutrientDetail>
}
}
Changes: line 47 and 48 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By measure, UOM type)}}
,
"<expressedAsPartOf>?</expressedAsPartOf>"
}
</nutrientDetail>
}
}
Claim marked on package
Export template module: Nutritional claims
Changes: lines 6-7 have been added
{?CreateXMLTagWithValue {?EnumerationKeyStandard {&Nutritional claims.Nutritional claim element code}}
,
"<nutritionalClaimNutrientElementCode>?</nutritionalClaimNutrientElementCode>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutritional claims.Claim marked on
package
}}
,
"<claimMarkedOnPackage>?</claimMarkedOnPackage>"
}
</nutritionalClaimDetail>
Ingredient statement
Export template module: Ingredient information: collect ingredient statements
Changes: new module
Data type filter:
Language: variables Language and Language second
Target market: variable Target market
{?ValueSetLocal
"ingredientStatements"
,
{?ValueGetLocal
"ingredientStatements"
}
{?CreateXMLTagWithValue {&Ingredient statements.Ingredient statement}
,
"<ingredientStatement languageCode=\"{?GDSNEnumerationCode {&Ingredient statements.Language}, "
GDSN"}\"
sequenceNumber=\
"{?FormatDecimal {&Ingredient statements.Sequence},"
",0}\">?</ingredientStatement>"
}
}
Export template module: Ingredient information
Changes: line 4 replaces former lines 4-7
{?SplitKeywords {?EnumerationKey {&Ingredient information.Ingredient of concern code}}
,
"<ingredientOfConcernCode>"
,
"</ingredientOfConcernCode>"
}
{?IfEmptyThenNotEnc ,{?ValueGetLocal
"ingredientStatements"
}{?ValueSetLocal
"ingredientStatements"
,
""
}}
{?CreateXMLTagWithValue {?FormatDecimal {&Ingredient information.Juice content [%]},
"."
,
"2"
}
,
"<juiceContentPercent>?</juiceContentPercent>"
}
Export template module: Item
Changes: line 167 has been added
{$Ingredient information: collect ingredient statements}
{?CreateXMLTagWithContent {?Concat {$Ingredient information}, {$Ingredient additives}, {$Ingredients}}
,
"<food_and_beverage_ingredient:foodAndBeverageIngredientModule xsi:schemaLocation="
urn:gs1:gdsn:food_and_beverage_ingredient:xsd:
3
http:
//www.gdsregistry.org/3.1/schemas/gs1/gdsn/FoodAndBeverageIngredientModule.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:food_and_beverage_ingredient="urn:gs1:gdsn:food_and_beverage_ingredient:xsd:3">
?
</food_and_beverage_ingredient:foodAndBeverageIngredientModule>"
}
Nutritional program
The output of the Health related information module was completely new added to the export template.
Export template modules:
Health related information
Health related information: Collect nutritional program ingredients
Health related information: Collect nutritional program
Changes: new modules
Export template module: Item
Changes: lines 225-231 have been added
{$Dairy fish meat poultry: Collect content}
{?CreateXMLTagWithContent {$Dairy fish meat poultry}
,
"<dairy_fish_meat_poultry:dairyFishMeatPoultryItemModule xsi:schemaLocation="
urn:gs1:gdsn:dairy_fish_meat_poultry:xsd:
3
http:
//www.gdsregistry.org/3.1/schemas/gs1/gdsn/DairyFishMeatPoultryItemModule.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dairy_fish_meat_poultry="urn:gs1:gdsn:dairy_fish_meat_poultry:xsd:3">
?
</dairy_fish_meat_poultry:dairyFishMeatPoultryItemModule>"
}
{$Health related information: Collect nutritional program ingredients}
{$Health related information: Collect nutritional program}
{?CreateXMLTagWithContent {$Health related information}
,
"<health_related_information:healthRelatedInformationModule xsi:schemaLocation="
urn:gs1:gdsn:health_related_information:xsd:
3
http:
//www.gdsregistry.org/3.1/schemas/gs1/gdsn/HealthRelatedInformationModule.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:health_related_information="urn:gs1:gdsn:health_related_information:xsd:3">
?
</health_related_information:healthRelatedInformationModule>"
}
Nutrient basis quantity type: By Package or Container
Export template module: Nutritional information: Collect nutrients
Changes: lines 53-77 have been added
{!Collect
"By container"
}
{?ValueSetLocal
"ByContainer"
,
"ByContainer_{&Nutrients.Preparation state}_{&Nutrients.Target market}"
}
{?ValueSetLocal {?ValueGetLocal
"ByContainer"
}, {?ValueGetLocal {?ValueGetLocal
"ByContainer"
}}
{?IfNotEmptyThenNotEnc {&Nutrients.Percentage of daily intake (By Package or Container, UOM type)}{&Nutrients.Measurement precision (By Package or Container, UOM type)}{&Nutrients.Quantity contained (By Package or Container, UOM type)}{&Nutrients.Quantity contained (By Package or Container, UOM type second)},
<nutrientDetail>
<nutrientTypeCode>{?EnumerationKey {&Nutrients.Nutrient type}}</nutrientTypeCode>
{!No second UOM allowed}
{?CreateXMLTagWithValue {?FormatDecimal {&Nutrients.Percentage of daily intake (By Package or Container, UOM type)},
"."
,
2
}
,
"<dailyValueIntakePercent>?</dailyValueIntakePercent>"
}
{!No second UOM allowed}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Measurement precision (By Package or Container, UOM type)}}
,
"<measurementPrecisionCode>?</measurementPrecisionCode>"
}
{?CreateXMLTagWithValue {?FormatDecimal {&Nutrients.Quantity contained (By Package or Container, UOM type)},
"."
,
"6"
}
,
"<quantityContained measurementUnitCode=\"{&Nutrients.Quantity contained UOM (By Package or Container, UOM type).Code (Unit system)}\">?</quantityContained>"
}
{?IfNotEmptyThenNotEnc {?ValueGet
"UOMTypeDiffs"
}
,{?Compare {&Nutrients.Quantity contained UOM (By Package or Container, UOM type second).Code (Unit system)},{&Nutrients.Quantity contained UOM (By Package or Container, UOM type).Code (Unit system)},,
{?CreateXMLTagWithValue {?FormatDecimal {&Nutrients.Quantity contained (By Package or Container, UOM type second)},
"."
,
"6"
}
,
"<quantityContained measurementUnitCode=\"{&Nutrients.Quantity contained UOM (By Package or Container, UOM type second).Code (Unit system)}\">?</quantityContained>"
}
}
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By measure, UOM type)}}
,
"<expressedAsPartOf>?</expressedAsPartOf>"
}
</nutrientDetail>
}
}
Export template module: Nutritional information
Changes: lines 1 and 5-31 have been added
{?ValueSetLocal
"ByContainer"
,
"ByContainer_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"
}
{?ValueSetLocal
"ByMeasure"
,
"ByMeasure_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"
}
{?ValueSetLocal
"ByServing"
,
"ByServing_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}"
}
{!BY_CONTAINER only export when there is data
for
"by container"
}
{?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal
"ByContainer"
}},
<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_PACKAGE_OR_CONTAINER</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
"ByContainer"
}}}
{!Reset variable}{?ValueSetLocal {?ValueGetLocal
"ByContainer"
},
""
}
</nutrientHeader>
}
{!BY_MEASURE only export when there is data
for
"by measure"
}
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.
Is diet type marked on package
Export template module: Collect diets
Changes: line 11 and 12 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Diets.Diet subtype}},
"<attr name="
dietTypeSubcode
">?</attr>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Diets.Is diet type marked on
package
}},
"<attr name="
isDietTypeMarkedOnPackage
">?</attr>"
}
Expressed as part of
Export template module: Collect diets
Changes: lines 17-19 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Measurement precision (UOM type, By serving)}}{?IfEmptyThen {&Nutrients.Measurement precision (UOM type, By serving)},{?EnumerationKey {&Nutrients.Measurement precision (UOM type second, By serving)}}}
,
"<attr name="
measurementPrecisionCode
">?</attr>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By serving, UOM type)}}{?IfEmptyThen {&Nutrients.Expressed as part of (By serving, UOM type)},{?EnumerationKey {&Nutrients.Expressed as part of (By serving, UOM type second)}}}
,
"<attr name="
expressedAsPartOf
">?</attr>"
}
Changes: lines 53 - 55 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Measurement precision (UOM type, By measure)}} {?IfEmptyThen {&Nutrients.Measurement precision (UOM type, By measure)} ,{?EnumerationKey {&Nutrients.Measurement precision (UOM type second, By measure)}}}
,
"<attr name="
measurementPrecisionCode
">?</attr>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By measure, UOM type)}}{?IfEmptyThen {&Nutrients.Expressed as part of (By measure, UOM type)},{?EnumerationKey {&Nutrients.Expressed as part of (By measure, UOM type second)}}}
,
"<attr name="
expressedAsPartOf
">?</attr>"
}
Claim marked on package
Export template module: Nutritional claim
Changes: lines 7-8 have been added
{?CreateXMLTagWithValue {?EnumerationKey {&Nutritional claims.Claim Marked On Package}}
,
"<attr name="
claimMarkedOnPackage
">?</attr>"
}
</row>
Ingredient statement
Export template module: Collect Ingredient statement
Changes: new module
Data type filter:
Language: variables Language and Language second
Target market: variable Target market
Sorting:
Ingredient statements.Sequence, descending order
Data field validation:
Field: Ingredient statements.Ingredient statement
Validation: May not be blank
Action on error: Remove data record
Error classification: Information
{?ValueSetLocal
"newSequence"
, {?Compare {?ValueGetLocal
"sequence"
},{&Ingredient statements.Sequence},
""
,
"x"
}}
{?ValueSetLocal
"startRow"
, {?IfNotEmptyThen {?ValueGetLocal
"newSequence"
}, {?Compare
1
,{?DatasetCounter},
""
,
"x"
}}}
{?ValueSetLocal
"sequence"
, {&Ingredient statements.Sequence}}
{?ValueSetLocal
"ingredientStatements"
,
<value qual=\
"{?GDSNEnumerationCode {&Ingredient statements.Language},"
GDSN"}\">{&Ingredient statements.Ingredient statement}</value>
{?IfNotEmptyThen {?ValueGetLocal
"newSequence"
},
</attrQualMany>
<attr name=
"sequenceNumber"
>{?FormatDecimal {&Ingredient statements.Sequence},
""
,
0
}</attr>
</row>}
{?IfNotEmptyThen {?ValueGetLocal
"startRow"
},
<row>
<attrQualMany name=
"statement"
>}
{?ValueGetLocal
"ingredientStatements"
}
}
Export template module: Ingredient information
Changes: lines 4-5 replace former lines 3-10; line 10 has been added
{?CreateXMLTagWithContent {?SplitKeywords {?EnumerationKey {&Ingredient information.Ingredient of concern code}},
"<value>"
,
"</value>"
}
,
"<attrMany name=\"ingredientOfConcernCode\">?</attrMany>"
}
{?CreateXMLTagWithContent {?ValueGetLocal
"ingredientStatements"
},
"<attrGroupMany name=\"ingredientStatement\"><row><attrQualMany name="
statement
">?</attrGroupMany>"
}
{?CreateXMLTagWithValue {?FormatDecimal {&Ingredient information.Juice content percentage},
"."
,
"2"
}
,
"<attr name=\"juiceContentPercentage\">?</attr>"
}
{!Reset}{?ValueSetLocal
"sequence"
,
""
}{?ValueSetLocal
"ingredientStatements"
,
""
}
Export template module: Item
Changes: line 128 has been added
{$Collect packaging material}
{$Collect Ingredient statement}
{$Collect Microbiological information}
Nutritional program
Export template module: Collect nutritional program ingredients
Changes: new module
Sorting:
Nutritional program ingredients.Nutritional program, ascending order
Nutritional program ingredients.Nutritional program ingredient type, ascending order
Data type filter:
Target market: variable Target market
UOM type: variable UOM type
{?ValueSetLocal {&Nutritional program ingredients.Nutritional program},
{?ValueGetLocal {&Nutritional program ingredients.Nutritional program}}
{?CreateXMLTagWithContent
{?CreateXMLTagWithValue {?FormatDecimal {&Nutritional program ingredients.Nutritional program ingredient value},
"."
,
6
},
"<attrQualMany name="
nutritionalProgramIngredientMeasurement">
<value qual=\"{&Nutritional program ingredients.Nutritional program ingredient unit.Code (Unit system)}\">?</value>
</attrQualMany>"}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutritional program ingredients.Nutritional program ingredient type}},
"<attr name="
nutritionalProgramIngredientTypeCode
">?</attr>"
}
,
"<row>?</row>"
}
}
Export template module: Collect nutritional programs
Changes: new module
Data type filter:
Target market: variable Target market
{?ValueSetLocal
"tmpNutritionalProgram"
, {?ValueGetLocal
"tmpNutritionalProgram"
}
<row>
<attr name=
"nutritionalProgramCode"
>{?EnumerationKey {&Nutritional programs.Nutritional program}}</attr>
{?CreateXMLTagWithContent
{?CreateXMLTagWithValue {&Nutritional programs.Nutritional program detail (Language)},
"<value qual=\"{?GDSNEnumerationCode {&Nutritional programs.Language (Language)},"
GDSN
"}\">?</value>"
}
{?IfNotEmptyThen {?ValueGet
"LanguageDiffers"
},
{?CreateXMLTagWithValue {&Nutritional programs.Nutritional program detail (Language second)},
"<value qual=\"{?GDSNEnumerationCode {&Nutritional programs.Language (Language second)},"
GDSN
"}\">?</value>"
}
}
,
"<attrQualMany name=\"nutritionalProgramDetail\">?</attrQualMany>"
}
{?CreateXMLTagWithValue {&Nutritional programs.Nutritional score},
"<attr name=\"nutritionalScore\">?</attr>"
}
{?CreateXMLTagWithValue {?FormatDecimal {&Nutritional programs.Nutritional value},
"."
,
6
},
"<attr name=\"nutritionalValue\">?</attr>"
}
{?CreateXMLTagWithContent
{?ValueGetLocal {&Nutritional programs.Nutritional program}},
"<attrGroupMany name=\"nutritionalProgramIngredients\">?</attrGroupMany> "
}
</row>
}{!Reset variable}{?ValueSetLocal {&Nutritional programs.Nutritional program},
""
}
Export template module: Health related information
Changes: lines 25-32 replace former lines 25-43
{?CreateXMLTagWithContent {?EnumerationKey {&Health related information.Is not intended
for
consumption}}
,
"<attr name="
isProductChemicalNotIntendedForHumanConsumption
">?</attr>"
}
{?CreateXMLTagWithContent {?SplitKeywords {?EnumerationKey {&Health related information.Nutrition label type code}}
,
"<value>"
,
"</value>"
}
,
"<attrMany name=\"nutritionLabelTypeCode\">?</attrMany>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Health related information.Cannabis CBD type}}
,
"<attr name=\"cannabisCBDTypeCode\">?</attr>"
}
{?CreateXMLTagWithContent {?ValueGetLocal
"tmpNutritionalProgram"
},
"<attrGroupMany name=\"nutritionalProgram\">?</attrGroupMany>"
}
Export template module: Items
Changes: lines 140-141 have been added
{$Collect trade item handling stacking}
{$Collect nutritional program ingredients}
{$Collect nutritional programs}
{$Collect fish meat poultry content}
Nutrient basis quantity type: By Package or Container
Export template module: Collect nutrients
Changes: lines 67-96 have been added
{!CollectByContainer}
{?ValueSetLocal
"tmpNutrientListByContainerName"
, ByContainerName_{&Nutrients.Preparation state}_{&Nutrients.Target market} }
{?ValueSetLocal {?ValueGetLocal
"tmpNutrientListByContainerName"
}, {?ValueGetLocal {?ValueGetLocal
"tmpNutrientListByContainerName"
}}
{?IfNotEmptyThenNotEnc {&Nutrients.Percentage of daily intake (By Package or Container, UOM type)}{&Nutrients.Quantity contained (By Package or Container, UOM type)}{&Nutrients.Quantity contained (By Package or Container, UOM type second)}{&Nutrients.Measurement precision (By Package or Container, UOM type)}{&Nutrients.Measurement precision (By Package or Container, UOM type second)},
<row>
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Nutrient type}} ,<attr name=\"nutrientTypeCode\">?</attr>}
{?CreateXMLTagWithValue {?FormatDecimal {&Nutrients.Percentage of daily intake (By Package or Container, UOM type)},
""
,
0
} {?IfEmptyThen {&Nutrients.Percentage of daily intake (By Package or Container, UOM type)} ,{?FormatDecimal {&Nutrients.Percentage of daily intake (By Package or Container, UOM type second)},
""
,
0
}}
,
"<attr name="
dailyValueIntakePercent
">?</attr>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Measurement precision (By Package or Container, UOM type)}} {?IfEmptyThen {&Nutrients.Measurement precision (By Package or Container, UOM type)} ,{?EnumerationKey {&Nutrients.Measurement precision (By Package or Container, UOM type second)}}}
,
"<attr name="
measurementPrecisionCode
">?</attr>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By Package or Container, UOM type)}}{?IfEmptyThen {&Nutrients.Expressed as part of (By Package or Container, UOM type)},{?EnumerationKey {&Nutrients.Expressed as part of (By Package or Container, UOM type second)}}}
,
"<attr name="
expressedAsPartOf
">?</attr>"
}
{?IfNotEmptyThenNotEnc {&Nutrients.Quantity contained (By Package or Container, UOM type)}{&Nutrients.Quantity contained (By Package or Container, UOM type second)},
"<attrQualMany name="
quantityContained">
{?CreateXMLTagWithValue {?FormatDecimal {&Nutrients.Quantity contained (By Package or Container, UOM type)},
"."
,
"6"
},
"<value qual="
{&Nutrients.Quantity contained UOM (By Package or Container, UOM type).Code (Unit system)}
">?</value>"
}
{?CreateXMLTagWithValue {?Compare {%UOM type},{%UOM type second},,{?FormatDecimal {&Nutrients.Quantity contained (By Package or Container, UOM type second)},
"."
,
"6"
}},
"<value qual="
{&Nutrients.Quantity contained UOM (By Package or Container, UOM type second).Code (Unit system)}
">?</value>"
}
</attrQualMany>"
}
</row>
}}
Export template module: Nutritional information
Changes: lines 1-30 have been added
{!BY_PACKAGE_OR_CONTAINER only export when there is data
for
"by container"
}
{?ValueSetLocal
"tmpNutrientListByContainerName"
,ByContainerName_{&Nutritional information.Preparation state}_{&Nutritional information.Target market}}
{?IfNotEmptyThenNotEnc {?ValueGetLocal {?ValueGetLocal
"tmpNutrientListByContainerName"
}},
<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_PACKAGE_OR_CONTAINER</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
"tmpNutrientListByContainerName"
}},
"<attrGroupMany name=\"nutrientDetail\">?</attrGroupMany>"
}
{!Reset variable}{?ValueSetLocal {?ValueGetLocal
"tmpNutrientListByContainerName"
},
""
}
</row>
}
{!BY_MEASURE only export when there is data
for
"by measure"
}
Compatibility Export Template for older versions
The relevant changes of GDSN Major Release 3.1.15 will be supported from version 10.0.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. For all other customers we will provide a compatibility export template.
This template makes it still possible to send the data to the pool but does not contain any of the new fields or adjustments of existing fields. To make the export template backwards compatible we did the following changes:
CR_CatalogueRequest Item.ext (IM)
Export template module: Ingredient information
Changes: lines 3-10 have been changed
{?CreateXMLTagWithContent
{?CreateXMLTagWithValue {&Ingredient information.Ingredient statement (Language)},
"<value qual=\"{?GDSNEnumerationCode {&Ingredient information.Language (Language)}, "
GDSN
"}\">?</value>"
}
{?IfNotEmptyThenNotEnc {?ValueGet
"LanguageDiffers"
},
{?CreateXMLTagWithValue {&Ingredient information.Ingredient statement (Language second)},
"<value qual=\"{?GDSNEnumerationCode {&Ingredient information.Language (Language second)}, "
GDSN
"}\">?</value>"
}
}
,
"<attrGroupMany name=\"ingredientStatement\"><row><attrQualMany name="
statement
">?</attrQualMany></row></attrGroupMany>"
}
Export template module: Health related information
Changes: lines 25-53 have been changed
{?CreateXMLTagWithContent {?SplitKeywords {?EnumerationKey {&Health related information.Nutrition label type code}}
,
"<value>"
,
"</value>"
}
,
"<attrMany name=\"nutritionLabelTypeCode\">?</attrMany>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Health related information.Cannabis CBD type}}
,
"<attr name=\"cannabisCBDTypeCode\">?</attr>"
}
{?CreateXMLTagWithContent
{?SplitKeywords {?EnumerationKey {&Health related information.Nutritional program code}}
{!before each program code},
"<row><attr name=\"nutritionalProgramCode\">"
{!after each program code},</attr>
{?CreateXMLTagWithValue {&Health related information.Nutritional score}
,
"<attr name=\"nutritionalScore\">?</attr>"
}
{?CreateXMLTagWithValue {?FormatDecimal {&Health related information.Nutritional value},
"."
,
6
}
,
"<attr name=\"nutritionalValue\">?</attr>"
}
{?CreateXMLTagWithContent
{?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>"
}
{?CreateXMLTagWithValue {?EnumerationKey {&Health related information.Nutritional program ingredient type}}
,
"<attr name=\"nutritionalProgramIngredientTypeCode\">?</attr>"
}
,
"<attrGroupMany name="
nutritionalProgramIngredients
"><row>?</row></attrGroupMany>"
}
</row>
}
,
"<attrGroupMany name=\"nutritionalProgram\">?</attrGroupMany>"
}
CIN_CatalogItemNotification.ext (DSE/Atrify)
There are no changes necessary. The old template should still be compatible to the new major version
B2B
With the Update to GDSN 3.1.15 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.