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/
F&B

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
ArticleIngredientStatement.Language
ArticleIngredientStatement.Sequence

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
LabelInformation

Health related information

F&B

ArticleHealthCareLang.
CompulsoryAdditivesLabel

ArticleHealthCare

Fieldtype changed
from
ArticleDomainLangType.Std_Text1000_01
to
ArticleDomainLangType.Std_Text5000_01.
Lenght increased to 5000

additionalDescription

TradeItem Description

GDSN

GDSNTargetMarketExtensionLang.
AdditionalDescription

Target market specific GDSN language data

Fieldtype changed from
ArticleMarketExtensionLangType.
Std_Text1000_01
to
ArticleMarketExtensionLangType.
Std_Text2G_01.

Length increased to 2000.

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/
F&B

P360 field name

P360 entity

Remarks

nutritionalProgramCode

Health related information

F&B

From: ArticleHealthCare.
NutritionalProgramCode

To: ArticleNutritionalProgram.
NutritionalProgramCode

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.
NutritionalScore

To: ArticleNutritionalProgram.
NutritionalScore

From: Health related information

To: Nutritional program

nutritionalValue

Health related information

F&B

From: ArticleHealthCare.
NutritionalValue

To: ArticleNutritionalProgram.
NutritionalValue

From: Health related information

To: Nutritional program

nutritionalProgramIngredientTypeCode

Health related information

F&B

From: ArticleHealthCare.
NutritionalProgramIngredientTypeCode

To: ArticleNutritionalProgramUOM.
NutritionalProgramIngredientTypeCode

From: Health related information

To: Nutritional program UOM

nutrientProgramIngredientMeasurement

Health related information

F&B

From: ArticleHealthCareUOM.
NutritionalProgramIngredientValue
ArticleHealthCareUOM.
NutritionalProgramIngredientUnit

To: ArticleNutritionalProgramUOM.
NutritionalProgramIngredientValue
ArticleNutritionalProgramUOM.
NutritionalProgramIngredientUnit

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:
nutritionalProgramIngredientMeasurement
shall only be used if nutritionalProgramIngredientTypeCode is used.

Error message:
nutritionalProgramIngredientTypecode is not used

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

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

IDQ rule name:
Check_IfNotEmptyConditionNotEmpty

Code: GDSN1699

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

Deleted because nutritionalProgramIngredientTypeCode is now a logical key ensuring this rule.

1699

Description:
nutritionalProgramIngredientMeasurement
shall only be used if nutritionalProgramIngredientTypeCode is used.

Error message:
nutritionalProgramIngredientTypecode is not used

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

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

IDQ rule name:
Check_IfNotEmptyConditionNotEmpty

Code: GDSN1699

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

Deleted because nutritionalProgramIngredientTypeCode is now a logical key ensuring this rule.

-

-

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

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

IDQ rule name:
Check_IfNotEmptyConditionNotEmpty

Code: Ext030

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

Adjusted changed field (ArticleHealthCareUOM.NutritionalProgramIngredientUnit → ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit)

-

-

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

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

IDQ rule name:
Check_IfNotEmptyConditionNotEmpty

Code: Ext029

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

Adjusted changed field (ArticleHealthCareUOM.NutritionalProgramIngredientUnit → ArticleNutritionalProgramUOM.NutritionalProgramIngredientUnit)

1698

Description:
If nutritionalProgramCode equals '8' (Nutri-Score), then its related value in nutritionalScore shall equal ('A', 'B', 'C','D', 'E' or 'EXEMPT')

Error message:
Acceptable values for Nutri-Score program are ('A', 'B', 'C','D', 'E' or 'EXEMPT')

Name:
check items with 'Nutritional program' equals 'Nutriscore', have a 'Nutritional score' in 'A', 'B', 'C', 'D', 'E' or 'EXEMPT'

Description:
Checks that if 'Nutritional program' euqlas 'Nutriscore' that the related 'Nutritional score' has a valid value ('A', 'B', 'C', 'D', 'E', 'EXEMPT')

IDQ rule name:
Check_ConditionalIsInList

Code: GDSN1698

Message:
Acceptable values for Nutri-Score program are ('A', 'B', 'C','D', 'E' or 'EXEMPT')

New rule configuration

457

Description:
isTradeItemAnInvoiceUnit must equal 'true' for at least one trade item in a Catalogue Item Notification Message.

Error message:
One or more of the GTINs in each hierarchy must be marked as an INVOICE UNIT

Name:
Check 'Is invoice unit' is true for at least one item in a packaging hierarchy (TM: US)

Description:
Checks if 'Is invoice unit' is true for at least one item in a packaging hierarchy for US target market

IDQ rule name:
Check_EqualsWithinHierarchy

Code: GDSN234

Message:
'Is invoice unit' must be true for at least one item in a packaging hierarchy

Deleted rule (according to GDSN validation documentation)

1705

Description:
If dietTypeCode equals ’PESCATARIAN’ and dietTypeSubcode is used, then dietTypeSubcode SHALL be a value in (‘PESCA’, ‘LACTO_OVO_PESCA’).

Error message:
The dietTypeSubcodeCode is not valid for a Pescatarian diet.

Name:
Check 'Diet subtype' has a valid value for 'Diet type' Pescatarian

Description:
Checks that diet subtype has a valid value when diet type is set to Pescatarian. Valid values for diet subtype are: Pesca, Lacto-Ovo-Pesca.

IDQ rule name:
Check_ConditionalIsInList

Code: GDSN1705

Message:
The diet subtype is not valid for a Pescatarian diet

1706

Description:
If dietTypeCode equals ’VEGETARIAN’ and dietTypeSubcode is used and targetMarketCountryCode is not '840' (US), then dietTypeSubcode SHALL be a value in (‘OVO’, ‘LACTO ‘, ‘LACTO_OVO’).

Error message:
The dietTypeSubcodeCode is not valid for a Vegetarian diet.

Name:
Check 'Diet subtype' has a valid value for 'Diet type' Vegetarian (TM: DE)

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:
Check_ConditionalIsInList

Note:
This configuration checks only values for target market Germany, it should be copied and adjusted for all other needed target markets.

Code: GDSN1706

Message:
The 'Diet subtype' is not valid for a Vegetarian diet

Only added for target market 'Germany'.

Please copy this configuration and adjust it to additional target markets you need to check.

1707

Description:
If dietTypeCode equals ’VEGETARIAN’ and dietTypeSubcode is used and targetMarketCountryCode is '840' (US), then dietTypeSubcode SHALL be a value in (‘OVO’, ‘LACTO ‘, ‘LACTO_OVO’, ‘PESCA’, ‘LACTO_OVO_PESCA’ ).

Error message:
The dietTypeSubcodeCode is not valid for a Vegetarian diet.

Name:
Check 'Diet subtype' has a valid value for 'Diet type' Vegetarian (TM: US)

Description:
Checks that 'Diet subtype' has a valid value for target market USA when 'Diet type' is set to vegetarian. Valid values for diet subtype are: Ovo, Lacto, Lacto-Ovo, Pesca, Lacto-Ovo-Pesca.

IDQ rule name:
Check_ConditionalIsInList

Code: GDSN1707

Message:
The 'Diet subtype' is not valid for a Vegetarian diet and target market USA

1708

Description:
If dietTypeCode equals ’KOSHER’ and dietTypeSubcode is used, then dietTypeSubcode SHALL be a value in (‘MEAT’, ’FISH’, ‘DAIRY’, ‘PAREVE’, 'KOSHER_FOR_PASSOVER', ‘MEAT_FOR_PASSOVER’, ‘FISH_FOR_PASSOVER’, ‘DAIRY_FOR_PASSOVER’, ‘PAREVE_FOR_PASSOVER’, ‘DE’, ‘MEVUSHAL’, ‘KOSHER_FOR_PASSOVER_MEVUSHAL’).

Error message:
The dietTypeSubcodeCode is not valid for a Kosher diet.

Name:
Check 'Diet subtype' has a valid value for 'Diet type' Kosher

Description:
Checks that diet subtype has a valid value when diet type is set to Kosher. Valid values for diet subtype are: Meat, Fish, Dairy, Pareve, Kosher for Passover, Meat for Passover, Fish for passover, Dairy for passover, Parever for Passover, Kosher Dairy Equipment, Kosher Mevushal, Kosher for Passover-Mevushal.

IDQ rule name:
Check_ConditionalIsInList

Code: GDSN1708

Message:
The 'Diet subtype' is not valid for a Kosher diet

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

Diet related information: Collect diets
{?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

Nutritional information: Collect nutrients (by serving)
{?CreateXMLTagWithValue {?EnumerationKey {&Nutrients.Expressed as part of (By serving, UOM type)}}
, "<expressedAsPartOf>?</expressedAsPartOf>"}
</nutrientDetail>
}
}

Changes: line 47 and 48 have been added

Nutritional information: Collect nutrients (by measure)
{?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

Nutritional claims
{?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

Ingredient information: collect ingredient statements
{?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

Ingredient information
{?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

Items
{$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

Items
{$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

Nutritional information: Collect nutrients
{!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

Nutritional information
{?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

Collect diets
{?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

Collect nutrients (by serving)
{?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

Collect nutrients (by measure)
{?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

Nutritional claim
{?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

Collect Ingredient statement
{?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

Ingredient information
{?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

Items
{$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

Collect nutritional program ingredients
{?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

Collect nutritional programs
{?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

Health related information
{?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

Items
{$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

Collect nutrients
{!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

Nutritional information
{!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

Ingredient information
{?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

Health related information
{?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:

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

  2. Stop the GDSN workflows.

  3. Stop Power Center, Data Exchange and MFT.

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

  5. Extract all files and open DT_Services folder.

  6. Depending on whether you use GDSN as a

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

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

  7. Start Power Center, Data Exchange and MFT.

  8. Start the workflows.