OpenERP : Pour une montée en version rapide et efficiente

OpenERP est un progiciel de gestion intégré (ERP) open-source,  disponible sous Windows, Linux et Mac OS.  Il est téléchargeable gratuitement depuis son site web officiel http://www.openerp.com/downloads.

OpenERP comprend l’ensemble des fonctionnalités classiques que la majorité des ERP intègrent : La comptabilité/Finance, La gestion des ressources humaines, la gestion de la relation client, etc… Pour des besoins auxquels ces fonctionnalités ne répondent pas ou liés à un contexte particulier, on peut toujours envisager le développement d’un module spécifique moyennant une connaissance du langage de programmation python ainsi que de l’architecture technique de openERP.

Si openERP a le grand avantage d’être téléchargeable gratuitement sur internet, il a néanmoins l’inconvénient d’obliger ses utilisateurs à souscrire à un contrat de maintenance pour, notamment, la correction des bugs et la montée en version (openERP développe une nouvelle version tous les 6 mois en moyenne*). La délicatesse de cette opération de passage aux nouvelles versions tout en transportant l’ensemble de ses données exige une connaissance technique pointue de l’architecture de ce progiciel.

La migration des données

La migration des données d’une version de openERP à une autre plus récente est une opération de longue haleine. Tout d’abord, il faut s’approprier du bon logiciel ETL**. Etant donné que lors de cette migration, il va falloir non seulement transporter des données d’une table à une autre mais aussi et surtout effectuer nombre de transformations intermédiaires (Ajout d’un champ, attribution d’une valeur constante à un champ,etc…).

Dans un projet d’openERP, j’ai eu l’occasion de travailler sur la migration des données de openERP version 5.0.16 vers la version 6.1 avec l’ETL Pentaho Data Integration. Je le trouve d’ailleurs efficace dans la mesure où il dispose de l’ensemble des outils permettant de faire les transformations et chargements nécessaires dans des délais raisonnables.

Sans prétendre l’exhaustivité, cette opération de migration peut se résumer en gros en les étapes suivantes :

Etape n°1 : Etudier et chercher les différences entre la structure de la base de données de l’ancienne version et celle de la nouvelle.

Etape n°2 : Créer une nouvelle base de données dans la nouvelle version et installer tous les modules existants dans l’ancienne version, en vue de créer les tables vides à remplir. A noter qu’il y a des tables qui se remplissent automatiquement à ce stade, ce sont les tables commençant par ir (ir_model, ir_act_window, etc…).

Etape n°3 : Reverse engineering. Générer par un logiciel adéquat (PowerAMC pour Windows, DbVisualiser pour Linux) le Modèle Physique des Données (MPD) de la nouvelle version pour déterminer l’ordre de migration. On classe les tables suivant leur nombre de relations, celles qui ne dépendent d’aucune tables seront prioritaires.

Etape n°4 : Commencer par le remplissage des tables du module « base ». Ce module qui s’installe automatiquement avec l’installation de la nouvelle version. Ces tables contiennent les données liées aux utilisateurs, leurs droits d’accès, la devise, les groupes d’utilisateurs, etc… Elles commencent par le préfixe ress (ress_users, ress_company,res_currency,etc…)

Etape n°5 : En suivant l’ordre de migration trouvé dans l’étape3. On procède à la migration en fonction du nombre de liens que chacune a avec les autres tables (on commence par celles qui ne dépendent d’aucune table, une fois toutes migrées on passe à celles qui dépendent des tables qu’on vient de migrer et ainsi de suite…).

Pour les tables qui n’ont pas gardé la même structure, il faut appliquer des transformations intermédiaires avant de pouvoir les charger dans la nouvelle base. Une transformation intermédiaire peut être l’ajout d’un champ, l’attribution d’une constante,etc…

Par exemple, pour passer de la version 5 à la version 6 il faut tenir en compte que la majorité des tables de la nouvelle version introduisent un nouveau champ appelé company_id. C’est un champ qui indique l’id de l’entreprise gérée puisque cette nouvelle version permet désormais de gérer plusieurs entreprises en même temps par un seul ERP. Alors pour débloquer la situation, il suffit d’accorder la valeur constante 1 au champ company_id.

 

N.B : Dans le cas où des modules spécifiques ont été développés pour une version déterminée, il peut y avoir un problème de compatibilité avec une nouvelle version. Si le module n’arrive pas à s’installer correctement, il faut souvent procéder à des modifications dans le code source du module pour l’adapter à la nouvelle version.

* : http://www.openerp.com/node/689

**ETL : ExtractionTransformation-Loading, en français extraction-transformation-chargement. C’est l’opération qui consiste à extraire des données à partir d’une base de données, les transformer et les charger dans une autre base de données.

M.A

——

Cette démarche reste ouverte à toute amélioration ou toute correction que j’accueillerai avec un grand plaisir.

Tagged with: ,
Posted in OpenERP
One comment on “OpenERP : Pour une montée en version rapide et efficiente
  1. […] OpenERP est un progiciel de gestion intégré (ERP) open-source,  disponible sous Windows, Linux et Mac OS.  Il est téléchargeable gratuitement depuis son site web officiel http://www.openerp.com/dow…  […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Entrez votre adresse mail ci-dessous pour suivre ce blog et être notifié par email des nouvelles publications.

Join 325 other followers

Categories
Archives
%d bloggers like this: