GS1 EPCIS Implementation Guidelines
OpenEPCIS solution to generate a large set of EPCIS test data events for all use cases/supply chain requirements.
Introduction
EPCIS is an ISO (International Organisation for Standardization), IEC (International Electrotechnical Commission), and GS1 Standard that helps to generate and exchange visibility data within an organization or across multiple organizations based on the business context. The GS1-based implementation guidelines for EPCIS, available at https://ref.gs1.org/guidelines/epcis-cbv/2.0.0/, provide comprehensive information on implementing the standard in supply chain systems.
Various End users like supply chain data practitioners, solution providers, research institutions, and other parties frequently need test data to generate/simulate supply chain scenarios, load/performance tests, PoCs/research projects (for example, to populate test databases), initiating data interchange between business partners, and more. Unfortunately, creating EPCIS test data is often time-consuming and tedious, taking days of effort. However, with our advanced test data generator tool, we assure you that you will save a lot of time in simulating the supply chain or any other scenario. Don't waste valuable time on tedious tasks - let our tool do the work for you. The OpenEPCIS test data generator tool offers a flexible and potent solution for creating test events regardless of the industry, use case, or application domain, the generated events adhere to the most recent EPCIS specification, i.e. EPCIS 2.0.
Let's go through our OpenEPCIS test data generator tool to generate our first EPCIS test data
EPCIS implementation guidelines include numerous supply chain examples that illustrate the standard in action. To showcase the usage and generation of events, these supply chain systems have been designed using the OpenEPCIS Test Data Generator https://openepcis.io/docs/test-data-generator/, to demonstrate the usage and generation of the events.
Example 1: Assignment of Identifiers for EPCIS Event
Business process
- A manufacturer ships a pallet identified by an SSCC to shipping dock no.2 of building 10, noting the retailer's purchase order and the manufacturer's invoice
Dim | Data Element | Design Choice (Section 4.6) | Actual EPCIS Event Contents |
---|---|---|---|
Event Type | Object Event | ||
Action | OBSERVE | OBSERVE | |
What | EPC List | A list containing one element: the SSCC of the pallet (instance-levelidentification) | urn:epc🆔sscc:9521141.0123456789 or https://id.gs1.org/00/095211411234567892 |
When | Event Time | The date and time at which the pallet is shipped | 2014-03-15T10:11:12Z |
Event Time Zone Offset | The time zone offset in effect where the pallet was shipped | -05:00 | |
Where | Read Point | Shipping dock #2 of building 10 | urn:epc🆔sgln:9521141.11111.2 or https://id.gs1.org/414/9521141111116/254/2 |
Business Location | (omitted) | (omitted) | |
Why | Business Step | Shipping (from CBV) | shipping |
Disposition | In Transit (from CBV) | in_transit | |
Business Transaction List | A list containing two business transaction references: the Retailer’s purchase order and the Manufacturer’s invoice. | Type po urn:epcglobal:cbv:bt:5012345678900:1234 Type inv urn:epcglobal:cbv:bt:0614141111114:9876 | |
Source List | A list containing one source of type "owning party," indicating the Manufacturer as the owning party at the source | Type owning_party as SGLN: urn:epc🆔sgln:9521141.11111.0 or https://id.gs1.org/414/9521141111116 as PGLN: urn:epc🆔pgln:9521141.11111 or https://id.gs1.org/417/9521141111116 | |
Destination List | A list containing one source of type "owning party," indicating the Retailer as the intended owning party at the destination | Type owning_party as SGLN: urn:epc🆔sgln:9521345.67890.0 or https://id.gs1.org/414/9521345678903 as PGLN: urn:epc🆔pgln:9521345.67890 or https://id.gs1.org/417/9521345678903 |
Design Template
Quick Links
• For more information refer to Table 4-6 from GS1 implementation guidelines
• Try it on OpenEPCIS Test Data Generator
• Design template raw source on GitHub
Generated Event
EPCIS event for Assignment of Identifiers
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:14:41.26Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2014-03-15T10:11:12+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410123456789"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116/254/2"
},
"bizTransactionList": [{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:5012345678900:1234"
},
{
"type": "inv",
"bizTransaction": "urn:epcglobal:cbv:bt:0614141111114:9876"
}
],
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521345678903"
}]
}]
}
}
Example 2: Visibility Data Matrix
Business process
- Print and apply label (identified by an SGTIN)
- Print the pallet label (identified by an SSCC)
- Pack cases into pallet (Identified as parent SSCC of palletn,Children: SGTINs of cases)
- Ship the pallet (identified by an SSCC)
Dim | Data Element | V1 | V2 | V3 | V4 |
---|---|---|---|---|---|
Description | Print and apply case label | Print the pallet label | Pack cases into pallet | Ship the pallet | |
Event Type | Object Event | Object Event | Aggregation Event | Object Event | |
Action | ADD | ADD | ADD | OBSERVE | |
What | EPC List | SGTIN of case | SSCC of pallet | Parent: SSCC of pallet Children: SGTINs of cases | SSCC of Pallet |
When | Event Time | Current date/time | Current date/time | Current date/time | Current date/time |
Event Time Zone Offset | Local timezone offset | Local timezone offset | Local timezone offset | Local timezone offset | |
Where | Read Point | SGLN of packaging line | SGLN of packaging line | SGLN of packaging line | SGLN of loading dock door |
Business Location | GLN of factory | GLN of factory | GLN of factory | (omitted) | |
Why | Business Step | commissioning | commissioning | packing | shipping |
Disposition | active | active | in_progress | in_transit | |
Business Transaction List | (omitted) | (omitted) | (omitted) | Retailer’s GLN + PO # Manufacturer’s GLN + Invoice # | |
Source List | (omitted) | (omitted) | (omitted) | owning_party: Manufacturer’s GLN or PGLN | |
Destination List | (omitted) | (omitted) | (omitted) | owning_party: Retailer’s GLN or PGLN |
Design Template
Quick Links
• For more information refer to Table 4-7 from GS1 implementation guidelines
• Try it on OpenEPCIS Test Data Generator
• Design template raw source on GitHub
Generated Event
EPCIS event for Visibility Data Matrix
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:15:22.40Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2014-03-15T10:11:12+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410123456789"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
}
},
{
"type": "ObjectEvent",
"eventTime": "2014-03-15T10:11:12+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521568256452/21/200"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
}
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-18T15:55:08+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095211410123456789",
"childEPCs": [
"https://id.gs1.org/01/09521568256452/21/200"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
}
},
{
"type": "ObjectEvent",
"eventTime": "2014-03-15T10:11:12+01:00",
"eventTimeZoneOffset": "-05:00",
"epcList": [
"https://id.gs1.org/00/095211410123456789"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141456125"
},
"bizTransactionList": [{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:5012345678900:1234"
},
{
"type": "inv",
"bizTransaction": "urn:epcglobal:cbv:bt:0614141111114:9876"
}
],
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521345678903"
}]
}
]
}
}
Example 3: EPCIS Aggregation Event Information Content
Business process
- A shipper packs five homogeneous cases (each identified by an SGTIN) onto a pallet (identified by an SSCC).
- The shipper ships the pallet, only noting the pallet identifier.
- The receiver receives the pallet and also verifies all of the case identifiers.
- The receiver unpacks two cases from the pallet.
- The receiver unpacks the remaining cases from the pallet.
Dim | Data Element | V1 | V2 | V3 | V4 | V5 |
---|---|---|---|---|---|---|
Description | Pack cases onto pallet | Ship pallet | Receive pallet | Unpack two cases | Unpack remaining cases | |
Event Type | Aggregation Event | Object Event | Aggregation Event | Aggregation Event | Aggregation Event | |
Action | ADD | OBSERVE | OBSERVE | DELETE | DELETE | |
What | EPC List | Parent: SSCC of pallet Children: SGTINs of 5 cases | SSCC of pallet | Parent: SSCC of pallet Children: SGTINs of 5 cases | Parent: SSCC of pallet Children: SGTINs of 2 cases | Parent: SSCC of pallet Children: (omitted) |
Why | Business Step | packing | shipping | receiving | unpacking | unpacking |
Disposition | in progress | in transit | in progress | in progress | in progress |
Design Template
Quick Links
- For more information refer to Table 5-3 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Aggregation Event Information Content
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-22T13:19:50.32Z",
"epcisBody": {
"eventList": [{
"type": "AggregationEvent",
"eventTime": "2024-03-22T14:05:43+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095215680000000200",
"childEPCs": [
"https://id.gs1.org/01/09521568256452/21/200",
"https://id.gs1.org/01/09521568256452/21/201",
"https://id.gs1.org/01/09521568256452/21/202",
"https://id.gs1.org/01/09521568256452/21/203",
"https://id.gs1.org/01/09521568256452/21/204"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
}
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-22T14:07:45+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095215680000000200"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141456125"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521345678903"
}]
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-22T14:10:45+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095215680000000200",
"childEPCs": [
"https://id.gs1.org/01/09521568256452/21/200",
"https://id.gs1.org/01/09521568256452/21/201",
"https://id.gs1.org/01/09521568256452/21/202",
"https://id.gs1.org/01/09521568256452/21/203",
"https://id.gs1.org/01/09521568256452/21/204"
],
"action": "OBSERVE",
"bizStep": "receiving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521345678958"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521345678903"
}
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-22T14:11:47+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095215680000000200",
"childEPCs": [
"https://id.gs1.org/01/09521568256452/21/200",
"https://id.gs1.org/01/09521568256452/21/201"
],
"action": "DELETE",
"bizStep": "unpacking",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521345678965"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521345678903"
}
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-22T14:13:31+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095215680000000200",
"childEPCs": [],
"action": "DELETE",
"bizStep": "unpacking",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521345678965"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521345678903"
}
}
]
}
}
Example 4: EPCIS Aggregation Event Information Content for a Two-Level Hierarchy
Business process
Some business processes may involve multiple levels of aggregation; for example, items packed
into cases and those cases packed onto a pallet. In such cases, the parents of the inner
aggregations are the children of the outer aggregation.
- Packing items 1 – 5 into case 101 (Containing children SGTIN of items 1-5)
- Packing items 6 – 10 into case 102 (Containing children SGTIN of items 6-10)
- Packing items 11– 15 into case 103 (Containing children SGTIN of items 11-15)
- Pack cases 101, 102, and 103 onto pallet 1001(Parent: SSCC of pallet 1001 Children: SGTINs of cases 101 – 103)
Dim | Data Element | V1 | V2 | V3 | V4 |
---|---|---|---|---|---|
Description | Pack items 1 – 5 into case 101 | Pack items 6 – 10 into case 102 | Pack items 11 – 15 into case 103 | Pack cases 101, 102, and 103 onto pallet 1001 | |
Event Type | Aggregation Event | Aggregation Event | Aggregation Event | Aggregation Event | |
Action | ADD | ADD | ADD | ADD | |
What | EPC List | Parent: SGTIN of case 101 Children: SGTINs of items 1 – 5 | Parent: SGTIN of case 102 Children: SGTINs of items 6 – 10 | Parent: SGTIN of case 103 Children: SGTINs of items 11 – 15 | Parent: SSCC of pallet 1001 Children: SGTINs of cases 101 – 103 |
Why | Business Step | packing | packing | packing | packing |
Disposition | in_progress | in_progres | in_progress | in_progress |
Design Template
Quick Links
- For more information refer to Table 5-4 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Aggregation Event for a Two-Level Hierarchy
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:16:22.04Z",
"epcisBody": {
"eventList": [{
"type": "AggregationEvent",
"eventTime": "2024-03-18T05:39:54.977Z",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/01/09521568256452/21/101",
"childEPCs": [
"https://id.gs1.org/01/09521568336451/21/1",
"https://id.gs1.org/01/09521568336451/21/2",
"https://id.gs1.org/01/09521568336451/21/3",
"https://id.gs1.org/01/09521568336451/21/4",
"https://id.gs1.org/01/09521568336451/21/5"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress"
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-18T17:02:56.613Z",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095211410000001001",
"childEPCs": [
"https://id.gs1.org/01/09521568256452/21/101",
"https://id.gs1.org/01/09521568256452/21/102",
"https://id.gs1.org/01/09521568256452/21/103"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress"
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-18T09:04:17.436Z",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/01/09521568256452/21/102",
"childEPCs": [
"https://id.gs1.org/01/09521568336451/21/6",
"https://id.gs1.org/01/09521568336451/21/7",
"https://id.gs1.org/01/09521568336451/21/8",
"https://id.gs1.org/01/09521568336451/21/9",
"https://id.gs1.org/01/09521568336451/21/10"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress"
},
{
"type": "AggregationEvent",
"eventTime": "2024-03-18T08:37:03.655Z",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/01/09521568256452/21/103",
"childEPCs": [
"https://id.gs1.org/01/09521568336451/21/11",
"https://id.gs1.org/01/09521568336451/21/12",
"https://id.gs1.org/01/09521568336451/21/13",
"https://id.gs1.org/01/09521568336451/21/14",
"https://id.gs1.org/01/09521568336451/21/15"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress"
}
]
}
}
Example 5: EPCIS Event Information Content for Example "Drop Shipment" Scenario
Business process
In this scenario, a pharmaceutical manufacturer M sells the product to a wholesaler W who in turn sells the product to a hospital H. Rather than physically
warehousing the product, the wholesaler arranges for M to ship directly to H. The wholesaler still retains ownership of the product, however, until a subsequent sale transaction with H takes place.
- Manufacturer M drop ships to Hospital H (identification by an SSCC), noting the destination of owning_party and possessing_party and with business step shipping
- Shipment arrives at Hospital H identification by SSCC of the logistic unit with business step arriving
Dim | Data Element | V1 | V2 |
Description | Manufacturer M drop ships to Hospital H | Shipment arrives at Hospital H | |
Event Type | Object Event | Object Event | |
Action | OBSERVE | OBSERVE | |
What | EPC List | SSCC of logistic unit | SSCC of logistic unit |
Where | Read Point | GLN of M’s distribution center | GLN of H’s receiving area |
Business Location | (omitted) | GLN of H’s facility | |
Why | Business Step | shipping | arriving |
Disposition | in_transit | in_progress | |
Source | Type owning_party GLN of M | Type owning_party GLN of M | |
Source | Type possessing_party GLN of M | Type possessing_party GLN of M | |
Source | Type location GLN of M’s distribution center | Type location GLN of M’s distribution center | |
Destination | Type owning_party GLN of W | Type owning_party GLN of W | |
Destination | Type possessing_party GLN of H | Type possessing_party GLN of H | |
Destination | Type location GLN of H’s receiving area | Type location GLN of H’s receiving area |
Design Template
Quick Links
- For more information refer to Table 5-6 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event for Drop Shipment Scenario
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:16:48.82Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2024-03-18T09:31:10+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141456125"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141100004"
},
{
"type": "possessing_party",
"source": "https://id.gs1.org/414/9521141100004"
},
{
"type": "location",
"source": "https://id.gs1.org/414/9521141456125"
}
],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9522920200199"
},
{
"type": "possessing_party",
"destination": "https://id.gs1.org/414/9522920200106"
},
{
"type": "location",
"destination": "https://id.gs1.org/414/9522999100307"
}
]
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-19T09:31:10+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "arriving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141456125"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141100004"
},
{
"type": "possessing_party",
"source": "https://id.gs1.org/414/9521141100004"
},
{
"type": "location",
"source": "https://id.gs1.org/414/9521141456125"
}
],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9522920200199"
},
{
"type": "possessing_party",
"destination": "https://id.gs1.org/414/9522920200106"
},
{
"type": "location",
"destination": "https://id.gs1.org/414/9522999100307"
}
]
}
]
}
}
Example 6: EPCIS Event Information Content Using Class-Level Identification
Business process
- V1: Manufacturer creates 20 new product instances (each identified by GTIN and Lot only)
- V2: Manufacturer ships 10 product instances to a receiver
- V3: Manufacturer ships 10 more product instances to the same receiver
- V4: Receiver receives 10 product instances
Dim | Data Element | V1 | V2 | V3 | V4 |
---|---|---|---|---|---|
Description | Manufacture 20 new product instances | Ship 10 product instances | Ship 10 more product instances | Receive 10 product instances | |
Event Type | Object Event | Object Event | Object Event | Object Event | |
Action | ADD | OBSERVE | OBSERVE | OBSERVE | |
When | Event Time | 15 July, 10am | 16 July, 10am | 17 July, 10am | 25 July, 10am |
What | EPC Quantity List | GTIN X, Lot 12, 20 units | GTIN X, Lot 12, 10 units | GTIN X, Lot 12, 10 units | GTIN X, Lot 12, 10 units |
Where | Read Point | SGLN of mfr line | SGLN of manufacturer’s loading dock | SGLN of manufacturer’s loading dock | SGLN of receiver’s loading dock |
Business Location | GLN of manufacturer | (omitted) | (omitted) | GLN of receiver | |
Why | Business Step | creating_class_instance | shipping | shipping | receiving |
Disposition | active | in_transit | in_transit | in_progress |
Design Template
Quick Links
- For more information refer to Table 5-7 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
Class-Level Identification EPCIS Event
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:17:13.95Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "creating_class_instance",
"disposition": "active",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
},
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568256452/10/12",
"quantity": 20
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-16T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123997"
},
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568256452/10/12",
"quantity": 10
}],
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9522141123109"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9522543500102"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-16T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "receiving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9522543599199"
},
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568256452/10/12",
"quantity": 10
}],
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9522141123109"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9522543500102"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-17T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123997"
},
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568256452/10/12",
"quantity": 10
}],
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9522141123109"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9522543500102"
}]
}
]
}
}
Example 7: EPCIS Event Information Content for Aggregation of Children Identified at Class Level
Business process
- Homogeneous cases of product are packed onto pallet and shipped
- The shipped pallet is identified by SSCC
- At the receiver end the shipment is received and identified by the SSCC of pallet
Dim | Data Element | V1 | V2 | V3 |
Description | Pack cases onto pallet | Ship pallet | Receive pallet | |
Event Type | Aggregation Event | Object Event | Object Event | |
Action | ADD | OBSERVE | OBSERVE | |
What | EPC List | Parent: SSCC of pallet Children: GTIN X, Lot 12,10 units GTIN Y, Lot 52, 20 units | SSCC of pallet | SSCC of pallet |
Why | Business Step | packing | shipping | receiving |
Disposition | in_progress (CBV) | In Transit | In Progress |
Design Template
Quick Links
- For more information refer to Table 5-8 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event for Aggregation of Children Identified at Class Level EPCIS Event
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:18:06.73Z",
"epcisBody": {
"eventList": [
{
"type": "AggregationEvent",
"eventTime": "2024-03-15T13:12:34+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095211410000000200",
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"childQuantityList": [
{
"epcClass": "https://id.gs1.org/01/09521568251204/10/12",
"quantity": 10
},
{
"epcClass": "https://id.gs1.org/01/09521568251211/10/52",
"quantity": 20
}
]
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-15T16:15:29+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123690"
},
"sourceList": [
{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141123102"
}
],
"destinationList": [
{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141321997"
}
]
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-18T09:00:29+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "receiving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141321904"
},
"sourceList": [
{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141123102"
}
],
"destinationList": [
{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141321997"
}
]
}
]
}
}
Example 8: EPCIS Aggregation Event Information Content with Children Identified at Both Instance and Class Level
Business process
It is possible for one EPCIS event to include a mix of both instance-level and class-level
identification.
- A pallet packed may include one product identified by SGTIN, another by GTIN+Lot, and a third identified only by GTIN
- The shipped pallet is identified by SSCC
- At the receiver end the shipment is received and identified by the SSCC of pallet
Dim | Data Element | V1 | V2 | V3 |
---|---|---|---|---|
Description | Pack cases onto pallet | Ship pallet | Receive pallet | |
Event Type | Aggregation Event | Object Event | Object Event | |
Action | ADD | OBSERVE | OBSERVE | |
What | EPC List | Parent: SSCC of pallet Children: GTIN X, Serial 101 GTIN X, Serial 102 GTIN X, Serial 103 GTIN Y, Lot 12, 10 units GTIN Z, 20 units | SSCC of pallet | SSCC of pallet |
Why | Business Step | packing | shipping | receiving |
Disposition | in_progress(CBV) | in_transit | in_progress |
Design Template
Quick Links
- For more information refer to Table 5-9 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event for Children Identified at Instance and Class Level
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:18:38.96Z",
"epcisBody": {
"eventList": [{
"type": "AggregationEvent",
"eventTime": "2024-03-15T13:12:34+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095211410000000200",
"childEPCs": [
"https://id.gs1.org/01/09521568251204/21/101",
"https://id.gs1.org/01/09521568251204/21/102",
"https://id.gs1.org/01/09521568251204/21/103"
],
"action": "ADD",
"bizStep": "packing",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"childQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251211/10/12",
"quantity": 10
},
{
"epcClass": "https://id.gs1.org/01/09521568251228/10/52",
"quantity": 20
}
]
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-15T16:15:29+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123690"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141123102"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141321997"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-18T09:00:29+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "receiving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141321904"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141123102"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141321997"
}]
}
]
}
}
Example 9: EPCIS Event Information Content Showing Instance/Lot Master Data (ILMD)
Business process
When an object is identified at the instance level, its lot number (if any) is a master data attribute of that instance
- The manufacturer produces new products identified by an SGTIN along with expiration date and lot number
- The products are shipped by loading on the manufacturer's loading dock
- When the shipment is received the products are identified by their SGTIN, if the receiver wishes to obtain the master data for the product instance it receives, it queries the manufacturer for the event having the specified SGTIN
Dim | Data Element | V1 | V2 | V3 |
---|---|---|---|---|
Description | Manufacture new product instance | Ship product | Receive product | |
Event Type | Object Event | Object Event | Object Event | |
Action | ADD | OBSERVE | OBSERVE | |
What | EPC List | SGTIN of product instance | SGTIN of product instance | SGTIN of product instance |
Where | Read Point | SGLN of manufacturing line | SGLN of manufacturer’s loading dock | SGLN of receiver’s loading dock |
Business Location | GLN of manufacturer | (omitted) | GLN of receiver | |
Why | Business Step | commissioning | shipping | receiving |
Disposition | active | in_transit | in_progress | |
ILMD: Expiry | Expiration date of product instance | |||
ILMD: Lot | Lot number of product instance |
Quick Links
- For more information refer to Table 5-10 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event Showing Instance/Lot Master Data
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:19:04.87Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"@context": [{
"gs1-ilmd": "https://gs1-ilmd.example.com"
}],
"eventTime": "2024-03-15T13:52:50+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521568251228/21/100"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141000106"
},
"ilmd": {
"gs1-ilmd:Product": {
"gs1-ilmd:expirationDate": "2024-04-15",
"gs1-ilmd:hasBatchLotNumber": "100"
}
}
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-16T13:52:50+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521568251228/21/100"
],
"action": "ADD",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141456125"
}
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-17T13:52:50+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521568251228/21/100"
],
"action": "ADD",
"bizStep": "receiving",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9522565856416"
}
}
]
}
}
Example 10: EPCIS Transformation Event Information Content
Business process
Inputs:
- Tuna loin (each loin is individually serialized and identified by GTIN X plus serial – instance-level)
- Olive oil (identified by GTIN Y + Lot – class level)
- Empty can (identified by GTIN Z, in order to distinguish two possible suppliers of cans)
Outputs:
- Canned tuna (identified by GTIN Q + Lot – class level)
Dim | Data Element | V1 |
---|---|---|
Description | Manufacture canned tuna from raw ingredients | |
Event Type | Transformation Event | |
What | EPC List | Inputs: GTIN X, Serial 10 GTIN X, Serial 45 GTIN X, Serial 97 GTIN Y, Lot 12, 10 liters GTIN Z, 100 units Outputs: GTIN Q, Lot 999, 100 units |
Why | Business Step | creating_class_instance |
Disposition | active |
Design Template
Quick Links
- For more information refer to Table 5-12 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Transformation Event
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:19:35.53Z",
"epcisBody": {
"eventList": [{
"type": "TransformationEvent",
"eventTime": "2024-03-19T15:39:19+01:00",
"eventTimeZoneOffset": "+01:00",
"inputEPCList": [
"https://id.gs1.org/01/09521568251204/21/10",
"https://id.gs1.org/01/09521568251204/21/45",
"https://id.gs1.org/01/09521568251204/21/97"
],
"inputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251211/10/12",
"quantity": 10,
"uom": "LTR"
},
{
"epcClass": "https://id.gs1.org/01/09521568251228",
"quantity": 100
}
],
"outputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251235/10/999",
"quantity": 100
}],
"bizStep": "creating_class_instance",
"disposition": "active"
}]
}
}
Example 11: EPCIS Transformation Event Information Content Linked Via Transformation ID
Business process
Consider a process that mixes input ingredients to create cans of paint, where a production run involving the same mixing vat runs continuously for a week. The process may produce cans of paint on Monday, and those cans are shipped on Tuesday,even though more cans from the same vat are extracted on Wednesday and Thursday, with the entire transformation completing on Friday. In this situation, it may be necessary to have an EPCIS event to represent Monday’s production so that the new identifiers for the cans of paint are available to be used in a shipping event generated on Tuesday.
To model such situations, a transformation event may be split into multiple EPCIS events. To maintain the relationship between all inputs and outputs, the multiple transformation events are linked by using a transformation identifier
- To produce a batch of cans, a manufacturer initiates the process by adding all the ingredients to a batch by linking Transformation ID Xform 123
- The first set of cans is produced and the Transformation ID Xform 123 is linked
- The first set of cans is shipped by linking Transformation ID Xform 123
- Again the process is continued and produces the remaining cans and the Transformation ID Xform 123 is linked to them
Dim | Data Element | V1 | V2 | V3 | V4 |
---|---|---|---|---|---|
Description | Add first set of ingredients to new batch | Withdraw first set of cans | Ship first set of cans | Add remaining ingredients and finish manufacturing | |
Event Type | Transformation Event | Transformation Event | Object Event | Transformation Event | |
What | Transformation ID | Xform 123 | Xform 123 | Xform 123 | |
EPC List | Inputs: GTIN X, Serial 10 GTIN X, Serial 45 GTIN Y, Lot 12, 5 litres GTIN Z, 40 units Outputs: (omitted) | Inputs: (omitted) Outputs: GTIN Q,Lot 999,30 units | GTIN Q,Lot 999,30 units | Inputs: GTIN X, Serial 97 GTIN Y, Lot 12, 5 litres GTIN Z, 60 units Outputs: GTIN Q, Lot 999, 70 units | |
Why | Business Step | creating_class_instance | creating_class_instance | shipping | creating_class_instance |
Disposition | active | active | in_transit | active |
Design Template
Quick Links
- For more information refer to Table 5-13 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Transformation Event Linked Via Transformation ID
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:20:20.36Z",
"epcisBody": {
"eventList": [{
"type": "TransformationEvent",
"eventTime": "2024-03-19T16:26:05+01:00",
"eventTimeZoneOffset": "+01:00",
"inputEPCList": [
"https://id.gs1.org/01/09521568251204/21/10",
"https://id.gs1.org/01/09521568251204/21/45"
],
"inputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251211/10/12",
"quantity": 5,
"uom": "LTR"
},
{
"epcClass": "https://id.gs1.org/01/09521568251228",
"quantity": 40
}
],
"transformationID": "https://xid.example.com/Xform123",
"bizStep": "creating_class_instance",
"disposition": "active"
},
{
"type": "TransformationEvent",
"eventTime": "2024-03-19T15:12:19+01:00",
"eventTimeZoneOffset": "+01:00",
"outputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251235/10/999",
"quantity": 30
}],
"transformationID": "https://xid.example.com/Xform123",
"bizStep": "creating_class_instance",
"disposition": "active"
},
{
"type": "ObjectEvent",
"eventTime": "2024-03-19T15:56:21+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "ADD",
"bizStep": "shipping",
"disposition": "in_transit",
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251235/10/999",
"quantity": 30
}]
},
{
"type": "TransformationEvent",
"eventTime": "2024-03-19T15:39:19+01:00",
"eventTimeZoneOffset": "+01:00",
"inputEPCList": [
"https://id.gs1.org/01/09521568251204/21/97"
],
"inputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251211/10/12",
"quantity": 5,
"uom": "LTR"
},
{
"epcClass": "https://id.gs1.org/01/09521568251228",
"quantity": 60
}
],
"outputQuantityList": [{
"epcClass": "https://id.gs1.org/01/09521568251235/10/999",
"quantity": 70
}],
"transformationID": "https://xid.example.com/Xform123",
"bizStep": "creating_class_instance",
"disposition": "active"
}
]
}
}
Example 12: EPCIS Event Information Content for Simple Digital Coupon Business Process
Business process:
- V1: A customer is issued a digital coupon by a coupon issuer. Typically the coupon issuer is a
retailer, but it could also be a manufacturer or a third party. The coupon is often issued to the
customer via a mobile application that the customer uses on his device. The coupon’s SGCN is
stored with that application for use in the next step. An EPCIS event is generated to indicate
that the coupon is now active. - V2: The customer redeems the coupon at a point-of-sale terminal during checkout at a retail
store (whether brick-and-mortar or online). The point-of-sale application verifies that the
coupon is valid and that the conditions of the offer are met; if so, the coupon is redeemed and
an EPCIS event generated to indicate that the coupon is no longer active.
These two events are indicated in EPCIS using a business step of commissioning and
decommissioning, respectively.
Dim | Data Element | V1 | V2 |
---|---|---|---|
Description | Issue a digital coupon | Redeem a digital coupon | |
Event Type | Object Event | Object Event | |
Action | ADD | DELETE | |
When | Event Time | 15 July, 10am | 16 July, 10am |
What | EPC | SGCN X | SGCN X |
Where | Read Point | SGLN of coupon issuer (typically a party GLN if there is no physical location involved, but could be SGLN of a physical location such as a kiosk where the coupon is dispensed) | SGLN of retailer point-of-sale terminal (or a party GLN if there is no physical location involved, as in an online sale) |
Business Location | (omitted) | (omitted) | |
Why | Business | commissioning | decommissioning |
Step | |||
Disposition | active | inactive | |
ILMD | (see below) | (none) |
Design Template
Quick Links
- For more information refer to Table 5-14 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event for Digital Coupon Business Process
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T16:21:00.44Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"@context": [{
"loyalty-card": "https://loyalty-card.example.com/"
}],
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/255/95211410000000000062544"
],
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"readPoint": {
"id": "https://id.gs1.org/414/9521141123454"
},
"ilmd": {
"loyalty-card:redeemDate": "16-07-2022"
}
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-16T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/255/95211410000000000062544"
],
"action": "DELETE",
"bizStep": "decommissioning",
"disposition": "inactive",
"readPoint": {
"id": "https://id.gs1.org/414/9522555222887"
}
}
]
}
}
Example 13:EPCIS Event information content illustrating user/vendor extensions
Business process
An EPCIS event that has an additional data element to record the badge number of a stakeholder inspecting the objects, as might be appropriate for an inspection
made while an item is in transit
Dim | Data Element | V1 |
---|---|---|
Description | Inspection of objects | |
Event Type | Object Event | |
Action | OBSERVE | |
When | Event Time | 15 January 2023, 10am EST |
What | EPC Quantity List | GTIN X, Serial 101 GTIN X, Serial 102 GTIN X, Serial 103 |
Where | Read Point | Geolocation: (41°40′21″N 86°15′19″W) |
Business Location | (omitted) | |
Why | Business Step | inspecting |
Disposition | in_progress | |
Extension: inspector_badge_nr | 244301128 |
Design Template
Quick Links
- For more information refer to Table 5-18 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS Event illustrating user/vendor extensions
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-23T13:58:34.98Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"@context": [{
"myvoc": "http://myvoc.example.org/"
}],
"eventTime": "2023-01-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521141174739/21/101",
"https://id.gs1.org/01/09521141174739/21/102",
"https://id.gs1.org/01/09521141174739/21/103"
],
"action": "OBSERVE",
"bizStep": "inspecting",
"disposition": "in_progress",
"readPoint": {
"id": "geo:41.6725,-86.255278"
},
"myvoc:inspector_badge_nr": "244301128"
}]
}
}
Example 14:Correcting an error by adding an ordinary event with a simple addition
Business process
Company X records an EPCIS event asserting that serial numbers 101, 102, and 103 of some product were shipped to Company Y. Company Y receives the shipment and finds serial
number 104 in addition to serial numbers 101, 102, 103. In discussion with Company X, it is agreed that serial 104 was indeed shipped and that the shipping event was in error.
The remediation is that Company X records a new EPCIS event asserting that serial number 104 was shipped, with similar contextual information as the original event.
Dim | Data Element | V1 | V2 |
---|---|---|---|
Description | Ship 3 product instances, not realising that physical shipment includes a fourth instance | Additional event recognising that the fourth instance was shipped, too | |
Event Type | Object Event | Object Event | |
Action | OBSERVE | OBSERVE | |
When | Event Time | 15 July, 10am | 15 July, 10am |
What | EPC List | GTIN X, Serial 101, 102, 103 | GTIN X, Serial 104 |
Where | Read Point | SGLN of manufacturer’s loading dock | SGLN of manufacturer’s loading dock |
Business Location | (omitted) | (omitted) | |
Why | Business Step | shipping | shipping |
Disposition | in_transit | in_transit | |
Source | owning_party: GLN of Company X | owning_party: GLN of Company X | |
Destination | owning_party: GLN of Company Y | owning_party: GLN of Company Y |
Design Template
Quick Links
- For more information refer to Table 5-19 from GS1 implementation guidelines ´erator](https://tools.openepcis.io/ui/design-event-data/?url=https://raw.githubusercontent.com/openepcis/epcis-testdata-generator/main/examples/Design%20Template%20for%20GS1%20Implementation%20Guideline%20examples/14.%20Correcting%20an%20error%20by%20adding%20an%20ordinary%20event%20with%20a%20corrective%20business%20step%20from%20Table%205-19.json)
- Design template raw source on GitHub
Generated Event
EPCIS event to Correct an error by adding simple addition
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-23T13:39:38.18Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521141174739/21/101",
"https://id.gs1.org/01/09521141174739/21/102",
"https://id.gs1.org/01/09521141174739/21/103"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116/254/10"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141111116/254/20"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09521141174739/21/104"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116/254/10"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141111116/254/20"
}]
}
]
}
}
Example 15: Correction using an ordinary event – corrective business step
Business process
Company X records an EPCIS event asserting that serial numbers 101, 102, and
103 of some product were shipped to Company Y. Company Y receives the shipment and finds only
serial numbers 101, 102. In discussion with Company X, it is agreed that serial number 103 was not
shipped but remains in Company X's inventory. They agree to reverse the billing for the third
product.
The remediation is that Company X records a new EPCIS event asserting that the shipment of serial
103 is voided. This uses a business step void_shipping which is defined specifically for this
purpose. As the new event only refers to serial number 103, it does not affect the shipping event for
the other serial numbers 101 and 102, so processing of those serial numbers can continue even
before the void_shipping event is received.
Dim | Data Element | V1 | V2 |
---|---|---|---|
Description | Ship 3 product instances, not realising that physical shipment is missing one instance | Additional event to indicate that the third instance was not actually shipped | |
Event Type | Object Event | Object Event | |
Action | OBSERVE | OBSERVE | |
When | Event Time | 15 July, 10am | 18 July, 2pm |
What | EPC List | GTIN X, Serial 101, 102, 103 | GTIN X, Serial 103 |
Where | Read Point | SGLN of manufacturer’s loading dock | SGLN of manufacturer’s loading dock |
Business Location | (omitted) | SGLN of manufacturer’s warehouse | |
Why | Business | shipping | void_shipping |
Step | |||
Disposition | in_transit | in_progress | |
Source | owning_party: GLN of Company X | owning_party: GLN of Company X | |
Destination | owning_party: GLN of Company Y | owning_party: GLN of Company Y |
Design Template
Quick Links
- For more information refer to Table 5-20 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS event to Correct an error by adding an ordinary event with a corrective business step
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T15:55:04.63Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/95211411747363/21/101",
"https://id.gs1.org/01/95211411747363/21/102",
"https://id.gs1.org/01/95211411747363/21/103"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116/254/10"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141111116/254/50"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-18T14:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/95211411747363/21/103"
],
"action": "OBSERVE",
"bizStep": "void_shipping",
"disposition": "in_progress",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
},
"bizLocation": {
"id": "https://id.gs1.org/414/9521141111116"
},
"sourceList": [{
"type": "owning_party",
"source": "https://id.gs1.org/414/9521141111116/254/10"
}],
"destinationList": [{
"type": "owning_party",
"destination": "https://id.gs1.org/414/9521141111116/254/50"
}]
}
]
}
}
Example 16: Correcting an error by adding an error declaration event
Business process
Company X records an EPCIS event to assert that serial number 101 of product X was destroyed. This event is an Object Event with action = DELETE. Later it is discovered that serial
101 is still in storage, not destroyed. An ordinary event cannot be used to amend the history, because the semantics of action DELETE for an Object Event specify that "the objects … should not
appear in subsequent events."
The remediation is to issue an error declaration event. This looks just like the original, erroneous event, but with the addition of an error declaration section.
Dim | Data Element | V1 | V2 |
---|---|---|---|
Description | Destroy one instance of Product X, not realizing that this instance was not destroyed | Additional event to assert that the first event is in error | |
Event Type | Object Event | Object Event | |
Action | DELETE | DELETE | |
Error Declaration | Declaration Time | 17 July, 2pm | |
Reason | did_not_occur | ||
When | Event Time | 15 July, 10am | 15 July, 10am |
What | EPC List | GTIN X, Serial 101 | GTIN X, Serial 101 |
Where | Read Point | SGLN of warehouse | SGLN of warehouse |
Business Location | (omitted) | (omitted) | |
Why | Business Step | destroying | destroying |
Disposition | destroyed | destroyed |
Design Template
Quick Links
- For more information refer to Table 5-21 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS event for adding an error declaration correct an error
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-20T15:19:09.71Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/95211411747363/21/101"
],
"action": "DELETE",
"bizStep": "destroying",
"disposition": "destroyed",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
}
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"errorDeclaration": {
"declarationTime": "2023-07-17T14:00:00+01:00",
"reason": "did_not_occur"
},
"epcList": [
"https://id.gs1.org/01/95211411747363/21/101"
],
"action": "DELETE",
"bizStep": "destroying",
"disposition": "destroyed",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
}
}
]
}
}
Example 17: Declaring a prior event to be in error, with a corrective event
Business process
Company X records an EPCIS event asserting that several products have been shipped, indicating Purchase Order 123 as a business transaction in the "why" dimension. Company Y receives the
products and records a receiving event. Only then it is discovered that the purchase order reference in the shipping event is wrong: it says PO 456 instead of 123. This could be remediated using
ordinary EPCIS events by Company X recording a "void shipment" event followed by a "shipping" event with the correct PO #. But this is rather undesirable from the perspective of the overall trace,
especially given that there is already a receiving event
The remediation is to issue an error declaration event together with a corrective event. The error declaration looks just like the original, erroneous event, but with the addition of an error declaration
section. The corrective event is a corrected version of the original event. Optionally, the corrective event can be given a unique event ID, and referenced from the error declaration event.
Dim | Data Element | V1 | V2 | V3 |
---|---|---|---|---|
Description | Ship products, not realising that the PO number in the business transaction section is incorrect | Additional event to assert that the first event is in error | Corrected shipping event | |
Event Type | Object Event | Object Event | Object Event | |
Action | OBSERVE | OBSERVE | OBSERVE | |
Event ID | UUID 692…6bd | |||
Error Declaration | Declaration Time | 17 July, 1pm | ||
Reason | incorrect_data | |||
Corrective Event IDs | UUID 692…6bd | |||
When | Event Time | 15 July, 10am | 15 July, 10am | 15 July, 10am |
What | EPC List | GTIN X, Serial 101, 102, 103 | GTIN X, Serial 101, 102, 103 | GTIN X, Serial 101, 102, 103 |
Where | Read Point | SGLN of warehouse | SGLN of warehouse | SGLN of warehouse |
Business Location | (omitted) | (omitted) | (omitted) | |
Why | Business Step | shipping | shipping | shipping |
Disposition | in_transit | in_transit | in_transit | |
Business Transactions | PO #456 | PO #456 | PO #123 |
Design Template
Quick Links
- For more information refer to Table 5-22 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS event declaring a prior event to be in error with a corrective event
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-18T15:27:49.24Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09526784378438/21/101",
"https://id.gs1.org/01/09526784378438/21/102",
"https://id.gs1.org/01/09526784378438/21/103"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
},
"bizTransactionList": [{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:456"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"errorDeclaration": {
"declarationTime": "2023-07-17T13:00:00+01:00",
"reason": "incorrect_data",
"correctiveEventIDs": [
"urn:uuid:692d95fc-9457-4a51-bd6a-0bba133846bd"
]
},
"epcList": [
"https://id.gs1.org/01/09526784378438/21/101",
"https://id.gs1.org/01/09526784378438/21/102",
"https://id.gs1.org/01/09526784378438/21/103"
],
"action": "DELETE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/0952156825641"
},
"bizTransactionList": [{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:456"
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-07-15T10:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/01/09526784378438/21/101",
"https://id.gs1.org/01/09526784378438/21/102",
"https://id.gs1.org/01/09526784378438/21/103"
],
"action": "OBSERVE",
"bizStep": "shipping",
"disposition": "in_transit",
"readPoint": {
"id": "https://id.gs1.org/414/0952156825641"
},
"bizTransactionList": [{
"type": "po",
"bizTransaction": "urn:epcglobal:cbv:bt:123"
}]
}
]
}
}
Example 18: Installing components/assemblies into larger items
Business process
Presume a pool operator of reusable plastic trays wants to properly document the installation of sensor devices (with e.g. a built-in GPS module and temperature
sensor) into its trays. The reason could consist of the need to effectively identify all assets that are equipped with specific sensor devices/models in case the latter were not exactly calibrated. In
addition, information on built-in sensor devices may also be enquired by customs authorities. In such a scenario, the installing EPCIS event could be modeled as follows
EPCIS dimension | Data Element | V1 |
---|---|---|
Description | Installing a sensor device in a reusable plastic tray | |
Event Type | Association Event | |
Action | ADD | |
When | eventTime | 12 October, 08:45 am |
What | parentID | GRAI of tray |
childEPCs | GIAI of sensor device | |
readPoint | GLN of maintenance area | |
bizStep | installing |
Design Template
Quick Links
- For more information refer to Table 5.10.1 example 1 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
Installing components/assemblies into larger items
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-18T10:08:12.17Z",
"epcisBody": {
"eventList": [{
"type": "AssociationEvent",
"eventTime": "2023-10-12T08:45:00+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/8003/0952156550017200",
"childEPCs": [
"https://id.gs1.org/8004/09521141100"
],
"action": "ADD",
"bizStep": "installing",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
}
}]
}
}
Example 19:Installing components/assemblies into physical locations
Business process
The company that equips a cold storage room with one or several temperature sensor devices, the corresponding EPCIS event may be modeled as follows
EPCIS dimension | Data Element | V1 |
---|---|---|
Description | Installing a sensor device in a reusable plastic tray | |
Event Type | Association Event | |
Action | ADD | |
When | eventTime | 14 October, 10:55 am |
What | parentID | GLN of cold storage room |
childEPCs | GIAI(s) of sensor device(s) | |
readPoint | GLN of maintenance area | |
bizStep | installing |
Design Template
Quick Links
- For more information refer to Table 5.10.2 example 2 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS event for installing components/assemblies into physical locations
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-18T09:27:26.83Z",
"epcisBody": {
"eventList": [{
"type": "AssociationEvent",
"eventTime": "2023-10-12T08:45:00+01:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/8003/0952156550017200",
"childEPCs": [
"https://id.gs1.org/8004/09521141100"
],
"action": "ADD",
"bizStep": "installing",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
}
}]
}
}
Example 20: Control/prove temperature compliance
Business process
Suppose an organization that trades temperature-sensitive goods (e.g. cheese, wine, pharmaceutical products) has set up the necessary hardware to capture both identities as well
as the temperature values of items when the latter is in the company's custody. Now, if this organization wants to provide that data to internal or external stakeholders (e.g. the
company's quality assurance department or trading partners that wish to ascertain if specific items were handled/transported properly), it makes a lot of sense to use a standard format from the
outset.
Typical critical tracing events accommodating sensor data can easily be modeled as EPCIS events.
EPCIS dimension | Data Element | V1 | V2 | V3 | V4 |
---|---|---|---|---|---|
Description | Move logistics unit to interim storage room | Move logistics into cold storage room | Move logistics out of cold storage room | Daily sensor reporting of cold storage room | |
Event Type | Object Event | Object Event | Object Event | Object Event | |
Action | OBSERVE | OBSERVE | OBSERVE | OBSERVE | |
When | eventTime | 15 June, 08:00 am | 15 June, 08:15 am | 15 June, 05:45 pm | 15 June, 11:59 pm |
What | epcList | SSCC of logistics unit | SSCC of logistics unit | SSCC of logistics unit | |
readPoint | GLN of receiving area | GLN of interim storage room | GLN of cold storage room | GLN of cold storage room | |
bizLocation | GLN of interim storage room | GLN of cold storage room | GLN of shipping area | ||
bizStep | storing | storing | storing | Sensor_reporti ng | |
sensorElement | |||||
sensorReport | |||||
startTime | 15 June 07:55 am | 15 June 08:10 am | 15 June 05:35 pm | 14 June 11:59 pm | |
endTime | 15 June 07:59 am | 15 June 08:14 am | 15 June 05:55 pm | 15 June 11:59 pm | |
type | Temperatur e | Temperatur e | Temperatur e | Temperature | |
minValue | 12 | 12.1 | 9.2 | 9.1 | |
maxValue | 12.1 | 12.2 | 9.2 | 9.4 | |
uom | CEL | CEL | CEL | CEL |
Design Template
Quick Links
- For more information refer to Table 5.11.1 example 1 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
EPCIS event of sensor report for control/prove temperature compliance
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-17T14:05:39.64Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-06-15T08:00:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "storing",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
},
"bizLocation": {
"id": "https://id.gs1.org/414/0952114111113"
},
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-15T06:59:00Z",
"endTime": "2023-06-15T06:55:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 12,
"maxValue": 12.1,
"uom": "CEL"
}]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-15T08:15:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "storing",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
},
"bizLocation": {
"id": "https://id.gs1.org/414/0952114111113"
},
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-15T07:14:00Z",
"endTime": "2023-06-15T07:10:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 12.1,
"maxValue": 12.2,
"uom": "CEL"
}]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-15T17:45:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "storing",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
},
"bizLocation": {
"id": "https://id.gs1.org/414/0952114111113"
},
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-15T16:55:00Z",
"endTime": "2023-06-15T16:35:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 9.2,
"maxValue": 9.2,
"uom": "CEL"
}]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-15T23:59:00+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "sensor_reporting",
"readPoint": {
"id": "https://id.gs1.org/414/0952114111113"
},
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-15T22:29:00Z",
"endTime": "2023-06-14T22:59:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 9.4,
"maxValue": 9.1,
"uom": "CEL"
}]
}]
}
]
}
}
Example 21: Exception notification
Business process
A company may want to trigger an alert message to the warehouse manager in case the temperature in the cold storage room falls below or exceeds a predefined threshold (e.g. < 8 ° CEL and > 15 ° CEL). The company also wants to store that
information in their Quality Management System as well as provide that to an external solution provider which is in charge of maintaining the cold storage room's technical infrastructure. In such a setting, the 'alert' EPCIS event could be modeled as follows
Event dimension | Data Element | V1 | |||
Description | Exception notification for temperature excursion | ||||
Event Type | Object Event | ||||
Action | OBSERVE | ||||
When | eventTime | 23 June, 11:19 am | |||
Where | readPoint | GLN of cold storage room | |||
Why | bizStep | sensor_reporting | |||
How | sensorElement | ||||
sensorMetadata | |||||
bizRules | GDTI GS1 DL URI | ||||
sensorReport | |||||
type | Temperature | ||||
value | 15.1 | ||||
uom | CEL | ||||
sensorReport | |||||
exception | ALARM_CONDITION | ||||
uriValue | URI, e.g. https://example.com/alarmCodes/temperatureExceeded |
Design Template
Quick Links
- For more information refer to Table 5.11.2 example 2 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
Temperature Excursion Exception Notification Sensor Report
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-22T21:02:23.85Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-06-23T13:35:42+01:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "OBSERVE",
"bizStep": "sensor_reporting",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
},
"sensorElementList": [{
"sensorMetadata": {
"bizRules": "https://id.gs1.org/253/9521565678002100"
},
"sensorReport": [{
"type": "Temperature",
"exception": "ALARM_CONDITION",
"value": 15.1,
"uriValue": "https://example.com/alarmCodes/temperatureExceeded",
"uom": "CEL"
}]
}]
}]
}
}
Example 22: Condition monitoring and tracking of intermodal transports
Business process
A company to verify whether its products are properly transported, and to maintain an overview of the areas a container vessel traversed, it is advisable for the respective logistics/transport service providers to supply the corresponding visibility event data in a standardized manner.
For instance, if an organization is interested to ascertain that their products were not exposed to a certain level of air humidity during transport as well as the approximate sea transport route, the following EPCIS event sequence would make sense
Event dime nsion | Data Element | V1 | V2 | V3 | V4 | V5 | V6 | V7 | V8 | V9 | V10 |
---|---|---|---|---|---|---|---|---|---|---|---|
Description | Pack products into logistics unit | Load logistics unit onto seacontainer | Load seacontainers onto truck | Truck arrival at port | Unload seacontainers from truck | Load seacontainers onto vessel | Vessel departure from port | Daily sensor reporting of sea container | Daily vessel report with 4- hourly geo positions | Daily sensor reporting of sea container | |
Event Type | Aggregation Event | Aggregation Event | Aggregation Event | Object Event | Aggregation Event | Aggregation Event | Object Event | Object Event | Object Event | Object Event | |
Action | ADD | ADD | ADD | OBSER VE | DELETE | ADD | OBSERVE | OBSERVE | OBSERVE | OBSERVE | |
When | eventTime | 24 June, 08:00 am | 24 June, 09:15 am | 24 June, 09:45 am | 24 June, 02:20 pm | 24 June, 02:55 pm | 24 June, 05:11 pm | 25 June, 04:00 am | 24 June, 11:59 pm | 25 June, 11:59 pm | 25 June, 11:59 pm |
What | epcList | GIAI of the truck | IMO Vessel Number of ship | BIC of sea container | IMO Vessel Number of ship | BIC of sea container | |||||
parentID | SSCC of Logistics unit | BIC of sea Container | GIAI of the truck | GIAI of the truck | IMO Vessel Number of ship | ||||||
childEPCs | SGTIN’s of products | SSCC of logistics unit | BIC of sea container | BIC of sea contain er | BIC of sea container | ||||||
Where | readPoin t | GLN of wareh ouse | GLN of wareh ouse | GLN of wareh ouse | GLN of port | GLN of port | GLN of port | GLN of port | |||
Why | bizSte p | pack ing | load ing | load ing | arri ving | unloa ding | load ing | departing | sensor_reporting | sensor_re porting | sensor_re porting |
How | sensorEl ement | ||||||||||
sensorM etadata | |||||||||||
startTim e | 23 June 11:59 pm | 24 June 11:59 pm | |||||||||
endTime | 24 June 11:59 pm | 25 June 11:59 pm | |||||||||
sensorRe port | |||||||||||
type | Temperatu re | Temperatu re | |||||||||
minValue | 8.1 | 5.6 | |||||||||
maxValu e | 21.8 | 14.9 | |||||||||
uom | CEL | CEL | |||||||||
sensorReport | |||||||||||
type | AbsoluteH umidity | AbsoluteH umidity | |||||||||
minValue | 6.1 | 4.6 | |||||||||
maxValu e | 8.2 | 3.3 | |||||||||
uom | A93 | A93 | |||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 02:00 am | ||||||||||
rawData | URI, e.g. https://example.org/80 04/401234599999 | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 53.553747 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 8.562372 | ||||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 06:00 am | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 53.882318 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 8.09931 | ||||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 10:00 am | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 54.172892 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 7.094428 | ||||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 02:00 pm | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 54.389794 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 5.753072 | ||||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 06:00 pm | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 54.790116 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 3.407863 | ||||||||||
sensorEl ement | |||||||||||
sensorM etadata | |||||||||||
time | 25 June 10:00 pm | ||||||||||
sensorRe port | |||||||||||
type | Latitude | ||||||||||
stringValue | 56.196056 | ||||||||||
sensorRe port | |||||||||||
type | Longitude | ||||||||||
stringValue | 1.490934 | ||||||||||
Design Template
Quick Links
- For more information refer to Table 5.11.3 example 3 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
Sensor Report:Condition monitoring and tracking of intermodal transports
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-04-25T10:44:12.41Z",
"epcisBody": {
"eventList": [{
"type": "AggregationEvent",
"eventTime": "2023-06-24T08:00:00+02:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/00/095211410000000200",
"childEPCs": [
"https://id.gs1.org/01/09521141174739/21/100"
],
"action": "ADD",
"bizStep": "packing",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
}
},
{
"type": "AggregationEvent",
"eventTime": "2023-06-24T09:15:00+02:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "urn:epc:id:bic:CSQU3054383",
"childEPCs": [
"https://id.gs1.org/00/095211410000000200"
],
"action": "ADD",
"bizStep": "loading",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
}
},
{
"type": "AggregationEvent",
"eventTime": "2023-06-24T09:45:00+02:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/8004/9521565500200",
"childEPCs": [
"urn:epc:id:bic:CSQU3054383"
],
"action": "ADD",
"bizStep": "loading",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111116"
}
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-24T14:20:00+02:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"https://id.gs1.org/8004/9521565500200"
],
"action": "OBSERVE",
"bizStep": "arriving",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111123"
}
},
{
"type": "AggregationEvent",
"eventTime": "2023-06-24T14:55:00+02:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "https://id.gs1.org/8004/9521565500200",
"childEPCs": [
"urn:epc:id:bic:CSQU3054383"
],
"action": "DELETE",
"bizStep": "unloading",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111123"
}
},
{
"type": "AggregationEvent",
"eventTime": "2023-06-24T17:11:00+02:00",
"eventTimeZoneOffset": "+01:00",
"parentID": "urn:epc:id:imovn:2922108",
"childEPCs": [
"urn:epc:id:bic:CSQU3054383"
],
"action": "ADD",
"bizStep": "loading",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111123"
}
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-24T23:59:00+02:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"urn:epc:id:imovn:2922108"
],
"action": "OBSERVE",
"bizStep": "departing",
"readPoint": {
"id": "https://id.gs1.org/414/9521141111123"
},
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-24T21:59:00Z",
"endTime": "2023-06-23T21:59:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 8.1,
"maxValue": 21.8,
"uom": "CEL"
},
{
"type": "AbsoluteHumidity",
"minValue": 6.1,
"maxValue": 8.2,
"uom": "23"
}
]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-25T23:59:00+02:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"urn:epc:id:imovn:2922108"
],
"action": "OBSERVE",
"bizStep": "sensor_reporting",
"sensorElementList": [{
"sensorMetadata": {
"startTime": "2023-06-25T21:59:00Z",
"endTime": "2023-06-24T21:59:00Z"
},
"sensorReport": [{
"type": "Temperature",
"minValue": 5.6,
"maxValue": 14.9,
"uom": "CEL"
},
{
"type": "AbsoluteHumidity",
"minValue": 3.3,
"maxValue": 4.6,
"uom": "A93"
}
]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-24T23:59:00+02:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"urn:epc:id:bic:CSQU3054383"
],
"action": "OBSERVE",
"bizStep": "sensor_reporting",
"sensorElementList": [{
"sensorMetadata": {
"time": "2023-06-25T12:00:00Z",
"rawData": "https://example.org/8004/401234599999"
},
"sensorReport": [{
"type": "Angle",
"time": "2023-06-25T00:00:00Z",
"component": "latitude",
"stringValue": "53.553747"
},
{
"type": "Angle",
"time": "2023-06-25T00:00:00Z",
"component": "longitude",
"stringValue": "8.562372"
},
{
"type": "Angle",
"time": "2023-06-25T04:00:00Z",
"component": "latitude",
"stringValue": "53.882318"
},
{
"type": "Angle",
"time": "2023-06-25T04:00:00Z",
"component": "longitude",
"stringValue": "8.099310"
},
{
"type": "Angle",
"time": "2023-06-25T08:00:00Z",
"component": "latitude",
"stringValue": "54.172892"
},
{
"type": "Angle",
"time": "2023-06-25T08:00:00Z",
"component": "longitude",
"stringValue": "7.094428"
},
{
"type": "Angle",
"time": "2023-06-25T12:00:00Z",
"component": "latitude",
"stringValue": "54.389794"
},
{
"type": "Angle",
"time": "2023-06-25T12:00:00Z",
"component": "longitude",
"stringValue": "5.753072"
},
{
"type": "Angle",
"time": "2023-06-25T16:00:00Z",
"component": "latitude",
"stringValue": "54.790116"
},
{
"type": "Angle",
"time": "2023-06-25T16:00:00Z",
"component": "longitude",
"stringValue": "3.407863"
},
{
"type": "Angle",
"time": "2023-06-25T20:00:00Z",
"component": "latitude",
"stringValue": "56.196056"
},
{
"type": "Angle",
"time": "2023-06-25T20:00:00Z",
"component": "longitude",
"stringValue": "1.490934"
}
]
}]
},
{
"type": "ObjectEvent",
"eventTime": "2023-06-25T23:59:00+02:00",
"eventTimeZoneOffset": "+01:00",
"epcList": [
"urn:epc:id:bic:CSQU3054383"
],
"action": "OBSERVE",
"bizStep": "sensor_reporting"
}
]
}
}
Example 23: Sensor example for condition monitoring and tracking of intermodal transports
Business process
A retailer wants to document the concentration of Shigella (bacteria that include known pathogens) as well as sugar in a batch/lot of apples. Further, the retailer wants to capture the ID of the device with which the quality control is accomplished (so that in case the latter turns out not to be properly calibrated, the retailer is able to react accordingly). With that in mind, an EPCIS inspecting event could be designed as follows
Event dimension | Data Element | V1 |
---|---|---|
Description | Fresh fruits quality inspection | |
Event Type | Object Event | |
Action | OBSERVE | |
When | eventTime | 10 August, 08:10 am |
What | quantityList | LGTIN of batch/lot of food |
readPoint | GLN of cold storage room | |
bizStep | inspecting | |
disposition | conformant | |
bizTransactionList | ||
_bizTransactionID prd type:test | GDTI of test procedure | |
_bizTransactionID res type:test | GDTI or test result | |
sensorElement | ||
sensorMetadata | ||
deviceID | GIAI (EPC URI or GS1 DL URI) | |
sensorReport | ||
type | Dimensionless | |
microorganism | https://wwww.ncbi.nlm.nih.gov/1118236 TBC | |
value | 18 | |
uom | CFU/ml Pending UN/CEFACT update to CEFACT20 | |
sensorReport | ||
type | Dimensionless_concentration | |
chemicalSubstance | https://identifiers.org/inchikey:CZMRCDWAGMRECN-UGDNZRGBSA-N | |
value | 10.1 | |
uom | J18 |
Design Template
Quick Links
- For more information refer to Table 5.11.4 example 4 from GS1 implementation guidelines
- Try it on OpenEPCIS Test Data Generator
- Design template raw source on GitHub
Generated Event
Sensor report: tracking of intermodal transports
{
"@context": [
"https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld"
],
"type": "EPCISDocument",
"schemaVersion": "2.0",
"creationDate": "2024-03-15T17:30:01.58Z",
"epcisBody": {
"eventList": [{
"type": "ObjectEvent",
"eventTime": "2023-08-10T08:10:14+01:00",
"eventTimeZoneOffset": "+01:00",
"action": "OBSERVE",
"bizStep": "inspecting",
"disposition": "conformant",
"readPoint": {
"id": "https://id.gs1.org/414/9521568256452"
},
"bizTransactionList": [{
"type": "testprd",
"bizTransaction": "https://id.gs1.org/253/9521565678002100"
},
{
"type": "testprd",
"bizTransaction": "https://id.gs1.org/253/9521565678002200"
}
],
"quantityList": [{
"epcClass": "https://id.gs1.org/01/09521568256452/10/200"
}],
"sensorElementList": [{
"sensorMetadata": {
"deviceID": "https://id.gs1.org/8004/9521565500"
},
"sensorReport": [{
"type": "Dimensionless",
"microorganism": "https://wwww.ncbi.nlm.nih.gov/1118236",
"value": 18,
"uom": "59"
}]
},
{
"sensorReport": [{
"type": "Dimensionless",
"chemicalSubstance": "https://www.chemspider.com/Chemical-Structure.5768.html?rid=e68ea2b7-dbe5-43b2-9523-55ca0b02c27e",
"value": 10.1,
"uom": "59"
}]
}
]
}]
}
}