Interface du back office OroCommerce

Synchroniser le Web Catalog d’OroCommerce avec l’arborescence marketing d’outils tiers (PIM, ERP…)

Par Alexandre P. le 8 avril 2020

 Lecture 10 minutes

Si vous ne connaissez pas le Web Catalog d’OroCommerce ou son fonctionnement, je vous invite à lire ces deux articles en préambule :

 


 

Un projet e-commerce BtoB est avant tout une histoire de flux et de synchronisations. Prix, stocks, commandes, clients, données produits… Tout y passe et il est rare qu’une donnée soit saisie dans le back-office du site e-commerce, si ce n’est quelques pages de contenu pour enrichir l’expérience client.

Le reste des données se trouve en général dans un ERP, un WMS, une GED, un PIM… Quand il n’y en a pas plusieurs de chaque ! Les données produit, elles, sont stockées dans un PIM et à leur côté, siège en général l’arborescence marketing. C’est l’arborescence que verront les clients, notamment sur le site e-commerce.

Cette dernière est soit :

  • Un copier-coller de l’arbre ERP
    lorsque celui-ci s’y prête et ne comporte pas des milliers de sous-familles.
  • Une version adaptée ou raccourcie de ce dernier
    et auquel cas, créée automatiquement.
  • Créée à la main,
    dans l’amour et la souffrance, en classant les produits à la main.

Autant dire que les deux premiers cas ne nous intéressent que moyennement car ils sont réplicables très facilement en important l’arbre ERP sur OroCommerce et en définissant quelques règles de classification. En revanche, le dernier cas est crucial, car il est alors im-pen-sable de recréer cet arbre manuellement dans OroCommerce et il convient de trouver une manière de l’importer.

Où sont les catégories et arborescences sur OroCommerce ?

On distingue deux types d’arborescences :

  • Le Master Catalog
  • Le Web Catalog

Master Catalog

Le Master Catalog est rarement utile. Il s’agit en général de l’arborescence ERP importée telle quelle. Un produit ne pouvant faire partie que d’une seule catégorie du Master Catalog (c’est en général également le cas sur l’ERP), cette arborescence ne présente aucune souplesse.

Le Master Catalog ne permet pas non plus de gérer du contenu différent par client. Ce ne sont que des catégories les unes dans les autres et, sur chaque catégorie, des produits.

Le Master Catalog n’a pas vocation à être affiché. En revanche, il peut permettre de construire le Web Catalog ou encore, être utilisé en tant que “filtre” à divers endroits de l’application (les promotions par exemple).

Web Catalog

Le Web Catalog est l’arborescence souple par excellence ! Elle peut présenter un contenu différent pour chaque client et remonter des produits filtrés avec des critères très avancés. Flexible, son unique but est de s’afficher en front-office.

Comment importer l’arborescence marketing ?

L’arbre Marketing s’importe donc en tant que Web Catalog sur OroCommerce. Inutile de chercher : il n’existe aucun import standard.

Chez Synolia nous avons créé notre propre système d’import. Il prend en entrée les formats les plus courants (fichiers plats CSV, webservices XML, JSON…) et permet à la fois la création, la mise à jour et la suppression des nœuds de Web Catalog.

Avant de rentrer en détail dans l’import d’un Web Catalog, il faut commencer par lister les règles du jeu :

  • Il peut y avoir des nœuds
    contenant d’autres nœuds.
  • Chaque nœud peut être multilingue
    et contenir de 0 à une infinité de produits.
  • Un produit peut être contenu dans 0
    à une infinité de nœuds.
  • Quel que soit le nombre de catégories et de produits,
    il faut conserver de bonnes performances à l’import et à la mise à jour.

Le dernier point est tout sauf anodin. Pour comprendre pourquoi, faisons un aparté sur le fonctionnement du Web Catalog.

Fonctionnement (technique) du Web Catalog

Créons un nœud de Web Catalog avec une variante de contenu de type Product Collection :

Web catalog Orocommerce

Avez-vous remarqué le nom étrange dans le champ texte ? Product Collection #5e0efb8e21634

OroCommerce a automatiquement créé un Segment. Un segment est ni plus ni moins qu’une entité distincte dans OroCommerce faite pour gérer des listes de données. Si je vais dans la liste des Segments via le menu Reports & Segments > Manage Segments, qui retrouve-t-on en bas de la liste ? → Product Collection #5e0efb8e21634 !

Liste des segments dans OroCommerce

Pratiques et puissantes, ces listes sont également gourmandes en ressources lorsqu’il s’agit de les calculer. Or, dès qu’un nœud de Web Catalog sera modifié, tous les segments qui lui sont associés seront recalculés. Il convient donc de ne pas déclencher une cascade de recalcul à chaque modification d’un seul nœud de Web Catalog si nous souhaitons conserver des performances correctes.

Quelques approches

Arborescence marketing = arborescence ERP

Si l’arborescence marketing reprend celle de l’arborescence ERP, il sera alors très intéressant d’utiliser le Master Catalog.

La première étape consistera à importer l’arbre ERP en tant que Master Catalog et d’y classer les produits (via un import de produits) de la même façon que sur l’ERP. Ensuite, nous importerons ce même arbre ERP en tant que Web Catalog avec exactement la même architecture et les mêmes noms de nœud. Et c’est ici que la magie s’opère. Pour chaque nœud de Web Catalog, l’unique variante ira chercher le nœud équivalent sur le Master Catalog. Et nous ferons bien attention à laisser le paramètre Sub-Categories > Include, show as filter.

Arbre ERP en tant que web catalog OroCommerce
Back-office : paramétrage de la variante par défaut d’un noeud de Web catalog

 

Que se passe-t-il ici ?

Nous avons la même arborescence entre le Master Catalog et le Web Catalog. Nous paramétrons le noeud Lighting Products du Web Catalog. Nous lui donnons comme variante par défaut une variante de type “Category” et nous référençons le noeud Lighting Products du Master Catalog, en incluant les produits des sous-catégories.

En front-office, nous aurons alors l’arborescence de l’ERP avec tous les produits attendus dans chaque nœud avec, en prime, les produits des nœuds enfants.

Arborescence marketing != arborescence ERP

Dans ce cas là, il n’y a plus de règle et il faut étudier au cas par cas l’approche qui sera la plus robuste, souple et performante.

On peut distinguer deux approches principales :

  • Faire porter à chaque nœud
    les produits à afficher.
  • Partager l’information
    entre nœuds et produits.

Faire porter à chaque nœud les produits à afficher

Notre import ressemblera à quelque chose comme ceci (pseudo-code) :

La liste des produits est rattachée à chaque nœud du Web Catalog. C’est l’équivalent de créer une collection de produit sur un nœud et d’y ajouter des produits à la main, via le bouton “ADD” et la popin de sélection.

Créer une liste de produit à la main web catalog OroCommerce

Avantages :

  • Techniquement simple.
  • Pas trop gourmand en calcul côté OroCommerce car les produits sont directement référencés.

Inconvénients :

  • La taille du fichier / webservices d’import.
  • Il faut penser à inclure les produits des nœuds enfants sur chaque parent et ce, en cascade. Sinon, ils ne s’afficheront pas.
  • Le temps d’import / mise à jour : il faut aller soit comparer chaque sku référencé sur chaque nœud (nombre de skus x nombre de nœuds = des millions très rapidement) soit tout effacer pour tout recréer et auquel cas : un gros risque de se retrouver sans menu si quelque chose ne tourne pas rond.

Au final, c’est une solution assez brute qui est attrayante dans sa simplicité mais qui nécessite de gros efforts de sécurisation pour conserver des performances intéressantes.

Partager l’information entre nœuds et produits

C’est en général la solution à préférer lorsqu’il n’y a pas de “logique machine” dans la classification des produits.

Pour cet exemple, voici l’arborescence marketing et les catégories auxquelles nous souhaitons rattacher notre produit (celles en jaune). Il n’y a aucune logique, que ce soit au niveau des codes des nœuds qu’au niveau de la classification du produit.

La première étape est d’ajouter sur chaque produit un attribut de type Text ou Multi-select. Le type Text fonctionne très bien. Le Multi-select est plus propre à l’affichage sur la fiche produit (en back-office), mais l’import nécessitera plus de rigueur. Nous partirons ici sur un type Text que nous nommerons Catégories marketing (arbitraire).

Exemple d'arborescence

A l’intérieur, nous plaçons les codes des nœuds de Web Catalog dans lequel le produit doit s’afficher, séparés par un caractère (ici, le pipe : |)

Catégorie marketing d'un produit
Back-office : édition d’un produit - vue de l’attribut “Catégories Marketing”

Faisons maintenant un tour sur notre premier nœud jaune de notre Web Catalog : Dolor sit amet.

édition d’un noeud et de ses variantes de contenu
Back-office - Web Catalog - édition d’un nœud et de ses variantes de contenu

Nous avons créé une variante de contenu dont les produits affichés répondront à la logique suivante : 

  • L’attribut Catégories Marketing Contient |CH9VjNWsKT2|
  • OU l’attribut Catégories Marketing Est égal à CH9VjNWsKT2
  • OU l’attribut Catégories Marketing Commence par CH9VjNWsKT2|
  • OU l’attribut Catégories Marketing Termine par |CH9VjNWsKT2

Pourquoi ne pas avoir fait ceci tout simplement ?

collection de filtres avancés du web catalog OroCommerce

Parce que s’il existe une catégorie dont le code est CH9VjNWsKT2aaa, nous allons avoir un gros problème.

C’est tout simplement une façon de s’assurer que le code est bien exactement celui attendu.

Avantages

  • Le fichier / webservice d’import est léger et contient peu de données.
  • La mise à jour est simple car il suffit de changer le code référencé par les filtres du nœud, puis le Segment associé se recalculera tout seul.
  • Une implémentation souple.
  • Pas de risque de tout détruire s’il y a un problème à l’import.

Inconvénients

  • Il faut importer les codes des nœuds sur les produits, ce qui n’est pas vraiment un problème tant que toutes ces données nous parviennent d’une seule et même source : en général, un PIM.

Aller plus loin

Il ne s’agit ici que de vous donner quelques pistes sur les logiques d’import et de synchronisation d’un Web Catalog. Il n’existe aucune règle faisant foi sur l’ensemble des implémentations.

Par exemple, sur un projet que nous avons implémenté, les produits étaient catégorisés dans le PIM dans une seule catégorie (similaire à une catégorisation ERP) et leur “sku PIM” leur était attribué en fonction du code du nœud de rattachement. De plus, le code des catégories s’incrémentait à chaque enfant en reprenant le parent : abc > abcd > abcde > etc. Par exemple, si le code du nœud était “ABC”, tous les “sku PIM” des produits de cette catégories devaient commencer par “ABC…”.

Aussi, sachant que chaque produit avait un “sku PIM” unique et que toute cette logique ne changerait pas, nous avons simplement implémenté les variantes de contenu des nœuds du Web Catalog de la manière suivante :

Filtres avancés de la collection de produit du web catalog OroCommerce

Et maintenant que vous êtes un expert, vous comprenez toute la simplicité et l’élégance de cette solution !

GIF