Aggregation APIs
Why do I use these messages?
Use these messages to capture the aggregation of serial numbers to a parent container.
Which reports do these messages generate?
These messages generate 911 - Unit Pack and 914 - Unit Append reports in the Russia Compliance application if the items being aggregated have a target market of Russia. TraceLink submits the appropriate report to MDLP, based on which report MDLP is prepared to accept.
ESM Aggregation (EPCIS v1.2)

Message Type: SOM_ESM_AGGREGATE
Info Exchange Display Name: ESM Aggregate


- Ex: urn:epc:id:sgtin:415001647778.0.100000000022
- Format: urn:epc:id:sgtin:[company prefix].[indicator digit][item ref].[serial number]
Data Element | Occurs Length |
Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
epcis:EPCISDocument | – |
1…1- | Required. EPCIS message root element. | ||||||
@schemaVersion | 0/* |
1…1Decimal | Required. The version of the EPCIS schema used to populate the EPCIS document elements. Must equal 1.2 .1 |
||||||
@creationDate | 1/* |
1…1DateTime | Required. Date the message was created in YYYY-MM-DDTHH:MM:SS:mmZ format.2 | ||||||
EPCISHeader | – |
0…1- | Required. The XML file control header. | ||||||
sbdh:StandardBusinessDocumentHeader | – |
1…1- | Required. Business header information including EPCIS Header Version, Sender, and Receiver information, along with the document identification. | ||||||
sbdh:HeaderVersion | 0/* |
1…1String | Required. Version of the Standard Business Document Header (SBDH). The HeaderVersion must be set to 1.0 .3 |
||||||
sbdh:Sender | – |
1…*- | Required. A unique identification key for the Sender party of the message, representing the organization that created the standard business document. The Sender element must be used only once with GS1 XML messages. | ||||||
sbdh:Identifier | 1/* |
1…1String | Required. The value of the Identifier element may be a GLN, SGLN, or any other supported business party type.4 Send SGLN and all other party types with the GS1-conformant uri prefix, for example:
![]() |
||||||
@Authority | 1/* |
1…1String | Required. The sender identifier type. The Authority was previously expected to be set to GLN for GS1 XML messages. An update made in December 2016 changed this to accept additional values.5See the BusinessAndLocationId enumeration list for valid values. |
||||||
sbdh:Receiver | – |
1…*- | Required. Indicates a unique identification key for the direct Receiver party of the message, representing the organization that receives the standard business document. The Receiver element is used only once with GS1 XML messages. | ||||||
sbdh:Identifier | 1/* |
1…1String | Required. The value of the Identifier element may be a GLN, SGLN, or any other supported business party type.6 Send SGLN and all other party types with the GS1-conformant uri prefix, for example:
![]() |
||||||
@Authority | 1/* |
1…1String | Required. The receiver identifier type. The Authority was previously expected to be set to GLN for GS1 XML messages. An update made in December 2016 changed this to accept additional values.7See the BusinessAndLocationId enumeration list for valid values. |
||||||
sbdh:DocumentIdentification | – |
1…1- | Required. Contains the identification group for the message. | ||||||
sbdh:Standard | 0/* |
1…1String | Required. Name of the document standard contained in the file or message. The standard value for this field is EPCglobal .8 |
||||||
sbdh:TypeVersion | 0/* |
1…1String | Required. Reflects the version of the document included. This is the complete version of the document itself and is different from the HeaderVersion as these are hard-coded values. The TypeVersion is set to 1.0 .9 |
||||||
sbdh:InstanceIdentifier | 1/* |
1…1String | Required. Reference information that uniquely identifies this instance of the Standard Business Document between the Sender and the Receiver. This identifier confirms this document as being distinct from others.10 | ||||||
sbdh:Type | 0/* |
1…1String | Required. Document type. Value is set to Events for an aggregation event.11 |
||||||
sbdh:CreationDateAndTime | 0/* |
1…1DateTime | Required. The date and time of the SBDH document's creation. GMT create date and time for the EPCIS message. The system expects the Z to be appended; however, if it is not included, the system assumes that the time is GMT and therefore appends the Z .12 |
||||||
EPCISBody | – |
1…1- | Required. Contains all of the EPCIS events for the aggregation message. | ||||||
EventList | – |
1…1- | Required. The EventList must contain one or more AggregationEvent data elements for an aggregation message. | ||||||
AggregationEvent | – |
0…*- |
The AggregationEvent is used in the EventList and indicates an aggregation event when:
|
||||||
eventTime | 1/* |
1…1DateTime | Required. The time stamp of date/time when the event occurred.
Must include a time zone indicator as specified in Section
9.5 of [EPCIS1.0.1].
The system expects the Z to be appended; however if it is not included, the system assumes that the time is GMT and therefore appends the Z.13 |
||||||
eventTimeZoneOffset | 1/* |
1…1String | Required. The time zone offset in the place where the event occurred, consistent with what choice was made for eventTime. A time offset is an amount of time subtracted from or added to UTC (Coordinated Universal Time) to get the current civil time - whether it is standard time or daylight saving time, per Section 7.2.8 of [EPCIS1.0.1].14 | ||||||
parentID | 0/* |
0…1AnyURI | Identifier of the parent container in EPC Pure Identity URI format (e.g. for an item-to-case aggregation, the EPC is of the case; for a case-to-pallet aggregation, the EPC is of the pallet). See EPC Pure Identifier Format Examples.15 | ||||||
childEPCs | – |
1…1- | Required. Contains a list of identifiers, including the child items, in the parent container in EPC Pure Identity URI format (e.g. for an item-to-case aggregation, the EPCs are of the items; for a case-to-pallet aggregation, the EPCs is of the cases). | ||||||
epc | 1/* |
1…*String | Required. Identifier of the child items in the parent container in EPC Pure Identity URI format. See EPC Pure Identifier Format Examples.16 | ||||||
action | 0/* |
1…1String | Required. The action taken in the message. The action value must equal ADD for an aggregation event.17See the ActionType enumeration list for valid values. |
||||||
bizStep | 0/* |
1…1String | Required. The business step taken in the event. The bizStep value must equal urn:epcglobal:cbv:bizstep:packing for an aggregation event.18 |
||||||
disposition | 0/* |
1…1String | Required. The status of the message. It is grouped with the bizStep and action fields to define the message event. The disposition value must equal urn:epcglobal:cbv:disp:in_progress for an aggregation event.19 |
||||||
readPoint | – |
0…1- | Location where the event occurred, i.e. the warehouse SGLN location ID and storage location (shelf, bin, etc.) in URN format, that recorded the aggregation event. | ||||||
id | 0/* |
1…1AnyURI | The SGLN EPC of the location from where the event occurred. This may be a site-level SGLN, or a finer-grain location identifier.20 | ||||||
bizLocation | – |
1…1- | Required. Location of item after the event has occurred. | ||||||
id | 1/* |
1…1AnyURI | Required. The SGLN EPC of the location from where the event occurred. This may be a site-level SGLN or a finer-grain location identifier.21 | ||||||
extension | – |
0…1- | Not used - GS1 Reserved. | ||||||
tl:locationId | 0/* |
0…1String | Location to associate the aggregation.22 | ||||||
@type | 0/* |
0…1String | Required. Attribute that identifies the location types.23 See the LocationIdType enumeration list for valid values. |
||||||
tl:aggregationEventExtensions | – |
0…1- | Contains the extensions used for the aggregation event. | ||||||
tl:packedStatus | 0/* |
0…1String | Packed status of the item or container using the supported enumeration values.24 See the PackedStatus enumeration list for valid values. |
||||||
tl:quantity | – |
0…*Integer | The quantity of child serial numbers aggregated to the parent container in this aggregation event.25 | ||||||
tl:resetContainerAggregation | – |
0…1Boolean | Triggers backend processing on aggregation that will disaggregate existing child items from parent container that are not present in the new childEPC list, and aggregate new child items that are present in the new childEPC list.
Default value is If this field is not populated, TL will not trigger the backend reset of the aggregation. The logic will only be triggered if resetContainerAggregation is set to |
||||||
tl:extensionField | – |
0…*- | Customer extension point to
pass in 1 or more name/value pairs containing additional data attributes not
already supported in this message. If this element group is populated, both the FieldName and FieldValue elements must be populated. ![]() |
||||||
tl:fieldName | 1/* |
1…1String | Required. Field name provided by the trade partner that will be receiving the mapped outbound message. The field name must match the field name provided by the trade partner exactly, including case, so that it can be properly detected in the outbound mapping.27 | ||||||
tl:fieldValue | 1/* |
1…1String | Required. Field value content that corresponds to the FieldName.28 |

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <epcis:EPCISDocument xmlns:epcis="urn:epcglobal:epcis:xsd:1" xmlns:tl="http://epcis.tracelink.com/ns" xmlns:sbdh="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" xmlns:epcglobal="urn:epcglobal:xsd:1" schemaVersion="1.2" creationDate="2018-04-30T22:08:02Z"> <EPCISHeader> <sbdh:StandardBusinessDocumentHeader> <sbdh:HeaderVersion>1.0</sbdh:HeaderVersion> <sbdh:Sender> <sbdh:Identifier Authority="GLN">6667771013655</sbdh:Identifier> </sbdh:Sender> <sbdh:Receiver> <sbdh:Identifier Authority="GLN">8887771013655</sbdh:Identifier> </sbdh:Receiver> <sbdh:DocumentIdentification> <sbdh:Standard>EPCglobal</sbdh:Standard> <sbdh:TypeVersion>1.0</sbdh:TypeVersion> <sbdh:InstanceIdentifier>2019-06-14T18:45:20.0Z</sbdh:InstanceIdentifier> <sbdh:Type>Events</sbdh:Type> <sbdh:CreationDateAndTime>2019-06-14T18:45:20.0Z</sbdh:CreationDateAndTime> </sbdh:DocumentIdentification> </sbdh:StandardBusinessDocumentHeader> </EPCISHeader> <EPCISBody> <EventList> <AggregationEvent> <eventTime>2019-06-14T18:45:20.0Z</eventTime> <eventTimeZoneOffset>-05:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.0401034.00200000034</parentID> <childEPCs> <epc>urn:epc:id:sgtin:005434.40000000019</epc> </childEPCs> <action>ADD</action> <bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <readPoint> <id>urn:epc:id:sgln:6667771.01365.0</id> </readPoint> <bizLocation> <id>urn:epc:id:sgln:6667771.01365.0</id> </bizLocation> <tl:locationId type="DUNS">810040867</tl:locationId> <tl:aggregationEventExtensions> <tl:packedStatus>FULL</tl:packedStatus> <tl:quantity>1000</tl:quantity> <tl:resetContainerAggregation>false</tl:resetContainerAggregation> <tl:extensionField> <tl:fieldName>NDC_CODE</tl:fieldName> <tl:fieldValue>12345678901</tl:fieldValue> </tl:extensionField> </tl:aggregationEventExtensions> </AggregationEvent> </EventList> </EPCISBody> </epcis:EPCISDocument>

Data Element | Error Message | Description |
---|---|---|
Class 1 | ||
action | Action ADD is required for is required for the AggregationEvent !!! | The error occurs if the source does not equal "ADD". |
bizLocation | id | Event location in the aggregation event is required !!! | The error occurs if the source is empty or null. |
bizStep | bizStep urn:epcglobal:cbv:bizstep:packing is required for the AggregationEvent !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:bizstep:packing". |
EventList | At least one object for aggregation is required !!! | The error occurs if no Object Event is present. |
tl:locationId | @type | Valid location identifier type is required if location ID is populated !!! | The error occurs if the source is empty or null, or is not a valid value from the enumeration list. |
disposition | Disposition urn:epcglobal:cbv:disp:in_progress is required for the AggregationEvent !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:disp:in_progress". |
epc | Invalid EPC format !!! | The error occurs if the source could not be translated. |
Invalid EPC format !!! | The error occurs if the source is invalid. | |
parentID | Invalid EPC format !!! | The error occurs if the source cannot be translated. |
Invalid EPC format !!! | The error occurs if the source is invalid. | |
sbdh:Receiver | sbdh:Identifier | @Authority | Valid Receiver/Identifier Authority is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
sbdh:Sender | sbdh:Identifier | @Authority | Valid Sender/Identifier Authority is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
tl:fieldName | Field name is required if ExtensionField group present in source !!! | The error occurs if the source is empty or null. |
tl:fieldValue | Field value is required if ExtensionField group present in source !!! | The error occurs if the source is empty or null. |
Class 2 | ||
- | - | - |
Class 3 | ||
The following is thrown for all Class 3 errors: “INTERNALERROR=Internal error from server [server details].” Please contact Support if this error is encountered. |
Aggregate (SOAP)

Guidelines
When sending multiple aggregation events (i.e. aggregations, disaggregations, or a combination thereof) at the same time, use the Aggregation Update message instead of individual Aggregation or Disaggregation messages.

The following data is sent in the request to TraceLink:
Data Element | Occurs Length |
Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
soapenv:Envelope | - |
1...1- | Required. SOAP Envelope root element. | ||||||
soapenv:Header | - |
1...1- | Required. SOAP Message Header. Not used by TraceLink. | ||||||
soapenv:Body | - |
1...1- | Required. SOAP Message Body. | ||||||
urn:Aggregate | - |
1...1- | Required. Aggregate Message. | ||||||
AggregateRequest | - |
0...1- |
Required. The aggregate request message to associate child serial numbers to a parent container. See the Strict element at the bottom of the table for important configuration information.
|
||||||
Container | - |
1...1- | Required. Parent container serial information. If the container is specified, all items must currently be a child of the specified container. | ||||||
@sn | 1/* |
1...1String | Required. The parent container's serial number. See Serial Number Data Examples. | ||||||
@namespace | 1/* |
0...1String | Not currently supported by TraceLink. Leave this field blank. | ||||||
Items | - |
1...1- | Required. Child serial information. | ||||||
Item | - |
1...*- | Required. A list of one or more child serial numbers to aggregate to the parent container's serial number. | ||||||
@sn | 1/* |
1...1String | Required. A child serial number. See Serial Number Data Examples. | ||||||
@namespace | 1/* |
0...1String | Not currently supported by TraceLink. Leave this field blank. | ||||||
EventDateTime | - |
0...1Date | The date and time of the aggregation event in XSD Date format in GMT. If omitted, the system will record the current date-time. | ||||||
LocationType | 1/* |
0...1String |
The type of location where the event occurred. See the LocationId enumeration list for valid values. |
||||||
Location | 1/* |
0...1String |
The site-level location identifier where the event occurred. ![]() 8888882.02867.0 instead of urn:epc:id:sgln:8888882.02867.0 typically found in
EPCIS events). |
||||||
Strict | - |
1...1Boolean |
Required. A flag that determines if the system performs an implicit disaggregation and then aggregates the items:
|
||||||
ResetAggregation | - |
0...1Boolean |
A flag indicating to disaggregate all existing items in a container and aggregate the new set of items into that container.
|
Example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:tracelink:soap"> <soapenv:Header/> <soapenv:Body> <urn:Aggregate> <AggregateRequest> <Container sn="00008820200000047506"/> <Items> <Item sn="015088202503022521100000090109"/> <Item sn="015088202503022521100000090110"/> </Items> <EventDateTime>2015-06-01T17:10:16Z</EventDateTime> <LocationType>SGLN</LocationType> <Location>8888882.02867.0</Location> <Strict>false</Strict> </AggregateRequest> </urn:Aggregate> </soapenv:Body> </soapenv:Envelope>
Errors
Exception Code | Exception Message |
---|---|
AGGREGATIONUOMFAILURE | Cannot aggregate serial number <serial number> with UOM <unit of measure> into serial number <serial number> with UOM <unit of measure>. |
ALREADYAGGREGATED | Serial number <serial number> is already aggregated to <serial number>. |
BADAGGREAGTEDATE | Operation could not be performed because event time stamp is earlier than the commission date for serial number <serial number>. |
BADITEMSTATE | Cannot perform operation on serial number <serial number> with item state <item state> This operation can only be performed when the serial number is <item state>. |
EVENTTIMEAFTERNOW | Event time stamp must not be in the future. |
EVENTTIMEBEFORELASTEVENT | Event time stamp is earlier than the last event for serial number <serial number>. |
INTERNALERROR | Found more than one serial number for <serial number>. |
INTERNALERROR | Internal error from server: <server information>. |
NOTCOMMISSIONED | Serial Number <serial number> is not commissioned. |
NOTCOMMISSIONEDLOCATION | Serial Number <serial number> was not commissioned at this location. |
NOTVALIDLOCATION | Location <location> was not valid for serial number <serial number>. |
SNNOTFOUND | Serial Number <serial number> does not exist. |
SOMDUPLICATESNS | The following serial numbers were listed more than once: <serial number>. |

Guidelines
The following data is included in the message response:
Data Element | Occurs Length |
Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
S:Envelope | - |
1...1- | Required. SOAP Envelope root element. | |||||||||
S:Body | - |
1...1- | Required. SOAP Message Body. | |||||||||
ns2:AggregateResponse | - |
1...1- | Required. Aggregate response message. | |||||||||
TLResponse | - |
0...1- | Required. The TraceLink response. | |||||||||
Success | - |
0...1- | Required. Indicates if the Aggregation request successfully processed.29 | |||||||||
ExceptionReturn | - |
0...1- | Conditionally required if Success = false ; omitted otherwise. Error
information. |
|||||||||
CallException | - |
1...*- | Required. Error information including the exception code and error message if available. | |||||||||
ExceptionCode | 0/* |
0...1String | Required. Error code. | |||||||||
ExceptionMessage | 0/* |
0...1String | Conditionally required if error condition is available. Message that further describes error condition. |
Example
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns2:AggregateResponse xmlns:ns2="urn:tracelink:soap" xmlns:ns3="http://tracelink.com/som"> <TLResponse> <Success>true</Success> </TLResponse> </ns2:AggregateResponse> </S:Body> </S:Envelope>
Aggregation Update (XML)

Use this message to capture both aggregation and disaggregation events simultaneously. If the items being disaggregated have a Russia target market, this message initiates the
Message Type: SOM_AGGREGATE_UPDATE
Info Exchange Display Name: Aggregate Update

The MDLP Bulk API currently has a limit of 20 events per message.
Data Element | Occurs Length |
Type | Description | |||||
---|---|---|---|---|---|---|---|---|
som:SOMAggregationUpdateMessage | - |
1...1- |
Required. The TL XML message root element. |
|||||
som:ControlFileHeader | - |
1...1- | Required. The message document's header information. | |||||
cmn:FileSenderNumber | 1/20 |
1...1String | Required. The company identifier of the file’s sender.30 | |||||
cmn:FileReceiverNumber | 1/20 |
1...1String | Required. The company identifier of the file’s recipient.31 | |||||
cmn:FileControlNumber | 1/* |
1...1String | Required. The message’s unique file control ID number. A file control ID number is mandatory for all messages.32 | |||||
cmn:FileDate | 1/* |
1...1Date | Required. The date that the message is sent in YYYY-MM-DD format. Date and times must be in GMT.33 | |||||
cmn:FileTime | 1/* |
1...1Time | Required. Time file generated in XML in HH:MM:SSZ format. The system expects the Z to be appended; however, if it is not included, the system assumes that the time is GMT and therefore appends the Z .34 |
|||||
som:MessageBody | - |
1...1- |
Required. Aggregation Update message details. |
|||||
choice%1 | - |
1...*- |
Required. Looping choice element. At least one instance of either cmn:Aggregation or cmn:Disaggregation is required. |
|||||
cmn:Aggregation | - |
0...1- |
Conditionally required if cmn:Disaggregation is not present. Aggregation group header. |
|||||
cmn:EventDateTime | 0/* |
1...1DateTime |
Required. Timestamp of the date and time of the product release with the UTC time zone indicator in YYYY-MM-DDThh:mm:ss.sZ format.35 |
|||||
cmn:EventTimeZoneOffset | 6/6 |
1...1String |
Required. The time zone offset in effect where the packaging occurs. Default value is "+00:00".36 |
|||||
cmn:EventLocation | 0/34 |
1...1String |
Required. Business or location identifier for the entity that is importing the products.37 |
|||||
cmn:EventLocationType | 1/* |
1...1String |
Required. Business or location type for the entity that is importing the product.38 See the BusinessAndLocationId enumeration list for valid values. |
|||||
cmn:PlantLocationId | 0/34 |
0…1String |
Plant location identifier if present.39 |
|||||
cmn:ProductionLineId | 0/* |
0…1String |
The name of the production line where the packaging occurs.40 |
|||||
cmn:LineManagerName | 0/* |
0…1String |
The name of the line or production manager who is on shift when the batch is produced.41 |
|||||
cmn:ParentSerial | 1/* |
1...1String |
Required. Parent serial number for aggregation expressed in GS1 Application Identifier format, without parentheses, for the AI keys. AI(01)(21) formatted serial numbers for GTINs or AI(00) formatted serial number for SSCCs, without parentheses. Express non-GS1 serial numbers (e.g. China) in native format.42 |
|||||
@companyPrefix | 0/* |
0…1String |
Conditionally required if commissioning a new SSCC. The GS1 Company Prefix used in GTIN-14 and SSCC serial numbers. |
|||||
@filterValue | 0/* |
0…1String |
Conditionally required if commissioning a new SSCC. The filter value used in GTIN-14 and SSCC serial numbers. |
|||||
@format | 0/* |
0…1String |
Conditionally required if commissioning a new SSCC. Identifies the serial number format. See the Format enumeration list for valid values. |
|||||
cmn:PackedStatus | 0/* |
0…1String |
The packed status of the item or container.43 See the PackedStatus enumeration list for valid values. |
|||||
cmn:PackagingLevel | 0/* |
0…1String |
The packaging level of the item.44 See the PackagingLevel enumeration list for valid values. |
|||||
cmn:Quantity | - |
0...1Integer |
Quantity of serial numbers reported.45 |
|||||
cmn:NumberList | - |
1...1- |
Required. List of serial numbers for the items in the parent container. |
|||||
cmn:Serial | 1/* |
1…*String |
Required. Serial number expressed in GS1 Application Identifier format, without parentheses, for the AI keys. AI(01)(21) formatted serial numbers for GTINs or AI(00) formatted serial number for SSCCs, without parentheses. Express non-GS1 serial numbers (e.g. China) in native format.46 |
|||||
@companyPrefix | 0/* |
0…1String |
The GS1 Company Prefix used in GTIN-14 and SSCC serial numbers. |
|||||
@filterValue | 0/* |
0…1String |
The filter value used in GTIN-14 and SSCC serial numbers. |
|||||
@format | 0/* |
0…1String |
Identifies the serial number format. See the Format enumeration list for valid values. |
|||||
@packedStatus | 0/* |
0…1String |
The packed status of the item or container.47 See the PackedStatus enumeration list for valid values. |
|||||
cmn:ResetContainerAggregation | - |
0...1Boolean |
Flag that tells TraceLink what to do if serial numbers already exist in the parent container. Valid values:48
|
|||||
cmn:DisaggregateFromParent | - |
1...1Boolean |
Required. Flag that tells TraceLink whether or not to automatically disaggregate child serial numbers from their existing parent container. Valid values:49
|
|||||
cmn:ExtensionField | - |
0...*- |
Extension to pass one or more name value pairs containing additional data attributes that are not already supported in this message. ![]() |
|||||
cmn:FieldName | 1/* |
1...1String |
Required. Populate with the field name provided by the trade partner that receives the outbound message. ![]() |
|||||
cmn:FieldValue | 1/* |
1...1String |
Required. The field value that corresponds to cmn:FieldName. |
|||||
cmn:Disaggregation | - |
0...1- |
Disaggregation group header. |
|||||
cmn:EventDateTime | 0/* |
1...1DateTime |
Required. Timestamp of the date and time of the product release with the UTC time zone indicator in YYYY-MM-DDThh:mm:ss.sZ format.50 |
|||||
cmn:EventTimeZoneOffset | 6/6 |
1...1String |
Required. The time zone offset in effect where the packaging occurs. Default value is "+00:00".51 |
|||||
cmn:EventLocation | 0/34 |
1...1String |
Required. Business or location identifier for the entity that is importing the products.52 |
|||||
cmn:EventLocationType | 1/* |
1...1String |
Required. Business or location type for the entity that is importing the products.53 See the BusinessAndLocationId enumeration list for valid values. |
|||||
cmn:ParentSerial | 0/* |
0…1String |
Parent serial number for aggregation expressed in GS1 Application Identifier format, without parentheses, for the AI keys. AI(01)AI(21) formatted serial numbers for GTINs or AI(00) formatted serial number for SSCCs, without parentheses. Express non-GS1 serial numbers (e.g. China) in native format.54 |
|||||
@companyPrefix | 0/* |
0…1String |
The GS1 Company Prefix used in GTIN-14 and SSCC serial numbers. |
|||||
@filterValue | 0/* |
0…1String |
The filter value used in GTIN-14 and SSCC serial numbers. |
|||||
@format | 0/* |
0…1String |
Identifies the serial number format. See the Format enumeration list for valid values. |
|||||
cmn:NumberList | - |
1...1- |
Required. List of serial numbers for the items in the parent container. |
|||||
cmn:Serial | 1/* |
1…*String |
Required. Serial number expressed in the GS1 Application Identifier format without parenthesis for the AI keys. AI(01)(21) formatted serial number for GTINs or AI(00) formatted serial number for SSCCs. Non-GS1 serial numbers (e.g. China) are expressed in native format.55 |
|||||
@companyPrefix | 0/* |
0…1String |
The GS1 Company Prefix used in GTIN-14 and SSCC serial numbers. |
|||||
@filterValue | 0/* |
0…1String |
The filter value used in GTIN-14 and SSCC serial numbers. |
|||||
@format | 0/* |
0…1String |
Identifies the serial number format. See the Format enumeration list for valid values. |
|||||
@packedStatus | 0/* |
0…1String |
The packed status of the item or container.56 See the PackedStatus enumeration list for valid values. |
|||||
cmn:ExtensionField | - |
0...*- |
Extension to pass one or more name value pairs containing additional data attributes that are not already supported in this message. ![]() |
|||||
cmn:FieldName | 1/* |
1...1String |
Required. Populate with the field name provided by the trade partner that receives the outbound message. ![]() |
|||||
cmn:FieldValue | 1/* |
1...1String |
Required. The field value that corresponds to cmn:FieldName. |

<?xml version="1.0" encoding="UTF-8"?> <som:SOMAggregationUpdateMessage xmlns:som="urn:tracelink:mapper:sl:serialized_operations_manager" xmlns:cmn="urn:tracelink:mapper:sl:commontypes"> <som:ControlFileHeader> <cmn:FileSenderNumber>8888882028644</cmn:FileSenderNumber> <cmn:FileReceiverNumber>8888882028677</cmn:FileReceiverNumber> <cmn:FileControlNumber>20130821065245</cmn:FileControlNumber> <cmn:FileDate>2019-09-20</cmn:FileDate> <cmn:FileTime>06:52:45.02Z</cmn:FileTime> </som:ControlFileHeader> <som:MessageBody> <som:Aggregation> <cmn:EventDateTime>2019-09-20T06:30:32.12Z</cmn:EventDateTime> <cmn:EventTimeZoneOffset>+04:00</cmn:EventTimeZoneOffset> <cmn:EventLocation>0333331013655</cmn:EventLocation> <cmn:EventLocationType>GLN</cmn:EventLocationType> <cmn:PlantLocationId>0333331013655</cmn:PlantLocationId> <cmn:ProductionLineId>12436587</cmn:ProductionLineId> <cmn:LineManagerName>Fred Bobbit</cmn:LineManagerName> <cmn:ParentSerial>015088202501033321100000060001</cmn:ParentSerial> <cmn:PackedStatus>FULL</cmn:PackedStatus> <cmn:PackagingLevel>CA</cmn:PackagingLevel> <cmn:Quantity>20</cmn:Quantity> <cmn:NumberList> <cmn:Serial>015088202501033321100000060002</cmn:Serial> <cmn:Serial>015088202501033321100000060003</cmn:Serial> <cmn:Serial>015088202501033321100000060004</cmn:Serial> <cmn:Serial>015088202501033321100000060005</cmn:Serial> <cmn:Serial>015088202501033321100000060006</cmn:Serial> <cmn:Serial>015088202501033321100000060007</cmn:Serial> <cmn:Serial>015088202501033321100000060008</cmn:Serial> <cmn:Serial>015088202501033321100000060009</cmn:Serial> </cmn:NumberList> <cmn:ResetContainerAggregation>true</cmn:ResetContainerAggregation> <cmn:DisaggregateFromParent>true</cmn:DisaggregateFromParent> </som:Aggregation> <som:Aggregation> <cmn:EventDateTime>2019-09-20T06:30:32.12Z</cmn:EventDateTime> <cmn:EventTimeZoneOffset>+04:00</cmn:EventTimeZoneOffset> <cmn:EventLocation>0333331013655</cmn:EventLocation> <cmn:EventLocationType>GLN</cmn:EventLocationType> <cmn:PlantLocationId>0333331013655</cmn:PlantLocationId> <cmn:ProductionLineId>12436587</cmn:ProductionLineId> <cmn:LineManagerName>Fred Bobbit</cmn:LineManagerName> <cmn:ParentSerial>015088202501033321100000060010</cmn:ParentSerial> <cmn:PackedStatus>FULL</cmn:PackedStatus> <cmn:PackagingLevel>CA</cmn:PackagingLevel> <cmn:Quantity>20</cmn:Quantity> <cmn:NumberList> <cmn:Serial>015088202501033321100000060011</cmn:Serial> <cmn:Serial>015088202501033321100000060012</cmn:Serial> <cmn:Serial>015088202501033321100000060013</cmn:Serial> <cmn:Serial>015088202501033321100000060014</cmn:Serial> <cmn:Serial>015088202501033321100000060015</cmn:Serial> <cmn:Serial>015088202501033321100000060016</cmn:Serial> <cmn:Serial>015088202501033321100000060017</cmn:Serial> <cmn:Serial>015088202501033321100000060018</cmn:Serial> </cmn:NumberList> <cmn:ResetContainerAggregation>true</cmn:ResetContainerAggregation> <cmn:DisaggregateFromParent>true</cmn:DisaggregateFromParent> </som:Aggregation> <som:Aggregation> <cmn:EventDateTime>2019-09-20T06:30:32.12Z</cmn:EventDateTime> <cmn:EventTimeZoneOffset>+04:00</cmn:EventTimeZoneOffset> <cmn:EventLocation>0333331013655</cmn:EventLocation> <cmn:EventLocationType>GLN</cmn:EventLocationType> <cmn:PlantLocationId>0333331013655</cmn:PlantLocationId> <cmn:ProductionLineId>12436587</cmn:ProductionLineId> <cmn:LineManagerName>Fred Bobbit</cmn:LineManagerName> <cmn:ParentSerial>015088202501033321100000060051</cmn:ParentSerial> <cmn:PackedStatus>FULL</cmn:PackedStatus> <cmn:PackagingLevel>CA</cmn:PackagingLevel> <cmn:Quantity>20</cmn:Quantity> <cmn:NumberList> <cmn:Serial>015088202501033321100000060052</cmn:Serial> <cmn:Serial>015088202501033321100000060053</cmn:Serial> <cmn:Serial>015088202501033321100000060054</cmn:Serial> <cmn:Serial>015088202501033321100000060055</cmn:Serial> <cmn:Serial>015088202501033321100000060056</cmn:Serial> <cmn:Serial>015088202501033321100000060057</cmn:Serial> <cmn:Serial>015088202501033321100000060058</cmn:Serial> <cmn:Serial>015088202501033321100000060059</cmn:Serial> </cmn:NumberList> <cmn:ResetContainerAggregation>true</cmn:ResetContainerAggregation> <cmn:DisaggregateFromParent>true</cmn:DisaggregateFromParent> </som:Aggregation> <som:Disaggregation> <cmn:EventDateTime>2019-09-20T06:30:32.12Z</cmn:EventDateTime> <cmn:EventTimeZoneOffset>+04:00</cmn:EventTimeZoneOffset> <cmn:EventLocation>0333331013655</cmn:EventLocation> <cmn:EventLocationType>GLN</cmn:EventLocationType> <cmn:ParentSerial>015088202501033321100000060020</cmn:ParentSerial> <cmn:NumberList> <cmn:Serial>015088202501033321100000060021</cmn:Serial> <cmn:Serial>015088202501033321100000060022</cmn:Serial> </cmn:NumberList> </som:Disaggregation> <som:Disaggregation> <cmn:EventDateTime>2019-09-20T06:30:32.12Z</cmn:EventDateTime> <cmn:EventTimeZoneOffset>+04:02</cmn:EventTimeZoneOffset> <cmn:EventLocation>0333331013655</cmn:EventLocation> <cmn:EventLocationType>GLN</cmn:EventLocationType> <cmn:ParentSerial>015088202501033321100000060030</cmn:ParentSerial> <cmn:NumberList> <cmn:Serial>015088202501033321100000060031</cmn:Serial> <cmn:Serial>015088202501033321100000060032</cmn:Serial> </cmn:NumberList> </som:Disaggregation> </som:MessageBody> </som:SOMAggregationUpdateMessage>

Data Element | Error Message | Description |
---|---|---|
Class 1 | ||
choice%1 | At least one instance of either Aggregation or Disaggregation is required !!! | The error occurs if cmn:Aggregation and cmn:Disaggregation are both empty or null. |
cmn:Aggregation | cmn:EventLocation | Event location is required !!! | The error occurs if the source is empty or null. |
cmn:Aggregation | cmn:EventLocationType | Valid event location type is required !!! | The error occurs if the source is empty or null, or is not a valid value from the enumeration list. |
cmn:Aggregation | cmn:ParentSerial | Parent serial number is required !!! | The error occurs if the source is empty or null. |
cmn:Aggregation | cmn:ParentSerial | @format | Valid format code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Aggregation | cmn:ParentSerial | cmn:PackedStatus | Valid packaging level code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:PackagingLevel | Valid packaging level code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Aggregation | cmn:NumberList | cmn:Serial | Serial number is required !!! | The error occurs if the source is empty or null. |
cmn:Aggregation | cmn:NumberList | cmn:Serial | @format | Valid format code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Aggregation | cmn:ExtensionField | cmn:FieldName | Field name is required if extension field group present !!! | The error occurs if cmn:ExtensionField is populated, but the source is empty or null. |
cmn:Aggregation | cmn:ExtensionField | cmn:FieldValue | Field value is required if extension field group present !!! | The error occurs if cmn:ExtensionField is populated, but the source is empty or null. |
cmn:Disggregation | cmn:EventLocation | Event location is required !!! | The error occurs if the source is empty or null. |
cmn:Disaggregation | cmn:EventLocationType | Valid event location type is required !!! | The error occurs if the source is empty or null, or is not a valid value from the enumeration list. |
cmn:Disaggregation | cmn:ParentSerial | @format | Valid format code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Disaggregation | cmn:ParentSerial | cmn:PackedStatus | Valid packaging level code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Disaggregation | cmn:NumberList | cmn:Serial | Serial number is required !!! | The error occurs if the source is empty or null. |
cmn:Disaggregation | cmn:NumberList | cmn:Serial | @format | Valid format code is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
cmn:Disaggregation | cmn:ExtensionField | cmn:FieldName | Field name is required if extension field group present !!! | The error occurs if cmn:ExtensionField is populated, but the source is empty or null. |
cmn:Disaggregation | cmn:ExtensionField | cmn:FieldValue | Field value is required if extension field group present !!! | The error occurs if cmn:ExtensionField is populated, but the source is empty or null. |
Class 2 | ||
cmn:Aggregation |cmn:EventDateTime | Event timestamp is earlier than the last event for serial number <Serial Number>. | The error occurs if the source is before the commission event time for cmn:Aggregation | cmn:NumberList | cmn:Serial. |
cmn:Aggregation | cmn:ParentSerial | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Parent Serial Number <ParentSerial> was not commissioned at this location. | The error occurs if the source was not commissioned at this subscriber location. | |
cmn:Aggregation | cmn:NumberList | cmn:Serial | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Serial Number <Serial> cannot be aggregated because it was not commissioned for this location. | The error occurs if the source was not commissioned at this subscriber location. | |
Cannot aggregate Serial number <Serial> with UOM <PackagingLevelUOM> into Serial Number <ParentSerial> with UOM <PackagingLevelUOM>. | The error occurs if the source packaging level is larger than the packaging level for cmn:ParentSerial. | |
cmn:Disaggregation | cmn:EventDateTime | Event timestamp is earlier than the aggregation date for serial number <Serial>. | The error occurs if the source is before the aggregation event time for cmn:Disaggregaiton | cmn:NumberList | cmn:Serial. |
cmn:Disaggregation | cmn:EventLocation | Authorization Response from server: Credentials are required to access this resource. | The error occurs if the source cannot be found. |
cmn:Disaggregation | cmn:ParentSerial | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Serial number <Serial Number> not commissioned. | The error occurs if the source was not commissioned at this subscriber location. | |
Cannot perform operation on serial number [Serial Number] with item state [Serial Number Status]. This operation can only be performed when the serial number is Available or Blocked or Picked. | The error occurs if the source is not in an available, blocked, or picked state. | |
Serial number <Serial Number> does not have any items aggregated to it. | The error occurs if the source has no child serial numbers. | |
cmn:Disaggregation | cmn:NumberList | cmn:Serial | Serial Number <Serial> cannot be disaggregated because it was not previously aggregated to <ParentSerial>. | The error occurs if the source is not a child of cmn:Disaggregation | cmn:ParentSerial. |
Class 3 | ||
The following is thrown for all Class 3 errors: “INTERNALERROR=Internal error from server [server details].” Please contact Support if this error is encountered. |
Aggregation Update (EPCIS v1.2)

Use this message to capture both aggregation and disaggregation events simultaneously. If the items being disaggregated have a Russia target market, this message initiates the
Message Type: SOM_AGGREGATE_UPDATE
Info Exchange Display Name: Aggregate Update

The MDLP Bulk API currently has a limit of 20 events per message.
Data Element | Occurs Length |
Type | Description | ||||||
---|---|---|---|---|---|---|---|---|---|
epcis:EPCISDocument | - |
1…1- | Required. EPCIS message root element. | ||||||
@schemaVersion | 0/* |
1…1Decimal | Required. The version of the EPCIS schema used to populate the EPCIS document elements. Must equal 1.2 .57 |
||||||
@creationDate | 1/* |
1…1DateTime | Date the message was created in YYYY-MM-DDTHH:MM:SS:mmZ format.58 | ||||||
EPCISHeader | - |
0…1- | Required. The XML file control header. | ||||||
sbdh:StandardBusinessDocumentHeader | - |
1…1- | Required. Business header information including EPCIS Header Version, Sender, and Receiver information, along with the document identification. | ||||||
sbdh:HeaderVersion | 0/* |
1…1String | Required. Version of the Standard Business Document Header (SBDH). The HeaderVersion must be set to 1.0 .59 |
||||||
sbdh:Sender | - |
1…*- | Required. A unique identification key for the Sender party of the message, representing the organization that created the standard business document. The Sender element must be used only once with GS1 XML messages. | ||||||
sbdh:Identifier | 1/* |
1…1String | Required. The value of the Identifier element may be a GLN, SGLN, or any other supported business party type. Send SGLN and all other party types with the GS1-conformant URI prefix. For example:60
![]() |
||||||
@Authority | 1/* |
1…1String | Required. The sender identifier type. The Authority was previously expected to be set to GLN for GS1 XML messages. An update made in December 2016 changed this to accept additional values.61See the BusinessAndLocationId enumeration list for valid values. |
||||||
sbdh:Receiver | - |
1…*- | Required. Indicates a unique identification key for the direct Receiver party of the message, representing the organization that receives the standard business document. The Receiver element is used only once with GS1 XML messages. | ||||||
sbdh:Identifier | 1/* |
1…1String | Required. The value of the Identifier element may be a GLN, SGLN, or any other supported business party type. Send SGLN and all other party types with the GS1-conformant URI prefix. For example:62
![]() |
||||||
@Authority | 1/* |
1…1String |
Required. The receiver identifier type. The Authority was previously expected to be set to See the BusinessAndLocationId enumeration list for valid values. |
||||||
sbdh:DocumentIdentification | 1…1 | - | Required. Contains the identification group for the message. | ||||||
sbdh:Standard | 0/* |
1…1String | Required. Name of the document standard contained in the file or message. The standard value for this field is EPCglobal .64 |
||||||
sbdh:TypeVersion | 0/* |
1…1String | Required. Reflects the version of the document included. This is the complete version of the document itself and is different from the HeaderVersion as these are hard-coded values. The TypeVersion is set to 1.0 .65 |
||||||
sbdh:InstanceIdentifier | 1/* |
1…1String | Required. Reference information that uniquely identifies this instance of the Standard Business Document between the Sender and the Receiver. This identifier confirms this document as being distinct from others.66 | ||||||
sbdh:Type | 0/* |
1…1String | Required. This element identifies the
type of the document. The Type must equal Events .67 |
||||||
sbdh:CreationDateAndTime | 0/* |
1…1DateTime | Required. The date and time of the SBDH document's creation. GMT create date and time for the EPCIS message. The system expects the Z to be appended; however, if it is not included, the system assumes that the time is GMT and therefore appends the Z .68 |
||||||
EPCISBody | - |
1…1- |
Required. Contains all of the EPCIS events for this message. |
||||||
EventList | - |
1…1- |
Required. The EventList supports the following events:
|
||||||
AggregationEvent | - |
0…*- |
Required. AggregationEvent is used for both aggregation and disaggregation events. The type of event is defined by the following:
|
||||||
eventTime | 1/* |
1…1DateTime |
Required. The time stamp of the date or time when the event occurred in YYYY-MM-DDTHH:MM:SS.mm or YYYY-MM-DDTHH:MM:SS.mmm format. Must include a time zone indicator as specified in Section 9.5 of EPCIS1.0.1. The system expects the Z to be appended to the time zone indicator; if it is not present, TraceLink assumes that the time is GMT and therefore appends the Z.69 |
||||||
eventTimeZoneOffset | 0/* |
1…1DateTime |
Required. The time zone offset in effect where the packaging occurs. Default value is |
||||||
parentID | 1/* |
1…1String |
Conditionally required for an aggregation event when aggregating, i.e. when the following is true:
Identifier of the parent container in EPC Pure Identity URI format. Examples:70
|
||||||
childEPCs | - |
1…1- |
Required. List of identifiers of the child items in the parent container in EPC Pure Identity URI format. Examples:
|
||||||
epc | 0/* |
0…*AnyURI |
Required. Identifier of the child items in the parent container in EPC Pure Identity URI format.71 |
||||||
action | 1/* |
1…1String |
Required. The action taken.72
|
||||||
bizStep | 0/* |
0…1AnyURI |
Required. The business step.73
|
||||||
disposition | 0/* |
0…1AnyURI |
Required. The status of the message.74
|
||||||
readPoint | - |
0…1- |
Refers to the location of where the event occurs. |
||||||
id | 0/* |
0…1AnyURI |
The SGLN EPC of the location from where the event occurs.75 |
||||||
bizLocation | - |
1…1- |
Required. Location of the business. |
||||||
id | 1/* |
1…1AnyURI |
Required. The SGLN EPC of the location where the objects are following the event.76 |
||||||
tl:aggregationEventExtensions | - |
0…1- |
Extensions for AggregationEvent. |
||||||
tl:packedStatus | 0/* |
0…1String |
The packed status of the item or container.77 See the PackedStatus enumeration list for valid values. ![]()
|
||||||
tl:quantity | - |
0…1Int |
The quantity of child serial numbers aggregated to the parent container.78 ![]()
|
||||||
tl:filterValue | 0/* |
0…1String |
Conditionally required if commissioning a new SSCC. The filter value used in GTIN-14 and SSCC serial numbers.79 |
||||||
tl:packagingLevel | 0/* |
0…1String |
The packaging level of the commissioned item.80 See the PackagingLevel enumeration list for valid values. ![]()
|
||||||
tl:resetContainerAggregation | - |
0…1Boolean |
If set to true, existing child items that are not present in the new childEPCs are disaggregated from their parent container. New child items that are present in the new childEPCs are then aggregated to the parent container.81 If a value is not specified, defaults to false. ![]()
|
||||||
tl:disaggregateFromParent | - |
1…1Boolean |
Required. If set to true, the existing aggregation of the child items is adjusted and the items are aggregated to the new parent container (i.e. TraceLink performs an implicit disaggregation and then aggregates the items).82 |
||||||
tl:plantLocationId | 0/* |
0…1String |
Plant location identifier.83 ![]()
|
||||||
tl:productionLineId | 0/* |
0…1String |
The name of the production line where the packaging occurs.84 ![]()
|
||||||
tl:lineManagerName | 0/* |
0…1String |
The name of the line or production manager who is on shift when the batch is produced.85 ![]()
|
||||||
tl:extensionField | - |
0…*- |
Extension to pass 1 or more name value pairs containing additional data attributes that are not already supported in this message. ![]() |
||||||
tl:fieldName | 1/* |
1…1String |
Required. Populate with the field name provided by the trade partner that receives the outbound message. ![]() |
||||||
tl:fieldValue | 1/* |
1…1String |
Required. The field value that corresponds to the tl:fieldName. |

<?xml version="1.0" encoding="UTF-8"?> <epcis:EPCISDocument xmlns:cbvmda="urn:epcglobal:cbv:mda" xmlns:epcis="urn:epcglobal:epcis:xsd:1" xmlns:tl="http://epcis.tracelink.com/ns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:sbdh="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader" schemaVersion="1.2" creationDate="2019-10-18T17:45:20.00Z"> <EPCISHeader> <sbdh:StandardBusinessDocumentHeader> <sbdh:HeaderVersion>1.0</sbdh:HeaderVersion> <sbdh:Sender> <sbdh:Identifier Authority="GLN">0882028677019</sbdh:Identifier> </sbdh:Sender> <sbdh:Receiver> <sbdh:Identifier Authority="GLN">0333331013655</sbdh:Identifier> </sbdh:Receiver> <sbdh:DocumentIdentification> <sbdh:Standard>EPCglobal</sbdh:Standard> <sbdh:TypeVersion>1.0</sbdh:TypeVersion> <sbdh:InstanceIdentifier>201901311745200001</sbdh:InstanceIdentifier> <sbdh:Type>Events</sbdh:Type> <sbdh:CreationDateAndTime>2019-10-18T17:45:20.00Z</sbdh:CreationDateAndTime> </sbdh:DocumentIdentification> </sbdh:StandardBusinessDocumentHeader> </EPCISHeader> <EPCISBody> <EventList> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200000034</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060001</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060002</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060003</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060004</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060005</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060006</epc> </childEPCs> <action>ADD</action> <bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> <tl:aggregationEventExtensions> <tl:packedStatus>FULL</tl:packedStatus> <tl:quantity>50</tl:quantity> <tl:packagingLevel>CA</tl:packagingLevel> <tl:resetContainerAggregation>true</tl:resetContainerAggregation> <tl:disaggregateFromParent>true</tl:disaggregateFromParent> <tl:plantLocationId>0333331013655</tl:plantLocationId> <tl:productionLineId>12436587</tl:productionLineId> <tl:lineManagerName>Fred Bobbit</tl:lineManagerName> </tl:aggregationEventExtensions> </AggregationEvent> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200000034</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060007</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060008</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060009</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060010</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060011</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060012</epc> </childEPCs> <action>ADD</action> <bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> <tl:aggregationEventExtensions> <tl:packedStatus>FULL</tl:packedStatus> <tl:quantity>50</tl:quantity> <tl:packagingLevel>CA</tl:packagingLevel> <tl:resetContainerAggregation>true</tl:resetContainerAggregation> <tl:disaggregateFromParent>true</tl:disaggregateFromParent> <tl:plantLocationId>0333331013655</tl:plantLocationId> <tl:productionLineId>12436587</tl:productionLineId> <tl:lineManagerName>Fred Bobbit</tl:lineManagerName> </tl:aggregationEventExtensions> </AggregationEvent> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200000035</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060107</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060108</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060109</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060110</epc> </childEPCs> <action>DELETE</action> <bizStep>urn:epcglobal:cbv:bizstep:unpacking</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> </AggregationEvent> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200000035</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060013</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060014</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060015</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060016</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060017</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060018</epc> </childEPCs> <action>ADD</action> <bizStep>urn:epcglobal:cbv:bizstep:packing</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> <tl:aggregationEventExtensions> <tl:packedStatus>FULL</tl:packedStatus> <tl:quantity>50</tl:quantity> <tl:packagingLevel>CA</tl:packagingLevel> <tl:resetContainerAggregation>true</tl:resetContainerAggregation> <tl:disaggregateFromParent>true</tl:disaggregateFromParent> <tl:plantLocationId>0333331013655</tl:plantLocationId> <tl:productionLineId>12436587</tl:productionLineId> <tl:lineManagerName>Fred Bobbit</tl:lineManagerName> </tl:aggregationEventExtensions> </AggregationEvent> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200001035</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060207</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060208</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060209</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060210</epc> </childEPCs> <action>DELETE</action> <bizStep>urn:epcglobal:cbv:bizstep:unpacking</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> </AggregationEvent> <AggregationEvent> <eventTime>2019-10-18T22:08:02Z</eventTime> <eventTimeZoneOffset>+00:00</eventTimeZoneOffset> <parentID>urn:epc:id:sscc:088202.00200002035</parentID> <childEPCs> <epc>urn:epc:id:sgtin:0882025.501033.100000060307</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060308</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060309</epc> <epc>urn:epc:id:sgtin:0882025.501033.100000060310</epc> </childEPCs> <action>DELETE</action> <bizStep>urn:epcglobal:cbv:bizstep:unpacking</bizStep> <disposition>urn:epcglobal:cbv:disp:in_progress</disposition> <bizLocation> <id>urn:epc:id:sgln:7777776.67345.0</id> </bizLocation> </AggregationEvent> </EventList> </EPCISBody> </epcis:EPCISDocument>

Data Element | Error Message | Description |
---|---|---|
Class 1 | ||
AggregationEvent | At least one aggregation event is required !!! | The error occurs if no AggregationEvent is present. |
parentID | Invalid EPC format !!! |
The error occurs if the source is invalid. |
epc | Invalid EPC format !!! |
The error occurs if the source is invalid or is empty or null. |
action | Action ADD is required for aggregation !!! | The error occurs if the source does not equal "ADD" for an aggregation event. |
Action DELETE is required for disaggregation !!! | The error occurs if the source does not equal "DELETE" for a disaggregation event. | |
bizStep | bizStep urn:epcglobal:cbv:bizstep:packing is required for aggregation !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:bizstep:packing" for an aggregation event. |
bizStep urn:epcglobal:cbv:bizstep:unpacking is required for disaggregation !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:bizstep:unpacking" for a disaggregation event. | |
disposition | Disposition urn:epcglobal:cbv:disp:in_progress is required for aggregation !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:disp:in_progress"for an aggregation event. |
Disposition urn:epcglobal:cbv:disp:in_progress is required for disaggregation !!! | The error occurs if the source does not equal "urn:epcglobal:cbv:disp:in_progress" for a disaggregation event. | |
bizLocation | id | Business location is required !!! | The error occurs if the source is empty or null. |
Valid business location identifier type is required !!! | The error occurs if the source is empty or null, or is not a valid value from the enumeration list. | |
tl:packedStatus | Valid packed status is required !!! | The error occurs if the source is present, but there is no matching entry in the lookup file. |
tl:packagingLevel | Valid packaging level code is required !!! | The error occurs if the source is invalid. |
tl:fieldName | Field name is required if extension field group is present !!! | The error occurs iftl:extensionFieldis populated, but the source is empty or null. |
tl:fieldValue | Field value is required if extension field group present !!! | The error occurs iftl:extensionFieldis populated, but the source is empty or null. |
Class 2 | ||
AggregationEvent (aggregation event) | eventTime | Event timestamp is earlier than the last event for serial number <Serial Number>. | The error occurs if the source is before the commission event time for AggregationEvent (aggregation event) | parentID. |
AggregationEvent (disaggregation event) | eventTime | Event timestamp is earlier than the aggregation date for serial number <Serial>. | The error occurs if the source is before the aggregation event time for AggregationEvent (disaggregation event) | parentID. |
AggregationEvent (aggregation event) | parentID | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Parent Serial Number <ParentSerial> was not commissioned at this location. | The error occurs if the source was not commissioned at this subscriber location. | |
AggregationEvent (disaggregation event) | parentID | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Serial number <Serial Number> not commissioned. | The error occurs if the source was not commissioned at this subscriber location. | |
Cannot perform operation on serial number [Serial Number] with item state [Serial Number Status]. This operation can only be performed when the serial number is Available or Blocked or Picked. | The error occurs if the source is not in an available, blocked, or picked status. | |
Serial number <Serial Number> does not have any items aggregated to it. | The error occurs if the source has no child serial numbers. | |
Aggregation Event (aggregation event) | childEPCs | epc | Serial number <Serial Number> does not exist. | The error occurs if the source does not exist in TraceLink. |
Serial Number <Serial> cannot be aggregated because it was not commissioned for this location. | The error occurs if the source was not commissioned at this subscriber location. | |
Cannot aggregate Serial number <Serial> with UOM <PackagingLevelUOM> into Serial Number <ParentSerial> with UOM <PackagingLevelUOM>. | The error occurs if the source packaging level is larger than the packaging level for AggregationEvent (aggregation event) | parentID. | |
Aggregation Event (disaggregation event) | childEPCs | epc | Serial Number <Serial> cannot be disaggregated because it was not previously aggregated to <ParentSerial>. | The error occurs if the source is not aggregated to AggregationEvent (disaggregation event) | parentID. |
AggregationEvent (disaggregation event) | bizLocation | id | Authorization Response from server: Credentials are required to access this resource. | The error occurs if the source cannot be found. |
Class 3 | ||
The following is thrown for all Class 3 errors: “INTERNALERROR=Internal error from server [server details].” Please contact Support if this error is encountered. |
Aggregation Update (SOAP)

Guidelines
The Aggregation Update message allows Pharmaceutical Manufacturer Owners to report the aggregation and disaggregation of product simultaneously to account for warehouse packing activities. Each message can contain multiple aggregations or disaggregations.
When sending multiple aggregation events (i.e. aggregations, disaggregations, or a combination thereof) at the same time, use this message instead of individual Aggregation or Disaggregation messages.

The MDLP Bulk API currently has a limit of 20 events per message.
The following data is sent in the request to TraceLink:
Elements | Occurs Length |
Type |
Notes |
||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
soapenv:Envelope | - |
1...1- | Required. The SOAP envelope root element. | ||||||||
soapenv:Header | - |
1...1- | Required. Not used. The SOAP message header. | ||||||||
soapenv:Body | - |
1...1- | Required. The SOAP message body. | ||||||||
urn:AggregateUpdate | - |
1...1- | Required. Aggregation Update message. | ||||||||
AggregationUpdateRequest | - |
0...1- | Required. Aggregate request to associate child serial numbers to a parent container. | ||||||||
Aggregations | - |
0...*- | Aggregation group element. | ||||||||
Aggregation | - |
0...*- | Required. Aggregation event. See the Aggregation | Strict element for important configuration information. | ||||||||
Container | - |
1...1- | Required. Parent container serial information. If the Aggregation | Container is specified, all items must currently be a child of the specified container. | ||||||||
@sn | 1/* |
1...1String | Required. Parent container's serial number.86 | ||||||||
@namespace | 0/* |
0...1String | Not used. | ||||||||
Items | - |
1...1- | Required. Child serial information. | ||||||||
Item | - |
1...*- | Required. List of one or more child serial numbers to aggregate to parent container's serial number. | ||||||||
@sn | 1/* |
1...1String |
Required. Child serial number in one of the following formats:
|
||||||||
@namespace | 1/* |
0...1String | Not used. | ||||||||
EventDateTime | - |
0...1Date |
Timestamp of the date and time of the aggregation event with the UTC time zone indicator in YYYY-MM-DDThh:mm:ss.sZ format. If omitted, the system will record the current date and time.87 |
||||||||
Location | 1/* |
0...1String | Site-level SGLN of the location
where the event occurred. The SGLN format is the numeric component only, with urn prefix stripped (e.g.
8888882.02867.0 instead of urn:epc:id:sgln:8888882.02867.0 typically found in
EPCIS events).88 |
||||||||
Strict | - |
1...1Boolean |
Required. Flag that determines if the system performs an implicit disaggregation and then aggregates the items. Valid values:
|
||||||||
ResetAggregation | - |
0...1Boolean |
Flag indicating to disaggregate all existing items in a container and aggregate the new set of items into that container. Valid values:
|
||||||||
ParentCompanyPrefix | - |
0...1String | Conditionally required if the container serial number is unknown to TraceLink and must be commissioned. The GS1 Company Prefix used in GTIN-14 and SSCC serial numbers. | ||||||||
ParentFilterValue | - |
0...1String | The filter value used in GTIN-14 and SSCC serial numbers. | ||||||||
ParentFormat | - |
0...1String |
Conditionally required if the container serial number is unknown to TraceLink and must be commissioned. The format of the parent serial numbers. Valid values:
|
||||||||
ParentPackagingLevel | 0/* |
0...1String |
The packaging level of the commissioned item using the supported enumeration values.89 See the PackLevel enumeration list for valid values. |
||||||||
Disaggregations | - |
0...*- | Disaggregation group header. | ||||||||
Disaggregation | - |
1...*- | Required. Disaggregation event. | ||||||||
Container | - |
0...*- | Conditionally required if Disaggregation | Strict is set to true . Parent container serial number.
If Disaggregation | Container is specified, all items must currently be a child of the specified container. If omitted, Disaggregation | Strict must be set to false . |
||||||||
@sn | 1/* |
1...1String | Required. Parent serial number.90 | ||||||||
@namespace | 1/* |
0...1String | Not used. | ||||||||
Items | - |
1...1- | Required. Child serial numbers. | ||||||||
Item | - |
1...*- | Required. List of one or more child serial numbers to disaggregate from the parent container serial number. | ||||||||
@sn | 1/* |
1...1String |
Required. Child serial number in one of the following formats:
|
||||||||
@namespace | 1/* |
0...1String | Not used. | ||||||||
EventDateTime | - |
0...1Date | Required. Timestamp of the date and time of the disaggregation event with the UTC time zone indicator in YYYY-MM-DDThh:mm:ss.sZ format. If omitted, the system will record the current date and time.91 | ||||||||
Location | 1/* |
0...1String | Required. Site-level SGLN of the location
where the event occurred. SGLN format is the numeric component only, with urn prefix stripped (e.g.
8888882.02867.0 instead of urn:epc:id:sgln:8888882.02867.0 typically found in
EPCIS events).92 |
||||||||
Strict | - |
1...1Boolean |
Flag that determines whether Disaggregation | Container must be provided.
|
Example
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:tracelink:soap"> <soapenv:Header/> <soapenv:Body> <urn:AggregateUpdate> <AggregationUpdateRequest> <completed>false</completed> <Aggregations> <Aggregation> <Container sn="016862905203607821100000000030"/> <Items> <Item sn="018862905202566321100000000005"/> </Items> <EventDateTime>2020-12-31T11:16:52.575Z</EventDateTime> <Location>86290520.4996.0</Location> <Strict>true</Strict> <ResetAggregation>false</ResetAggregation> <IsCommissionSSCC>false</IsCommissionSSCC> </Aggregation> </Aggregations> <Disaggregations> <Disaggregation> <Container sn="016862905203607821100000000030"/> <Items> <Item sn="018862905202566321100000000005"/> </Items> <EventDateTime>2020-12-31T11:18:53.193Z</EventDateTime> <Location>86290520.4996.0</Location> <Strict>true</Strict> </Disaggregation> </Disaggregations> </AggregationUpdateRequest> </urn:AggregateUpdate> </soapenv:Body> </soapenv:Envelope>
Errors
Exception Code | Exception Message |
---|---|
VALIDATION | Serial number <Serial Number> does not exist. |
Cannot aggregate Serial number <Serial> with UOM <PackagingLevelUOM> into Serial Number <ParentSerial> with UOM <PackagingLevelUOM>. | |
Serial number <Serial Number> is already aggregated to <Actual Parent Serial Number>. | |
Cannot perform operation on serial number [Serial Number] with item state [Serial Number Status]. This operation can only be performed when the serial number is Available or Blocked or Picked. | |
Serial Number <Serial> cannot be disaggregated because it was not previously aggregated to <ParentSerial>. | |
Event timestamp is earlier than the aggregation date for serial number <Serial>. |

Guidelines
The MDLP Bulk API currently has a limit of 20 events per message.
The following data is included in the message response:
Data Element | Occurs Length |
Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
S:Envelope | - |
1...1- | Required. The SOAP Envelope root element. | |||||||||
S:Body | - |
1...1- | Required. The SOAP Message Body. | |||||||||
ns2:AggregateResponse | - |
1...1- | Required. The Aggregation Update response message. | |||||||||
TLResponse | - |
1...1- | Required. The TraceLink response. | |||||||||
Success | - |
1...1- | Required. Indicates if the Aggregation Update request successfully processed.93 | |||||||||
ExceptionReturn | - |
0...1- | Conditionally required if Success = false . Populated with error
information only if Success = false , otherwise omitted. |
|||||||||
CallException | - |
1...*- | Required. Contains error information including the exception code and error message, if available. | |||||||||
ExceptionCode | 0/* |
1...1String | Required. Error code. | |||||||||
ExceptionMessage | 0/* |
0...1String | Conditionally required if an error occurred. Message that further describes error condition, if available. |
Example
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Body> <ns3:AggregateUpdateResponse xmlns:ns2="http://tracelink.com/som" xmlns:ns3="urn:tracelink:soap"> <TLResponse> <Success>true</Success> </TLResponse> </ns3:AggregateUpdateResponse> </S:Body> </S:Envelope>