ODOO 8 – Interface à Magento 2 via Pentaho Data Integration

La solution "maquette" présentée ici, consiste à interfacer ODOO 8 à Magento 2 en utilisant l'ETL de Pentaho (appelée soit Kettle, soit Data Intégration, soit PDI) .

Cela ne remplace pas les connecteurs évoqués dans l'article précédent mais cela peut dépanner dans certains cas (ex: reprise de données) surtout dans la période actuelle où aucun connecteur gratuit ODOO-Magento 2 n'existe.

J'avais déjà rédigé des articles sur Pentaho Data Integration en août 2015.

Objet

Extraire les produits "actifs" de Magento pour les insérer dans ODOO, dans un contexte très simplifié ( pas de gestion des erreurs, attribut "name" seul renseigné ...)

Environnement

  • Magento 2.0.2 installé sur un serveur mutualisé O2switch
  • Odoo 8 installé sur un serveur VPS Debian 8.3

/!\  Cette solution ne fonctionne pas avec Odoo 9 CE car la dernière étape "OpenERP Object Output" est en échec

  • Pentaho PDI v6.0.1 et Java JRE 1.7 installés sur un PC Linux Mint
    • PDI téléchargé par :  wget https://sourceforge.net/projects/pentaho/files/Data%20Integration/6.0/pdi-ce-6.0.1.0-386.zip
    • JRE installé par :  sudo apt-get install default-jre

Prérequis

Pour autoriser l'accès aux API REST de Magento, il faut créer une nouvelle "intégration"

Capture du 2016-03-31 10:28:04

... avec les droits suivants (à affiner selon le contexte)

Capture du 2016-03-31 10:29:34

Description

En résumé, cela consiste à créer une "transformation" dans PDI qui va appeler l'API REST "products" de Magento (interface "catalogProductRepositoryV1") pour ensuite appeler ODOO en XML-RPC .

Voici à quoi ressemble la transformation dans PDI :

Capture du 2016-03-31 10:01:37

Pour information, j'utilise pour développer et débugger, l'outil graphique "spoon.sh" de PDI.

Ensuite, il est possible de livrer le fichier "transformation" xxxx.ktr sur un serveur sans interface graphique (ex: VPS) et de l'exécuter avec le script "pan.sh" (ex: ./pan.sh -file=/your_directory/xxxx.ktr ).

Détaillons chacune des étapes :

  * Etape "Generate Rows"

Le critère de sélection est de rechercher les produits avec le status "enabled" (produits actifs).

L'url Magento à appeler est : http://<votre url magento>/magento2/rest/V1/products?searchCriteria[filter_groups][0][filters][0][field]=status&searchCriteria[filter_groups][0][filters][0][value]=1&searchCriteria[filter_groups][0][filters][0][condition_type]=eq

Capture du 2016-03-31 10:04:29

  * Etape "HTTP client"

Onglet "Général"

Capture du 2016-03-31 10:08:12

Onglet "Fields"

Capture du 2016-03-31 10:08:28

   * Etape "Json Input"

Onglet "File"

Capture du 2016-03-31 10:11:14

Onglet "Fields"

Nous ne récupérerons dans le flux JSON que le champ "name" du produit .

Pour cela, l'expression JSON Path est : $..items[*].name

Capture du 2016-03-31 10:11:48

* Etape "OpenERP Object Output"

Capture du 2016-03-31 10:13:59

Exemple de connection "Odoo" (ne pas utiliser le user "admin" mais dédier un user créé pour l'occasion avec des droits adaptés)

Capture du 2016-03-31 10:14:33

Après avoir créé et relié ces 4 étapes, créé 2 produits dans Magento ...

Capture du 2016-03-31 09:58:18

... puis lancé la transformation PDI

Capture du 2016-03-31 10:18:58

... le résultat dans ODOO est celui attendu

Capture du 2016-03-31 10:19:46

2 réflexions au sujet de « ODOO 8 – Interface à Magento 2 via Pentaho Data Integration »

  1. Bonjour,
    Merci pour cet article, très intéressant !
    Comment avez-vous passé les paramètres oauth 1.0 demandé par l’API REST de magento 2 pour l’autorisation?
    Merci,
    Cdt,
    Thomas ZAEPFFEL

    1. Bonjour,
      Je n’ai pas traité la problématique d’authentification car j’avais ouvert les API Magento à tout le monde (cf 2ème capture d’écran).
      Ce n’était qu’un exemple simplifié.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *