ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

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 ship-notice-request.cxml.xml
<?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 ; operation par défaut "new" ; shipmentDate, deliveryDate, shipmentType, fulfillmentType, requestedDeliveryDate, reason, activityStepType en #IMPLIED. À noter : shipmentDate et deliveryDate sont obligatoires en pratique sauf pour operation="delete".
  • ShipControl : 0..n. Sans ShipControl, on a annoncé une expédition sans détail transporteur — possible mais inhabituel. CarrierIdentifier et ShipmentIdentifier ont cardinalité 1..n.
  • ShipNoticePortion : 0..n. OrderReference est cardinalité 1 dans chaque portion. ShipNoticeItem répétable, avec quantity et lineNumber en #REQUIRED.
  • ShipNoticeItem : contenu (ItemID?, ShipNoticeItemDetail?, UnitOfMeasure, Packaging*, Hazard*, (Batch | SupplierBatchID)*, AssetInfo*, TermsOfDelivery?, OrderedQuantity?, ShipNoticeItemIndustry?, ComponentConsumptionDetails*, ReferenceDocumentInfo*, Comments*, Extrinsic*). Seul UnitOfMeasure est 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