TransformationEvent

Purpose: Converts input items into output items through an irreversible process.

Example: Creating packaged goods from raw materials (such as chicken breasts from live chickens).

Key elements:

  • inputEPCList or inputQuantityList: Original items.
  • outputEPCList or outputQuantityList: Resulting items.
  • May include Instance/Lot Master Data (ILMD).
  • transformationID: Links multiple TransformationEvents that belong to the same long-running transformation (for example, inputs declared one day, outputs declared the next day). If inputs and outputs are split across events, a transformationID is required to ensure the correct association between events.
  • No action element: The TransformationEvent is the only event type that does not include the action element.

JSON payload fields

The following table describes EPCIS 2.0 JSON document payload fields applicable to TransformationEvents.

NameTypeDescriptionRequired or optionalExample
type String The event type discriminator TransformationEventRequired TransformationEvent
eventTime DateTime (ISO 8601) The date and time at which the event occurred. Required 2026-06-12T08:30:00.000Z
eventTimeZoneOffset String The local time zone offset where the event occurred, format ±HH:MM. Required -06:00
eventID URI A globally unique identifier for the event. Strongly recommended, and required if the event may later be referenced by an errorDeclaration.

Typically an ni-hash URI or UUID URN. 
Optional (strongly recommended) urn:uuid:7e6e36d2-…
inputEPCList Array of URI Instance-level inputs consumed. Conditionally required. Must include one of inputEPCList, inputQuantityList, outputEPCList, or outputQuantityList.["urn:epc:id:sgtin:4012345.011122.25"]
inputQuantityList Array of QuantityElement Class-level inputs consumed. Conditionally required. Must include one of inputEPCList, inputQuantityList, outputEPCList, or outputQuantityList.[{"epcClass": "urn:epc:class:lgtin:4012345.012345.RAW-LOT-1", "quantity": 600, "uom": "KGM"}] 
outputEPCList Array of URI Instance-level outputs produced. Conditionally required. Must include one of inputEPCList, inputQuantityList, outputEPCList, or outputQuantityList.["urn:epc:id:sgtin:4012345.077889.100"]
outputQuantityList Array of quantity elements Class-level outputs produced. Conditionally required. Must include one of inputEPCList, inputQuantityList, outputEPCList, or outputQuantityList.[{"epcClass": "urn:epc:class:lgtin:4012345.066778.FG-LOT-9", "quantity": 580, "uom": "KGM"}]
transformationID URI Links related TransformationEvents of one transformation. Conditionally required when inputs and outputs are split across eventsurn:epc:id:gdti:4012345.55555.XF-2026-031
bizStep URI or CBV string The business step taking place (CBV vocabulary or user vocabulary). In JSON, CBV values may be expressed as bare strings, such as shippingOptional commissioning
disposition URI or CBV string The business condition of the objects after the event. Optional active
readPoint ObjectThe specific location at which the event was observed, such as a dock door. Optional { "id": "urn:epc:id:sgln:4012345.00011.987" }
bizLocation ObjectThe location where the objects are assumed to be after the event. Optional { "id": "urn:epc:id:sgln:4012345.00011.0" } 
bizTransactionList Array of bizTransaction objectsBusiness transactions associated with the event. Each entry has type (such as po, inv, desadv) and bizTransaction (the transaction identifier). Optional[{ "type": "po", "bizTransaction": "urn:epcglobal:cbv:bt:0614141073467:PO1234" }]
sourceList Array of source objectsIdentifies the originating party or location of a transfer. Each entry has type (such as owning_party, possessing_party, location) and a source URI. Optional [{ "type": "owning_party", "source": "urn:epc:id:pgln:4012345.00001" }]
destinationList Array of destination objects Identifies the receiving party or location of a transfer. Each entry has type (such as owning_party, possessing_party, location) and a destination URI. Optional [{ "type": "owning_party", "destination": "urn:epc:id:pgln:0614141.00001" }]
ilmdObject Master data for the output objects. Optional {"cbvmda:lotNumber": "FG-LOT-9"}
sensorElementList Array of SensorElement Sensor metadata and readings captured with the event (temperature, humidity, GPS, and so on). Optional Refer to the ObjectEvent page. 
errorDeclaration Object Declares that a previously captured event (with the same eventID) was erroneous.Optional Refer to the Error declaration page.

JSON payload examples

The following sections provide two EPCIS 2.0 TransformationEvent JSON documents.

Annotated payload

This example provides an annotated JSON payload. Remove the comments in this JSON file before sending data to the blockchain.

{ // Event type discriminator — note: NO "action" field on TransformationEvent "type": "TransformationEvent", // Unique event identifier "eventID": "urn:uuid:1b8e4a90-77cd-4f3a-b2d1-aa90c44e5f02", // When the transformation took place "eventTime": "2026-06-12T06:00:00.000Z", "eventTimeZoneOffset": "+01:00", // Optional ID linking this event to other events of the same transformation run "transformationID": "urn:epc:id:gdti:4012345.55555.XF-2026-031", // INPUTS: what was consumed // Class-level input: 600 kg of raw material lot RAW-LOT-1 "inputQuantityList": [ { "epcClass": "urn:epc:class:lgtin:4012345.012345.RAW-LOT-1", // raw material lot "quantity": 600, "uom": "KGM" // kilograms } ], // Instance-level input: one serialized additive container fully consumed "inputEPCList": [ "urn:epc:id:sgtin:4012345.099887.7" ], // OUTPUTS: what was produced // Class-level output: 580 kg of finished-goods lot FG-LOT-9 (yield loss of 20 kg) "outputQuantityList": [ { "epcClass": "urn:epc:class:lgtin:4012345.066778.FG-LOT-9", // finished goods lot "quantity": 580, "uom": "KGM" } ], // Business step: outputs are being brought into existence "bizStep": "commissioning", // Condition of the outputs after the event "disposition": "active", // Production line where the transformation occurred "readPoint": { "id": "urn:epc:id:sgln:4012345.00005.line-4" }, // Plant where the outputs now reside "bizLocation": { "id": "urn:epc:id:sgln:4012345.00005.0" }, // Master data describing the OUTPUT lot "ilmd": { // New lot number assigned to the output "cbvmda:lotNumber": "FG-LOT-9", // Best-before date of the output product "cbvmda:bestBeforeDate": "2026-12-12" }
}

Ready to use

The following JSON file is ready to use. Define your own values for each tag, then send the data to the blockchain.

{ "type": "TransformationEvent", "eventTime": "2025-07-10T04:30:00.000-03:00", "recordTime": "2025-08-12T22:08:53.000-03:00", "eventTimeZoneOffset": "+07:30", "eventID": "urn:uuid:00000000-0000-0000-0000-000000000007", "inputQuantityList": [ { "epcClass": "urn:gdst:example.com:product:lot:class:blueoceanprocessors.r2vannameifeed.FEED-LOT-080", "quantity": 1105.97, "uom": "KGM" }, { "epcClass": "urn:gdst:example.com:product:lot:class:blueoceanprocessors.r3vannameifeed.FEED-LOT-002", "quantity": 1105.97, "uom": "KGM" }, { "epcClass": "urn:gdst:example.com:product:lot:class:blueoceanprocessors.vannameihatchlings.HATCH-LOT-001", "quantity": 387000.0 } ], "outputQuantityList": [ { "epcClass": "urn:gdst:example.com:product:lot:class:blueoceanprocessors.vannameishrimprawmaterial.POND-001-LOT21", "quantity": 5694.0, "uom": "KGM" } ], "bizStep": "urn:gdst:bizStep:farmHarvest", "disposition": "active", "readPoint": { "id": "geo:POND-001/021,13.0550,79.9500" }, "bizLocation": { "id": "urn:gdst:example.com:location:loc:blueoceanprocessors.greendeltaaquafarm" }, "bizTransactionList": [{ "type": "po" }], "gdst:productOwner": "urn:gdst:example.com:party:greendeltaaquafarm-1.0", "cbvmda:informationProvider": "urn:gdst:example.com:party:greendeltaaquafarm-1.0"
} 


Did this page help you?