Connecteur · Magento
Connecteur Odoo ↔ Magento
Magento est puissant et lourd. L'API répond bien ; ce sont les index, le moteur de recherche et le modèle d'attributs qui font tomber les projets.
/rest/V1/... (+ file d’attente asynchrone)Magento est la plateforme la plus lourde que nous intégrons. Son API REST est correcte et bien documentée ; les difficultés sont ailleurs, dans des mécanismes internes que l’API masque et qui se rappellent à vous au pire moment.
Le modèle EAV : à comprendre avant d’écrire une ligne
Magento ne stocke pas les produits comme une table de colonnes. Il utilise un modèle où chaque attribut est une entité à part, rangée dans des tables par type de donnée. Cela lui donne sa souplesse — on ajoute un attribut sans toucher au schéma — et sa lourdeur.
Deux conséquences directes pour une intégration :
- Un attribut doit exister avant d’être alimenté. Il n’est pas créé à la volée : une ligne qui référence un attribut inconnu échoue. Le mapping commence donc par l’inventaire des attributs et des jeux d’attributs.
- Les jeux d’attributs conditionnent le produit. Deux familles de produits n’ont pas les mêmes attributs disponibles. Le connecteur doit savoir dans quel jeu il crée, sinon il crée des produits amputés.
Les index : la cause n°1 des faux bugs
C’est le piège qui fait perdre le plus de temps, et il ne ressemble pas à un problème d’intégration.
Après tout import massif : réindexer, puis vider le cache. Sans ça, le catalogue reste invisible et l’équipe conclut que « le connecteur ne marche pas ». Nous intégrons cette étape dans la procédure d’import, pas dans une note de bas de page.
Même logique pour le moteur de recherche : Magento en exige un externe. S’il est mal configuré ou saturé, la recherche et une partie des listings tombent — indépendamment de votre catalogue.
Le volume : la file asynchrone
Créer 50 000 produits par appels REST unitaires est irréaliste : trop lent, et le serveur ne tient pas. Magento expose une file d’attente asynchrone qui accepte des lots et les traite en arrière-plan.
C’est le bon outil, avec une contrepartie : le traitement devient différé. Le connecteur ne reçoit plus « créé » ou « erreur » dans la réponse, mais un identifiant de lot dont il faut suivre l’état. Cela demande une machine à états côté Odoo — et c’est exactement ce qui distingue un connecteur de production d’un script d’import.
Le montage recommandé
| Domaine | Système |
|---|---|
| Vitrine, catalogue enrichi, SEO | Magento |
| Stock | Odoo → Magento |
| Commandes | Magento → Odoo |
| Achats, préparation, compta | Odoo |
| Attributs et jeux d’attributs | Définis dans Magento, alimentés depuis Odoo |
Les limites, dites franchement
L’infrastructure est un préalable, pas une option. Moteur de recherche, tâches planifiées, consommateurs de file, mémoire : un Magento mal hébergé ne se rattrape pas par un bon connecteur. Voir hébergement.
Pas de webhook exploitable en standard. Polling, ou module maison.
Les extensions modifient le modèle. Sur un Magento chargé d’extensions, un attribut peut être calculé, surchargé ou ignoré par un tiers. L’audit préalable n’est pas une formalité de style.
Pour un comparatif des arbitrages d’autorité, voir WooCommerce ; pour la partie recherche et volumétrie, voir performance.
Questions fréquentes
Pourquoi mes produits importés n'apparaissent pas sur le site ?
Presque toujours l’indexation. Magento sert ses listings depuis des tables d’index, pas depuis les tables produit. Un import massif par API les laisse périmés : le produit existe, il est actif, et il est invisible. Il faut réindexer, et vider le cache — le premier réflexe avant de suspecter le connecteur.
Faut-il créer les attributs avant d'importer ?
Oui, obligatoirement. Magento repose sur un modèle EAV : un attribut inconnu ne se crée pas à la volée à l’import, il fait échouer la ligne. Le mapping commence donc par un inventaire des attributs et des jeux d’attributs, avant la première ligne de code.
Peut-on importer 50 000 produits par l'API REST ?
Pas ligne par ligne en synchrone : ce serait interminable et ça écroulerait le serveur. Magento expose une file asynchrone conçue pour ça, qui accepte des lots et les traite en arrière-plan. C’est plus complexe à exploiter — il faut suivre l’état des lots — mais c’est le seul chemin viable en volume.
Magento a-t-il des webhooks ?
Rien d’exploitable en standard pour ce dont nous avons besoin. En pratique on interroge périodiquement les commandes, ou on ajoute un module côté Magento qui pousse un événement. Le polling suffit dans l’immense majorité des cas.
Magento tourne-t-il sur un hébergement mutualisé ?
Non, pas sérieusement. Magento exige un moteur de recherche externe, des tâches planifiées, des consommateurs de file d’attente et beaucoup de mémoire. C’est un sujet d’infrastructure à part entière, à traiter avant le connecteur.
Un point technique à valider ?
Décrivez le contexte : version d'Odoo, systèmes en jeu, volumétrie. Réponse d'un intégrateur sous 24 h ouvrées.