Un cas pour parcourir les messages
Exemple Cas illustratif : l'entreprise et ses chiffres sont inventés pour expliquer le flux.
Quincaillerie Rialto (entreprise fictive) travaille avec Odoo et veut envoyer une copie de ses données vers Snowflake avec le module. Son administratrice, Marta, crée le premier export et rencontre les messages un par un. L'ordre exact importe peu : ce qui compte, c'est ce que dit chaque message et ce qu'elle fait pour continuer. Si vous préférez d'abord voir comment le module est construit, lisez l'article sur son fonctionnement interne.

Settings › Snowflake Export › Snowflake Export Configurations, avec la colonne Last Sync encore vide.La clé Snowflake dans FlexigoTech Cloud
Marta choisit de faire passer l'export par FlexigoTech Cloud et colle la clé. Le premier message est celui-ci :
Before saving the key, an administrator has to accept that the Snowflake key and the exported data go through FlexigoTech Cloud. Nothing was sent.
Cela signifie qu'avant d'enregistrer la clé, un administrateur doit accepter que la clé Snowflake et les données exportées passent par FlexigoTech Cloud. Le message précise bien que rien n'a été envoyé. Ce que fait Marta : un administrateur accepte, puis elle enregistre à nouveau.
Au deuxième essai, elle colle la clé telle qu'elle l'avait, protégée par une phrase secrète :
Paste the unencrypted private key (PEM, without a passphrase): FlexigoTech Cloud keeps it encrypted. Nothing was sent.
Le module demande la clé privée non chiffrée, au format PEM et sans phrase secrète ; d'après le message lui-même, c'est FlexigoTech Cloud qui la conserve chiffrée. Marta colle la version sans phrase secrète.
Un collègue avait déjà créé un export de test via le cloud dans la même base de données, et voici ce qui s'affiche :
Another Snowflake export of this database already goes through FlexigoTech Cloud, which holds one Snowflake key per database. Nothing was sent.
FlexigoTech Cloud conserve une seule clé Snowflake par base de données, et un autre export passe déjà par le cloud. Là non plus, rien n'a été envoyé.
Et si elle essaie de continuer sans avoir enregistré la clé, le module l'arrête avec Save the Snowflake key in FlexigoTech Cloud first. : il faut d'abord enregistrer la clé dans FlexigoTech Cloud.
Fréquence et taille de lot
Pour tester rapidement, Marta saisit un intervalle très court et un petit lot. Elle obtient deux messages de validation :
Cron interval must be at least 15 minutes.: l'intervalle doit être de 15 minutes ou plus.Batch size must be between 100 and 50000.: la taille de lot doit être comprise entre 100 et 50000.
Marta ajuste les valeurs dans ces limites et enregistre.
Modèles et champs qui ne peuvent pas être exportés

Settings › Snowflake Export › Model Lines, chacune avec son mode, Full refresh ou Incremental.En ajoutant des modèles, ces messages apparaissent :
This model is protected and cannot be exported.: le modèle est protégé et le module ne permet pas de l'exporter.Only concrete database-backed models can be exported.: seuls les modèles concrets adossés à la base de données peuvent être exportés.This model does not have write_date; incremental mode is not supported.: le modèle n'a pas dewrite_date, il ne prend donc pas en charge le mode incrémental.The model of an export line is chosen with its Model field.: le modèle d'une ligne d'export se choisit avec son champModel.
Il en va de même pour les champs :
This field is excluded by default for security.: le champ est exclu par défaut pour des raisons de sécurité.The field of an export line is chosen with its Field field.: le champ d'une ligne d'export se choisit avec son champField.

res.users, res.partner et res.company et leur colonne d'avertissement de sécurité.La première synchronisation
Marta lance la synchronisation et, sans attendre, la relance :
Sync already in progress for this configuration.
Une synchronisation est déjà en cours pour cette configuration : elle attend donc que celle en cours se termine.
Ensuite, elle duplique l'export pour une autre société du groupe, avec le même compte, la même base de données, le même schéma et le même modèle :
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.
Un autre export, et les exports archivés comptent aussi, envoie vers cette même table ; un rafraîchissement complet supprimerait ses lignes. La solution est celle qu'indique le message : un schéma propre à chaque export.
Plus tard, une synchronisation renvoie :
Schema mismatch for field %s: expected %s. Run a full refresh or update Snowflake manually. %s
Le message indique le champ qui ne correspond pas et ce qui était attendu. Les deux solutions sont celles du texte : un rafraîchissement complet ou une mise à jour manuelle de Snowflake.

Qui a modifié l'export et avec quel utilisateur les données sont lues
Des mois plus tard, la personne qui avait modifié l'export en dernier passe dans une autre société du groupe, et ce message apparaît :
%(user)s, who last changed this export, does not belong to %(company)s.
La personne qui a modifié l'export en dernier n'appartient pas à la société indiquée dans le message. Le texte réel contient le nom de la personne et celui de la société : vous savez donc qui et quoi vérifier.
Une autre fois, Marta tombe sur un message différent, qui ne parle pas de sociétés :
This export has no active user to read the records with: an administrator has to save it again.
Il dit seulement que l'export n'a pas d'utilisateur actif pour lire les enregistrements. La solution est celle du texte : un administrateur doit l'enregistrer à nouveau.
Connexion directe ou via le cloud
Marta essaie de changer le type de connexion d'un export, et le module refuse dans les deux sens :
A Snowflake export through FlexigoTech Cloud does not go back to a direct connection.: un export qui passe par FlexigoTech Cloud ne revient pas à une connexion directe.A Snowflake export with a direct connection keeps it: it does not move to FlexigoTech Cloud.: un export en connexion directe la conserve et ne passe pas à FlexigoTech Cloud.
Deux autres messages concernent le connecteur Python et l'authentification par paire de clés :
Snowflake Python connector not found. Install via: pip install snowflake-connector-python: le connecteur Python de Snowflake est introuvable ; le message donne la commande pour l'installer,pip install snowflake-connector-python.Private key path or pasted key content is required for key-pair auth.: l'authentification par paire de clés nécessite le chemin de la clé privée ou le contenu de la clé collé.
Ce qu'il faut retenir du cas
- Lisez le message en entier : dans bon nombre d'entre eux, la deuxième phrase indique déjà ce que vous devez faire.
- Quand le texte se termine par
Nothing was sent., le module lui-même vous dit que rien n'a été envoyé. - Donnez à chaque export son propre schéma s'ils partagent compte, base de données et modèle, et pensez aussi aux exports archivés.
- Un modèle sans
write_datene prend pas en charge le mode incrémental. - Le type de connexion d'un export, directe ou via FlexigoTech Cloud, ne se change pas ensuite, dans aucun sens.
Comment FlexigoTech vous aide
FlexigoTech déploie Odoo 17, 18, 19 et 20 et développe des connecteurs et des intégrations sur mesure. Avec la connexion via FlexigoTech Cloud, le service conserve les identifiants chiffrés, surveille la synchronisation et prévient par e-mail en cas d'échec. Le module coûte 9 € par version d'Odoo sur Odoo Apps (paiement unique, HT), pour 17, 18, 19 et 20, et le plan Connecteur est à 49 €/mois ou 490 €/an HT. Vous trouverez les détails sur la page du module et sur sa fiche Odoo Apps.
À lire aussi
Vérifié dans le code du connecteur (version 20.0) et dans les sources citées
Sources
- Code du module : flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/config.py
- Code du module : flexigo_odoo_to_snowflake_snapshot_exporter 20.0 (289554a6): models/field_line.py
- Code du module : 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
