O Odoo 20.0 FINAL já está publicado e na App Store. Se migra uma instalação que só usa módulos da própria Odoo, o risco é baixo. Se tem conectores personalizados, próprios ou de terceiros, há alterações do Odoo 20 que quebram módulos inteiros: e pelo menos uma que, até 31 de outubro, não avisava com nenhum erro. Esta é a ordem em que os verificamos, com o que se pode automatizar e o que tem de ser visto à mão.
1. Faça o inventário dos módulos não oficiais que correm no seu Odoo
Em Definições > Aplicações, filtre por «fora do catálogo da Odoo» ou reveja ir.module.module com author != 'Odoo S.A.'. Cada um desses módulos tem de ser revisto antes de migrar; os da própria Odoo são portados por ela.
2. Procure dependências de módulos que desapareceram
grep -rn "base_vat\|base_iban\|stock_picking_batch\|website_sale_wishlist\|website_sale_comparison" */__manifest__.py. Se aparecerem em depends, o módulo fica installable=False no Odoo 20: não é um aviso, não se instala. A validação de NIF/IBAN passou para o núcleo; o resto não tem substituto direto.
3. Procure odoo.osv no código Python
grep -rn 'from odoo.osv import' .. O pacote odoo.osv já não existe no Odoo 20: dá ModuleNotFoundError e o módulo não carrega. Troque cada expression.AND/OR/TRUE_DOMAIN/FALSE_DOMAIN pelo seu equivalente em odoo.fields.Domain.
4. Converta as permissões para o novo formato
ir.model.access e ir.rule fundem-se num único modelo, ir.access. A Odoo disponibiliza um script próprio: odoo-bin upgrade_code --script 19.4-00-ir-access --addons-path <carpeta>, que converte os CSV, atualiza o manifesto e apaga o ficheiro antigo. Atenção aos ficheiros ._* do macOS: fazem o script falhar com UnicodeDecodeError; apague-os antes com find . -name '._*' -delete.
5. Reveja como se escrevem e leem os anexos
Atualização de 6 de novembro de 2026: até 31 de outubro era a alteração mais perigosa porque não avisava: ir.attachment.create({'datas': ...}) criava o anexo com tamanho 0 e sem qualquer erro. Desde o commit c06a07264bdb do Odoo lança AssertionError. Troque 'datas': base64.b64encode(x) por 'raw': x: funciona igual no Odoo 17, 18, 19 e 20, pelo que se pode corrigir hoje sem esperar pelo porte. Ler com .datas dá AttributeError: no Odoo 20 lê-se com .raw ou, depois de ler o campo, com .content/.to_base64() sobre o valor devolvido.
6. Suba a versão do manifesto para 20.0
Se o version do __manifest__.py não começar por 20.0, o log diz The module X has an incompatible version, setting installable=False e o módulo fica uninstallable. Não é um aviso que se possa ignorar: sem este passo, nada do anterior interessa.
7. Instale num Odoo 20 real, não se limite a compilar
Que o código compile ou que uma análise estática não assinale nada não prova que o módulo instale, e muito menos que funcione. A única prova que vale é instalar a sério num Odoo 20.0 FINAL com Enterprise e executar toda a bateria de testes do módulo, não apenas o arranque.
8. Não migre de uma só vez todo o catálogo de conectores
Ordene-os pelo que mais dinheiro movimenta ou é mais arriscado deixar avariado, não pelo mais fácil de portar. Um conector de faturação ou de assinatura eletrónica que falhe em silêncio (como o dos anexos até 31 de outubro) é muito mais caro de descobrir tarde do que um de catálogo.
O detalhe de cada rutura, com o ficheiro e a linha onde a verificámos: O Odoo 20 já chegou: o que muda para as suas integrações e conectores.
Perguntas frequentes
Posso migrar para o Odoo 20 se tiver conectores personalizados?
Sim, mas cada conector personalizado ou de terceiros tem de ser revisto antes: dependências de módulos que desapareceram (base_vat, base_iban...), uso de odoo.osv, o formato das permissões e a forma como escreve e lê anexos. Instalar sem erros não basta; é preciso passar a bateria de testes completa num Odoo 20 real.
O que se pode corrigir primeiro sem esperar pela migração?
Alterar a forma como se escrevem os anexos: 'datas': base64.b64encode(x) por 'raw': x. Funciona igual no Odoo 17, 18, 19 e 20, pelo que se pode fazer hoje no código atual sem esperar pelo ramo 20.
Ligações úteis na FlexigoTech
O que fazemos sobre isto
Quer que revejamos os seus conectores antes de migrar?
Dizemos-lhe, contra o código real do Odoo 20, quais dos seus módulos personalizados se quebram e por que ponto desta lista. Escreva para comercial@flexigobe.com ou ligue para +34 616 809 504.

