Documentation9 min de lecture

Tracer, restreindre et faire circuler les fichiers dans Odoo

Le module OCA `tracking_manager` (dépôt `server-tools`, version 18.0.1.1.0, licence AGPL-3) permet de **suivre dans la conversation les modifications de n'importe quel champ** d'un modèle — y compris les champs de relation multiple, que le suivi natif d'Odoo ignore. Douze autres modules traitent les restrictions d'écriture, le blocage des appels distants et les files de fichiers.

Journaux techniques affichés sur un écran

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

FamilleModulesNombre
Traçagetracking_manager, tracking_manager_domain, test_auditlog3
Restrictionsbase_model_restrict_update, base_force_record_noupdate, base_technical_user, base_temporary_action, rpc_helper5
Fichiersattachment_queue, attachment_synchronize2
Messageriefetchmail_attach_from_folder, fetchmail_notify_error_to_sender, mail_template_attachment_per_lang3

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_noupdate force 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_user dé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_folder permet 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_sender prévient l'expéditeur quand un courriel entrant n'a pu être rattaché à aucun document.
  • mail_template_attachment_per_lang configure 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_update restreint au niveau des droits d'accès : un script ou un import avec un compte autorisé y échappe.
  • base_force_record_noupdate empê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_helper bloque des appels : vérifier qu'aucune intégration légitime n'en dépend avant d'activer.
  • attachment_queue dépend du module de files de travaux (queue_job), donc d'une infrastructure de travailleurs surveillée.
  • attachment_synchronize dépend de fs_storage : le connecteur de stockage est à configurer, et ses identifiants à protéger.
  • test_auditlog ne 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.

Documentation OCAOdoo CommunityHébergement

Partager

Fiches connexes

Équipe au travail sur des ordinateurs portables autour d'une table
Le module OCA `account_invoice_en16931` (dépôt `fr-einvoicing`, version 18.0.1.0.0, licence AGPL-3) est le socle qui fabrique le fichier de facture électronique conforme à la norme européenne **EN 16931** : Factur-X (PDF/A-3 avec XML CII embarqué), XML UBL, XML CII ou PDF accompagné d'un UBL — et il ajoute des **contrôles bloquants à la validation** d'une facture client. Les quatre modules qui s'y greffent pour la France, et ce que le socle ne fait pas.
Lire la suite
Documentation OCA, Facturation électronique
Réunion d'approbation autour d'un document de travail
Relevé sur une instance Odoo 18 Community, le module OCA `base_tier_validation` (dépôt `server-ux`, version 18.0.3.5.1, licence AGPL-3) ajoute 1 modèle, 101 champs et 3 menus, mais ne s'active sur aucun document métier par lui-même : il lui faut un module d'implémentation. C'est le point qui surprend le plus — voici ce qu'il fait réellement, et comment le mettre en service.
Lire la suite
Documentation OCA, Odoo