Explanations of EPCIS often start with data models. This one starts with a bottle. We'll follow a single bottle of fictional Ambre Nuit eau de parfum from Maison Ardent, together with the carton and pallet it travels in, and note the event recorded at each step and who records it.
If you want the vocabulary first, what is EPCIS? covers the event types and the what, when, where, why and how of every event. This article shows them in use.
The cast
- The bottle: GTIN 09501101530003, serial number AN7Q2X4K, batch L2609. Its QR code carries a GS1 Digital Link containing the GTIN and serial.
- The carton: holds 24 bottles and carries its own SSCC, 395011010000000019.
- The pallet: holds 40 cartons and carries SSCC 395011010000000026.
- The places: the filling factory and the distributor's warehouse, each identified by a GLN, and a department store.
All the numbers are illustrative. What matters is that every object and every place has an identifier all partners can recognise. What is an SSCC? explains how cartons and pallets get theirs.
The journey, event by event
A simple EPCIS event history
- CommissionedObjectEvent · ADDThe unit's identity is brought into use when it is printed and verified on the line.
- AggregatedAggregationEvent · ADDUnits are recorded as packed inside a carton; cartons inside a pallet.
- ShippedObjectEvent · OBSERVEThe pallet leaves the factory. Its SSCC is scanned; the contents follow by aggregation.
- ReceivedObjectEvent · OBSERVEThe distributor scans the pallet in and records it at their location.
The diagram above shows the first four steps of any such history. Here is the full journey for our bottle:
| Step | Recorded by | Event type and action | CBV business step | What the event says |
|---|---|---|---|---|
| 1 | Factory | ObjectEvent, ADD | commissioning | Bottle AN7Q2X4K now exists as a real, marked product; disposition active |
| 2 | Factory | AggregationEvent, ADD | packing | Carton ...0019 contains these 24 bottles |
| 3 | Factory | AggregationEvent, ADD | packing | Pallet ...0026 contains these 40 cartons |
| 4 | Brand or factory | ObjectEvent, OBSERVE | shipping | Pallet ...0026 left the factory; disposition in_transit |
| 5 | Distributor | ObjectEvent, OBSERVE | receiving | Pallet ...0026 arrived at the distributor's GLN |
| 6 | Distributor | AggregationEvent, DELETE | unpacking | The 40 cartons are no longer on that pallet |
| 7 | Distributor | ObjectEvent, OBSERVE | shipping | Carton ...0019 left for the department store |
| 8 | Retailer | ObjectEvent, OBSERVE | receiving | Carton ...0019 arrived at the store |
Steps 1 to 3: the factory floor
At 09:12 the bottle passes the coder, a camera reads its code and confirms it, and the line records the commissioning event. Only now does serial AN7Q2X4K stand for a physical bottle. The ERP may have allocated the number hours earlier, but allocation is not commissioning; what is a commissioning event? explains why the timing matters.
A few seconds later the bottle drops into a carton with 23 others. When the carton is closed and its contents confirmed, an aggregation event links the carton's SSCC (the parent) to the 24 bottle identities (the children). At the end of the run, 40 cartons are stacked and the pallet's SSCC is linked to them in the same way. The physical process behind these steps is described in the journey of a serialized product through a packaging line.
Step 4: one scan, 960 bottles
When the pallet is loaded, someone scans one label. The shipping event names only the pallet SSCC, but because of steps 2 and 3, anyone with access to the history can expand it: one pallet, 40 cartons, 960 bottles, including AN7Q2X4K. That is the practical payoff of aggregation, and the reason warehouses scan a carton or pallet instead of every unit.
Steps 5 to 8: crossing company lines
The distributor's receiving event is recorded in the distributor's system, at the distributor's GLN. This is the moment the history stops belonging to one company. The brand sees step 5 only if the distributor shares it, and the standard format is what makes sharing straightforward.
When the distributor breaks the pallet down to fill smaller orders, it records a disaggregation: an aggregation event with action DELETE. Skipping this step is a common source of bad data. Without it, the records would still say carton ...0019 is on pallet ...0026 long after the pallet has gone, and a later query on the pallet would return cartons that are actually in a shop across town. The detail of ADD and DELETE is covered in what is an aggregation event?
Two detours the history must handle
Real journeys are rarely clean. Two common detours show why events, rather than a single status field, are the right model.
A broken bottle. At the distributor, a carton is dropped and one bottle breaks. The distributor records an event against that bottle's serial with disposition destroyed. The bottle's history now ends there, and anyone checking its serial later, say because a code with the same serial turns up on a marketplace listing, can see the conflict.
A recall. Weeks later, Maison Ardent finds a problem with batch L2609. Its team reads the events backwards: which serials were commissioned in L2609, which cartons and pallets they went into, which of those were shipped, and to which GLNs. Partners update the affected stock with disposition recalled. The quality of that answer depends entirely on how carefully steps 1 to 8 were recorded.
What is not in the history
Some things deliberately stay out of this event chain:
- The shopper's scan. When a customer scans the bottle at home to read usage tips, that is engagement data. It does not prove the bottle was shipped, received or sold, and recording it as a supply-chain event would muddy the history. What that scan does involve is explained in what happens when a consumer scans a connected product.
- Prices and orders. These live in ERP and retailer systems. EPCIS can link objects to a purchase order or despatch advice through a business transaction reference, but it is not where commercial terms are kept.
- Everything about everyone. Each party records and holds its own events. There is no single global copy of this bottle's history.
Why the order of events matters
Each event only makes sense because of the ones before it. A shipping event for a pallet is meaningful only if the pallet's contents were recorded accurately at packing, and those contents are meaningful only if each bottle was commissioned on evidence that it was really marked. Errors early in the chain travel all the way to the shop.
That is why most of the effort in a traceability programme goes into the first three steps, on the factory floor, rather than into the exchange format. For the same story told from the serial number's point of view, read the life of one serial number.
Explore AIQR's traceability and EPCIS export