EPCIS Event Types
Complete reference for all EPCIS event types and sensor measurements in the Battery DPP
Masterdata that travels with events — masterDataAvailableFor is GS1 Web Vocabulary (so no gs1: prefix needed — it maps via @context). It can carry lot- or serial-level masterdata that belongs to a specific instance or batch: production batch, declaration references, incident records, regulatory citations. What it must not carry is GTIN-level masterdata (product name, generic specifications, basic technical attributes that apply to every unit of that GTIN) — those live on the resolver, POSTed once via POST /products/{gtin}. Extension vocabularies (battery:, eudr:, textile:, electronics:) must keep their prefix; they are declared in the document's @context.
Disclaimer: This is not official GS1 guidance, but all event patterns follow official GS1/EPCIS standards:
- EPCIS 2.0 — ObjectEvent structure, sensorElementList
- CBV 2.0 — bizStep (
commissioning,inspecting), disposition (active,damaged) - UN/CEFACT Rec 20 — Unit codes (
P1,KWH,CEL)
We follow GS1 best practices: events with full provenance (who/what/when/where), sensor metadata, and master data linking. Feedback welcome!
Event Types Overview
The Battery DPP uses EPCIS 2.0 events to capture dynamic battery data throughout its lifecycle. Each event type serves a specific purpose in maintaining the complete battery passport.
Lifecycle Events
Commissioning Event
Purpose: Record battery creation and initial measurements
| Field | Value |
|---|---|
@type | ObjectEvent |
action | ADD |
bizStep | commissioning |
disposition | active |
Required Sensor Reports:
battery:stateOfHealth(100%)battery:cycleCount(0)battery:stateOfCharge
Example:
{
"@context": "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
"type": "ObjectEvent",
"action": "ADD",
"bizStep": "commissioning",
"disposition": "active",
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"sensorElementList": [
{
"sensorReport": [
{
"type": "battery:stateOfHealth",
"value": 100,
"uom": "P1"
},
{
"type": "battery:cycleCount",
"value": 0
}
]
}
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"lotNumber": "BATCH-2024-03-A"
}
]
}
GTIN-level fields (productName, generic specs, batteryCategory) live on the resolver. The batch identifier is lot-level, so it travels with the event in masterDataAvailableFor.
Ownership Transfer Event
Purpose: Record change of ownership or possession
| Field | Value |
|---|---|
@type | ObjectEvent |
action | OBSERVE |
bizStep | accepting |
disposition | in_transit |
Required Fields:
sourceListwithowning_partydestinationListwithowning_partybizTransactionList(PO, invoice)
Example:
{
"@context": "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
"@type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "accepting",
"disposition": "in_transit",
"sourceList": [
{
"type": "owning_party",
"source": "https://id.gs1.org/417/9521234000006"
}
],
"destinationList": [
{
"type": "owning_party",
"destination": "https://id.gs1.org/417/9521987000001"
}
],
"bizTransactionList": [
{
"type": "po",
"bizTransaction": "https://buyer.example.com/orders/PO-2024-0089"
}
]
}
Regulatory Notification Event
Purpose: Record regulatory compliance status
| Field | Value |
|---|---|
@type | ObjectEvent |
action | OBSERVE |
bizStep | notifying |
disposition | conformant |
Example:
{
"@context": "https://ref.gs1.org/standards/epcis/epcis-context.jsonld",
"type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "notifying",
"disposition": "conformant",
"persistentDisposition": {
"set": [
"conformant"
]
},
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"regulatoryInformation": [
{
"regulationType": "BATTERY_DIRECTIVE",
"regulatoryAct": "EU 2023/1542",
"regulatoryIdentifierType": "EU_DECLARATION_OF_CONFORMITY",
"regulatoryReferenceNumber": "DoC-BAT-2024-00123"
}
]
}
]
}
regulatoryInformation is GS1 Web Vocabulary (so no gs1: prefix), and the declaration is serial-specific — it identifies this unit's Declaration of Conformity. It travels with the event inside masterDataAvailableFor. Compliance state is captured as persistentDisposition: "conformant" on the event itself.
Measurement Events
State of Health (SoH)
Purpose: Record battery health status
| Field | Value |
|---|---|
@type | ObjectEvent |
action | OBSERVE |
bizStep | inspecting |
disposition | active |
Sensor Reports:
| Type | Description | Unit |
|---|---|---|
battery:stateOfHealth | Capacity-based SoH | P1 (%) |
battery:stateOfCharge | Current charge level | P1 (%) |
battery:remainingCapacity | Current max capacity | AH |
battery:remainingEnergy | Current max energy | KWH |
battery:cycleCount | Full cycles completed | - |
battery:capacityFade | Capacity degradation | P1 (%) |
battery:internalResistance | Pack resistance | OHM |
battery:energyThroughput | Cumulative energy | KWH |
Example:
{
"sensorReport": [
{ "type": "battery:stateOfHealth", "value": 94.2, "uom": "P1" },
{ "type": "battery:cycleCount", "value": 847 },
{ "type": "battery:capacityFade", "value": 5.8, "uom": "P1" },
{ "type": "battery:internalResistance", "value": 2.4, "uom": "OHM" }
]
}
State of Certified Energy (SOCE)
Purpose: Record SOCE per EU Battery Regulation
| Sensor Type | Description | Unit |
|---|---|---|
battery:stateOfCertifiedEnergy | SOCE percentage | P1 (%) |
battery:capacityThroughput | Cumulative capacity | AH |
battery:powerFade | Power degradation | P1 (%) |
battery:roundTripEfficiencyFade | RTE degradation | P1 (%) |
battery:selfDischargeRate | Self-discharge rate | P1 (%/month) |
Per-instance masterdata (in masterDataAvailableFor):
battery:certifiedUsableEnergy,battery:remainingUsableEnergy— declared values for this unit at this measurementbattery:exhaustionThreshold,battery:expectedRemainingCycles— design + projection for this unitbattery:soceMeasurementId— the measurement record ID
Example:
{
"@context": [
"https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
"https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
],
"type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "inspecting",
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"sensorElementList": [
{
"sensorReport": [
{
"type": "battery:stateOfCertifiedEnergy",
"value": 85.3,
"uom": "P1"
},
{
"type": "battery:stateOfCertifiedEnergy",
"battery:certifiedUsableEnergy": {
"value": "14.3",
"unitCode": "KWH"
},
"battery:remainingUsableEnergy": {
"value": "12.2",
"unitCode": "KWH"
}
}
]
}
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"battery:exhaustionThreshold": 70,
"battery:expectedRemainingCycles": 4753,
"battery:soceMeasurementId": "SOCE-2025-00156"
}
]
}
Carbon Footprint Declaration
Purpose: Record lifecycle carbon footprint
| Sensor Type | Description | Unit |
|---|---|---|
battery:carbonFootprintTotal | Total lifecycle CFP | KGM (kg CO2e/kWh) |
battery:carbonFootprintRawMaterialExtraction | Raw material phase | KGM |
battery:carbonFootprintProduction | Manufacturing phase | KGM |
battery:carbonFootprintDistribution | Distribution phase | KGM |
battery:carbonFootprintRecycling | End-of-life phase | KGM |
Per-declaration masterdata (in masterDataAvailableFor):
battery:carbonFootprintPerformanceClass(A–E) for this declared footprintbattery:carbonFootprintStudyUrl— link to the study supporting this declarationbattery:carbonFootprintDeclarationId— declaration record IDbattery:calculationStandard— methodology applied
Example:
{
"@context": [
"https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
"https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
],
"type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "inspecting",
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"sensorElementList": [
{
"sensorReport": [
{
"type": "battery:carbonFootprintTotal",
"value": 61.2,
"uom": "KGM"
},
{
"type": "battery:carbonFootprintRawMaterialExtraction",
"value": 24.5,
"uom": "KGM"
},
{
"type": "battery:carbonFootprintProduction",
"value": 28.3,
"uom": "KGM"
},
{
"type": "battery:carbonFootprintDistribution",
"value": 4.2,
"uom": "KGM"
},
{
"type": "battery:carbonFootprintRecycling",
"value": 4.2,
"uom": "KGM"
}
]
}
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"battery:carbonFootprintPerformanceClass": "B",
"battery:calculationStandard": "ISO 14067:2018",
"battery:carbonFootprintDeclarationId": "CFP-2024-00042"
}
]
}
Adverse Events
Negative Event (Damage/Accident)
Purpose: Record accidents, damage, or safety incidents
| Field | Value |
|---|---|
@type | ObjectEvent |
action | OBSERVE |
bizStep | inspecting |
disposition | damaged |
Sensor Report Properties:
battery:incidentSeverity- Type of incident (transport_damage, fire, etc.)battery:eventDate- When the incident occurred
Per-incident masterdata (in masterDataAvailableFor):
battery:incidentId— unique ID for this incidentbattery:incidentSeverity— Minor, Moderate, Major, Criticalbattery:inspectorId— GLN/GIAI of the inspectorbattery:recommendedAction— what to do next
Example:
{
"@context": [
"https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
"https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
],
"type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "inspecting",
"disposition": "damaged",
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"battery:incidentSeverity": "Minor",
"sensorElementList": [
{
"sensorReport": [
{
"type": "battery:stateOfHealth",
"value": 93.8,
"uom": "P1"
}
]
}
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"battery:incidentId": "INC-2025-00023",
"battery:recommendedAction": "Schedule follow-up inspection in 30 days"
}
]
}
Temperature Excursion
Purpose: Record temperature exposure outside safe limits
| Field | Value |
|---|---|
@type | ObjectEvent |
action | OBSERVE |
bizStep | inspecting |
disposition | needs_replacement or active |
Sensor Types:
battery:maximumTemperature— high temperature exposurebattery:minimumTemperature— low temperature exposureTemperature— actual temperature reading (GS1 Web Vocabulary, unprefixed)
Additional Properties:
battery:exposureDurationMinutesbattery:exceedanceThresholdminValue,maxValue,meanValue,sDev
Per-excursion masterdata (in masterDataAvailableFor):
battery:temperatureExcursionId— unique ID for this excursionbattery:exposureEndTime— duration of the excursionbattery:transportConditions— context (carrier, route, etc.)battery:estimatedImpact— assessor's note on consequence
Example:
{
"@context": [
"https://ref.openepcis.io/extensions/eu/battery/battery-context.jsonld",
"https://ref.gs1.org/standards/epcis/epcis-context.jsonld"
],
"type": "ObjectEvent",
"action": "OBSERVE",
"bizStep": "inspecting",
"disposition": "needs_replacement",
"epcList": [
"https://id.gs1.org/01/09521234000013/21/BAT2024-001"
],
"sensorElementList": [
{
"sensorReport": [
{
"type": "battery:maximumTemperature",
"value": 65.2,
"uom": "CEL",
"minValue": 52.0,
"maxValue": 65.2,
"meanValue": 58.4
},
{
"type": "Temperature",
"value": 65.2,
"uom": "CEL",
"battery:exposureDurationMinutes": 127,
"battery:exceedanceThreshold": 50
}
]
}
],
"masterDataAvailableFor": [
{
"id": "https://id.gs1.org/01/09521234000013/21/BAT2024-001",
"battery:temperatureExcursionId": "TEMP-EXC-2025-00089",
"battery:estimatedImpact": "Potential minor capacity degradation",
"battery:exposureEndTime": "2025-07-17T08:27:00.000Z"
}
]
}
Sensor Metadata
All sensor measurements should include metadata:
{
"sensorMetadata": {
"@type": "sensorMetadata",
"time": "2025-06-15T09:30:00.000Z",
"deviceID": "https://id.gs1.org/8004/9521987BMS-001",
"deviceMetadata": "https://bms-vendor.example.com/devices/BMS-3000",
"dataProcessingMethod": "https://www.iec.ch/standards/62660-1",
"bizRules": "SoH measurement per EU Battery Regulation 2023/1542"
}
}
| Field | Description |
|---|---|
time | When measurement was taken |
deviceID | GIAI URI of measuring device |
deviceMetadata | URL to device specifications |
dataProcessingMethod | Standard used for measurement |
bizRules | Business rules applied |
Unit Codes Reference
All measurements use UN/CEFACT Rec 20 codes:
| Measurement | Code | Symbol | Example |
|---|---|---|---|
| Percentage | P1 | % | SoH, SoC, Fade |
| Ampere-hour | AH | Ah | Capacity |
| Kilowatt-hour | KWH | kWh | Energy |
| Volt | VLT | V | Voltage |
| Kilowatt | KWT | kW | Power |
| Ohm | OHM | Ω | Resistance |
| Celsius | CEL | °C | Temperature |
| Kilogram | KGM | kg | Weight, CO2 |
bizStep and disposition Values
bizStep (Business Step)
| Value | Use Case |
|---|---|
commissioning | Battery creation |
inspecting | Measurements, assessments |
accepting | Ownership transfer |
notifying | Regulatory notifications |
shipping | Transport |
receiving | Receipt at destination |
disposition (Disposition)
| Value | Use Case |
|---|---|
active | Normal operation |
in_transit | Being transported |
conformant | Compliance confirmed |
damaged | Physical damage |
needs_replacement | End of service life |
Event Sequence Example
Typical battery lifecycle event sequence:
| Order | Event | bizStep | disposition |
|---|---|---|---|
| 1 | Commissioning | commissioning | active |
| 2 | Regulatory Filing | notifying | conformant |
| 3 | Carbon Footprint | inspecting | active |
| 4 | Sale/Transfer | accepting | in_transit |
| 5 | Periodic SoH | inspecting | active |
| 6 | Incident (if any) | inspecting | damaged |
| 7 | SOCE Measurement | inspecting | active |
| 8+ | Ongoing monitoring | inspecting | varies |