cXML OrderRequest
La commande formelle cXML. Envoyée par l'ERP de l'acheteur au fournisseur après validation interne du panier — qu'il vienne d'un punchout, d'un catalogue local ou d'une saisie manuelle. Équivalent fonctionnel d'un PO papier ou d'un message EDIFACT ORDERS.
Objet de la transaction
Le OrderRequest est l'instruction d'achat formelle : l'acheteur
s'engage à payer si le fournisseur livre les ItemOut au prix et aux
conditions transmis. Il existe trois variantes de cycle de vie via l'attribut
type sur OrderRequestHeader : new (par
défaut), update (modifier une commande déjà émise), delete
(annuler une commande).
L'attribut orderType sur le même header introduit cinq régimes
d'utilisation : regular (par défaut), release
(release order sur un master agreement existant), blanket (commande
cadre), stockTransport (transfert de stock entre sites),
stockTransportRelease (release d'un scheduling agreement de transport).
Structure XML
OrderRequest
Le DTD est concis : OrderRequest (OrderRequestHeader, ItemOut+).
Le header rassemble tout ce qui s'applique globalement à la commande ;
ItemOut est répétable, avec au moins un article.
OrderRequestHeader
Le contenu complet : OrderRequestHeader (Total, ShipTo?, BillTo,
BusinessPartner*, LegalEntity?, OrganizationalUnit*, Shipping?, Tax?, Payment?,
PaymentTerm*, Contact*, Comments*, Followup?, ControlKeys?, DocumentReference?,
SupplierOrderInfo?, TermsOfDelivery?, DeliveryPeriod?, IdReference*,
OrderRequestHeaderIndustry?, Extrinsic*). Deux éléments sont obligatoires
par cardinalité : Total et BillTo.
Côté attributs : orderID et orderDate sont
#REQUIRED. type et orderType ont des valeurs
par défaut (new, regular). Tout le reste est
#IMPLIED : orderVersion, requisitionID,
shipComplete, effectiveDate, expirationDate,
agreementID, parentAgreementID, pickUpDate,
requestedDeliveryDate, etc.
ItemOut
Le DTD : ItemOut (ItemID, Path?, (ItemDetail|BlanketItemDetail)?,
(SupplierID | SupplierList)?, ShipTo?, Shipping?, Tax?, SpendDetail?,
Distribution*, Contact*, TermsOfDelivery?, Comments*, Indicator*, Tolerances?,
ControlKeys?, ScheduleLine*, (MasterAgreementReference | MasterAgreementIDInfo)?,
ItemOutIndustry?, Packaging*, ReleaseInfo?, Batch?). Seul ItemID
est strictement obligatoire au contenu ; ItemDetail est optionnel
mais quasi systématiquement présent.
Côté attributs : quantity et lineNumber sont
obligatoires en pratique (le DTD les déclare #REQUIRED dans la
plupart des contextes hors blanket order).
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.069/cXML.dtd">
<cXML payloadID="260513.160000.order@buyer.example"
timestamp="2026-05-13T16:00:00+02:00"
version="1.2.069">
<Header>
<From>
<Credential domain="DUNS"><Identity>123456789</Identity></Credential>
</From>
<To>
<Credential domain="DUNS"><Identity>987654321</Identity></Credential>
</To>
<Sender>
<Credential domain="DUNS">
<Identity>123456789</Identity>
<SharedSecret>shared-secret-here</SharedSecret>
</Credential>
<UserAgent>ediverse-buyer/1.0</UserAgent>
</Sender>
</Header>
<Request>
<OrderRequest>
<OrderRequestHeader orderID="PO-2026-00789"
orderDate="2026-05-13T16:00:00+02:00"
type="new">
<Total>
<Money currency="EUR">129.97</Money>
</Total>
<ShipTo>
<Address>
<Name xml:lang="fr">Acheteur SA — Site Paris</Name>
<PostalAddress>
<Street>10 rue de la Paix</Street>
<City>Paris</City>
<PostalCode>75002</PostalCode>
<Country isoCountryCode="FR">France</Country>
</PostalAddress>
</Address>
</ShipTo>
<BillTo>
<Address>
<Name xml:lang="fr">Acheteur SA — Comptabilité</Name>
<PostalAddress>
<Street>1 avenue des Champs-Élysées</Street>
<City>Paris</City>
<PostalCode>75008</PostalCode>
<Country isoCountryCode="FR">France</Country>
</PostalAddress>
</Address>
</BillTo>
<Contact role="buyer">
<Name xml:lang="fr">Marie Dupont</Name>
<Email>marie.dupont@acheteur.example</Email>
</Contact>
</OrderRequestHeader>
<ItemOut quantity="3" lineNumber="1">
<ItemID>
<SupplierPartID>SKU-A100</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">29.99</Money></UnitPrice>
<Description xml:lang="fr">Chaise de bureau ergonomique noire</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">56101504</Classification>
</ItemDetail>
</ItemOut>
<ItemOut quantity="2" lineNumber="2">
<ItemID>
<SupplierPartID>SKU-B200</SupplierPartID>
</ItemID>
<ItemDetail>
<UnitPrice><Money currency="EUR">20.00</Money></UnitPrice>
<Description xml:lang="fr">Repose-pieds réglable</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Classification domain="UNSPSC">56121601</Classification>
</ItemDetail>
</ItemOut>
</OrderRequest>
</Request>
</cXML> Requis vs optionnel
Vue minimale d'un OrderRequest valide :
- Racine
cXMLavecpayloadID,timestampetversion. Header>From,To,Sender(chacun avecCredential+).Request>OrderRequest.OrderRequestHeaderavecorderIDetorderDateen attributs,TotaletBillTodans le contenu.- Au moins un
ItemOutavecquantity,lineNumberet unItemID>SupplierPartID.
Le ShipTo au niveau header est optionnel (un même ShipTo
peut être défini par ItemOut), mais en pratique on le met au header
par défaut.
Patterns courants
Le couple orderID (côté acheteur) + SupplierOrderInfo/orderID
(côté fournisseur, optionnel) est la clé de corrélation. Pour les commandes issues
d'un punchout, le SupplierOrderInfo permet à l'ERP fournisseur de
retrouver le panier d'origine.
Codes UNSPSC dans Classification : même si le
DTD permet n'importe quel domain, l'usage Ariba/SAP Business Network
impose UNSPSC pour les catégories produit. C'est ce qui permet aux acheteurs
d'agréger les achats par famille.
Modifications post-émission : utiliser type="update"
avec un DocumentReference qui pointe le payloadID de la
précédente version. Le contenu doit être complet — la nouvelle version
remplace, elle ne fusionne pas.
Documentation
- cXML.dtd — version courante
— chercher
ELEMENT OrderRequestetELEMENT OrderRequestHeader. - cXML Reference Guide (PDF) — chapitre OrderRequest, mappings avec EDIFACT et X12.
- ConfirmationRequest — l'accusé de réception métier.