Publié le
cXML vs OCI : quelle différence et lequel choisir ?
cXML et OCI sont les deux formats dominants en PunchOut B2B. Leurs origines, leurs mécanismes techniques et leurs cas d'usage sont très différents. Ce guide vous aide à comprendre lequel vous allez rencontrer et comment les gérer.
Quand on démarre un projet PunchOut, une question revient rapidement : cXML ou OCI ? Ce sont les deux formats d’échange dominants en e-procurement B2B. Ils font globalement la même chose - permettre à un prescripteur de naviguer sur un catalogue fournisseur et de renvoyer un panier - mais avec des mécanismes très différents.
Origines
cXML (commerce XML) a été créé par Ariba à la fin des années 1990. C’est un format XML complet avec un ensemble de messages standardisés. Il est devenu le standard de fait pour les systèmes d’achats comme SAP Ariba, Coupa, Jaggaer et Oracle Procurement.
OCI (Open Catalog Interface) a été créé par SAP pour connecter ses systèmes (SAP SRM, SAP S/4HANA) à des catalogues fournisseurs externes. C’est un mécanisme plus simple, basé sur des paramètres URL et des formulaires HTML.
Comparaison technique
| cXML | OCI | |
|---|---|---|
| Format | XML structuré | Paramètres URL / formulaire HTML |
| Créateur | Ariba (SAP) | SAP |
| Ouverture de session | PunchOutSetupRequest (XML POST) | URL avec paramètres (HOOK_URL) |
| Retour panier | PunchOutOrderMessage (XML POST) | Formulaire HTML POST vers HOOK_URL |
| Authentification | SharedSecret dans le XML | Paramètres URL ou header |
| Complexité | Élevée (DTD, validation) | Faible (clé=valeur) |
| Systèmes | Ariba, Coupa, Jaggaer, Oracle | SAP SRM, SAP S/4HANA |
| Mapping | Riche (ItemIn, Extrinsic, UOM...) | Simplifié (NEW_ITEM-DESCRIPTION...) |
Le flux cXML
Système d'achats
Envoie un PunchOutSetupRequest (document XML complet avec credentials)
Fournisseur
Répond avec un PunchOutSetupResponse contenant l'URL de session
Prescripteur
Navigue sur le catalogue, constitue son panier
Fournisseur
Envoie le PunchOutOrderMessage (XML) vers le BrowserFormPost
Le cXML échange des documents XML complets à chaque étape. L’authentification, les données produit, les prix, les taxes - tout est structuré dans le XML.
Le flux OCI
SAP (acheteur)
Redirige le prescripteur avec une URL contenant HOOK_URL et OCI_VERSION
Prescripteur
Navigue sur le catalogue, constitue son panier
Fournisseur
Poste un formulaire HTML vers HOOK_URL avec les champs NEW_ITEM-*
L’OCI est plus simple : pas de XML, pas de DTD, pas de PunchOutSetupRequest. Le système d’achats redirige le prescripteur avec une URL contenant un HOOK_URL (l’adresse de retour). Le fournisseur renvoie le panier via un formulaire HTML standard.
Quand utiliser lequel ?
Vous ne choisissez pas - c’est l’acheteur qui impose le format.
- Si votre client utilise SAP Ariba, Coupa, Jaggaer, Oracle → il demandera du cXML
- Si votre client utilise SAP SRM ou SAP S/4HANA directement → il demandera de l’OCI
- Certains clients SAP utilisent Ariba comme couche intermédiaire → dans ce cas c’est du cXML même si le backend est SAP
En pratique, si vous vendez à plusieurs grands comptes, vous aurez besoin des deux formats.
Les différences qui comptent en intégration
Complexité du mapping
En cXML, le PunchOutOrderMessage est un document XML riche avec des nœuds imbriqués (ItemIn, ItemDetail, UnitPrice, Classification, Extrinsic). Le mapping est puissant mais complexe.
En OCI, le retour panier est un ensemble de paires clé=valeur plates. Plus simple à construire, mais moins expressif.
Validation
Le cXML a un DTD officiel. Chaque message peut (et devrait) être validé contre ce DTD. Les erreurs de structure sont détectables automatiquement.
L’OCI n’a pas de schéma formel. Les erreurs sont détectées côté SAP à la réception, souvent sans message explicite.
Sécurité
Le cXML intègre l’authentification dans le message lui-même (SharedSecret). L’OCI passe l’authentification via l’URL ou des headers HTTP - moins structuré mais fonctionnel.
Comment Gatebold gère les deux
Gatebold supporte cXML et OCI nativement. La configuration se fait par acheteur :
- Un acheteur Ariba → connexion cXML avec son shared secret et son mapping
- Un acheteur SAP SRM → connexion OCI avec son HOOK_URL et ses champs
- Les deux coexistent dans la même plateforme, avec le même connecteur Magento
Le mapping est adapté au format de chaque acheteur. L’observabilité trace les échanges quel que soit le protocole.
En résumé
| cXML | OCI | |
|---|---|---|
| Quand | Ariba, Coupa, Jaggaer, Oracle | SAP SRM, SAP S/4HANA |
| Comment | XML structuré, DTD | URL + formulaire HTML |
| Complexité | Élevée | Faible |
| Expressivité | Riche | Basique |
La question n’est pas “lequel choisir” mais “lequel votre acheteur utilise”. Et si vous avez plusieurs acheteurs, vous aurez besoin des deux.
Si vous avez un projet multi-acheteurs sur Magento, parlons-en.