Trois questions reviennent dans toute exploitation : qui a changé cette valeur, qui peut encore écrire dans ce modèle, et comment faire entrer un fichier déposé sur un serveur distant. Odoo répond partiellement à la première et pas du tout aux deux autres.
Treize modules communautaires s'en chargent.
Résumé
Trois modules traitent le traçage : le suivi dans la conversation de n'importe quel champ, y compris les relations multiples ; sa restriction à une condition métier par domaine ; et un module de tests complémentaires du journal d'audit sur des modèles comptables.
Cinq modules traitent les restrictions : les droits de modification d'un modèle restreints à des groupes, avec des utilisateurs passés en lecture seule ; le drapeau de non-mise à jour forcé sur les données d'un modèle ; un utilisateur technique désigné sur la société pour les traitements automatisés ; des actions temporaires supprimées automatiquement ; et le blocage des appels distants modèle par modèle et méthode par méthode.
Cinq modules enfin traitent les fichiers et la messagerie : une file de pièces jointes avec état et date de traitement, la synchronisation d'import et d'export avec un stockage distant, la surveillance de dossiers de messagerie, la notification à l'expéditeur d'un courriel mal routé, et des pièces jointes par langue sur un modèle de courriel.
L'essentiel
- Le suivi de n'importe quel champ dans la conversation.
- Le suivi conditionné à un domaine métier.
- Un modèle restreint en écriture à certains groupes.
- Un utilisateur technique désigné pour les traitements automatisés.
- Les appels distants bloqués par modèle et par méthode.
- Une file de pièces jointes avec état et date de traitement.
- L'import et l'export de fichiers vers un stockage distant.
- Un expéditeur prévenu quand son courriel n'a pas été routé.
Ce que ces modules ajoutent à l'instance
| Famille | Modules | Nombre |
|---|---|---|
| Traçage | tracking_manager, tracking_manager_domain, test_auditlog | 3 |
| Restrictions | base_model_restrict_update, base_force_record_noupdate, base_technical_user, base_temporary_action, rpc_helper | 5 |
| Fichiers | attachment_queue, attachment_synchronize | 2 |
| Messagerie | fetchmail_attach_from_folder, fetchmail_notify_error_to_sender, mail_template_attachment_per_lang | 3 |
Les menus : File d'attente des tâches ▸ Attachments Queue, Paramètres ▸ Technique ▸ Stockage SF ▸ Attachments Export Tasks et Attachments Import Tasks.
Tracer un changement de valeur
Le suivi natif d'Odoo trace les champs qu'un développeur a marqués comme suivis, et ignore les champs de relation multiple. Résultat : on voit qu'un prix a changé, jamais qu'une liste de taxes, d'étiquettes ou de contacts a été modifiée — alors que ce sont souvent ces changements qui expliquent un écart.
tracking_manager permet de suivre n'importe quel champ d'un modèle doté d'une conversation, y compris les champs de relation simple et multiple, sans développement.
tracking_manager_domain y ajoute une condition métier : le champ n'est tracé que si l'enregistrement satisfait un domaine. Tracer toutes les modifications de tous les champs sature la conversation ; tracer les modifications de prix sur les commandes au-delà d'un montant est exploitable.
test_auditlog ne fournit aucune fonctionnalité : il contient des tests automatisés complémentaires du module de journal d'audit, portant sur des modèles comptables — écritures, lignes de relevé bancaire.
Le journal d'audit lui-même est traité dans auditlog : la journalisation des modifications.
Restreindre ce qui peut être modifié
base_model_restrict_update (LGPL-3) restreint les droits de création, écriture et suppression sur un modèle à certains groupes de sécurité, et permet de passer des utilisateurs en lecture seule.
C'est le contrôle qu'on cherche après un incident : un référentiel de taxes, de comptes ou de conditions de règlement modifié par quelqu'un qui n'avait pas à y toucher. Les droits d'Odoo s'accordent par application, pas par modèle — et une application comptable ouvre tous ses référentiels.
base_force_record_noupdateforce le drapeau de non-mise à jour sur toutes les données rattachées à un modèle, depuis sa fiche technique. Cela empêche une mise à jour de module d'écraser des données modifiées à la main.base_technical_userdésigne sur la société un utilisateur technique dédié aux traitements automatisés — lots, imports, intégrations — plutôt qu'un compte nominatif.base_temporary_action(LGPL-3) crée des actions temporaires, supprimées automatiquement au bout d'un délai.rpc_helper(LGPL-3) bloque les appels distants — XML-RPC et JSON-RPC — modèle par modèle et méthode par méthode, par décoration dans le code ou par configuration.
L'utilisateur technique n'est pas un détail d'organisation : quand un traitement automatisé tourne sous le compte d'un salarié, son départ casse l'intégration — et chaque écriture produite porte son nom, ce qui rend la piste d'audit trompeuse.
Le blocage des appels distants est une mesure de surface d'attaque : une instance exposée sur Internet accepte par défaut des appels distants sur tous ses modèles.
Faire entrer et sortir des fichiers
attachment_queue ajoute un modèle de file de pièces jointes : une pièce jointe enrichie d'un état, d'une date de traitement et d'un type de fichier, pour la traiter en tâche de fond. Menu sous File d'attente des tâches ▸ Attachments Queue.
attachment_synchronize permet d'importer et d'exporter des fichiers depuis et vers un stockage distant — SFTP, stockage objet, système de fichiers local —, selon le connecteur de stockage configuré. Deux menus de tâches d'import et d'export.
C'est le mécanisme d'échange de fichiers le plus simple à exploiter : un partenaire dépose un fichier sur un SFTP, Odoo le récupère en tâche de fond, et chaque fichier a un état visible. Pas d'interface à développer, pas de connecteur à maintenir.
Les deux modules ensemble couvrent le besoin d'échange par fichier qui reste la norme dans l'industrie et la grande distribution.
La messagerie entrante
fetchmail_attach_from_folderpermet de surveiller des dossiers de messagerie précis et d'y attacher automatiquement les messages aux documents correspondants. Version 2.0.0, la plus avancée du lot.fetchmail_notify_error_to_senderprévient l'expéditeur quand un courriel entrant n'a pu être rattaché à aucun document.mail_template_attachment_per_langconfigure des pièces jointes différentes selon la langue du destinataire ou du modèle de courriel.
La notification à l'expéditeur corrige une perte silencieuse : un client qui répond à un accusé de réception depuis une autre adresse voit son message disparaître. Odoo ne le route pas, ne le signale pas, et personne ne sait qu'il a écrit.
Les pièces jointes par langue répondent à un besoin précis : des conditions générales, une notice ou un certificat dans la langue du destinataire, attachés automatiquement au bon courriel.
Limites connues
- Tracer tous les champs sature la conversation et alourdit les écritures : utiliser la restriction par domaine dès le départ.
- Le traçage augmente le volume de la base : chaque modification devient un message. À croiser avec les règles de purge.
base_model_restrict_updaterestreint au niveau des droits d'accès : un script ou un import avec un compte autorisé y échappe.base_force_record_noupdateempêche les mises à jour de module d'écraser les données : c'est son objet, mais cela signifie aussi qu'une correction livrée par l'éditeur ne s'appliquera pas.rpc_helperbloque des appels : vérifier qu'aucune intégration légitime n'en dépend avant d'activer.attachment_queuedépend du module de files de travaux (queue_job), donc d'une infrastructure de travailleurs surveillée.attachment_synchronizedépend defs_storage: le connecteur de stockage est à configurer, et ses identifiants à protéger.test_auditlogne doit pas être installé en production : c'est un module de tests.
Identité technique
Les treize modules viennent du dépôt OCA server-tools, branche 18.0. Dix sont en AGPL-3, trois en LGPL-3. Les dépendances : mail pour le traçage et la messagerie, base et base_setup pour les restrictions, queue_job et fs_storage pour les fichiers, auditlog et account pour les tests, base_sparse_field pour le blocage des appels distants.
Voir aussi exploiter une instance Odoo et les briques techniques du serveur.
Questions fréquentes
Peut-on tracer la modification de n'importe quel champ dans Odoo ?
Oui, avec tracking_manager, y compris les champs de relation multiple que le suivi natif ignore. Sans lui, on voit qu'un prix a changé mais jamais qu'une liste de taxes ou d'étiquettes a été modifiée — alors que c'est souvent ce changement qui explique un écart. Utilisez tracking_manager_domain pour le conditionner.
Peut-on empêcher la modification d'un référentiel précis ?
Oui : base_model_restrict_update restreint création, écriture et suppression sur un modèle à certains groupes. Les droits d'Odoo s'accordent par application, pas par modèle — et une application comptable ouvre tous ses référentiels, taxes et comptes compris.
Sous quel compte faire tourner les traitements automatisés ?
Sous un utilisateur technique désigné sur la société, avec base_technical_user. Quand un traitement tourne sous le compte d'un salarié, son départ casse l'intégration — et chaque écriture produite porte son nom, ce qui rend la piste d'audit trompeuse.
Comment récupérer automatiquement des fichiers déposés sur un SFTP ?
Avec attachment_queue et attachment_synchronize : le premier ajoute une file de pièces jointes avec état et date de traitement, le second importe et exporte depuis un stockage distant. Pas d'interface à développer, et chaque fichier a un état visible.
Que devient un e-mail entrant qu'Odoo n'arrive pas à router ?
Il disparaît, en silence. fetchmail_notify_error_to_sender prévient l'expéditeur. Le cas typique : un client répond à un accusé de réception depuis une autre adresse — Odoo ne route pas, ne signale rien, et personne ne sait qu'il a écrit.
Se faire accompagner
Ces modules partagent une caractéristique : on les installe après l'incident. Un référentiel modifié par la mauvaise personne, un e-mail client perdu, une intégration cassée par le départ d'un salarié. Chacun coûte une demi-journée à poser et évite une enquête.
Nous posons donc l'utilisateur technique et les restrictions de modèle à la mise en service, et le traçage conditionné sur les champs qui comptent — pas sur tous, parce qu'un journal illisible ne sert à rien. Voir les prestations d'Atalios Consulting ou demander un rappel.
Pour aller plus loin
En résumé
Trois questions reviennent dans toute exploitation : qui a changé cette valeur, qui peut encore écrire dans ce modèle, et comment faire entrer un fichier déposé sur un SFTP. Odoo répond partiellement à la première et pas du tout aux deux autres. Parlons de votre exploitation.