Introducción
Actualizar Odoo de una versión mayor a otra (15 a 16, 16 a 17, 17 a 18) es un proceso complejo que requiere una planificación cuidadosa. En este tutorial completo, aprenderemos a usar OpenCode combinado con el framework OpenUpgrade de la OCA para automatizar el proceso de migración de toda su plataforma Odoo.
La Odoo Community Association (OCA) proporciona el proyecto OpenUpgrade, una herramienta de migración de código abierto que incluye scripts para migrar datos y módulos entre versiones de Odoo.
Dejo por aquí el vídeo de la práctica de actualización en directo: https://youtu.be/N2FdzVa9PDg
Prerrequisitos
- Un servidor con Ubuntu (recomendado por Odoo)
- Acceso root o sudo
- Python 3.10 o superior
- PostgreSQL 12 o superior
- Git instalado
- Código fuente de Odoo para las versiones origen y destino
Parte 1: Instalar OpenCode en el Servidor
1.1 Instalación con Una Línea (Recomendado)
La forma más fácil de instalar OpenCode en Ubuntu es con un solo comando:
curl -fsSL https://opencode.ai/install | bash
Este comando automáticamente:
- Detecta la arquitectura de su sistema
- Descarga la última versión de OpenCode
- Lo instala en la ubicación apropiada
- Configura la variable de entorno PATH
1.2 Verificar la Instalación
Después de la instalación, verifique que OpenCode funciona correctamente:
# Verificar instalación
opencode --version
# Ver comandos disponibles
opencode --help
1.3 Configurar OpenCode
Cree el archivo de configuración de OpenCode:
# Crear directorio de configuración
mkdir -p ~/.config/opencode
# Crear archivo de configuración
cat > ~/.config/opencode/config.json << 'EOF'
{
"defaultModel": "anthropic/claude-3-5-sonnet-20241022",
"theme": "dark"
}
EOF
Parte 2: Instalar el Framework OpenUpgrade de la OCA
El framework OpenUpgrade de la OCA es la base para migrar bases de datos de Odoo. Contiene scripts de migración desarrollados por la comunidad OCA.
2.1 Clonar el Repositorio OpenUpgrade
# Crear directorio para OpenUpgrade
sudo mkdir -p /opt/odoo-migration
cd /opt/odoo-migration
# Clonar OpenUpgrade para su versión destino (ej., 17.0)
sudo git clone -b 17.0 https://github.com/OCA/OpenUpgrade.git
cd OpenUpgrade
# Instalar dependencias Python
sudo pip3 install -r requirements.txt
2.2 Descargar Scripts de Migración
Los scripts de migración se encuentran en el módulo openupgrade_scripts. Descárguelos para su ruta de versión específica:
# Los scripts ya están incluidos en la clonación de OpenUpgrade
# Ubicación: /opt/odoo-migration/OpenUpgrade/openupgrade_scripts/scripts/
# Cada módulo tiene su propio directorio de migración:
# openupgrade_scripts/scripts/[nombre_modulo]/[versión]/
# Estructura de ejemplo:
# scripts/account/pre-migration.py
# scripts/account/post-migration.py
Parte 3: Preparar su Instalación de Odoo
3.1 Crear Copia de Seguridad de la Base de Datos
CRÍTICO: ¡Siempre haga una copia de seguridad de su base de datos antes de cualquier migración!
# Respaldar su base de datos
pg_dump -U odoo -F c nombre_su_base_de_datos > backup_$(date +%Y%m%d_%H%M%S).dump
# O respaldar con filestore
mkdir -p /tmp/odoo_backup
cp -r /ruta/a/odoo/filestore/* /tmp/odoo_backup/
pg_dump -U odoo -F c nombre_su_base_de_datos > /tmp/odoo_backup/database.dump
3.2 Configurar Odoo para Migración
Actualice su archivo de configuración de Odoo para incluir OpenUpgrade:
# Editar su odoo.conf
cat > /opt/odoo17/config/odoo.conf << 'EOF'
[options]
admin_passwd = admin
db_host = localhost
db_port = 5432
db_user = odoo
db_password = su_contraseña_db
addons_path = /opt/odoo17/odoo/addons,/opt/odoo17/custom-addons
# Configuración de OpenUpgrade
server_wide_modules = openupgrade_framework
upgrade_path = /opt/odoo-migration/OpenUpgrade/openupgrade_scripts/scripts/
# Importante: Establecer nivel de registro para depuración
log_level = info
logfile = /var/log/odoo/odoo.log
EOF
Parte 4: Proceso de Migración con OpenCode
4.1 Navegue al Directorio de sus Addons Personalizados
# Ir al directorio de addons personalizados
cd /opt/odoo17/custom-addons/
# O al directorio de su módulo
cd /opt/odoo17/custom-addons/su-modulo/
4.2 Inicie OpenCode
# Iniciar OpenCode
opencode
4.3 Use el Prompt de Migración OCA
Copie y pegue este prompt en OpenCode para migrar con scripts de OCA:
Eres un experto en migración de Odoo utilizando los scripts de OpenUpgrade de la OCA (Odoo Community Association). Tu tarea es migrar la plataforma completa Odoo desde la versión [ORIGEN] a la versión [DESTINO].
CONTEXTO OCA:
- OpenUpgrade: https://github.com/OCA/OpenUpgrade
- Scripts de migración: openupgrade_scripts/scripts/
- Framework: openupgrade_framework
Pasos a seguir:
1. ANÁLISIS PREVIO:
- Lee los archivos de análisis en openupgrade_scripts/scripts/[modulo]/openupgrade_analysis.txt
- Identifica los breaking changes documentados
- Revisa los scripts de migración existentes
2. CONFIGURACIÓN DEL ENTORNO:
- Asegúrate de que openupgrade_framework está en server_wide_modules
- Configura el upgrade_path en odoo.conf
- Verifica que los scripts están en la ruta correcta
3. MIGRACIÓN DE MÓDULOS ESTÁNDAR:
- Ejecuta Odoo con --update=all para forzar actualización
- Los scripts pre-migration.py se ejecutan antes de cargar el módulo
- Los scripts post-migration.py se ejecutan después de cargar el módulo
4. MIGRACIÓN DE MÓDULOS PERSONALIZADOS:
- Analiza los cambios en modelos Python
- Actualiza las decoraciones de campos (@api.depends, @api.onchange)
- Modifica las vistas XML según la nueva API
- Crea scripts de migración si es necesario
5. MIGRACIÓN DE DATOS:
- Usa las funciones de openupgrade: migrate_sequences(), rename_columns(), etc.
- Mapea valores de selection fields si cambiaron
- Actualiza referencias XML
6. VERIFICACIÓN:
- Ejecuta el test suite
- Verifica integridad de datos
- Prueba todas las funcionalidades críticas
HERRAMIENTAS OCA DISPONIBLES:
- openupgrade.wrap(): Para envolver funciones obsoletas
- openupgrade.set_defaults(): Para establecer valores por defecto
- openupgrade.rename_columns(): Para renombrar columnas
- openupgrade.add_columns(): Para añadir columnas faltantes
- openupgrade.drop_columns(): Para eliminar columnas obsoletas
IMPORTANTE:
- Documenta todos los cambios realizados
- Mantén la compatibilidad con datos existentes
- Usa los scripts de OCA como referencia
- Contribuye de vuelta a la comunidad si es posible
4.4 Ejecutar la Migración
Ejecute la migración usando OpenUpgrade:
# Detener el servicio de Odoo primero
sudo systemctl stop odoo
# Ejecutar migración con OpenUpgrade
/opt/odoo17/odoo/odoo-bin -c /opt/odoo17/config/odoo.conf \
-d nombre_su_base_de_datos \
-u all \
--stop-after-init
# Verificar registros en busca de errores
tail -f /var/log/odoo/odoo.log
Parte 5: Recursos y Créditos de la OCA
La OCA (Odoo Community Association) es una organización sin fines de lucro que proporciona miles de módulos de código abierto y el framework OpenUpgrade. ¡Apoye su trabajo!
Enlaces de la OCA
- Sitio Web: odoo-community.org
- GitHub: github.com/OCA
- OpenUpgrade: github.com/OCA/OpenUpgrade
- Tienda de Apps: apps.odoo-community.org
- Documentación: Documentación OpenUpgrade
Redes Sociales de la OCA
- Twitter/X: @OdooCommunity
- LinkedIn: OCA en LinkedIn
- Facebook: OCA en Facebook
- Mastodon: @oca@fosstodon.org
- YouTube: OCA en YouTube
Apoye a la OCA
Considere ser miembro o patrocinador de la OCA para apoyar el desarrollo de módulos gratuitos y herramientas de migración:
Conclusión
Usar OpenCode con los scripts de OpenUpgrade de la OCA proporciona una combinación poderosa para migrar plataformas de Odoo. La comunidad OCA ha desarrollado scripts de migración integrales que manejan la complejidad de la transformación de datos entre versiones, mientras que OpenCode le ayuda a entender y adaptar el código a sus necesidades específicas.
Recuerde siempre respaldar su base de datos, probar primero en desarrollo y contribuir de vuelta a la comunidad OCA cuando sea posible.