Odoo 20.0 FINAL est sorti après l'Odoo Experience de Bruxelles (24–26 septembre 2026) et il est déjà publié sur l'App Store de Odoo. Avant de porter quoi que ce soit, nous avons lu le code source réel (pas un changelog ni un blog tiers) pour savoir ce qui casse un connecteur qui fonctionne aujourd'hui sur Odoo 19. Voici ce que nous avons trouvé, avec le fichier et la ligne où nous l'avons vérifié.
Méthode : chaque ligne du tableau provient de l'exécution de ls, grep ou git log sur /srv/odoo-fuente/odoo-20.0 et /srv/odoo-fuente/enterprise-20.0 (commits 17ff827a1 et e5186134, 26 et 27 septembre 2026), et non d'une lecture sur Odoo 20 ailleurs.
Les quatre ruptures que nous avons vérifiées
| Ce qui disparaît | Ce qui se passe si votre module l'utilise | Vérifié sur |
|---|---|---|
base_vat et base_iban | Le module ne s'installe pas s'il en dépend : la validation du NIF/IBAN a été déplacée dans le noyau. | addons/ du code source d'Odoo 20.0 FINAL |
ir.model.access et ir.rule | Ils fusionnent dans un nouveau modèle, ir.access. Les CSV de droits d'accès à l'ancien format ne sont pas lus. | odoo/addons/base/models/ir_access.py + odoo/upgrade_code/19.4-00-ir-access.py |
odoo.osv (le paquet entier) | from odoo.osv import expression renvoie ModuleNotFoundError et le module ne se charge pas. | odoo/osv/ absent du code source d'Odoo 20.0 FINAL |
Le champ datas sur les pièces jointes | ir.attachment.create({'datas': ...}) lève AssertionError depuis le 31 octobre 2026. Jusque-là, il créait la pièce jointe avec une taille de 0, sans aucune erreur, et le PDF signé sortait vide. | odoo/addons/base/models/ir_attachment.py:502 dans le code source d'Odoo 20.0 du 2 novembre 2026 (auparavant, la ligne 535) |
Mise à jour du 6 novembre 2026 : jusqu'au 31 octobre, la plus dangereuse était celle des pièces jointes, car elle ne levait aucune exception : un connecteur de signature électronique qui continuait d'écrire 'datas': base64... s'installait proprement, passait le smoke test et enregistrait le PDF signé avec une taille de 0. Depuis le commit c06a07264bdb d'Odoo (« [FIX] base: remove fallback for datas »), cet create lève AssertionError: _check_contents should handle that. Le correctif ne change pas : 'raw' avec les octets non encodés, ce qui fonctionne sur Odoo 17, 18, 19 et 20.
Que vérifier avant de migrer un connecteur maison
grep -rn base_vat\|base_iban __manifest__.pydans tous vos modules : s'il apparaît dansdepends, le module ne s'installe pas.grep -rn 'from odoo.osv import'dans le code Python : chaque occurrence doit être remplacée parfrom odoo.fields import Domain.- Fichiers
ir.model.access.csv: lancerodoo-bin upgrade_code --script 19.4-00-ir-access, qui convertit le format, met à jour le manifeste et supprime l'ancien CSV (le script d'Odoo lui-même). - Tout
'datas': base64.b64encode(...)écrit sur une pièce jointe : le remplacer par'raw': ..., qui fonctionne de la même façon sur Odoo 17, 18, 19 et 20 : inutile d'attendre le portage pour le corriger.
Comment nous l'avons testé nous-mêmes
Chacun de nos connecteurs qui arrive sur Odoo 20 passe d'abord par un Odoo 20.0 FINAL réel avec Enterprise : il s'installe pour de bon, toute sa batterie de tests est exécutée (avec au moins un test et aucun ignoré) et il n'est publié que si tout est au vert. Installer sans erreur ne suffit pas : la rupture des pièces jointes, par exemple, n'est détectée que par un test qui crée le document (jusqu'au 31 octobre, un test qui l'ouvrait aussi), jamais par un log d'installation propre.
Avec ce critère, nous avons déjà 9 connecteurs publiés sur Odoo 20 (le détail se trouve dans cet article) et le reste du catalogue arrive module par module, au fur et à mesure qu'il passe la batterie complète, pas d'un seul coup.
Questions fréquentes
Peut-on déjà installer Odoo 20 en production ?
Odoo 20.0 FINAL est publié et disponible sur l'App Store de Odoo. Avant de migrer un déploiement avec des connecteurs personnalisés, vérifiez s'ils dépendent de base_vat, base_iban ou odoo.osv, et s'ils écrivent des pièces jointes avec 'datas'.
Pourquoi un connecteur qui s'installe bien peut-il quand même échouer sur Odoo 20 ?
Parce que l'installation vérifie seulement que le manifeste et les vues se chargent. Le changement sur les pièces jointes (champ datas) ne se manifeste pas à l'installation : depuis le 31 octobre 2026, il lève AssertionError à la création de l'enregistrement et, jusque-là, il ne donnait aucune erreur et le document était enregistré vide. Seul un test qui passe par ce code le détecte.
Liens utiles chez FlexigoTech
Ce que nous faisons à ce sujet
Votre connecteur dépend de nous ? Nous vous disons si Odoo 20 le casse
Écrivez-nous avec le nom du module et nous vous disons, d'après le code réel, si l'une de ces quatre ruptures vous concerne. Écrivez à comercial@flexigobe.com ou appelez le +34 616 809 504.

