Migration d’une base de données Odoo 12 vers Odoo 13

En ce qui concerne cette migration Odoo 12 vers Odoo 13, nous émettons quelques doutes concernant les scripts OpenUpgrade. Comme la version 13 est la dernière prise en charge, il se peut que l’outil OpenUpgrade provoque quelques erreurs. Pour notre part, nous avons dû toucher à la base de données Odoo 12 avant d’effectuer la migration. Au moment où vous tenterez de migrer vers Odoo 13, il se peut que ces erreurs ne subviennent plus, car elles auront été gérées par OpenUpgrade.

Pré-requis

Pour le bon déroulement de la migration, nous supposons que vous avez :

  • Un container PostgreSQL en version 9.6. Nous l’appellerons db_9-6.
  • Un container Odoo 13.x connecté à db_9.6. Nous l’appellerons odoo_13.
  • Une base de données installée sur db_9.6. Nous l’appellerons nuxly.

Cette migration se passe “dans le meilleur des mondes” et suppose qu’aucune erreur ne subvienne. Cependant, il est possible que des erreurs se produisent au cours de votre migration. Nous sommes potentiellement tombés dessus, les résolutions sont référencées ultérieurement.

Procédure de migration Odoo 12 vers Odoo 13

  1. La migration par OpenUpgrade requiert certaines dépendances répertoriées dans le fichier requirements.txt du projet. Afin de satisfaire l’installation de ces dépendances et d’éviter les éventuels soucis lors de l’installation, nous avons installé les dépendances suivantes avant de débuter la migration.
root@odoo_13:/# apt update
root@odoo_13:/# apt install git nano locate build-essential python3-dev python3-pip libldap2-dev libsasl2-dev
  1. La migration des bases de données d’Odoo n’est pas fournie nativement avec la solution, c’est un service payant. C’est ainsi qu’est né le projet OpenUpgrade qui a pour but de réaliser cette migration. OpenUpgrade utilise sa propre librairie pour migrer Odoo : openupgradelib. Installez cette dernière et OpenUpgrade pour pouvoir continuer.
root@odoo_13:/# pip3 install openupgradelib
root@odoo_13:/# git clone -b 13.0 https://github.com/OCA/OpenUpgrade.git
  1. Installez tous les requirements pour le projet OpenUpgrade.
root@odoo_13:/# pip3 install -r /OpenUpgrade/requirements.txt
  1. Certains modules que vous voudrez migrer, tel que hr_timesheet_sheet, sont maintenant gérés OCA. En effet, ils ne sont plus maintenus par Odoo. Pour qu’ils soient pris en compte lors de la migration, clonez les librairies d’OCA dont vous avez besoin.
root@odoo_13:/# git clone -b 13.0 https://github.com/OCA/contract.git
root@odoo_13:/# git clone -b 13.0 https://github.com/OCA/knowledge.git
root@odoo_13:/# git clone -b 13.0 https://github.com/OCA/timesheet.git
root@odoo_13:/# git clone -b 13.0 https://github.com/OCA/web.git
  1. Copiez les modules requis dans le dossier addons d’OpenUpgrade pour qu’il soit pris en compte lors de la migration. Le module web_widget_x2many_2d_matrix est une dépendance de hr_timesheet_sheet.
root@odoo_13:/# cp -r /contract/contract /OpenUpgrade/addons/contract
root@odoo_13:/# cp -r /knowledge/knowledge /OpenUpgrade/addons/knowledge
root@odoo_13:/# cp -r /timesheet/hr_timesheet_sheet /OpenUpgrade/addons/hr_timesheet_sheet
root@odoo_13:/# cp -r /web/web_widget_x2many_2d_matrix /OpenUpgrade/addons/web_widget_x2many_2d_matrix
  1. Vous pouvez enfin lancer la migration !
root@odoo_13:/# cd OpenUpgrade/
root@odoo_13:/# ./odoo-bin --addons-path=addons -d nuxly --db_host=172.17.0.2 -r odoo -w odoo -u all --stop-after-init --data-dir=/tmp
  1. Voilà ! La base de données migrée sous Odoo 13 est prête à l’emploi. Odoo 14 est l’avant-dernière version en date. L’outil OpenUpgrade n’a pas encore traité le passage en Odoo 14. Dès que l’outil permettra cette montée de version, nous traiterons la migration.

Potentiels erreurs rencontrées lors de la migration

Le gros des erreurs rencontrées lors de la migration Odoo 12 vers Odoo 13 sont les mêmes traitées lors de la migration Odoo 9 à 10.

Modification de la base de données

Lors de la migration, nous avons rencontré sur trois tables de la base de données des erreurs lia à la violation de contrainte unique. Pour les résoudre, nous avons dû modifier quelques lignes dans la base de données.

  • ERROR: duplicate key value violates unique constraint « product_product_combination_unique »
    DETAIL:  Key (product_tmpl_id, combination_indices)=(5, ) already exists.
UPDATE public.product_product
SET active= false
WHERE id IN (5, 6, 17)
  • ERROR: duplicate key value violates unique constraint « res_groups_name_uniq »
    DETAIL:  Key (category_id, name)=(3, Discount on lines) already exists.
DELETE FROM public.res_groups
WHERE name ='Discount on lines';
  • ERROR: duplicate key value violates unique constraint « act_window_view_unique_mode_per_action »
    DETAIL: Key (act_window_id, view_mode)=(903, form) already exists.
UPDATE public.ir_act_window_view
SET view_mode= 'form_test'
WHERE act_window_id = 903 and view_mode = 'form';

Partagez :
Facebook
Twitter
LinkedIn
Email
Print