Extensions
EPCIS 2.0 supports user and vendor extensions at most levels of an event: at the top level, within the ilmd element, within an errorDeclaration, within sensor elements, and so on.
Extension rules:
- You must declare a namespace for every extension field. In JSON-LD, declare the namespace in the document @context, then add the prefix fields:
{ "@context": [ "https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld", { // Declare the extension namespace prefix -> URI mapping "gdst": "https://traceability-dialogue.org/epcis/" }, { "custom": "https://walmart-trace.com/epcis/custom" // Declare custom extensions } ], "type": "EPCISDocument", "schemaVersion": "2.0", "creationDate": "2026-06-12T10:15:30.000Z", "epcisBody": { "eventList": [ /* … */ ] }
} - Extension fields must not redefine or replace standard EPCIS fields.
- Receivers must ignore or pass through unknown extensions.
Global Dialog on Seafood Traceability extension
Many industry communities have standardized extension sets. The most prominent example is the Global Dialog on Seafood Traceability (GDST) extension set for seafood, which defines an interoperable seafood traceability standard built on top of EPCIS 2.0.
GDST specifies:
- A set of Critical Tracking Events (CTEs) mapped to EPCIS event types:
- Fishing/Harvest (ObjectEvent or TransformationEvent)
- Landing
- Transshipment
- Aggregation
- Processing (TransformationEvent)
- Shipping/Receiving (ObjectEvents).
- Use of the
cbvmda(CBV master data) andgdstnamespaces. - Key Data Elements (KDEs) as namespaced extension fields and ILMD entries, such as vessel data, catch area, gear type, certifications, and so on.
The following table includes a subset of common GDST key data elements. For a complete list, refer to the GDST Standard documents at traceability-dialogue.org.
| KDE field | Appears in | Description | Example |
|---|---|---|---|
| gdst:vesselName | ILMD or event extension | Name of the harvesting vessel. | FV Polaris |
| gdst:imoNumber | ILMD or event extension | IMO number of the vessel. | 9123456 |
| gdst:vesselFlagState | ILMD or event extension | Flag state (ISO 3166-1 alpha-2). | US |
| gdst:fishingGearTypeCode | ILMD or event extension | Gear type per ISSCFG code list. | 03.1.2 (mid-water trawl) |
| gdst:catchArea | ILMD or event extension | FAO major fishing area / subarea. | FAO 67 |
| gdst:productOwner | Event extension | PGLN of the party owning the product. | urn:gdst:example.org:party:owner.1 |
| gdst:harvestStartDate / gdst:harvestEndDate | ILMD | Start/end of the harvest period. | 2026-06-01 |
| cbvmda:speciesForFisheryStatisticsPurposes | ILMD | Species ASFIS 3-alpha code. | SKJ (skipjack tuna) |
| cbvmda:vesselCatchInformation | ILMD | Structured vessel/catch block (vessel ID, catch area, gear). | Refer to the following code example |
| gdst:humanWelfarePolicy | Event extension | Reference to crew welfare policy certification. | https://example.org/policies/hwp-2026 |
| gdst:certificationList | Event extension | Certifications applicable to the event (such as MSC). | Refer to the following code example |
GDST Implementation
- Event choreography: GDST prescribes which KDEs are required at which CTE. For example vessel or catch KDEs at Fishing; processing-plant identifiers and input/output linkage (TransformationEvent) at Processing; full
bizTransactionListlinkage at shipping and receiving. - Interoperable identifiers: GDST allows both GS1 identifiers (GTIN/GLN/SSCC) and non-GS1 URIs in the
urn:gdst:scheme for parties and locations without GS1 prefixes. - Data sharing: GDST adopts the EPCIS 2.0 REST query interface for partner-to-partner data exchange, and supports document-based exchange of full EPCISDocuments.
- Validation: Implementations should validate against both the EPCIS 2.0 JSON schema and the GDST-specific schema and KDE rules for each CTE.
Annotated GDST payload example
This example provides an annotated JSON payload of a fishing/harvest event.
{ "@context": [ // Standard EPCIS 2.0 JSON-LD context "https://ref.gs1.org/standards/epcis/2.0.0/epcis-context.jsonld", { // GDST extension namespace "gdst": "https://traceability-dialogue.org/epcis/", // CBV master-data namespace (used inside ilmd) "cbvmda": "urn:epcglobal:cbv:mda:" } ], "type": "EPCISDocument", "schemaVersion": "2.0", "creationDate": "2026-06-12T10:15:30.000Z", "epcisBody": { "eventList": [ { // GDST Fishing CTE is modeled as an ObjectEvent commissioning the catch "type": "ObjectEvent", // Unique event ID (required by GDST for auditability/corrections) "eventID": "urn:uuid:aa11bb22-cc33-44dd-55ee-ff6677889900", // When the catch was brought aboard "eventTime": "2026-06-05T04:10:00.000Z", "eventTimeZoneOffset": "-09:00", // ADD: the catch (a new lot) comes into existence "action": "ADD", // Class-level identification of the catch: lot of skipjack tuna, 1,200 kg "quantityList": [ { // LGTIN for the harvested lot "epcClass": "urn:epc:class:lgtin:0614141.011111.HAUL-2026-0605", // Net weight of the haul "quantity": 1200, // Kilograms (UN/CEFACT Rec 20) "uom": "KGM" } ], // GDST CTE mapping: commissioning at the fishing step "bizStep": "commissioning", "disposition": "active", // Read point: geographic coordinates of the haul (Digital Link geo or SGLN); // GDST permits a geo URI for at-sea locations "readPoint": { "id": "geo:57.5500,-155.2000" }, // The vessel as the business location after the event "bizLocation": { "id": "urn:gdst:example.org:location:vessel.polaris" }, // Party owning the product at this point (GDST KDE) "gdst:productOwner": "urn:gdst:example.org:party:pacificseafood", // Certifications relevant to this event (GDST KDE) "gdst:certificationList": { "certification": [ { // Certification scheme "gdst:certificationStandard": "MSC Fisheries Standard", // Certificate identifier "gdst:certificationIdentification": "MSC-F-12345" } ] }, // ILMD: master data describing the newly created catch lot (GDST KDEs) "ilmd": { // Species code (ASFIS 3-alpha): SKJ = skipjack tuna "cbvmda:speciesForFisheryStatisticsPurposes": "SKJ", // Structured vessel & catch information block "cbvmda:vesselCatchInformation": { // Vessel name (GDST KDE) "gdst:vesselName": "FV Polaris", // IMO number of the vessel "gdst:imoNumber": "9123456", // Flag state of the vessel (ISO 3166-1 alpha-2) "gdst:vesselFlagState": "US", // FAO catch area "gdst:catchArea": "FAO 67", // Fishing gear type (ISSCFG): purse seine "gdst:fishingGearTypeCode": "01.1.0" }, // Harvest window for the lot "gdst:harvestStartDate": "2026-06-04", "gdst:harvestEndDate": "2026-06-05", // Production method: wild capture (vs. aquaculture) "cbvmda:productionMethodForFishAndSeafoodCode": "MARINE_FISHERY" } } ] }
}Updated about 3 hours ago
Did this page help you?

