Transformation
Purpose: Converts input items into output items through an irreversible process.
Use case: Creating packaged goods from raw materials (such as chicken breasts from live chickens).
Key elements:
inputEPCListorinputQuantityList: Original items.outputEPCListoroutputQuantityList: Resulting items.- May include Instance/Lot Master Data (ILMD).
- Omit
<extension>if<sourceList>,<destinationList>, and<ilmd>are absent. - GS1 Transformation IDs for long-running processes are not supported.
XML payload fields
The following table describes EPCIS XML document payload fields applicable to transformation events.
| Name | Type | Description | Required | Example |
|---|---|---|---|---|
| eventTime | string | Specifies the UTC time in ISO 8601 format when the aggregation event occurred. | Yes | <eventTime>2013-06-08T14:58:56.591Z</eventTime> |
| eventTimeZoneOffset | string | Specifies the time zone offset where the event occurred, expressed as an offset from UTC. | Yes | <eventTimeZoneOffset>+02:00</eventTimeZoneOffset> |
| inputEpcList | list | Specifies a list of instance-level objects (SGTIN, FTLPN, SFTPI) used as input in an EPCIS transformation event. LGTINs and other class level objects are specified in the urn:epc:id:sgtin:CompanyPrefix.IndicatorDigitAndItemRef.SerialNumber
This element is required if | Yes | <epcList><br><epc>urn:epc:id:sgtin:0614141.107346.2017</epc><br></epcList> |
| inputQuantityList | list | Specifies a list of class-level objects like LGTINS (GTIN+lot) along with the quantity and unit of measure. LGTINs should be constructed to be as unique as possible by concatenating the time and date of creation with the object identifier. LGTIN syntax:urn:epc:class:lgtin:CompanyPrefix.IndicatorDigitAndItemRef.Lot
If a GTIN without a lot number is specified, use the following syntax: | ||
| inputQuantityList.quantityElement | list | Specifies one or more This element is required if the | No | <quantityElement><br><epcClass>urn:epc:class:lgtin:0614141.107346.101</epcClass><br><quantity>10</quantity><br><uom>CS</uom><br></quantityElement> |
| inputQuantityList.quantityElement.epcClass | string | Specifies class-level EPCs, such as LGTINs. This element is required if the | No | This example defines that 10 cases of LGTIN
|
| inputQuantityList.quantityElement.quantity | decimal | Specifies the quantity of items. This element is required if the | No | <quantity>10</quantity> |
| inputQuantityList.quantityElement.uom | string | Specifies the item quantity unit of measurement, such as cases (CS), each (EA), pounds (LBR), or kilograms (KGM). For more information about units of measure for international trade, see Units of Measure: Code Elements Listed by Name (PDF) and Units of Measure: Code Elements Listed by Common Code (PDF). This element is required if the | No | <uom>CS</uom> |
| outputEpcList | list | Specifies a list of instance-level objects (SGTIN, FTLPN, SFTPI) that result from an EPCIS transformation event. LGTINs and other class level objects are specified in the urn:epc:id:sgtin:CompanyPrefix.IndicatorDigitAndItemRef.SerialNumber
This element is required if | Yes | <epcList><br><epc>urn:epc:id:sgtin:0614141.107346.2017</epc><br></epcList> |
| outputQuantityList | list | Specifies a list of class-level objects like LGTINS (GTIN+lot) along with the quantity and unit of measure. LGTINs should be constructed to be as unique as possible by concatenating the time and date of creation with the object identifier. LGTIN syntax:urn:epc:class:lgtin:CompanyPrefix.IndicatorDigitAndItemRef.Lot
If a GTIN without a lot number is specified, use the following syntax: | ||
| outputQuantityList.quantityElement | list | Specifies one or more This element is required if the | No | <quantityElement><br><epcClass>urn:epc:class:lgtin:0614141.107346.101</epcClass><br><quantity>10</quantity><br><uom>CS</uom><br></quantityElement> |
| outputQuantityList.quantityElement.epcClass | string | Specifies class-level EPCs, such as LGTINs. This element is required if the | No | This example defines that 10 cases of LGTIN
|
| outputQuantityList.quantityElement.quantity | decimal | Specifies the quantity of items. This element is required if the | No | <quantity>10</quantity> |
| outputQuantityList.quantityElement.uom | string | Specifies the item quantity unit of measurement, such as cases (CS), each (EA), pounds (LBR), or kilograms (KGM). For more information about units of measure for international trade, see Units of Measure: Code Elements Listed by Name (PDF) and Units of Measure: Code Elements Listed by Common Code (PDF). This element is required if the | No | <uom>CS</uom> |
| outputQuantityList.quantityElement.epcClass | string | Specifies class-level EPCs, such as LGTINs. This element is required if the | No | This example defines that 10 cases of LGTIN
|
| outputQuantityList.quantityElement.quantity | decimal | Specifies the quantity of items. This element is required if the | No | <quantity>10</quantity> |
| outputQuantityList.quantityElement.uom | string | Specifies the item quantity unit of measurement, such as cases (CS), each (EA), pounds (LBR), or kilograms (KGM). For more information about units of measure for international trade, see Units of Measure: Code Elements Listed by Name (PDF) and Units of Measure: Code Elements Listed by Common Code (PDF). This element is required if the | No | <uom>CS</uom> |
| bizStep | string | Specifies the business step that this event was a part of. ValidbizStep values are:
For more information, see the Core Business Vocabulary Standard Section 7.1.3 (PDF) . | No | <bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep> |
| disposition | string | Specifies the condition of the objects after this event. Valid disposition values are:
For more information, see the Core Business Vocabulary Standard Section 7.2.3 (PDF) . | No | <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> |
| readPoint | string | Specifies the Serial Global Location Number (SGLN) where the read event occurred. Used to indicate an event location other than the mandatory
| No | <readPoint><id>urn:epc:id:sgln:0614141.00777.0</id></readPoint> |
| bizLocation | string | Specifies the Serial Global Location Number (SGLN) for the business where the aggregation event occurred. | Yes | <bizLocation><id>urn:epc:id:sgln:0614141.00888.0</id></bizLocation> |
| bizTransactionList | list | Specifies a list of business transactions associated with this event. The bizTransactionList element is required when this event is used to indicate a receiving shipment from a supplier to a retailer. The bizTransactionList should include a purchase order (PO) number. | No | <bizTransactionList><br><bizTransaction type="urn:epcglobal:cbv:btt:po">urn:epcglobal:cbv:bt:5412345000037:3352</bizTransaction><br><bizTransaction type="urn:epcglobal:cbv:btt:desadv">urn:epcglobal:cbv:bt:5412345000037:3352-349875</bizTransaction><br></bizTransactionList> |
| bizTransactionList.bizTransaction | string | Specifies a business transaction associated with the aggregation event. Valid bizTransaction attribute types are:
Syntax:
| No | The following example uses the
The following example uses the
|
| extension.sourceList | list | Specifies the serialized global location number (SGLN) of the facility or facilities where input goods are at the beginning of this transformation step. The prefix of the type attribute starts with This element is required if the aggregation event involves a transfer of goods, such as a shipment from supplier to retailer. | No | <sourceList> |
| extension.destinationList | list | A list of The prefix of the type attribute starts with This element is required if the aggregation event involves a transfer of goods, such as a shipment from supplier to retailer. | No | <destinationList><br><destination type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:5012345.00001.0</destination><br></destinationList> |
ILMD extension fields
Instance/Lot Master Data (ILMD) enables tracking and monitoring of individual items within the supply chain. ILMD identifies and traces products at the item level, providing accurate and detailed information about the location, status, and condition. This helps improve supply chain efficiency, reduce errors, enhance visibility, and enable better inventory management.
The cbvmda namespace is used for specifying master data attributes that may be used to describe a physical location identifier or party identifier. Master data is associated with new item instances or lots. Expiration dates, sell by, and best before dates are often queried, and should be included wherever applicable. ILMD applies to all SGTIN, LGTIN, and SSCC objects in the epcList and quantityList tags. ILMD should include one or more elements from Core Business Vocabulary Standard Section 9.2 (PDF) . Use the ISO 3166-1 alpha-2 country code format (or numeric-3 format for script independence) to specify the countryOfOrigin.
| Name | Type | Description | Required | Example |
|---|---|---|---|---|
| itemExpirationDate | date or date-time | Specifies a date in ISO 8601 format Use This parameter defines the date after which the product should not be used or consumed. For food items, the date indicates the possibility of a direct health risk resulting from use of the product after the specified date. | No | <itemExpirationDate>2026-08-01</itemExpirationDate> |
| sellByDate | date | Specifies the date by which the product should be sold. | No | <sellByDate>2026-08-01</sellByDate> |
| bestBeforeDate | date | Specifies the date before which the product is best used or consumed. | No | <bestBeforeDate>2026-06-01</bestBeforeDate> |
XML payload examples
The following sections provide two EPCIS aggregation event XML documents.
Annotated payload
This example provides an annotated XML payload. Remove the comments in this XML file before sending data to the blockchain.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epcis:EPCISDocument xmlns:epcis="urn:epcglobal:epcis:xsd:1" xmlns:cbvmda="urn:epcglobal:cbv:mda" xmlns:example="http://ns.example.com/epcis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creationDate="2005-07-11T11:30:47.0Z" schemaVersion="1.2"> <EPCISBody> <--! ATTENTION. GS1 Transformation IDs, e.g. for long-running transformations, are not supported--> <EventList> <extension> <TransformationEvent> <eventTime>2013-06-08T14:58:56.591Z</eventTime> <--! WHEN--> <--! MANDATORY. UTC time (ISO 8601) when event occurred.--> <eventTimeZoneOffset>+02:00</eventTimeZoneOffset> <--! MANDATORY. Time-zone of location, as an offset from UTC.--> <baseExtension> <eventID>urn:uuid:6926712e-599f-4c4e-b6e9-8dd888c906bd</eventID> <--! OPTIONAL. A unique ID (UUID) for the event. If not specified, the system generates an event ID.--> <--! RECOMMENDED. Supply a unique eventID (UUID) for disambiguation.--> </baseExtension> <inputEPCList> <epc>urn:epc:id:sgtin:0614141.107346.2017</epc> <--! Additional entries go here--> </inputEPCList> <--! WHAT--> <--! MANDATORY that either inputEPCList or inputQuantityList (see below) be present.--> <--! List of instance-level objects (SSCC, SGTIN) which are input to transformation.--> <--! LGTINs and other class-level objects go in quantityList (see below)--> <--! General SGTIN syntax: urn:epc:id:sgtin:CompanyPrefix.IndicatorDigitAndItemRef.SerialNumber--> <--! CompanyPrefix.ItemRefAndIndicator should have 13 digits (without counting dots).--> <--! CompanyPrefix is equal to the CompanyPrefix derived from GTIN-14.--> <--! ItemRefAndIndicator is formed by concatenating the first digit (Indicator) from GTIN-14 with ItemRef digits from GTIN-14.--> <--! GTIN-14 check digit is dropped.--> <--! GTIN-12 or GTIN-13 should first be converted to GTIN-14 by adding leading 0s before above conversion.--> <--! General EPC SSCC syntax: urn:epc:id:sscc:CompanyPrefix.SerialRefAndExtension--> <--! EPC SSCC is 17 digits--> <--! CompanyPrefix is equal to the CompanyPrefix in GS1 SSCC--> <--! SerialReferenceAndExtension is formed by concatenating the first digit (Extension) from GS1 SSCC with SerialRef digits from GS1 SSCC.--> <--! GS1 SSCC check digit is dropped.--> <inputQuantityList> <quantityElement> <epcClass>urn:epc:class:lgtin:0614141.107346.101</epcClass> <--! MANDATORY for quantityElement. Class-level EPCs like LGTINs. See note below for description.--> <quantity>10</quantity> <--! MANDATORY for quantityElement.--> <--! Meaning: 10 cases of LGTIN '0614141.107346' belonging to lot '101'--> <uom>CS</uom> <--! MANDATORY for quantityElement. Item quantity unit of measurement. "CS" = Case.--> <--! Two or three-character codes from UN/CEFACT Recommendation 20.--> <--! Other examples: EA (each), LBR (pound), KGM (kilogram).--> <--! See https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex2e.pdf and--> <--! https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex3e.pdf.--> </quantityElement> <--! Additional quantityElement entries go here.--> </inputQuantityList> <--! WHAT--> <--! MANDATORY that either inputEPCList or inputQuantityList be present.--> <--! List of class-level objects like LGTINS (GTIN+lot) which are input to the transformation, along with quantity and unit of measure.--> <--! LGTINs should be constructed to be as unique as possible; by concatenating time/date of creation with object id, e.g.--> <--! General LGTIN syntax: urn:epc:class:lgtin:CompanyPrefix.IndicatorDigitAndItemRef.Lot--> <--! CompanyPrefix.ItemRefAndIndicator should have 13 digits (without counting dots).--> <--! CompanyPrefix is equal to the CompanyPrefix derived from GTIN.--> <--! ItemRefAndIndicator is formed by concatenating the first digit (Indicator) from GTIN with ItemRef digits from GTIN.--> <--! GTIN check digit is dropped.--> <--! If a GTIN (without lot) is to be represented, the following syntax is used:--> <--! From Page 35 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-1-r-2017-05-05.pdf:--> <--! urn:epc:idpat:sgtin:CompanyPrefix.ItemRefAndIndicator.* where --> <--! CompanyPrefix.ItemRefAndIndicator is 13 digits as above.--> <outputEPCList> <epc>urn:epc:id:sgtin:0614141.107346.2018</epc> <--! Additional entries go here--> </outputEPCList> <outputQuantityList> <quantityElement> <epcClass>urn:epc:class:lgtin:0614141.107346.102</epcClass> <--! MANDATORY for quantityElement. Class-level EPCs like LGTINs. See note below for description.--> <quantity>10</quantity> <--! MANDATORY for quantityElement.--> <--! Meaning: 10 cases of LGTIN '0614141.107346' belonging to lot '101'--> <uom>CS</uom> <--! MANDATORY for quantityElement. Item quantity unit of measurement. "CS" = Case.--> <--! Two or three-charater codes from UN/CEFACT Recommendation 20.--> <--! Other examples: EA (each), LBR (pound), KGM (kilogram).--> <--! See https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex2e.pdf and--> <--! https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex3e.pdf.--> </quantityElement> <--! Additional quantityElement entries go here.--> </outputQuantityList> <--! WHAT--> <--! MANDATORY that either outputEPCList or outputQuantityList be present.--> <--! Lists of instance-level or class-level outputs of transformation.--> <bizStep>urn:epcglobal:cbv:bizstep:commissioning</bizStep> <--! OPTIONAL. From Section 7.1.3 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-r-2016-09-29.pdf--> <--! The business step that this event was a part of.--> <--! Custom bizSteps are supported, in the format http://<client-controlled-domain-name/path/biz_step_name>--> <--! Custom bizStep example: http(s)://epcis.company.com/bizStep/roasting_duck_batch--> <disposition>urn:epcglobal:cbv:disp:active</disposition> <--! OPTIONAL. From Section 7.2.3 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-r-2016-09-29.pdf--> <--! The condition of the objects after this event.--> <readPoint><id>urn:epc:id:sgln:0614141.00777.0</id></readPoint> <--! OPTIONAL: SGLN, FTLI, or SFTLI where the read occurred. Used to indicate an event location other than the mandatory bizLocation.--> <--! General syntax of SGLN: urn:epc:id:sgln:CompanyPrefix.LocationReference.Extension--> <--! CompanyPrefix.LocationReference are the first 12 digits of GLN (13th check digit is not included).--> <--! Extension can be a single 0 digit (denoting no extension), or can be any number of digits without leading zeros--> <bizLocation><id>urn:epc:id:sgln:0614141.00888.0</id></bizLocation> <--! WHERE--> <--! MANDATORY: SGLN (extensible global location number), FTLI, or SFTLI for the business location where the event occurred.--> <bizTransactionList> <bizTransaction type="urn:epcglobal:cbv:btt:desadv">urn:epcglobal:cbv:bt:5412345000037:3352-349875</bizTransaction> <--! Additional entries go here--> </bizTransactionList> <--! WHY--> <--! OPTIONAL. From Page 28 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-1-r-2017-05-05.pdf --> <--! List of business transactions associated with this event.--> <--! The example above shows a despatch advice (ASN)--> <--! General EPCIS transaction id format: urn:epcglobal:cbv:bt:GLN:TransactionID--> <--! See transaction XMLs for TransactionID format.--> <extension> <sourceList> <source type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:0614141.00001.0</source> <--! Additional source entries go here.--> <--! OPTIONAL: SGLN of the facility or facilities that inputs are in at the beginning of this step.--> <--! MANDATORY if this event involves a transfer of goods.--> </sourceList> <destinationList> <destination type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:5012345.00001.0</destination> <--! Additional destination entries go here.--> <--! OPTIONAL: SGLN of the facility or facilities that outputs are in at the end of this step.--> <--! MANDATORY if this event involves a transfer of goods. --> </destinationList> <ilmd> <cbvmda:itemExpirationDate>2015-03-15</cbvmda:itemExpirationDate> <cbvmda:sellByDate>2015-03-15</cbvmda:sellByDate> <cbvmda:bestBeforeDate>2015-03-15</cbvmda:bestBeforeDate> </ilmd> <--! OPTIONAL in general: Master data associated with the created item instances or lots.--> <--! Expiration/sell-by/best-before dates are especially important from a query perspective, and should be included wherever applicable.--> <--! Dates must follow ISO 8601 format yyyy-mm-dd and dates with times must follow ISO 8601 format in UTC time.--> <--! ILMD applies to all objects in outputEPCList and outputQuantityList (SGTIN/LGTIN/SSCC/...)--> <--! ILMD should include one or more elements from Section 9.2 in:--> <--! https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-1-r-2017-05-05.pdf--> <--! Elements from Section 9.2 (e.g. expiration date) are allowed to be directly specified for both item instances and lots.--> <--! countryOfOrigin should use ISO 3166-1 alpha-2 (per CBV 1.2) or numeric-3 (for script-independence) code.--> </extension> <--! NOTE: if sourceList, destinationList and ilmd are all omitted, remove the inner extension and /extension tags.--> </TransformationEvent> </extension> </EventList> </EPCISBody>
</epcis:EPCISDocument>Ready to use
The following XML file is ready to use. Define your own values for each tag, then send the data to the blockchain
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epcis:EPCISDocument xmlns:epcis="urn:epcglobal:epcis:xsd:1" xmlns:cbvmda="urn:epcglobal:cbv:mda" xmlns:example="http://ns.example.com/epcis" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creationDate="2005-07-11T11:30:47.0Z" schemaVersion="1.2"> <EPCISBody> <EventList> <extension> <TransformationEvent> <eventTime>2013-06-08T14:58:56.591Z</eventTime> <eventTimeZoneOffset>+02:00</eventTimeZoneOffset> <baseExtension> <eventID>urn:uuid:6926712e-599f-4c4e-b6e9-8dd888c906bd</eventID> </baseExtension> <inputEPCList> <!-- <epc>urn:epc:id:sgtin:0614141.107346.2017</epc> --> </inputEPCList> <inputQuantityList> <quantityElement> <epcClass>urn:epc:class:lgtin:0614141.107346.101</epcClass> <quantity>10</quantity> <uom>CS</uom> </quantityElement> </inputQuantityList> <outputEPCList> <!-- <epc>urn:epc:id:sgtin:0614141.107346.2018</epc> --> </outputEPCList> <outputQuantityList> <quantityElement> <epcClass>urn:epc:class:lgtin:0614141.107346.102</epcClass> <quantity>10</quantity> <uom>CS</uom> </quantityElement> </outputQuantityList> <bizStep>urn:epcglobal:cbv:bizstep:commissioning</bizStep> <disposition>urn:epcglobal:cbv:disp:active</disposition> <readPoint> <id>urn:epc:id:sgln:0614141.00777.0</id> </readPoint> <bizLocation> <id>urn:epc:id:sgln:0614141.00888.0</id> </bizLocation> <bizTransactionList> <bizTransaction type="urn:epcglobal:cbv:btt:desadv">urn:epcglobal:cbv:bt:5412345000037:3352-349875</bizTransaction> </bizTransactionList> <extension> <sourceList> <source type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:0614141.00001.0</source> </sourceList> <destinationList> <destination type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:5012345.00001.0</destination> </destinationList> <ilmd> <cbvmda:itemExpirationDate>2015-03-15</cbvmda:itemExpirationDate> <cbvmda:sellByDate>2015-03-15</cbvmda:sellByDate> <cbvmda:bestBeforeDate>2015-03-15</cbvmda:bestBeforeDate> </ilmd> </extension> </TransformationEvent> </extension> </EventList> </EPCISBody>
</epcis:EPCISDocument>Updated 8 days ago
