Si, un jour, vous vous êtes demandé qui a modifié une donnée dans Odoo et à quel moment, la fonctionnalité de suivi vous apporte la réponse directement dans l’interface.
Odoo enregistre les modifications sur des champs ciblés et les place automatiquement dans le fil de discussion (chatter) du document. Résultat : vos équipes voient l’historique des données sans devoir développer un système d’audit séparé.
Que vous utilisiez Odoo Studio ou développiez un module Python, maîtriser le suivi des champs fait partie des compétences essentielles pour manipuler le modèle de données Odoo. Ce guide couvre l’essentiel pour que vous puissiez l’activer et l’utiliser correctement.
Qu’est-ce que le champ de suivi dans Odoo
Dans Odoo, le suivi n’est pas un nouveau type de champ. C’est un attribut que l’on active sur des champs existants — Char, Many2one, Selection, Integer, Date, etc. Une fois activé, chaque changement de valeur est enregistré dans le chatter avec l’ancienne valeur, la nouvelle, la date et l’utilisateur qui a fait la modification.
Concrètement, cela apparaît sous forme d’un message de log dans la conversation du document. Par exemple, sur une opportunité CRM, vous verrez automatiquement un message du type « Changement d’étape : de Nouveau vers Qualifié » quand un commercial avance le dossier.
Cet attribut est disponible sur la plupart des types de champs standards et peut être activé via Odoo Studio pour une approche sans code, ou directement en Python lors d’un développement sur-mesure.
Quels éléments sont conservés
Chaque modification suivie est matérialisée par un enregistrement mail.message rattaché au document. Le message contient plusieurs informations pertinentes :
- Le libellé du champ modifié
- La valeur précédente (avant la modification)
- La nouvelle valeur (après la modification)
- La date et l’heure de la modification
- L’utilisateur à l’origine du changement
L’historique est visible pour toute personne disposant d’un droit de lecture sur l’enregistrement ; il n’y a pas d’étape supplémentaire à configurer au-delà de l’activation du suivi.
Comment fonctionne ce champ
Pour que le suivi fonctionne, le modèle doit inclure le mixin mail.thread. Ce mixin fournit l’infrastructure de messagerie et de journalisation qui alimente le chatter. La plupart des modèles métiers standards (ex. sale.order, crm.lead, account.move, stock.picking) héritent déjà de mail.thread.
Lorsque l’utilisateur enregistre un enregistrement ayant des champs suivis modifiés, Odoo compare automatiquement l’ancien et le nouveau état et écrit un message de journal dans le chatter : aucune action manuelle supplémentaire n’est nécessaire.
Comportement technique dans l’ORM Odoo
Au niveau technique, l’ORM d’Odoo intercepte les opérations d’écriture. Lorsqu’un appel write() change un champ suivi, le framework mémorise la valeur précédente, applique la mise à jour, puis crée le mail.message décrivant la différence.
En Python, on active le suivi en ajoutant tracking=True à la définition du champ dans la classe modèle.
Exemple d’usage :
Vous pouvez aussi indiquer une priorité de 1 à 10 pour définir l’ordre d’affichage lorsque plusieurs champs suivis changent lors d’un même enregistrement : les numéros les plus bas apparaissent en premier dans le message de log.
Exemple avec priorités :
Interaction avec les enregistrements liés
Les modifications suivies sont enregistrées sur l’enregistrement contenant le champ. Elles ne se propagent pas automatiquement aux modèles liés : si vous voulez un historique sur plusieurs objets, activez le suivi sur chaque modèle concerné.
C’est voulu : Odoo garde la traçabilité attachée à l’objet modifié, ce qui simplifie la relecture de l’historique sans avoir à parcourir une chaîne d’objets liés.
Cas d’usage en entreprise
Cinq exemples concrets où le suivi de champs apporte une vraie valeur au quotidien.
1. Gestion CRM et pipeline commercial
Les équipes commerciales ont besoin de savoir quand une opportunité change d’étape et qui a effectué le changement. Activer le suivi du champ stage_id dans le module CRM donne une timeline complète des transitions.
Cela permet d’identifier les blocages, d’animer des revues de pipeline fondées sur des faits et de former les commerciaux à partir d’un historique réel plutôt que de souvenirs approximatifs.
2. Workflows d’approbation achats et factures
En comptabilité et achats, il est souvent nécessaire de prouver qui a approuvé un document et quand. Le suivi du champ state sur les commandes d’achat ou les factures fournisseurs rend ces informations immédiatement consultables dans le chatter, sans module d’audit séparé.
C’est particulièrement utile pour les entreprises soumises à des contrôles financiers ou à des audits internes.
3. Gestion des stocks
Quand les quantités ou emplacements changent de façon inattendue, activer le suivi sur les mouvements ou certains champs produit aide les responsables d’entrepôt à trouver rapidement l’origine des écarts.
Au lieu de fouiller des fichiers de log ou d’interroger plusieurs personnes, la réponse se trouve souvent directement dans la conversation de l’enregistrement concerné.
4. Qualité des données clients
Si vos équipes mettent souvent à jour les fiches clients, suivre les modifications sur des champs critiques (email, téléphone, liste de prix) conserve l’historique des changements dans le CRM, pratique pour le support client ou les contrôles qualité des données.
5. Fiches salariés et RH
Suivre l’évolution de la fonction, du département ou du niveau salarial sur les fiches employé garantit une traçabilité claire des modifications — un point important pour la conformité RH et les audits internes.
Créer ou personnaliser un champ de suivi
Deux méthodes principales pour activer le suivi : Odoo Studio pour une approche sans code, ou le code Python pour une intégration technique complète.
Utiliser Odoo Studio
Odoo Studio permet d’activer facilement le suivi sur des champs existants sans écrire une seule ligne de code. Dans Studio, sélectionnez le modèle, cliquez sur le champ à suivre et activez l’option « Track Changes » dans les paramètres du champ.
Une fois activé, toutes les modifications futures apparaîtront automatiquement dans le chatter. C’est la solution recommandée pour les administrateurs métiers qui veulent ajouter du suivi sans faire appel à un développeur.
Studio offre aussi la possibilité d’activer le suivi lors de la création d’un nouveau champ personnalisé : cochez l’option au moment de la création.
Utiliser Python dans un module personnalisé
Pour les développeurs, on ajoute l’attribut de suivi directement dans la définition du champ au sein de la classe modèle. C’est la méthode standard dans les développements Odoo professionnels.
Le modèle doit aussi hériter de mail.thread pour que le suivi fonctionne. Exemple minimal :
Exemple de code d’extension :
C’est le schéma classique quand on étend un modèle existant dans un projet Odoo : le champ se comporte comme un champ standard mais chaque modification de valeur est automatiquement consignée.
Remarque importante pour les modèles sur-mesure
Pour les modèles entièrement nouveaux, pensez à inclure _inherit = ['mail.thread', 'mail.activity.mixin'] dans la définition. Sans cela, l’attribut de suivi sera ignoré et aucune trace ne sera enregistrée dans le chatter.
C’est une erreur fréquente chez les développeurs débutants : le mixin n’est pas optionnel si vous attendez du suivi effectif.
Bonnes pratiques
Le suivi est simple à activer… mais facile à mal employer. Suivez ces conseils pour en tirer le meilleur parti.
Ne suivre que l’essentiel
Activer le suivi partout crée du bruit et noie l’historique utile. Concentrez-vous sur les champs importants : états, responsables, dates clés, montants financiers et tout élément décisionnel.
Utiliser les numéros de priorité pour organiser
Quand plusieurs champs suivis changent en une fois, les priorités (1–10) contrôlent l’ordre d’affichage et rendent les messages plus lisibles, en particulier sur des modèles riches en champs audités.
Associer au contrôle d’accès
Le suivi est pertinent uniquement si l’accès est maîtrisé. Veillez à définir des règles et droits d’accès appropriés : un journal d’audit perd de sa valeur si tout le monde peut l’altérer sans contrôle.
Documenter les champs suivis
Tenez un inventaire clair des champs suivis, surtout dans des projets partagés ou multi-développeurs. Cela évite les surprises lors des revues de code ou des mises à jour de modules.
Tester avant la production
Validez toujours le comportement du suivi en environnement de préproduction. Certains champs, notamment les computed ou related fields, peuvent réagir différemment et nécessiter des ajustements (ex. store=True).
Pièges fréquents
Erreurs et malentendus qui reviennent souvent avec le suivi de champs dans Odoo.
Oublier d’hériter de mail.thread
C’est le problème le plus fréquent : sans mail.thread, le paramètre de suivi est ignoré silencieusement. Aucune erreur, aucun message dans le chatter — vérifiez toujours la chaîne d’héritage du modèle.
Suivre des champs calculés non stockés
Les champs calculés peuvent être suivis uniquement s’ils sont stockés (store=True). Un champ calculé non stocké n’a pas de valeur persistante à comparer, donc le suivi ne fonctionnera pas.
Activer le suivi sur trop de champs
Même si l’envie de tout auditer est compréhensible, un chatter saturé rend la recherche d’informations pertinente plus difficile. Restez sélectif et priorisez les champs à forte valeur opérationnelle.
S’attendre à du suivi lors d’opérations SQL directes ou imports massifs
Le suivi se déclenche via l’ORM Odoo lors d’un write(). Les mises à jour SQL directes, imports qui contournent l’ORM ou certains appels bas-niveau ne déclenchent pas le suivi. Assurez-vous que vos opérations passent bien par l’ORM.
Conflits entre Studio et définitions Python
Si un champ a été créé dans Odoo Studio avec le suivi activé, prudence lors de modifications en Python. Des définitions contradictoires entre Studio et le code peuvent provoquer des comportements inattendus pendant les mises à jour.
FAQ
Peut-on suivre un champ sur n’importe quel modèle dans Odoo ?
Seuls les modèles héritant de mail.thread prennent en charge le suivi. La plupart des modèles métiers standards l’incluent déjà, mais les modèles personnalisés doivent le déclarer explicitement.
L’activation du suivi impacte-t-elle les performances ?
L’impact est généralement faible : chaque changement suivi crée un mail.message, ce qui ajoute un léger coût à l’écriture. Sur des modèles très transactionnels, réfléchissez au nombre de champs suivis pour éviter une explosion des enregistrements de log.
Peut-on désactiver le suivi sans perdre l’historique existant ?
Oui. Désactiver le suivi empêche l’enregistrement des nouvelles modifications, mais l’historique déjà capturé dans le chatter reste accessible et n’est pas supprimé.
Le suivi fonctionne-t-il sur les Many2many ?
Oui. Pour les Many2many, le chatter indique quels enregistrements ont été ajoutés ou retirés de la relation plutôt que d’afficher un avant/après simple. Le format d’affichage diffère, mais la fonctionnalité existe.
Peut-on utiliser le suivi sans Odoo Studio ?
Absolument. Le paramètre tracking est un attribut Python standard du champ. Vous pouvez l’activer dans n’importe quel module personnalisé sans Studio. Studio offre juste une interface visuelle pour la même fonctionnalité.
Conclusion
Le suivi est une fonctionnalité discrète mais très utile : bien configuré, il donne à vos équipes une piste d’audit fiable, réduit les litiges sur les modifications et améliore la gouvernance des données.
Que vous passiez par Odoo Studio pour un réglage rapide sans code, ou par un module Python pour une intégration plus poussée, le résultat est identique : visibilité complète sur l’évolution de vos données métiers.
L’essentiel est de savoir où l’activer. Concentrez-vous sur les champs qui pilotent des décisions, des validations ou de la responsabilité dans vos processus : vous obtiendrez la plupart des bénéfices avec un minimum d’effort.
Chez Dasolo, nous accompagnons les entreprises pour concevoir, personnaliser et optimiser Odoo selon leurs processus. Qu’il s’agisse de modélisation des données, d’activation de suivi ou de développement sur-mesure, notre équipe peut vous aider.
Contactez-nous pour échanger sur votre projet Odoo. Contactez-nous et trouvons ensemble la meilleure approche pour votre implémentation.