La liste d'un partenaire, pas un réquisitoire
Nous sommes partenaire Odoo, et nous avons passé septembre sur la version préliminaire d'Odoo 20.0 Enterprise : 25 articles détaillés, un film et une douzaine de stories disent ce que nous avons aimé. Cette page est l'autre colonne. Chaque point ci-dessous est quelque chose que nous avons vu sur la version ou lu dans le code source 20.0, avec le module ou le fichier qui le prouve, et chacun se termine par ce qu'il faut en faire.
Si vous exploitez Odoo 17, 18 ou 19 aujourd'hui et planifiez la mise à niveau, c'est la page à lire avant la présentation commerciale.
Une réserve avant les réserves : Odoo 20 est en version préliminaire. Une partie de ce qui suit relève d'une décision de conception qui ne changera pas, une autre d'une aspérité qu'Odoo peut encore poncer avant la disponibilité générale. Nous précisons à chaque fois de quoi il s'agit.
Observé sur la version préliminaire d'Odoo 20.0 Enterprise du 23 septembre 2026. Les noms, menus et disponibilités peuvent changer avant la version finale ; nous mettrons cette page à jour le cas échéant.
Votre clé OpenAI ou Gemini disparaît ; les crédits Odoo sont la seule porte
C'est le changement qui nous a fait écrire cette page. Dans Odoo 19, la page des paramètres IA offrait deux interrupteurs, Utiliser votre propre compte ChatGPT et Utiliser votre propre compte Google Gemini, chacun avec un champ de clé API stocké sous ai.openai_key et ai.google_key. Derrière, une couche de fournisseurs dans ai/utils/llm_providers.py listait les modèles au choix, de GPT-4o et GPT-5 à Gemini 2.5 Pro et Flash, et chaque requête partait de votre serveur vers le fournisseur choisi, sur votre contrat, à votre prix.
Dans le code source 20.0, ce fichier n'existe plus, et les paramètres non plus. Chaque appel IA, de la réponse d'un agent à la vectorisation d'un article Connaissances, passe par une seule fonction qui envoie la requête au service d'Odoo à ai.api.odoo.com avec le jeton d'un compte IAP nommé Odoo AI, facturé dans une unité appelée Crédits.
Le grand modèle de langage qui répond est choisi du côté d'Odoo et peut changer sans que rien ne change sur votre serveur ; le seul nom de modèle que votre base conserve est le modèle de vectorisation de chaque agent. Quand le compte est vide, le code est explicite : l'agent s'arrête sur « Not enough credits to use Odoo AI », et les sources de connaissances échouent à s'indexer avec la même erreur.

Pourquoi c'est important : la plateforme est désormais excellente, et tout ce qu'elle contient est au compteur. Un agent sur un déclencheur planifié dépense des crédits à chaque exécution, que quelqu'un lise le résultat ou non. Une entreprise qui a négocié un accord avec OpenAI ou Google, ou qui a des règles de résidence des données sur le fournisseur autorisé à voir ses documents, n'a aucun interrupteur à actionner.
Un paramètre système caché, ai.endpoint, pointe le client vers un autre serveur, mais rien dans le code ni la documentation ne décrit comment en exploiter un ; considérez-le comme un détail d'implémentation, pas comme une option.
Quoi faire
Avant de migrer, exportez un mois d'usage IA de votre Odoo 19, chiffrez-le en crédits Odoo avec les agents et les déclencheurs que vous prévoyez, et décidez quels agents peuvent écrire dans les enregistrements. Si le montant ou la question de résidence bloque, laissez les fonctions IA désactivées après la migration ; tout le reste d'Odoo 20 fonctionne sans elles.
Les agents répondent par un webhook dans votre base
La deuxième surprise IA est architecturale. Une conversation avec un agent est asynchrone : votre base ouvre une session avec le service d'Odoo, et la réponse revient plus tard par un webhook signé vers /ai/completion_result_ready sur votre propre serveur, construit à partir de l'URL de base de votre base et vérifié avec un secret par session. C'est de la bonne ingénierie pour une base SaaS publique.
Sur une base privée, derrière un VPN ou un pare-feu qui ne laisse entrer que le trafic du bureau, l'appel n'arrive jamais. Sur notre démo, qui est privée, chaque conversation d'agent est restée sur « Réflexion » aussi longtemps que nous avons voulu attendre, alors que les fonctions en un coup comme la génération de texte et Trier avec l'IA, qui utilisent une simple requête-réponse, fonctionnaient normalement.

Pourquoi c'est important : un Odoo auto-hébergé ou sur site, le choix de beaucoup de nos clients manufacturiers et de la santé précisément pour les raisons de confidentialité ci-dessus, ne peut pas utiliser les agents sans exposer cette route aux serveurs d'Odoo. L'ouverture est étroite et authentifiée, mais c'est une ouverture que votre équipe de sécurité voudra voir par écrit avant la mise en production.
Service sur site disparaît en tant qu'application
La famille de modules industry_fsm et ses ponts Assistance et Documents ont disparu de la branche Enterprise 20.0, remplacés par planning_field_service dans Planification. Les interventions deviennent des quarts avec un client, les techniciens ouvrent Planification sur leur téléphone plutôt qu'une application Service sur site, et les réglages migrent dans le bloc Opérations de Planification.
Notre article sur Planification parcourt le nouveau flux, et il est bon. L'inconvénient, c'est tout ce qui nomme l'ancienne application : commandes d'installation, scripts de déploiement, modules sur mesure qui dépendent d'industry_fsm, supports de formation, et les habitudes de chaque technicien. Odoo journalise « invalid module names, ignored » pour un module qui n'existe plus et continue, si bien qu'un script d'installation cassé n'échoue pas bruyamment.

Pourquoi c'est important : le guide ne dit rien sur la conversion des interventions et des feuilles de travail existantes ; planifiez une migration d'essai sur une copie de votre base avant de promettre une date à une équipe terrain.
Quatre-vingt-dix modules retirés, et des localisations qui reculent
D'après la comparaison de répertoires entre les branches Enterprise 19.0 et 20.0, 187 modules apparaissent et 90 disparaissent. La plupart des retraits sont du ménage, mais certains sont des fonctions qu'une entreprise exploite aujourd'hui : les connecteurs de paie belges SD Worx, Partena, Group S, UCM, Acerta et Prisma ; la boîte noire du point de vente belge ; les rapports allemand Elster, colombien DIAN, mexicain polizas, polonais JPK et SAF-T, et les déclarations de taxes néerlandaise et suédoise ; l'import Winbooks ; le module VoIP OnSIP ; le pilote de point de vente Ingenico.
Les paquets de paie pour la France, le connecteur ADP américain, SD Worx Italie et eMPF Hong Kong sont absents de la branche sans commit de retrait qui l'explique, ce qui signifie d'ordinaire un déplacement vers un dépôt séparé, mais personne ne l'a encore dit.
| Domaine | Odoo 19 | Odoo 20 |
|---|---|---|
| Service sur site | industry_fsm et ses ponts | Disparu ; planning_field_service dans Planification |
| IA | ai_app, avec vos propres clés de fournisseur | ai_agentic et 36 modules de liaison ; crédits Odoo seulement |
| Connecteurs de paie belges | Six modules connecteurs | Retirés ; Dimona fusionné dans le module principal |
| Paquets de paie | France, ADP États-Unis, SD Worx Italie, eMPF Hong Kong | Absents de la branche, sans explication |
| Rapports par pays | Elster, DIAN, polizas, JPK, SAF-T, déclarations NL et SE | Retirés |
| Autres | Import Winbooks, VoIP OnSIP, pilote PdV Ingenico | Retirés ou fusionnés |
Pourquoi c'est important : si votre paie ou vos rapports réglementaires figurent sur cette liste, la migration n'est pas un changement de version mais un projet de remplacement, et le remplacement n'existe peut-être pas encore.
Plus de fonctions exigent un abonnement, un service ou du matériel
La version continue d'ajouter des fonctions gratuites à installer et payantes à exploiter. L'application VoIP gagne un vrai PBX avec flux d'appels, files et menus, mais sur cette version les enregistrements PBX et même l'enregistrement d'un flux d'appels exigent l'abonnement Odoo Phone Service ; un fournisseur SIP tiers conserve le softphone et le journal d'appels, pas le système téléphonique. Les cartes de dépenses Stripe Issuing n'existent que là où Stripe Issuing existe, ce qui sur notre démo voulait dire la société belge et pas la canadienne.
La numérisation des prêts et chaque fonction IA consomment des crédits IAP. L'assistant des feuilles de temps a besoin du traqueur ActivityWatch sur l'ordinateur de chaque employé pour lire l'activité du navigateur. Le nouvel Obox exige son matériel, et le point de vente Android des appareils Android. Rien de tout cela n'est caché, et tout cela est hors du prix de la licence.

Pourquoi c'est important : un modèle de coûts pour Odoo 20 comporte trois lignes que le modèle Odoo 19 n'avait pas : crédits, Odoo Phone Service et appareils. Notre analyse du vrai coût d'Odoo soutenait déjà que la licence ne pèse qu'un cinquième du budget ; en 20, c'est un cinquième plus petit.
Dépendances Python non déclarées, et l'échéance RPC
Une installation complète de la branche 20.0 a besoin de paquets Python absents de requirements.txt, notamment phonenumbers et xmlsec. Sans eux, l'installation d'une seule application comme WhatsApp s'interrompt à mi-chemin sur une trace d'erreur plutôt que sur un message clair. C'est le genre d'aspérité que l'on corrige d'ordinaire avant la disponibilité générale, mais elle nous a coûté un après-midi et elle vous en coûtera un si vous construisez vos propres images.
L'autre point de plomberie précède la version : la documentation d'Odoo programme pour Odoo 20 la suppression des points de terminaison XML-RPC et JSON-RPC, dont dépend presque toute intégration Odoo écrite depuis dix ans. Sur la version préliminaire que nous avons utilisée, ils répondaient encore ; traitez cela comme une échéance et non comme un fait accompli, et notez que le nouveau serveur MCP est présenté comme la voie des assistants IA, pas comme le remplaçant de votre connecteur de transporteur ou de votre flux BI.
Si quoi que ce soit parle à votre base depuis l'extérieur, cet inventaire est ce que produit notre audit de migration RPC.
Ce que la version préliminaire ne reflète pas encore
Douze des 35 sections de nos notes de source portent des corrections là où la version livrée contredit les descriptions de fonctions d'Odoo : chemins de menu déplacés, boutons renommés, une liste dynamique qui vit sous Marketing par courriel plutôt que sur la liste de diffusion, un mode de suppression de créneaux dans Rendez-vous qui n'existe pas, un filtre d'exercice fiscal dans les feuilles de calcul qui n'y est pas.
Nous avons appliqué chaque correction dans les articles détaillés, et nous nous attendons à ce que certaines s'inversent avant la sortie. Le mode sombre est réel et stocké comme préférence, et plusieurs écrans attendent encore des corrections de contraste que l'historique des commits montre en cours.

Pourquoi c'est important : n'écrivez pas vos supports de formation à partir de la version préliminaire, et ne signez pas une migration à périmètre fixe sur cette base. Tout ce que contient cette série sera revérifié sur la version de disponibilité générale, et cette page sera mise à jour.
Comment mesurer votre exposition en un après-midi
- Dans Odoo 19, ouvrez Paramètres > IA et notez si l'un des interrupteurs « Utiliser votre propre compte » est activé. Si oui, vous êtes l'entreprise pour laquelle cette page a été écrite.
- Cherchez
industry_fsm,ai_appet les noms du tableau des modules retirés dans vos scripts de déploiement, vos fichiers Docker et vos modules sur mesure. - Listez chaque paquet de paie et chaque rapport réglementaire que vous produisez depuis Odoo, et confrontez-les au même tableau.
- Comptez ce qui parle à Odoo depuis l'extérieur : connecteurs, lecteurs, outils BI, scripts. Chacun est un client RPC jusqu'à preuve du contraire.
- Si vous auto-hébergez, demandez si votre Odoo peut recevoir un webhook signé depuis les serveurs d'Odoo. Si la réponse est non, les agents attendront que ce soit oui.
- Chiffrez les crédits : agents, déclencheurs, vectorisations, numérisation des prêts, plus Odoo Phone Service si vous voulez le PBX.
Ce que nous n'avons pas pu vérifier sur la version préliminaire
Nous n'avons pas pu mesurer le prix d'un crédit sur une charge réelle, parce que le service IAP a répondu « Not enough credit » sur le compte de la démo ; l'unité de facturation et le chemin d'erreur sont dans le code, le tarif n'y est pas. Nous n'avons pas fait tourner un agent avec une URL de rappel publique, si bien que le chemin du webhook est lu dans le code, pas exercé. L'absence des paquets de paie français, ADP américain, italien et de Hong Kong est un fait de répertoire ; leur destination n'est pas documentée. Tout le reste de cette page a été parcouru sur la version 20.0 Enterprise du 23 septembre 2026 ou lu dans sa branche.
Ce que cela change pour une mise à niveau
Rien de tout cela n'est une raison de sauter Odoo 20 ; l'article central de la série donne vingt-cinq raisons de le vouloir. C'est une raison de migrer avec une liste : quelles fonctions IA vous paierez, quels noms d'applications vos outils utilisent encore, de quelles localisations vous dépendez, quelles intégrations demandent l'inventaire RPC, et si votre hébergement peut recevoir un webhook.
Nous construisons cette liste, chiffrée, comme première étape de notre service de migration, et nous préférons que vous lisiez cette page avant l'appel plutôt qu'après la migration.
Questions fréquentes
Puis-je utiliser ma propre clé API OpenAI ou Gemini dans Odoo 20 ?
Pas sur la version préliminaire 20.0. Les paramètres d'Odoo 19 pour vos propres comptes ChatGPT et Google Gemini, et la couche de fournisseurs derrière eux, ont disparu du code source ; chaque requête IA part vers le service d'Odoo et se facture en crédits Odoo AI, avec un modèle choisi du côté d'Odoo.
Les agents IA d'Odoo 20 fonctionnent-ils sur une base auto-hébergée ou sur site ?
Seulement si les serveurs d'Odoo peuvent joindre votre base : les réponses des agents arrivent par un webhook signé vers une route de votre propre serveur. Sur une base privée derrière un VPN ou un pare-feu, la conversation reste sur Réflexion, alors que les fonctions en un coup comme la génération de texte et Trier avec l'IA fonctionnent.
Service sur site est-il vraiment retiré d'Odoo 20 ?
En tant qu'application distincte, oui. Les modules industry_fsm et leurs ponts ont disparu de la branche Enterprise 20.0 et les interventions deviennent des quarts avec client dans Planification. Le flux est bon ; le risque, c'est chaque script, module et habitude qui nomme encore l'ancienne application.
Quelles localisations Odoo 20 perd-il ?
D'après la comparaison du code source : les connecteurs de paie belges et la boîte noire du point de vente, et les rapports allemand Elster, colombien DIAN, mexicain polizas, polonais JPK et SAF-T, et les déclarations de taxes néerlandaise et suédoise. Les paquets de paie français, ADP américain, SD Worx Italie et eMPF Hong Kong sont absents de la branche sans explication pour l'instant.
Odoo 20 coûte-t-il plus cher à exploiter qu'Odoo 19 ?
La licence n'est pas la question ; les parties au compteur le sont. Les crédits IA des agents, déclencheurs et vectorisations, Odoo Phone Service pour le nouveau PBX, Stripe Issuing là où il existe, et le matériel pour Obox et le point de vente Android sont tous hors licence. Chiffrez-les avant de migrer, pas après.
