Saltar para o conteúdo principal
Odoo 20 · Guia prático

Migrar para o Odoo 20: checklist para empresas com integrações

O Odoo 20.0 FINAL já está publicado. Se o seu Odoo tem conectores personalizados ou de terceiros, estes são os 8 pontos que verificámos antes de portar os nossos: com o ficheiro e a linha onde os verificámos, não de ouvir dizer.

Checklist de migração para o Odoo 20 com revisão dos conectores um a um

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

Odoo 20: o que muda para os seus conectoresAs 4 roturas verificadas contra o códigoOs nossos conectores já no Odoo 20A lista atualizada, com ligação a cada fichaServiço de implementaçãoMigração acompanhada, com o engenheiro que a faz

O que fazemos sobre isto

Integrações à medidaO que faz, capturas, versões e preço.

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.

Rever os meus conectores