cXML ShipNoticeRequest
The cXML equivalent of an EDIFACT DESADV Advance Ship Notice. Announces that an order has shipped from the supplier — or is planned to ship — with transport, packaging and per-line shipment information.
Purpose
ShipNoticeRequest informs the buyer that a shipment is on its way:
it lets the buyer's supply chain plan reception, pre-allocate storage locations
and reconcile expected deliveries with purchase orders. The shipmentType
attribute distinguishes "actual" (already departed) from
"planned" (announced but not yet shipped).
Three operations via the operation attribute: new (default),
update (correct a previous ASN), delete (cancel a planned
shipment that will not happen). An update replaces the previous version
entirely.
XML structure
The DTD: ShipNoticeRequest (ShipNoticeHeader, ShipControl*,
ShipNoticePortion*). ShipControl's repeatability lets you
describe multi-leg transport with different carriers per leg (each subsequent
element must carry a startDate). ShipNoticePortion's
repeatability lets a single shipment cover multiple OrderRequest
documents.
ShipNoticeHeader
Content: ShipNoticeHeader (ServiceLevel*, DocumentReference?, Contact*,
LegalEntity?, OrganizationalUnit*, Hazard*, Comments*, TermsOfDelivery?,
TermsOfTransport*, Packaging?, Extrinsic*, IdReference*,
ReferenceDocumentInfo*). No element is required by content;
shipmentID and noticeDate attributes are
#REQUIRED.
ShipControl
Content: ShipControl (CarrierIdentifier+, ShipmentIdentifier+,
PackageIdentification?, (Route|TransportInformation)*, Contact*, Comments*,
Extrinsic*). So at least one CarrierIdentifier and at least
one ShipmentIdentifier (typically the carrier tracking number).
CarrierIdentifier carries a required domain attribute
(SCAC, DUNS, etc.).
ShipNoticePortion
Content: ShipNoticePortion (OrderReference, (MasterAgreementReference |
MasterAgreementIDInfo)?, Contact*, Comments*, Extrinsic*, ShipNoticeItem*,
ReferenceDocumentInfo*). OrderReference is required (the DTD
is explicit: a given OrderRequest can only appear inside one
ShipNoticePortion). If no ShipNoticeItem is listed, the
shipment covers the entire referenced order.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260516.080000.asn@supplier.example"
timestamp="2026-05-16T08:00:00+00:00"
version="1.2.069">
<Header>
<From>
<Credential domain="DUNS"><Identity>987654321</Identity></Credential>
</From>
<To>
<Credential domain="DUNS"><Identity>123456789</Identity></Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>987654321</Identity>
<SharedSecret>shared-secret-here</SharedSecret>
</Credential>
<UserAgent>supplier-wms/4.0</UserAgent>
</Sender>
</Header>
<Request>
<ShipNoticeRequest>
<ShipNoticeHeader shipmentID="SHIP-2026-00456"
operation="new"
noticeDate="2026-05-16T08:00:00+00:00"
shipmentDate="2026-05-16T07:30:00+00:00"
deliveryDate="2026-05-18T10:00:00+00:00"
shipmentType="actual"
fulfillmentType="partial">
<ServiceLevel xml:lang="en">Ground 48h</ServiceLevel>
<Comments xml:lang="en">Partial shipment, line 2 to follow.</Comments>
</ShipNoticeHeader>
<ShipControl>
<CarrierIdentifier domain="SCAC">UPSN</CarrierIdentifier>
<ShipmentIdentifier>1Z999AA10123456784</ShipmentIdentifier>
</ShipControl>
<ShipNoticePortion>
<OrderReference orderID="PO-2026-00789"
orderDate="2026-05-13T16:00:00+00:00">
<DocumentReference payloadID="260513.160000.order@buyer.example"/>
</OrderReference>
<ShipNoticeItem quantity="3" lineNumber="1" shipNoticeLineNumber="1">
<UnitOfMeasure>EA</UnitOfMeasure>
</ShipNoticeItem>
</ShipNoticePortion>
</ShipNoticeRequest>
</Request>
</cXML> Required vs optional
- ShipNoticeHeader attributes:
shipmentID,noticeDateare#REQUIRED;operationdefaults to"new";shipmentDate,deliveryDate,shipmentType,fulfillmentType,requestedDeliveryDate,reason,activityStepTypeare#IMPLIED. Note:shipmentDateanddeliveryDateare in practice required except foroperation="delete". - ShipControl: 0..n. Without any
ShipControlyou have announced a shipment with no carrier detail — allowed but unusual.CarrierIdentifierandShipmentIdentifierare 1..n inside it. - ShipNoticePortion: 0..n.
OrderReferencehas cardinality 1 inside each portion.ShipNoticeItemis repeatable, withquantityandlineNumberas#REQUIRED. - ShipNoticeItem: content
(ItemID?, ShipNoticeItemDetail?, UnitOfMeasure, Packaging*, Hazard*, (Batch | SupplierBatchID)*, AssetInfo*, TermsOfDelivery?, OrderedQuantity?, ShipNoticeItemIndustry?, ComponentConsumptionDetails*, ReferenceDocumentInfo*, Comments*, Extrinsic*). OnlyUnitOfMeasureis required.
Common patterns
Multi-order shipment: one truck-load can consolidate several
OrderRequest documents. Emit a single ShipNoticeRequest
with multiple ShipNoticePortion elements, one per covered order.
Partial shipment: set fulfillmentType="partial" on
the header. A new ShipNoticeRequest with a different
shipmentID will be emitted for the second part. The sum of
quantity across all ShipNoticeItem elements must not
exceed the ordered quantity.
Returns: reason="return" with reversed
From/To (buyer → supplier) notifies a goods return.
Documentation
- Fulfill.dtd — current version
— search for
ELEMENT ShipNoticeRequest,ShipNoticeHeader,ShipControl,ShipNoticePortion,ShipNoticeItem. - cXML Reference Guide (PDF) — Ship Notice chapter.
- OrderRequest
— the transaction referenced in every
ShipNoticePortion.