Que aprendí en una migración que acabo de finalizar
Semanas atras finalicé una migración, y quería compartir lo que aprendí de la misma (que fueron varias cosas).
Como se puede migrar Odoo?
Hay dos formas de hacer la migración en Odoo. La primera es hacer una migración "light" en la cual uno implementa los módulos que necesita, y solo migra los datos maestros (como partners, productos, cuentas contables) y los saldos de cuentas corrientes y stocks. Y empieza a trabajar. Esa es la forma sencilla y más rápida de hacer la migración.
La segunda forma es la más compleja. Consiste en migrar todos los datos de Odoo de un sistema a otro. Haciendo una analogía, es como actualizar un auto. Tomemos por ejemplo un Corolla del año 1995 y actualicemoslo (incluyendo el motor) para que sea como un Corolla del año 2022. Como verán es un esfuerzo titánico. Lo mismo sucede con la migración de Odoo.
Hay servicios de migración en los cuales uno les deja la base de datos y automaticamente te lo migran. Es posible hacer eso siempre y cuando los módulos sean los módulos standard. Y tengan en cuenta que el que brinda el servicio de migración lo hace porque ya tiene la plataforma lista para hacerlo (lo que no se puede decir del resto. Hacer una plataforma que pueda migrar Odoo es caro). Y que dicha plataforma solo sirve para una cantidad de casos de uso limitados (olvidate de migrar Odoo customizados con la localización argentina). Ahora, lo que hacen estos servicios es tomar la base de datos y correr scripts de SQL para actualizar dicha base de datos. Es por eso que es un servicio rápido (y limitado, traten de migrar de Odoo 12 a Odoo 15, y despues me cuentan su experiencia con las facturas).
Cuanto dura un proyecto de migración?
Pre-pandemia tuve que migrar un cliente de Odoo 8 a Odoo 12. Hice una migración light. El tiempo que duró el proyecto de la migración fue alrededor de dos meses, no llegó a tres. Y contó con la migración de la localización argentina. Pero como dije, solo se migraron los saldos de cuenta corriente, los cheques en cartera, los stocks y los datos maestros.
Acabo de finalizar otro proyecto de migración (no en Argentina) que consistio en migrar un Odoo con cuatro compañías, sin localización. Cada empresa tenía alrededor de 3,000 pedidos de venta y facturas con sus respectivos pagos. Practicamente sin customizaciones. Hacer los scripts para migrar todas las empresas con sus respectivos datos, más la validación por parte de los usuarios llevó un total de dos meses. Un mes para la creación de los scripts y preparar la nueva base de datos, otro mes más para la validación de los datos (nunca subestimen el tiempo que le lleva a los usuarios testear el sistema).
Es simple migrar Odoo?
No lo es. Para migrar Odoo uno debe conocer no solo como funciona en el sistema origen sino tambien como funciona en el sistema destino. Supongamos que migramos una factura pagada; debemos migrar no solo la factura, validarla, tambien migrar su pago correspondiente y conciliar ambos. Para hacer eso, uno debe tener un conocimiento importante de como desarrollar con Odoo.
Ademas uno debe migrar una gran cantidad de objetos que para el desarrollador parecen triviales (por ejemplo los mensajes y los attachments) pero por algun oscuro motivo para el usuario son fundamentales. Y migrar estos objetos presentan sus complicaciones. Este punto es muchas veces pasado por alto en las estimaciones del proyecto.
Con respecto a la migración de la localización argentina, debemos migrar no solo las facturas con su respectiva información (por ejemplo CAE) sino tambien validar las mismas en Odoo (sin la correspondiente validación del web-service de AFIP debido a que la factura ya cuenta con CAE). Con respecto a la confirmación de pedidos de venta, los mismos deben ser confirmados y luego los correspondientes ordenes de compra, entregas, etc. Hay que tener en cuenta que las estructuras de los datos a lo largo de las versiones cambiaron tambien, lo cual hace más compleja la migraciṕn.
El segundo motivo es performance. El ORM de Odoo no es precisamente rápido. Traten de migrar una factura con cuatro lineas y confirmarla. Y hagan eso con miles de facturas. Verán que lleva su buena cantidad de horas hacerlo. Y es el gran problema con Odoo. Puede ser una noticia no precisamente feliz para Belgica pero Odoo es lento. Si uno busca tener velocidad trabajando con Odoo, debe hacerlo mediante SQL. Pero el ORM de Odoo es lento para operaciones que involucran una cantidad grande de datos.
Para resolver estos problemas durante una migración mínimo se deben usar dos herramientas: SQL y procesamiento paralelo con multi-threading. Herramientas que no son del todo conocidas en la comunidad de desarrolladores de Odoo. Ahora, usando SQL apropiadamente y multi-threading donde se pueda usar, el tiempo de migrar los datos se reduce en forma significativa (no así el tiempo de desarrollo, el desarrollo se vuelve más complejo).
Por otra parte es necesario planificar la migración de modo tal que se pueda correr la migración múltiples veces. Si uno planifica la migración de modo tal que se ejecute de modo secuencial y una sola vez; es una herramienta para el fracaso. La migración se debe planificar de modo tal que se involucre al usuario en el testeo en una etapa temprana de la misma. Y que la migración se pueda ejecutar múltiples veces debido a que uno no conoce conque sorpresas se va a encontrar en el proceso.
Por último lo que aprendí es que estos motivos muchas veces son desconocidos al momento de estimar un proyecto de migración. Lo cual lleva inevitablemente al incremento en los costos del proyecto. En muchos casos uno puede decir que el proyecto de migración de Odoo es más complejo que el proceso de implementación del mismo, y esto tiene que ver con los factores detallados anteriormente.
Acerca de:
Gustavo Orrillo
Apasionado de la programación, implementa Odoo para distintos tipos de negocios desde el año 2010. En Moldeo Interactive es Socio fundador y Programador; además de escribir en el Blog sobre distintos temas relacionados a los desarrollos que realiza.