EPCIS Event Types

Complete reference for all EPCIS event types and sensor measurements in the Battery DPP

5 min read

Masterdata that travels with eventsmasterDataAvailableFor 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

FieldValue
@typeObjectEvent
actionADD
bizStepcommissioning
dispositionactive

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

FieldValue
@typeObjectEvent
actionOBSERVE
bizStepaccepting
dispositionin_transit

Required Fields:

  • sourceList with owning_party
  • destinationList with owning_party
  • bizTransactionList (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

FieldValue
@typeObjectEvent
actionOBSERVE
bizStepnotifying
dispositionconformant

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

FieldValue
@typeObjectEvent
actionOBSERVE
bizStepinspecting
dispositionactive

Sensor Reports:

TypeDescriptionUnit
battery:stateOfHealthCapacity-based SoHP1 (%)
battery:stateOfChargeCurrent charge levelP1 (%)
battery:remainingCapacityCurrent max capacityAH
battery:remainingEnergyCurrent max energyKWH
battery:cycleCountFull cycles completed-
battery:capacityFadeCapacity degradationP1 (%)
battery:internalResistancePack resistanceOHM
battery:energyThroughputCumulative energyKWH

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 TypeDescriptionUnit
battery:stateOfCertifiedEnergySOCE percentageP1 (%)
battery:capacityThroughputCumulative capacityAH
battery:powerFadePower degradationP1 (%)
battery:roundTripEfficiencyFadeRTE degradationP1 (%)
battery:selfDischargeRateSelf-discharge rateP1 (%/month)

Per-instance masterdata (in masterDataAvailableFor):

  • battery:certifiedUsableEnergy, battery:remainingUsableEnergy — declared values for this unit at this measurement
  • battery:exhaustionThreshold, battery:expectedRemainingCycles — design + projection for this unit
  • battery: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 TypeDescriptionUnit
battery:carbonFootprintTotalTotal lifecycle CFPKGM (kg CO2e/kWh)
battery:carbonFootprintRawMaterialExtractionRaw material phaseKGM
battery:carbonFootprintProductionManufacturing phaseKGM
battery:carbonFootprintDistributionDistribution phaseKGM
battery:carbonFootprintRecyclingEnd-of-life phaseKGM

Per-declaration masterdata (in masterDataAvailableFor):

  • battery:carbonFootprintPerformanceClass (A–E) for this declared footprint
  • battery:carbonFootprintStudyUrl — link to the study supporting this declaration
  • battery:carbonFootprintDeclarationId — declaration record ID
  • battery: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

FieldValue
@typeObjectEvent
actionOBSERVE
bizStepinspecting
dispositiondamaged

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 incident
  • battery:incidentSeverity — Minor, Moderate, Major, Critical
  • battery:inspectorId — GLN/GIAI of the inspector
  • battery: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

FieldValue
@typeObjectEvent
actionOBSERVE
bizStepinspecting
dispositionneeds_replacement or active

Sensor Types:

  • battery:maximumTemperature — high temperature exposure
  • battery:minimumTemperature — low temperature exposure
  • Temperature — actual temperature reading (GS1 Web Vocabulary, unprefixed)

Additional Properties:

  • battery:exposureDurationMinutes
  • battery:exceedanceThreshold
  • minValue, maxValue, meanValue, sDev

Per-excursion masterdata (in masterDataAvailableFor):

  • battery:temperatureExcursionId — unique ID for this excursion
  • battery:exposureEndTime — duration of the excursion
  • battery: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"
  }
}
FieldDescription
timeWhen measurement was taken
deviceIDGIAI URI of measuring device
deviceMetadataURL to device specifications
dataProcessingMethodStandard used for measurement
bizRulesBusiness rules applied

Unit Codes Reference

All measurements use UN/CEFACT Rec 20 codes:

MeasurementCodeSymbolExample
PercentageP1%SoH, SoC, Fade
Ampere-hourAHAhCapacity
Kilowatt-hourKWHkWhEnergy
VoltVLTVVoltage
KilowattKWTkWPower
OhmOHMΩResistance
CelsiusCEL°CTemperature
KilogramKGMkgWeight, CO2

bizStep and disposition Values

bizStep (Business Step)

ValueUse Case
commissioningBattery creation
inspectingMeasurements, assessments
acceptingOwnership transfer
notifyingRegulatory notifications
shippingTransport
receivingReceipt at destination

disposition (Disposition)

ValueUse Case
activeNormal operation
in_transitBeing transported
conformantCompliance confirmed
damagedPhysical damage
needs_replacementEnd of service life

Event Sequence Example

Typical battery lifecycle event sequence:

OrderEventbizStepdisposition
1Commissioningcommissioningactive
2Regulatory Filingnotifyingconformant
3Carbon Footprintinspectingactive
4Sale/Transferacceptingin_transit
5Periodic SoHinspectingactive
6Incident (if any)inspectingdamaged
7SOCE Measurementinspectingactive
8+Ongoing monitoringinspectingvaries