Aller au contenu
Gatebold

Publié le

Qu'est-ce que le cXML et pourquoi c'est important en e-procurement ?

cXML (commerce XML) est le langage que parlent entre eux les systèmes d'achats et les boutiques B2B. Comprendre ses messages clés pour aborder un projet PunchOut sereinement.

Structure d'un document cXML avec validation DTD

cXML - pour commerce XML - est un protocole d’échange basé sur XML, publié à l’origine par Ariba à la fin des années 1990, et devenu un standard de fait dans les échanges entre systèmes d’achats et fournisseurs B2B.

Si vous travaillez sur un projet PunchOut pour un grand compte, il y a de fortes chances que cXML soit le format imposé. Comprendre ses bases vous évite de découvrir le sujet en pleine intégration.

À quoi sert cXML

cXML définit comment deux systèmes échangent des informations transactionnelles : ouvrir une session d’achat, envoyer un panier, transmettre une commande, retourner une confirmation, signaler une facture.

Concrètement, c’est un ensemble de messages XML structurés, chacun avec une intention précise. Les deux systèmes s’échangent ces messages via HTTPS, généralement en POST, avec un payload XML dans le corps.

Le format est verbeux, comme tout XML, mais il a deux qualités importantes pour le B2B :

  • il est strict : la structure est connue à l’avance, ce qui rend les échanges prévisibles ;
  • il est lisible : un humain peut ouvrir un payload et comprendre ce qu’il contient.

Les messages clés à connaître

Pour un projet PunchOut, deux messages cXML font 80% du travail.

PunchOutSetupRequest

C’est le message envoyé par le système d’achats pour demander l’ouverture d’une session sur la boutique du fournisseur. Il contient :

  • l’identité de l’acheteur (Credential côté From, To, Sender)
  • des informations sur l’utilisateur qui démarre la session
  • une URL de retour (BrowserFormPost) où la boutique devra renvoyer le panier
  • éventuellement des informations contextuelles (devise, langue, pays)

La boutique répond avec un PunchOutSetupResponse contenant une URL de démarrage (StartPage). Le système d’achats redirige alors l’utilisateur vers cette URL.

PunchOutOrderMessage

C’est le message renvoyé par la boutique quand l’utilisateur valide son panier. Il contient :

  • l’en-tête de la session originelle
  • la liste des articles (ItemIn) avec leurs quantités, prix, descriptions, classifications
  • les codes produit attendus par l’acheteur (souvent UNSPSC, code interne, SKU fournisseur)
  • les unités de mesure, taxes, et toute donnée contractuelle pertinente

C’est ce message qui, une fois reçu par le système d’achats, alimente le panier interne pour validation.

Pourquoi le mapping cXML est si délicat

Le standard cXML décrit la structure générale, mais chaque grand compte ajoute ses propres règles :

  • des champs custom dans les extensions
  • des classifications spécifiques (codes maison, catégories métier)
  • des unités de mesure non standard
  • des règles de codification des taxes ou des frais de port

Résultat : un PunchOutOrderMessage qui satisfait Ariba ne satisfera pas forcément Coupa, et un message qui passe chez l’acheteur A peut être rejeté chez l’acheteur B.

C’est pourquoi un mapping cXML structuré - avec un socle commun et des profils par acheteur - change la vie d’un projet : on arrête de réécrire 80% du code à chaque nouvel acheteur.

cXML et alternatives

cXML reste dominant dans le monde Ariba / Coupa / Oracle. D’autres formats existent (OCI pour SAP, BMEcat dans certaines régions, OAGIS sur des intégrations plus larges), et certains acheteurs proposent du JSON ou du REST plus moderne.

Mais pour les projets PunchOut B2B classiques, en particulier sur Magento et Adobe Commerce, cXML est le format que vous rencontrerez le plus souvent. Le maîtriser correctement, c’est s’épargner beaucoup de surprises en production.

En résumé

cXML est le protocole XML qui permet aux systèmes d’achats et aux boutiques B2B de s’échanger sessions et paniers de manière structurée. Deux messages - PunchOutSetupRequest et PunchOutOrderMessage - couvrent l’essentiel d’un parcours PunchOut.

La difficulté vient moins du protocole lui-même que du mapping entre vos données catalogue et les attentes spécifiques de chaque acheteur.

Si vous voulez voir comment Gatebold structure ce mapping pour le rendre maintenable, parlons-en.