cXML ShipNoticeRequest
Équivalent cXML d'un Advance Ship Notice (ASN) EDIFACT DESADV. Annonce qu'une commande est partie de chez le fournisseur, ou est planifiée pour partir, avec les informations de transport, de colisage et le détail des lignes expédiées.
Objet de la transaction
Le ShipNoticeRequest informe l'acheteur qu'une expédition est en
cours : il permet à la chaîne d'approvisionnement de l'acheteur de planifier
la réception, de pré-allouer les emplacements de stockage et de rapprocher les
livraisons attendues des bons de commande. L'attribut shipmentType
distingue "actual" (l'expédition est partie) de "planned"
(annoncée mais pas encore expédiée).
Trois opérations possibles via l'attribut operation : new
(par défaut), update (corriger un ASN précédent), delete
(annuler une expédition planifiée qui ne partira pas). Une mise à jour remplace
intégralement la version précédente.
Structure XML
Le DTD : ShipNoticeRequest (ShipNoticeHeader, ShipControl*,
ShipNoticePortion*). La répétabilité de ShipControl permet de
décrire plusieurs étapes de transport avec un transporteur différent par étape
(les éléments suivant le premier doivent porter une startDate). La
répétabilité de ShipNoticePortion permet de couvrir plusieurs
OrderRequest dans une même expédition.
ShipNoticeHeader
Le contenu : ShipNoticeHeader (ServiceLevel*, DocumentReference?,
Contact*, LegalEntity?, OrganizationalUnit*, Hazard*, Comments*, TermsOfDelivery?,
TermsOfTransport*, Packaging?, Extrinsic*, IdReference*, ReferenceDocumentInfo*).
Aucun élément n'est requis par cardinalité ; shipmentID et
noticeDate sont #REQUIRED en attributs.
ShipControl
Le contenu : ShipControl (CarrierIdentifier+, ShipmentIdentifier+,
PackageIdentification?, (Route|TransportInformation)*, Contact*, Comments*,
Extrinsic*). Donc au moins un CarrierIdentifier et au moins un
ShipmentIdentifier (typiquement le tracking number du transporteur).
Le CarrierIdentifier porte un domain obligatoire (SCAC,
DUNS, etc.).
ShipNoticePortion
Le contenu : ShipNoticePortion (OrderReference, (MasterAgreementReference
| MasterAgreementIDInfo)?, Contact*, Comments*, Extrinsic*, ShipNoticeItem*,
ReferenceDocumentInfo*). OrderReference est obligatoire (la
DTD est explicite : un même OrderRequest ne peut apparaître que
dans un seul ShipNoticePortion). Si aucun ShipNoticeItem
n'est listé, l'expédition couvre la totalité de la commande référencée.
<?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+02: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+02:00"
shipmentDate="2026-05-16T07:30:00+02:00"
deliveryDate="2026-05-18T10:00:00+02:00"
shipmentType="actual"
fulfillmentType="partial">
<ServiceLevel xml:lang="fr">Standard 48h</ServiceLevel>
<Comments xml:lang="fr">Expédition partielle, ligne 2 à suivre.</Comments>
</ShipNoticeHeader>
<ShipControl>
<CarrierIdentifier domain="SCAC">UPSN</CarrierIdentifier>
<ShipmentIdentifier>1Z999AA10123456784</ShipmentIdentifier>
</ShipControl>
<ShipNoticePortion>
<OrderReference orderID="PO-2026-00789"
orderDate="2026-05-13T16:00:00+02:00">
<DocumentReference payloadID="260513.160000.order@buyer.example"/>
</OrderReference>
<ShipNoticeItem quantity="3" lineNumber="1" shipNoticeLineNumber="1">
<UnitOfMeasure>EA</UnitOfMeasure>
</ShipNoticeItem>
</ShipNoticePortion>
</ShipNoticeRequest>
</Request>
</cXML> Requis vs optionnel
- ShipNoticeHeader attributs :
shipmentID,noticeDate#REQUIRED;operationpar défaut"new";shipmentDate,deliveryDate,shipmentType,fulfillmentType,requestedDeliveryDate,reason,activityStepTypeen#IMPLIED. À noter :shipmentDateetdeliveryDatesont obligatoires en pratique sauf pouroperation="delete". - ShipControl : 0..n. Sans
ShipControl, on a annoncé une expédition sans détail transporteur — possible mais inhabituel.CarrierIdentifieretShipmentIdentifieront cardinalité 1..n. - ShipNoticePortion : 0..n.
OrderReferenceest cardinalité 1 dans chaque portion.ShipNoticeItemrépétable, avecquantityetlineNumberen#REQUIRED. - ShipNoticeItem : contenu
(ItemID?, ShipNoticeItemDetail?, UnitOfMeasure, Packaging*, Hazard*, (Batch | SupplierBatchID)*, AssetInfo*, TermsOfDelivery?, OrderedQuantity?, ShipNoticeItemIndustry?, ComponentConsumptionDetails*, ReferenceDocumentInfo*, Comments*, Extrinsic*). SeulUnitOfMeasureest requis.
Patterns courants
Expédition multi-commandes : une seule expédition camion peut
consolider plusieurs OrderRequest. On émet alors un seul
ShipNoticeRequest avec plusieurs ShipNoticePortion, un
par commande couverte.
Expédition partielle : positionner
fulfillmentType="partial" au header. Un nouveau
ShipNoticeRequest avec un shipmentID différent sera émis
pour la deuxième partie. La somme des quantity dans tous les
ShipNoticeItem ne doit pas dépasser la quantité commandée.
Retours : l'attribut reason="return" avec
From/To inversés (acheteur → fournisseur) permet de
notifier un retour de marchandise.
Documentation
- Fulfill.dtd — version courante
— chercher
ELEMENT ShipNoticeRequest,ShipNoticeHeader,ShipControl,ShipNoticePortion,ShipNoticeItem. - cXML Reference Guide (PDF) — chapitre Ship Notice.
- OrderRequest
— la transaction référencée dans chaque
ShipNoticePortion.