
Les marchands B2B évoluent avec des besoins que le commerce traditionnel ne connaît pas, tels que les comptes multiples, la tarification négociée, les catalogues complexes ou encore les workflows d’approbation. C’est précisément sur ce terrain qu’OroCommerce, la solution E-Commerce développée par Oro Inc., a construit sa réputation. En tant que partenaire OroCommerce, Dn’D accompagne certains de ses clients B2B sur cette solution, de l’implémentation jusqu’à l’évolution continue de leurs plateformes.
Fin mars 2026, la version OroCommerce 7.0.0 est sortie et depuis, 3 releases correctives (7.0.1, 7.0.2, 7.0.3) ont permis d’intégrer de nouvelles fonctionnalités intéressantes.
Cet article fait le point sur ce qui a attiré notre attention : des améliorations opérationnelles immédiates jusqu’aux fondations IA qui dessinent le B2B de demain.
OroPay : la solution de paiement native d’OroCommerce
Disponibilité : Enterprise Edition
OroPay est la solution de paiement native d’OroCommerce. Son positionnement est d’éliminer l’angle mort qui existe entre la commande validée sur le site et l’argent effectivement encaissé. Concrètement, son rôle est de supprimer la réconciliation manuelle entre votre plateforme E-Commerce, votre ERP et votre équipe comptable.
La solution s’appuie sur Global Payments (l’un des leaders mondiaux du traitement des paiements) et couvre l’ensemble du cycle order-to-cash dans une interface unifiée : paiement en self-service 24h/24, portail de facturation intégré au storefront, réconciliation automatique des paiements sur les bonnes commandes et factures, et génération d’une API Invoice pour synchroniser votre ERP.

Côté sécurité, OroPay est certifié PCI DSS, SOC 1/2, ISO 27001. Il intègre la SCA et le 3D Secure 2.0, ce qui le rend conforme aux exigences de la DSP2 européenne.
La page produit d’OroPay met en avant les paiements ACH (réseau de paiement bancaire américain), ce qui indique un lancement prioritaire sur le marché nord-américain. La disponibilité en France n’est pas encore officiellement annoncée mais il se murmure que ça arriverait rapidement.
Pour en savoir plus sur OroPay, rendez-vous sur la ressource officielle d’Oro : Boostez votre trésorerie en connectant votre activité à OroPay
Les commandes récurrentes sur OroCommerce
Disponibilité : Community & Enterprise Edition
La fonctionnalité Recurring Orders permet aux clients de programmer automatiquement des achats récurrents à partir d’une commande existante, en définissant une fréquence, une date de début et une éventuelle date de fin.
Les clients peuvent ensuite gérer les commandes depuis leur espace en les mettant en pause, en les reprenant ou en les annulant, tandis qu’OroCommerce génère automatiquement les nouvelles selon le planning défini.

Les administrateurs peuvent configurer finement cette fonctionnalité (activation, notifications, statuts, conservation des prix d’origine, etc.) aux niveaux “global”, “organisation”, “site web“ ou “client”. Cette nouveauté facilite les achats récurrents de produits consommables ou régulièrement réapprovisionnés, tout en laissant le contrôle aux acheteurs.
Pour en savoir plus sur les commandes récurrentes avec OroCommerce, rendez-vous sur la ressource officielle d’Oro: Manage Recurring Orders in the Storefront
Retrouvez également le guide d’utilisation : Configure Recurring Orders Settings per Organization – OroCommerce, OroCRM and OroPlatform Documentation
La migration du socle technique d’OroCommerce sur Symfony 7
Le socle technique d’OroCommerce 7.0 repose désormais sur Symfony 7, la version LTS supportée jusqu’en novembre 2028. Pour les équipes techniques, c’est une bonne nouvelle à plusieurs titres
- La migration abandonne
SensioFrameworkExtraBundleau profit des attributs PHP natifs pour les routes et les contrôleurs. - Les
ParamConvertercèdent la place auxValueResolver. - Le code est plus idiomatique, plus facile à lire, et plus facile à maintenir par des développeurs qui rejoignent le projet.
Sur le fond, Symfony 7 apporte des améliorations de performance et une meilleure intégration avec PHP 8.3+. Pour OroCommerce, c’est aussi l’assurance d’être sur une base maintenue activement par la communauté Symfony pendant encore plusieurs années.
PNPM remplace NPM pour la gestion des assets frontend, ce qui accélère les installations dans les pipelines CI/CD.
L’authentification SSO OpenID Connect & SCIM sur OroCommerce
Disponibilité : Enterprise Edition
OroCommerce 7.0 pousse plus loin son intégration avec les fournisseurs d’identité (IdP) d’entreprise via 2 standards complémentaires.
- OpenID Connect / OAuth2, qui permet l’authentification unique (SSO). Vos utilisateurs se connectent avec leur compte d’entreprise (Okta, Microsoft Entra ID, Keycloak, etc.) sans mot de passe spécifique à Oro. Le bundle oro/oauth2-server gère les flux de tokens, la rotation des clés et la vérification des permissions.
- SCIM (System for Cross-domain Identity Management), qui va encore plus loin. Il automatise le provisionnement et dé-provisionnement des comptes utilisateurs directement depuis votre annuaire d’entreprise. Par exemple, un nouveau salarié rejoint l’entreprise et son compte Oro est créé automatiquement avec le bon rôle. Lorsqu’il part, son accès est révoqué en temps réel, sans ticket RH.
La nouvelle couche IA sur OroCommerce : OroIQ & SmartOrder
Disponibilité : Enterprise Edition
OroIQ est la couche IA transverse d’OroCommerce. Elle regroupe plusieurs fonctionnalités, dont 2 qui méritent d’être détaillées :
- la génération de contenu assistée par IA (
AiContentGenerationBundle) : rédaction automatique de descriptions produits, de textes marketing et de réponses aux RFQ, à partir des données produits existantes dans Oro. Configurable par canal et par type de contenu. - le SmartOrder (Mapping Automatique), qui est la fonctionnalité phare pour les intégrateurs B2B. Lorsqu’un client envoie une commande par email, PDF, EDI ou formulaire non structuré, SmartOrder analyse le document et mappe automatiquement les références produits (quel que soit l’identifiant utilisé : SKU, EAN, description libre) vers les SKU internes d’OroCommerce. Ce qui prenait une saisie manuelle ou un développement d’intégration spécifique devient alors un processus automatisé.

Le SmartAgent (disponible sur le storefront depuis OroCommerce 6.1) s’enrichit dans la 7.0 d’un accès structuré via le protocole MCP.
Log Traceability améliorée (OroCommerce 7.0.1)
Disponibilité : Community & Enterprise Edition
Déboguer un problème dans une application distribuée, c’est souvent chercher une aiguille dans une botte de logs : des dizaines de lignes sans lien apparent entre elles, issues de processus différents, éparpillées entre votre application Symfony, vos workers de message queue et vos appels à des APIs tierces.
OroCommerce 7.0.1 résout ce problème avec un trace ID unique propagé à travers toute la chaîne d’exécution.
Son fonctionnement technique :
- À chaque requête HTTP entrante,
RequestTraceListenerlit le headerX-Request-ID(configurable viaORO_LOG_TRACE_ID_HEADER). S’il est absent, un ID de 32 caractères hexadécimaux est généré parTraceManager. TraceProcessor(un processeur Monolog) injecte automatiquement cetraceIddans le contexte de chaque entrée de log produite pendant la requête.MessageTraceProducerMiddlewarepropage ce même ID dans les propriétés de chaque message envoyé à la file de messages (MQ). Les workers qui traitent ces messages en héritent automatiquement.- Pour les commandes console,
ConsoleTraceListenergénère un trace ID dédié.
// LoggerBundle/Trace/TraceManager.php
public function generate(): string
{
// 16 bytes = 32 caractères hexadécimaux
return bin2hex($this->randomizer->getBytes(16));
}
// LoggerBundle/Async/MessageTraceProducerMiddleware.php
// Priorité : propriété du message → contexte en cours → TraceManager → nouveau
$traceId = $this->currentTraceId ?? $this->traceManager->get();
$message->setProperty(self::MESSAGE_PROPERTY_TRACE_ID, $traceId);
En pratique : quand une intégration a échoué dans la nuit, vous cherchez l’ID dans votre outil de log agrégation (GCP, Elastic, Datadog, Graylog, etc.) et vous obtenez sans effort la séquence complète des événements, de la requête API initiale jusqu’au worker qui a échoué, en passant par l’appel au tiers.
API Request Body Logging (OroCommerce 7.0.1)
Disponibilité : Community & Enterprise Edition
Complémentaire au trace ID, cette fonctionnalité répond à une question récurrente en debug d’intégration : « Qu’est-ce que le système externe m’a exactement envoyé ? »
OroCommerce 7.0.1 capture le corps complet des requêtes API entrantes dans les logs applicatifs pour toutes les opérations mutantes (CREATE, UPDATE, UPDATE_RELATIONSHIP, ADD_RELATIONSHIP, DELETE_RELATIONSHIP).
// ApiBundle/Request/RequestActionHandler.php
protected function logRequest(string $action, Request $request, bool $logRequestData = false): void
{
$context = [
'api_action' => $action,
'request_uri' => $request->getUri(),
'method' => $request->getMethod(),
];
if ($logRequestData) {
$context['request_data'] = $request->request->all(); // le body complet
}
$this->logger->info('API Request.', $context);
}
Couplé au trace ID de la section précédente, vous pouvez désormais plus facilement retrouver exactement quel payload votre ERP a envoyé lors d’une création de commande qui a produit une erreur.
Webhooks natifs (OroCommerce 7.0.2)
Disponibilité : Community & Enterprise Edition
Avant 7.0.2, connecter OroCommerce à un système externe en temps réel impliquait soit du polling (inefficace), soit du développement custom. OroCommerce 7.0.2 introduit un support natif des webhooks, entrants et sortants.
La feature repose sur OroIntegrationBundle et s’appuie sur le système de Message Queue d’Oro pour garantir la scalabilité.

Chaque requête sortante est signée avec la clé secrète du webhook (stockée chiffrée en base) :
// WebhookNotificationSender.php
$headers['Webhook-Signature'] = hash_hmac('sha256', $payload, $secret);
$headers['Webhook-Signature-Algorithm'] = 'HMAC-SHA256';
Le système externe peut ainsi vérifier l’authenticité de chaque notification.
Le processor gère les erreurs HTTP intelligemment. Une réponse 410 Gone supprime automatiquement le webhook (l’endpoint n’existe plus), tandis que 429 et 503 déclenchent un retry avec backoff. Le payload est sérialisé au format JSON:API aligné sur ce que l’API REST retournerait pour la même entité.
Pour exposer une entité via webhook, une seule ligne de configuration suffit dans l’entity config :
# Resources/config/oro/entity.yml
Oro\Bundle\OrderBundle\Entity\Order:
integration:
webhook_accessible: true
API par Identifiant Externe (OroCommerce7.0.2)
Disponibilité : Community & Enterprise Edition
Il s’agit peut-être de la fonctionnalité la plus impactante pour les intégrateurs ERP/PIM. De manière classique, interroger l’API OroCommerce nécessite l’ID interne de l’entité (un entier auto-incrémenté en base). Pour un système externe qui ne connaît pas l’identifiant interne d’Oro mais uniquement une autre réference (le SKU dans le PIM, le numéro de client dans l’ERP, etc.), cela implique une table de correspondance custom à maintenir. Fini.
Le mécanisme est entièrement piloté par un header HTTP et ne nécessite aucun nouvel endpoint :
X-Integration-Type: ext_id
Ce header active un aspect de contexte dans le pipeline API (CheckExtIdIntegrationRequestType), qui déclenche un processeur de configuration (ConfigureExtIdEntities). Ce processeur réécrit les métadonnées de l’entité pour remplacer l’identifiant primaire (l’ID entier) par le champ externe configuré. Le reste du pipeline API s’exécute sans modification.
# ProductBundle/Resources/config/oro/app.yml
oro_api:
ext_id_entities:
Oro\Bundle\ProductBundle\Entity\Product: sku
// ApiBundle/Util/EntityIdHelper.php
// Au lieu de WHERE product.id = 42, la requête devient :
$qb->andWhere(sprintf('%s.%s = :%s', $alias, $propertyName, $paramName))
->setParameter($paramName, $entityId); // ex: "PRODUCT-SKU-ABC"
L’ID interne reste disponible dans la réponse sous la clé dbId.
En résumé
OroCommerce 7.0.0, 7.0.1, 7.0.2 et 7.0.3 illustrent la trajectoire prise par Oro Inc. depuis quelques releases, avec des avancées qui touchent tous les niveaux du projet.
Les équipes techniques gagnent en observabilité et en flexibilité d’intégration grâce au trace ID, au logging enrichi, aux webhooks natifs ou à l’API par identifiant externe. Les équipes métier disposent de nouveaux leviers opérationnels avec OroPay et les commandes récurrentes. Et les fondations posées par OroIQ, et SmartOrder dessinent une plateforme de plus en plus pilotée par l’IA, sans rupture pour les intégrations existantes.
Ces évolutions confirment aussi une exigence technique croissante, entre migration du socle Symfony, gestion fine des identités via SSO et SCIM, ou architecture événementielle des webhooks.
C’est précisément sur ces sujets que l’équipe technique Dn’D accompagne ses clients B2B, de l’implémentation initiale d’OroCommerce jusqu’à l’intégration de ces nouvelles fonctionnalités dans des systèmes d’information souvent complexes (ERP, PIM, outils de gestion de la relation client). Que ce soit pour évaluer l’impact de la migration Symfony 7 sur un projet existant, connecter un ERP via webhooks ou API par identifiant externe, ou explorer les premiers cas d’usage d’OroIQ, nos experts restent disponibles pour échanger sur ces sujets.
Vous souhaitez en savoir plus sur OroCommerce dans le cadre d’une activité E-Commerce B2B ? Discutons-en ensemble ! 👇