Un caso para recorrer los mensajes
Ejemplo Caso ilustrativo: la empresa y sus datos son inventados para explicar el flujo.
Ferretería Rialto (empresa inventada) trabaja con Odoo y quiere llevar una copia de sus datos a Snowflake con el módulo. Su administradora, Marta, crea la primera exportación y va encontrando los avisos uno a uno. El orden exacto da igual: lo que cuenta es qué dice cada mensaje y qué hace ella para seguir. Si antes quieres ver cómo está montado el módulo, tienes el artículo sobre cómo funciona por dentro.

Settings › Snowflake Export › Snowflake Export Configurations, con la columna Last Sync todavía vacía.La clave de Snowflake en FlexigoTech Cloud
Marta elige que la exportación pase por FlexigoTech Cloud y pega la clave. El primer aviso es este:
Before saving the key, an administrator has to accept that the Snowflake key and the exported data go through FlexigoTech Cloud. Nothing was sent.
Significa que, antes de guardar la clave, un administrador tiene que aceptar que la clave de Snowflake y los datos exportados pasan por FlexigoTech Cloud. El mensaje deja claro que no se ha enviado nada. Qué hace Marta: un administrador lo acepta y ella vuelve a guardar.
En el segundo intento pega la clave tal como la tenía, protegida con frase de paso:
Paste the unencrypted private key (PEM, without a passphrase): FlexigoTech Cloud keeps it encrypted. Nothing was sent.
El módulo pide la clave privada sin cifrar, en formato PEM y sin frase de paso; según el propio mensaje, es FlexigoTech Cloud quien la guarda cifrada. Marta pega la versión sin frase de paso.
Un compañero había creado antes otra exportación de prueba por la nube en la misma base de datos, y sale esto:
Another Snowflake export of this database already goes through FlexigoTech Cloud, which holds one Snowflake key per database. Nothing was sent.
FlexigoTech Cloud guarda una sola clave de Snowflake por base de datos y otra exportación ya va por la nube. Tampoco aquí se ha enviado nada.
Y si intenta seguir sin tener la clave guardada, el módulo la para con Save the Snowflake key in FlexigoTech Cloud first.: primero hay que guardar la clave en FlexigoTech Cloud.
Frecuencia y tamaño de lote
Para probar rápido, Marta pone un intervalo muy corto y un lote pequeño. Le salen dos avisos de validación:
Cron interval must be at least 15 minutes.: el intervalo tiene que ser de 15 minutos o más.Batch size must be between 100 and 50000.: el tamaño de lote tiene que estar entre 100 y 50000.
Marta ajusta los valores a esos márgenes y guarda.
Modelos y campos que no se dejan exportar

Settings › Snowflake Export › Model Lines, cada una con su modo, Full refresh o Incremental.Al añadir modelos aparecen estos mensajes:
This model is protected and cannot be exported.: el modelo está protegido y el módulo no deja exportarlo.Only concrete database-backed models can be exported.: solo se exportan modelos concretos respaldados por la base de datos.This model does not have write_date; incremental mode is not supported.: el modelo no tienewrite_date, así que no admite el modo incremental.The model of an export line is chosen with its Model field.: el modelo de una línea de exportación se elige con su campoModel.
Con los campos pasa algo parecido:
This field is excluded by default for security.: el campo queda excluido por defecto por seguridad.The field of an export line is chosen with its Field field.: el campo de una línea de exportación se elige con su campoField.

res.users, res.partner y res.company y su columna de aviso de seguridad.La primera sincronización
Marta lanza la sincronización y, sin esperar, la lanza otra vez:
Sync already in progress for this configuration.
Ya hay una sincronización en curso para esa configuración, así que espera a que termine la que está en marcha.
Después duplica la exportación para otra empresa del grupo, con la misma cuenta, base de datos, esquema y modelo:
Another export, archived ones too, sends to this Snowflake table (same account, database, schema and model): a full refresh would delete its rows. Give each export a schema of its own.
Otra exportación, y aquí cuentan también las archivadas, envía a esa misma tabla; un refresco completo borraría sus filas. La salida es la que da el mensaje: un esquema propio para cada exportación.
Más adelante, una sincronización devuelve:
Schema mismatch for field %s: expected %s. Run a full refresh or update Snowflake manually. %s
El mensaje indica el campo que no cuadra y lo que se esperaba. Las dos salidas son las del propio texto: un refresco completo o actualizar Snowflake a mano.

Quién cambió la exportación y con qué usuario se lee
Meses después, la persona que había cambiado la exportación por última vez pasa a otra empresa del grupo, y sale este aviso:
%(user)s, who last changed this export, does not belong to %(company)s.
Quien cambió la exportación por última vez no pertenece a la empresa que indica el mensaje. El texto real lleva el nombre de la persona y el de la empresa, así que sabes a quién y qué mirar.
En otro momento, Marta se encuentra con un mensaje distinto, que no habla de empresas:
This export has no active user to read the records with: an administrator has to save it again.
Lo único que dice es que la exportación no tiene un usuario activo con el que leer los registros. La salida es la del propio texto: un administrador tiene que volver a guardarla.
Conexión directa o por la nube
Marta prueba a cambiar el tipo de conexión de una exportación y el módulo no la deja en ningún sentido:
A Snowflake export through FlexigoTech Cloud does not go back to a direct connection.: una exportación que va por FlexigoTech Cloud no vuelve a una conexión directa.A Snowflake export with a direct connection keeps it: it does not move to FlexigoTech Cloud.: una exportación con conexión directa la mantiene y no pasa a FlexigoTech Cloud.
Otros dos mensajes hablan del conector de Python y de la autenticación por par de claves:
Snowflake Python connector not found. Install via: pip install snowflake-connector-python: no se encuentra el conector de Python de Snowflake; el mensaje da la orden para instalarlo,pip install snowflake-connector-python.Private key path or pasted key content is required for key-pair auth.: la autenticación por par de claves necesita la ruta de la clave privada o el contenido de la clave pegado.
Qué aprender del caso
- Lee el mensaje entero: en buena parte de ellos, la segunda frase ya es lo que tienes que hacer.
- Cuando el texto termina en
Nothing was sent., el propio módulo te dice que no se ha enviado nada. - Da a cada exportación su propio esquema si comparten cuenta, base de datos y modelo, y ten en cuenta también las archivadas.
- Un modelo sin
write_dateno admite el modo incremental. - El tipo de conexión de una exportación, directa o por FlexigoTech Cloud, no se cambia después en ningún sentido.
Cómo te ayuda FlexigoTech
FlexigoTech implanta Odoo 17, 18, 19 y 20 y desarrolla conectores e integraciones a medida. Con la conexión por FlexigoTech Cloud, el servicio guarda cifradas las credenciales, vigila la sincronización y avisa por correo si falla. El módulo cuesta 9 € por versión de Odoo en Odoo Apps (pago único, sin IVA), para 17, 18, 19 y 20, y el plan Conector va a 49 €/mes o 490 €/año sin IVA. Tienes los detalles en la página del módulo y en su ficha de Odoo Apps.
Sigue leyendo
Comprobado en el código del conector (versión 20.0) y en las fuentes enlazadas
Fuentes
- Código del módulo: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/config.py
- Código del módulo: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/field_line.py
- Código del módulo: flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/model_line.py
- apps.odoo.com/apps/modules/20.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/17.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/18.0/flexigo_odoo_to_snowflake_snapshot_exporter
- apps.odoo.com/apps/modules/19.0/flexigo_odoo_to_snowflake_snapshot_exporter
- flexigotech.com/en/services.html
- flexigotech.com/precios.html
