Saltar al contenido principal
Odoo 20 · Guía práctica

Migrar a Odoo 20: checklist para empresas con integraciones

Odoo 20.0 FINAL ya está publicado. Si tu Odoo tiene conectores personalizados o de terceros, estos son los 8 puntos que hemos comprobado antes de portar los nuestros — con el fichero y la línea donde los verificamos, no de oídas.

Checklist de migración a Odoo 20 revisando conectores uno a uno

Odoo 20.0 FINAL ya está publicado y en el App Store. Si migras una instalación que solo usa módulos oficiales de Odoo, el riesgo es bajo. Si tiene conectores personalizados, propios o de terceros, hay cambios de Odoo 20 que rompen módulos enteros — y al menos uno que no avisa con ningún error. Este es el orden en el que lo comprobamos nosotros, con lo que se puede automatizar y lo que hay que mirar a mano.

1. Inventaría qué módulos no oficiales corren en tu Odoo

Desde Ajustes > Aplicaciones, filtra por «no en catálogo de Odoo» o revisa ir.module.module con author != 'Odoo S.A.'. Cada uno de esos módulos hay que revisarlo antes de migrar; los oficiales los porta Odoo.

2. Busca dependencias de módulos que han desaparecido

grep -rn "base_vat\|base_iban\|stock_picking_batch\|website_sale_wishlist\|website_sale_comparison" */__manifest__.py. Si aparecen en depends, el módulo queda installable=False en Odoo 20: no es un aviso, no se instala. La validación de NIF/IBAN se mudó al núcleo; el resto no tiene sustituto directo.

3. Busca odoo.osv en el código Python

grep -rn 'from odoo.osv import' .. El paquete odoo.osv ya no existe en Odoo 20: da ModuleNotFoundError y el módulo no carga. Cambia cada expression.AND/OR/TRUE_DOMAIN/FALSE_DOMAIN por su equivalente en odoo.fields.Domain.

4. Convierte los permisos al formato nuevo

ir.model.access e ir.rule se funden en un solo modelo, ir.access. Odoo trae un guion oficial: odoo-bin upgrade_code --script 19.4-00-ir-access --addons-path <carpeta>, que convierte los CSV, actualiza el manifiesto y borra el fichero viejo. Ojo con los ficheros ._* de macOS: hacen que el guion falle con UnicodeDecodeError; bórralos antes con find . -name '._*' -delete.

5. Revisa cómo se escriben y leen los adjuntos

Es el cambio más peligroso porque no avisa: ir.attachment.create({'datas': ...}) crea el adjunto con tamaño 0 y sin ningún error. Cambia 'datas': base64.b64encode(x) por 'raw': x — funciona igual en Odoo 17, 18, 19 y 20, así que se puede arreglar hoy sin esperar al porte. Leer con .datas da AttributeError: en Odoo 20 se lee con .raw o, tras leer el campo, con .content/.to_base64() sobre el valor devuelto.

6. Sube la versión del manifiesto a 20.0

Si el version del __manifest__.py no empieza por 20.0, el log dice The module X has an incompatible version, setting installable=False y el módulo queda uninstallable. No es un aviso ignorable: sin este paso, nada de lo anterior importa.

7. Instala en un Odoo 20 real, no solo compiles

Que el código compile o que un escaneo estático no marque nada no demuestra que el módulo instale, y mucho menos que funcione. La única prueba que vale es instalar de verdad en un Odoo 20.0 FINAL con Enterprise y ejecutar toda la batería de tests del módulo, no solo el arranque.

8. No migres de golpe todo el catálogo de conectores

Ordénalos por lo que más dinero mueve o más arriesgado es dejar roto, no por el más fácil de portar. Un conector de facturación o de firma electrónica que falle en silencio — como el de los adjuntos — es mucho más caro de descubrir tarde que uno de catálogo.

El detalle de cada rotura, con el fichero y la línea donde la comprobamos: Odoo 20 ya está aquí: qué cambia para tus integraciones y conectores.

Preguntas frecuentes

¿Puedo migrar a Odoo 20 si tengo conectores personalizados?

Sí, pero cada conector no oficial hay que revisarlo antes: dependencias de módulos que han desaparecido (base_vat, base_iban...), uso de odoo.osv, el formato de permisos y cómo escribe y lee adjuntos. Instalar sin errores no basta; hace falta pasar la batería de tests completa en un Odoo 20 real.

¿Qué es lo primero que se puede arreglar sin esperar a migrar?

Cambiar cómo se escriben los adjuntos: 'datas': base64.b64encode(x) por 'raw': x. Funciona igual en Odoo 17, 18, 19 y 20, así que se puede hacer hoy en el código actual sin esperar a la rama 20.

Enlaces útiles dentro de FlexigoTech

Odoo 20: qué cambia para tus conectoresLas 4 roturas verificadas contra el códigoNuestros conectores ya en Odoo 20La lista viva, con enlace a cada fichaServicio de implantaciónMigración acompañada, con el ingeniero que la hace

Lo que hacemos sobre esto

Integraciones a medidaQué hace, capturas, versiones y precio.

¿Quieres que revisemos tus conectores antes de migrar?

Te decimos, contra el código real de Odoo 20, cuáles de tus módulos personalizados se rompen y por qué punto de esta lista. Escribe a comercial@flexigobe.com o llama al +34 616 809 504.

Revisar mis conectores