Skip to content
This repository has been archived by the owner on Oct 21, 2021. It is now read-only.

EPCIS Object Delete

Josh Horton edited this page Feb 21, 2020 · 2 revisions

EPCIS Object delete (Decommission Event)

This page describes the XML to JSON mappings for an Object delete (Decommission Event).

Note: ILMD (Instance/Lot Master Data) also generates (layer: 'object', label: 'lotILMD')

GS1 to JSON mapping

This section shows the GS1 XML to JSON mappings. JSON keys are on the left, and the XPaths to the corresponding tag in GS1 XML are on the right, separated by a colon character (:).

// Context Node: /epcis:EPCISDocument/EPSICBody/EventList/ObjectEvent
{
"assetIdUri": "urn:ibm:provenance:asset:transaction:order:<string>:default:default:<string>",
"organization": "<string>",
"layer": "event",
"label": "decommission",
"data":

{
  "eventID" : "baseExtension/eventID",
  "eventTime" : "eventTime",
  "generationInfo" : {
    "isConnectorGenerated" : "true | false",
    "generatedFromEventID" : ""
  },
  "recordTime" : "recordTime",
  "eventTimeZoneOffset": "eventTimeZoneOffset",
  "epcList" : [
    "epcList/epc",
    ...
  ],
  // Context Node: extension/quantityList
  "quantityList" : [
    {
      "epcClass" : "epcClass",
      "quantity" : "quantity",
      "quantity_uom" : "uom",
    },
    ...
  ],
  "flatEPCList" : [
    "extension/quantityList/epcClass",
    "epcList/epc",
    ...
  ],
  "flatGTINList" : [
    "extension/quantityList/epcClass",
    ...
  ],
  "action" : "DELETE",
  "bizStep" : "bizStep",
  "disposition" : "disposition",
  "readPoint" : "readPoint/id",
  "bizLocation" : "bizLocation",
  "sourceList" : [
    {
      "type" : "sourceList/source/@type",
      "source" : "sourceList/source"
    },
    ...
  ],
  "destinationList" : [
    {
      "type" : "destinationList/destination/@type",
      "destination" : "destinationList/destination",
    },
    ...
  ],
  // Context Node: bizTransactionList
  "bizTransactionList" : [
    {
      "type" : "bizTransaction/@type",
      "bizTransaction" : "bizTransaction"
    },
    ...
  ]
}

Input

The following example shows a valid GS1 XML file for input. The JSON output follows.

Note: The following fields have been removed for GDPR compliance:

  1. StandardBusinessDocumentHeader.Sender.ContactInformation (all sub-elements)
  2. StandardBusinessDocumentHeader.Receiver.ContactInformation (all sub-elements)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<epcis:EPCISDocument
        xmlns:epcis="urn:epcglobal:epcis:xsd:1"
        xmlns:cbvmda="urn:epcglobal:cbv:mda"
        xmlns:example="http://ns.example.com/epcis"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" creationDate="2005-07-11T11:30:47.0Z" schemaVersion="1.2">
    <EPCISBody>
        <EventList>
            <ObjectEvent>
                <eventTime>2013-06-08T14:58:56.591Z</eventTime>
                <!--WHEN-->
                <!--MANDATORY. UTC time (ISO 8601) when event occurred.-->
                <eventTimeZoneOffset>+02:00</eventTimeZoneOffset>
                <!--OPTIONAL. Time-zone of location, as an offset from UTC.-->
                <baseExtension>
                    <eventID>urn:uuid:string</eventID>
                    <!--OPTIONAL. Unique ID for the event. If not specified, it will be assigned by the system and returned in the body of the response.-->
                </baseExtension>
                <epcList>
                    <epc>urn:epc:id:sscc:string.string</epc>
                    <epc>urn:epc:id:sgtin:string.string.string</epc>
                    <!--Additional entries go here-->
                </epcList>
                <!--WHAT-->
                <!--MANDATORY that either epcList or quantityList (see below) be present.-->
                <!--List of decommissioned instance-level objects (SSCC, SGTIN).-->
                <!--LGTINs and other class-level objects go in quantityList (see below)-->
                <!--General SGTIN syntax: urn:epc:id:sgtin:CompanyPrefix.ItemRefAndIndicator.SerialNumber-->
                <!--CompanyPrefix.ItemRefAndIndicator ahould have 13 digits (without counting dots).-->
                <!--CompanyPrefix is equal to the CompanyPrefix derived from GTIN-14.-->
                <!--ItemRefAndIndicator is formed by concatenating the first digit (Indicator) from GTIN-14 with ItemRef digits from GTIN-14.-->
                <!--GTIN-14 check digit is dropped.-->
                <!--GTIN-12 or GTIN-13 should first be converted to GTIN-14 by adding leading 0s before above conversion.-->
                <!--General EPC SSCC syntax: urn:epc:id:sscc:CompanyPrefix.SerialRefAndExtension-->
                <!--EPC SSCC is 17 digits-->
                <!--CompanyPrefix is equal to the CompanyPrefix in GS1 SSCC-->
                <!--SerialReferenceAndExtension is formed by concatenating the first digit (Extension) from GS1 SSCC with SerialRef digits from GS1 SSCC.-->
                <!--GS1 SSCC check digit is dropped.-->
                <action>DELETE</action>
                <!--MANDATORY. EPCIS action. Don't change-->
                <bizStep>urn:epcglobal:cbv:bizstep:decommissioning</bizStep>
                <!--OPTIONAL. From http://apps.gs1.org/GDD/Pages/clDetails.aspx?semanticURN=urn:gs1:gdd:cl:EPCISBusinessStep&release=1.-->
                <!--The business step that this event was a part of.-->
                <disposition>urn:epcglobal:cbv:disp:inactive</disposition>
                <!--OPTIONAL. From http://apps.gs1.org/GDD/Pages/clDetails.aspx?semanticURN=urn:gs1:gdd:cl:EPCISDisposition&release=1.-->
                <!--The condition of the objects after this event.-->
                <readPoint><id>urn:epc:id:sgln:string.string.integer</id></readPoint>
                <!--OPTIONAL: SGLN for point at which the decommissioning occurred. Used if multiple facilities GLNs (look below for the Mandatory GLN).-->
                <!--General syntax of SGLN: urn:epc:id:sgln:CompanyPrefix.LocationReference.Extension-->
                <!--CompanyPrefix.LocationReference are the first 12 digits of GLN (13th check digit is not included).-->
                <!--Extension can be a single 0 digit (denoting no extension), or can be any number of digits without leading zeros-->
                <bizLocation><id>urn:epc:id:sgln:string.string.integer</id></bizLocation>
                <!--WHERE-->
                <!--MANDATORY: SGLN (extensible global location number) for the business location where the event occurred.-->
                <!--See above for SGLN format-->
                <bizTransactionList>
                    <bizTransaction type="urn:epcglobal:cbv:btt:prodorder">urn:epcglobal:cbv:bt:string:string </bizTransaction>
                    <bizTransaction type="urn:epcglobal:cbv:btt:desadv">urn:epcglobal:cbv:bt:string:string</bizTransaction>
                    <!--Additional entries go here-->
                </bizTransactionList>
                <!--WHY-->
                <!--OPTIONAL. From Page 28 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-1-r-2017-05-05.pdf-->
                <!--List of business transactions associated with this event.-->
                <!--The example above shows a production order and a despatch advice (ASN)-->
                <!--General syntax: urn:epcglobal:cbv:bt:GLN:TransactionID-->
                <!--Where GLN is the 13-digit GLN of the party that defines the transaction.-->
                <!--NOTE: Even though this field is optional, our provenance graph uses events as backbones while tracing.-->
                <!--Thus transaction linkages to EPCIS events are required if the client wants correct transaction ordering during trace queries.-->
                <extension>
                    <quantityList>
                        <quantityElement>
                            <epcClass>urn:epc:class:lgtin:string.string.string</epcClass>
                            <!--MANDATORY for quantityElement. Class-level EPCs like LGTINs. See note below for description.-->
                            <quantity>10</quantity>
                            <!--MANDATORY for quantityElement.-->
                            <!--Meaning: 10 cases of LGTIN '0614141.107346' belonging to lot '101'-->
                            <uom>CS</uom>
                            <!--MANDATORY for quantityElement. Item quantity unit of measurement. "CS" = Case. Also valid: KG, KGM, EA.-->
                            <!--From https://www.unece.org/fileadmin/DAM/cefact/recommendations/rec20/rec20_rev3_Annex2e.pdf.-->
                        </quantityElement>
                        <!--Additional quantityElement entries go here.-->
                    </quantityList>
                    <!--WHAT-->
                    <!--MANDATORY that either epcList or quantityList be present.-->
                    <!--List of decommissioned class-level objects like LGTINS (GTIN+lot) along with their quantity and unit of measure.-->
                    <!--LGTINs should be constructed to be as unique as possible; by concatenating time/dtae of creation with object id, e.g.-->
                    <!--General LGTIN syntax: urn:epc:id:sgtin:CompanyPrefix.ItemRefAndIndicator.Lot-->
                    <!--CompanyPrefix.ItemRefAndIndicator ahould have 13 digits (without counting dots).-->
                    <!--CompanyPrefix is equal to the CompanyPrefix derived from GTIN.-->
                    <!--ItemRefAndIndicator is formed by concatenating the first digit (Indicator) from GTIN with ItemRef digits from GTIN.-->
                    <!--GTIN check digit is dropped.-->
                    <!--If a GTIN (without lot) is to be represented, the following syntax is used:-->
                    <!--From Page 35 of https://www.gs1.org/sites/default/files/docs/epc/CBV-Standard-1-2-1-r-2017-05-05.pdf:-->
                    <!--urn:epc:idpat:sgtin:CompanyPrefix.ItemRefAndIndicator.* where -->
                    <!--CompanyPrefix.ItemRefAndIndicator is 13 digits as above.-->
                    <sourceList>
                        <source type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:string.string.integer</source>
                        <!--Additional source entries go here.-->
                        <!--OPTIONAL: SGLN of the facility or facilities that goods are being sent from.-->
                        <!--MANDATORY if this event involves a transfer of goods.-->
                    </sourceList>
                    <destinationList>
                        <destination type="urn:epcglobal:cbv:sdt:owning_party">urn:epc:id:sgln:string.string.integer</destination>
                        <!--Additional destination entries go here.-->
                        <!--OPTIONAL: SGLN of the receiving facility or facilities.-->
                        <!--MANDATORY if this event involves a transfer of goods. -->
                    </destinationList>
                </extension>
            </ObjectEvent>
        </EventList>
    </EPCISBody>
</epcis:EPCISDocument>

Output

The following example shows the JSON output from the input GS1 XML file above.

  {
    "eventTime": "2013-06-08T14:58:56.591Z",
    "eventTimeZoneOffset": "+02:00",
    "epcList": [
      "urn:epc:id:sscc:string.string",
      "urn:epc:id:sgtin:string.string.string"
    ],
    "action": "DELETE",
    "bizStep": "urn:epcglobal:cbv:bizstep:decommissioning",
    "disposition": "urn:epcglobal:cbv:disp:inactive",
    "readPoint": "urn:epc:id:sgln:string.string.integer",
    "bizLocation": "urn:epc:id:sgln:string.string.integer",
    "bizTransactionList": [
      {
        "bizTransaction": "urn:epcglobal:cbv:bt:string:string ",
        "type": "urn:epcglobal:cbv:btt:prodorder"
      },
      {
        "bizTransaction": "urn:epcglobal:cbv:bt:string:string",
        "type": "urn:epcglobal:cbv:btt:desadv"
      }
    ],
    "quantityList": [
      {
        "epcClass": "urn:epc:class:lgtin:string.string.string",
        "quantity": "10",
        "quantity_uom": "CS"
      }
    ],
    "sourceList": [
      {
        "source": "urn:epc:id:sgln:string.string.integer",
        "type": "urn:epcglobal:cbv:sdt:owning_party"
      }
    ],
    "destinationList": [
      {
        "destination": "urn:epc:id:sgln:string.string.integer",
        "type": "urn:epcglobal:cbv:sdt:owning_party"
      }
    ],
    "flatEPCList": [
      "string.string.string",
      "string.string.string"
    ],
    "flatGTINList": [
      "string"
    ],
    "generationInfo": {
      "isConnectorGenerated": "false"
    },
    "eventID": "urn:uuid:string"
  }
}
Clone this wiki locally