Comment faire une migration entre 2 versions d'Odoo avec OpenUpgrade? Cas pratique d'Odoo 12 vers Odoo 14

nasser 30/06/2021 (17:22) GMT

Dans cet article, je vous explique comment faire la migration du code source et de la base de données d'une instance Odoo d'une version à l'autre. J'ai pris un cas pratique de migration Odoo v12 vers Odoo v14. J'explique d'abord ce qu'il faut savoir avant de commencer la migration, ensuite je vous montre pas à pas le processus de migration tout en vous expliquant comment exécuter le script de migration.

Chaque année au mois d'octobre, Odoo SA, la société mère de l'ERP Odoo, publie une nouvelle version dudit logiciel avec de nouvelles fonctionnalités et une amélioration des performances. Tous les utilisateurs d'Odoo savent qu'à cette période là, il sera présentée au moins une nouveauté qui va améliorer l'expérience utilisateur. Je prend le cas simple d'Odoo 14 qui est venu avec:

  • la classification automatique des fichiers qu'on charge dans le logiciel
  • la manipulation des fichiers excel
  • l'intégration d'un OCR qui permet d'éditer les pièces comptables
  • l'affichage d'un lien entre la commande client et la commande d'achat créé automatiquement via le bon de commande
  • etc...

Du coup, certaines entreprises qui utilisent des versions ultérieures du logiciel décident de passer vers la nouvelle version lorsqu'elles constatent l'existence d'une fonctionnalité qui va faciliter leur processus métiers. C'est ainsi qu'ils font appel aux intégrateurs et développeurs Odoo pour faire migrer leur logiciel vers la nouvelle version. Il est important de savoir qu'Odoo est un logiciel open source qui comprend aussi une édition Entreprise. Odoo Community est maintenue par Odoo SA et la communauté open source, alors qu'Odoo entreprise est maintenue uniquement par Odoo SA et certains partenaires.

Maintenant, imaginez qu'une entreprise utilisant la version 9 d'Odoo vous exprime le besoin de vouloir migrer son instance sur la version 12. Qu'allez vous faire ?

Ce qu'il est important de savoir avant de commencer

1- Le client utilise Odoo Entreprise sans aucun module personnalisé ou communautaire

Ne vous cassez pas la tête, il faut juste contacter Odoo SA et demander qu'on migre votre base de donnée. D'ailleurs, Odoo a réservé une page sur laquelle vous pouvez en savoir plus: https://upgrade.odoo.com/

2- Le client utilise Odoo (Community ou Entreprise) avec des modules personnalisés ou communautaires

Il faut recenser tous ces modules et les classer par ordre de dépendance. Le module qui a moins de dépendance sera celui par lequel il faudra commencer la migration. Il faut aussi s'assurer que chaque dépendance ait d'abord été migrer. Vous pouvez pour celà utiliser OpenUpgrade pour faire vos migrations. Prenons le cas du module product_contract qui dépends des modules product et contract_sale. Dans ce cas, avant de migrer product_contract, il faut d'abord migrer product, ensuite contract_sale

3- Le projet OpenUpgrade

OpenUpgrade est un framework développé par l'OCA (Odoo Community Association) dont le but est de faciliter la migration des projets Odoo d'une version à l'autre. Chaque année, plusieurs modules Odoo et autres modules communautaires sont migrés à l'aide de cet outil. Vous pouvez découvrir sur ce lien comment évolue la migration vers Odoo 13 en parcourant les pull request associés: https://github.com/OCA/OpenUpgrade/issues/1733. On peut déjà constater que les modules account et account_payment ont été migré du coup, si nous sommes sur un projet qui nécessite de migrer ces modules vers la version 13, on aura plus besoin de les toucher, puisqu'ils ont déjà été migré.

Pour en savoir plus sur OpenUpgrade:

Maintenant que le décor est planté, passons au processus de migration.

Quelle est le processus de migration d'Odoo d'une version à l'autre

Tout d'abord, il faut savoir qu'on ne peut pas directement migrer de la version 12 vers la version 14. Il faut d'abord faire la migration de la version 12 à la version 13, puis de la version 13 à la version 14.

De manière basique, voici les les différentes étapes à suivre:

  1. Télécharger OpenUpgrade
    1. https://github.com/OCA/OpenUpgrade/tree/13/ pour migrer de 12 vers 13
    2. https://github.com/OCA/OpenUpgrade/tree/14/ pour migrer de 13 vers 14
  2. Installer openupgradelib
    1. utiliser la commande pip install openupgradelib ou
    2. télécharger openupgradelib sur https://pypi.python.org/pypi/openupgradelib et
    3. l'installer avec la commande : sudo python setup.py install
  3. En migrant de la version 12 à la version 13 il faut avoir 2 environnements Odoo:
    1. L'environnement Odoo 12 et l'environnement Odoo 13 qui seront installer séparement. Vous pouvez à cet effet utiliser 2 conteneurs Odoo pour vous faciliter cette tâche.
    2. Consultez le code source d'OpenUpgrade sur Github pour trouver les branches que vous aller utiliser. Ce dépôt d'OpenUpgrade comprend à la fois openupgrade_framework et openupgrade_scripts. Les modules openupgrade_framework et openupgrade_scripts doivent être dans le chemin des addons dans l'instance Odoo correspondant à votre version.
    3. Dans chacun des environnements, installer OpenUpgrade 12 sur Odoo 12 et OpenUpgrade 13 sur odoo 13.
  4. Ensuite s'assurer que les codes des modules personnalisés et communautaires ont tous été migré vers la version cible en lançant les scripts de migration. Il s'agit des noms de modèles, des identifiants XML, des noms des méthodes etc... (C'est en effet l'un des rôles majeurs d'OpenUpgrade). Pour comprendre comment se font les migrations, vous pouvez pour celà consulter les issues d'OpenUpgrade sur GitHub comme celui-ci: https://github.com/OCA/OpenUpgrade/issues/1733.

Lancer le script de migration d'OpenUpgrade

1- Installer la BD de la version Odoo 12 sur la version Odoo 13

2- Démarrer Odoo 12

cd /chemin-odoo-12/openupgrade-12
./odoo-bin --config=/etc/odoo.conf

3- Exécuter le script de migration dans Odoo 13

./odoo-bin --config=/etc/odoo.conf -d BD-VERSION-12 -u all --stop-after-init

4- Quand le script de migration fini de s'exécuter, démarrer Odoo 13

./odoo-bin --config=/etc/odoo.conf -d BD-VERSION-13

5- Faire des vérifications continues en observant les logs: si une erreur se produit pendant l'exécution du script de migration, il faut résoudre explicitement le problème et exécuter à nouveau le script de migration

6- Lorsque tout est prêt pour la migration de 12 vers 13, refaire la même procédure d'Odoo 13 vers Odoo 14

D'autres parts, il peut aussi arriver qu'on ait besoin d'écrire des scripts de migration comme pour modifier le nom d'une table, mettre à jour une valeur en fonction d'une autre, etc...

Vous pourrez alors vous rendre dans le chemin spécifique d'OpenUpgrade où vous trouverez le fichier migrate.py pour exécuter cette commande:

python [migrate.py] --config=[votre fichier odoo.conf] --database=[votre BD] --run-migrations=[vos migrations]

# --config = Fichier de configuration de la v13 (version dans laquelle vous voulez migrer)
# --database = base de données que nous souhaitez migrer (base de données installée v13)
# --run-migrations = version dans laquelle vous souhaitez migrer (v13)
# Le fichier 'migration.log' sera créé pour le suivi des erreurs
# Si une erreur survient pendant l'exécution du script de migration, il faut résoudre explicitement le problème (avec psql) et exécuter à nouveau le script de migration.
# Une nouvelle base de données sera créée dans la v13 'databasename_migrated' avec '_migrated'.

Vous pouvez maintenant passer à la pratique! Happy Odoo Upgrading

Veuillez-vous connecter poster un commentaire

Projets et Missions Freelances pour Développeurs

Explore notre sélection de missions adaptées à ton expertise et à ta disponibilité pour mettre en valeur ton savoir-faire et gagner de l'argent.

Trouver un projet