Passa al contenuto

Campo Tracking in Odoo: Come Monitorare le Modifiche ai Record Con Sicurezza

Scopri come funziona l’attributo di tracciamento in Odoo, quando conviene attivarlo e come impostarlo correttamente nel tuo modello dati
6 marzo 2026 di
Campo Tracking in Odoo: Come Monitorare le Modifiche ai Record Con Sicurezza
Dasolo
| Ancora nessun commento

Se ti sei mai chiesto chi ha modificato un dato su un record Odoo e in quale momento, il tracciamento dei campi è lo strumento progettato proprio per rispondere a questo bisogno.


Odoo registra automaticamente le modifiche su singoli campi e le riporta nella conversazione (chatter) del record. In questo modo il team ha una cronologia accessibile che mostra come e quando i dati aziendali si sono trasformati, senza dover implementare un sistema di audit separato.

Che tu stia usando Odoo Studio per configurare campi senza codice o sviluppando un modulo Python personalizzato, conoscere il funzionamento del tracciamento è fondamentale per gestire correttamente i dati in Odoo. Questa guida raccoglie le informazioni pratiche e tecniche necessarie.

Cos'è il campo di tracciamento in Odoo


Nel framework Odoo il tracciamento non è un nuovo tipo di campo: è un'impostazione che si applica a campi già esistenti (per esempio Char, Many2one, Selection, Integer, Date). Quando attivi il tracciamento su un campo, ogni cambiamento viene annotato nel chatter con il valore precedente, il valore nuovo, la data e l'utente che ha effettuato la modifica.

In interfaccia questa attività appare come una nota di log nella discussione del record. Per esempio, su una opportunità commerciale potresti vedere registrato automaticamente un messaggio del tipo: “Fase cambiata da Nuova a Qualificata” quando un venditore aggiorna lo stato.

L'opzione di tracciamento è disponibile per la maggior parte dei tipi di campo standard e può essere attivata sia tramite Odoo Studio sia programmando direttamente in Python all'interno di un modulo personalizzato.

Quali informazioni vengono memorizzate

Ogni variazione tracciata genera un record di tipo mail.message collegato al documento. Il messaggio contiene tipicamente:

  • Il nome o l'etichetta del campo modificato
  • Il valore precedente prima della modifica
  • Il nuovo valore dopo la modifica
  • La data e l'ora dell'operazione
  • L'utente che ha eseguito la modifica

Questa cronologia è visibile a chi ha permessi di lettura sul record e non richiede configurazioni extra oltre all'abilitazione del tracciamento sul campo interessato.

Come funziona nella pratica


Perché il tracciamento funzioni, il modello deve ereditare il mixin mail.thread. Questo mixin fornisce l'infrastruttura di messaggistica e logging che alimenta il chatter; la maggior parte dei modelli standard di Odoo (es. sale.order, crm.lead, account.move, stock.picking) lo include già.

Quando un utente salva un record che contiene campi tracciati, Odoo confronta i valori vecchi e nuovi e scrive automaticamente un messaggio di log nel chatter: non è necessaria alcuna azione manuale aggiuntiva.

Comportamento tecnico nell'ORM di Odoo

A livello tecnico l'ORM di Odoo intercetta le operazioni di scrittura sul modello. Quando una chiamata write() modifica un campo tracciato, il framework cattura il valore precedente, applica la modifica e crea un record mail.message che descrive la differenza.

In Python l'abilitazione del tracciamento si ottiene aggiungendo tracking=True nella definizione del campo nel modello:

state = fields.Selection(
    [('draft', 'Draft'), ('confirmed', 'Confirmed')],
    tracking=True
)

È possibile usare un valore numerico da 1 a 10 per dare priorità alla visualizzazione quando più campi tracciati vengono modificati nella stessa operazione di salvataggio: i numeri più bassi compaiono per primi nel messaggio di log.

partner_id = fields.Many2one('res.partner', tracking=1)
priority = fields.Selection(tracking=10)

Interazione con record correlati

I cambiamenti tracciati vengono memorizzati sul singolo record che contiene il campo: non vengono propagati automaticamente ai record collegati. Se vuoi audit su più modelli correlati, devi abilitare il tracciamento su ciascun modello rilevante.

Questo comportamento è voluto: tenere la storia vicino all'oggetto modificato facilita la revisione senza dover navigare tra molte relazioni.

Quando è utile in azienda


Esempi pratici dove il tracciamento è realmente utile


1. Gestione del CRM e della pipeline commerciale

È fondamentale per i team di vendita sapere quando una lead cambia fase e chi ha effettuato la modifica. Abilitare il tracciamento sul campo stage_id nel modulo CRM fornisce una timeline completa delle transizioni di stato.

Questo aiuta a capire dove i deal si bloccano, supporta le revisioni della pipeline e fornisce dati concreti per il coaching dei venditori.


2. Flussi di approvazione per acquisti e fatture

Nel procurement e nella contabilità, la conformità spesso richiede di sapere chi ha approvato un documento e quando. Tracciare il campo state su ordini di acquisto o fatture fornisce questa storia direttamente nel chatter senza bisogno di un modulo di audit separato.

È particolarmente utile nelle aziende soggette a controlli finanziari o audit interni.


3. Gestione magazzino e scorte

Quando quantità o ubicazioni dei prodotti cambiano inaspettatamente, tracciare campi su movimenti di magazzino o prodotti aiuta i responsabili logistici a individuare rapidamente la causa delle discrepanze.

Invece di cercare log separati o chiedere in giro, le informazioni chiave sono disponibili nella conversazione del record interessato.


4. Qualità dei dati cliente

Se il team aggiorna frequentemente i dati anagrafici, tracciare campi critici come email, phone o pricelist_id nel modello partner conserva la storia delle modifiche, utile per l'assistenza clienti e per i controlli sulla qualità dei dati.


5. Anagrafica e vicende dei dipendenti

Tracciare cambi su ruoli, reparti o inquadramenti salariali nei record dipendente garantisce trasparenza e facilita gli audit HR: ogni modifica rimane documentata nel tempo.


Creare o personalizzare un campo tracciabile


Due strade per attivare il tracciamento: senza codice con Studio o con codice via Python.

Uso di Odoo Studio

Odoo Studio permette di abilitare il tracciamento senza scrivere una riga di codice. Apri Studio sul modello interessato, seleziona il campo da monitorare e attiva l'opzione Track Changes nelle impostazioni del campo.

Una volta attivato, tutte le modifiche future vengono riportate nel chatter. È la scelta consigliata per amministratori e utenti di business che vogliono personalizzare il sistema rapidamente senza coinvolgere uno sviluppatore.

Lo stesso pannello di Studio viene usato anche quando crei nuovi campi: puoi attivare il tracciamento direttamente durante la creazione del campo personalizzato.

Uso del Python in un modulo personalizzato

Gli sviluppatori che estendono o costruiscono moduli devono aggiungere l'attributo tracking alla definizione del campo nella classe modello. È la prassi standard nelle guide tecniche di sviluppo Odoo.

Il modello deve inoltre ereditare mail.thread perché il tracciamento funzioni. Ecco un esempio minimale:

from odoo import models, fields

class ProjectTask(models.Model):
    _name = 'project.task'
    _inherit = ['project.task', 'mail.thread']

    x_client_priority = fields.Selection(
        [('low', 'Low'), ('medium', 'Medium'), ('high', 'High')],
        string='Client Priority',
        tracking=True
    )

Questo schema è comune quando si estende un modello esistente in un progetto di sviluppo Odoo: il campo si comporta come qualsiasi altro campo del database, ma ogni sua variazione viene ora registrata automaticamente.

Nota importante sui modelli completamente custom

Se crei modelli nuovi da zero, ricorda di includere _inherit = ['mail.thread', 'mail.activity.mixin'] nella definizione della classe. Senza queste eredità, l'attributo di tracciamento sarà ignorato senza avvisare e nessuna modifica verrà registrata.

Questo errore è una causa comune di confusione per chi affronta per la prima volta il tracciamento in Odoo: il mixin non è opzionale se vuoi che funzioni.

Buone pratiche d'uso


Il tracciamento è semplice da attivare, ma va usato con criterio. Ecco alcune regole pratiche per sfruttarlo al meglio.

Traccia solo ciò che conta

Attivare il tracciamento su ogni campo genera rumore nella conversazione e rende difficile trovare la storia rilevante. Concentrati su campi utili per l'audit: stati, fasi, responsabili, date critiche e valori finanziari.

Usa le priorità per migliorare la chiarezza

Quando più campi tracciati vengono modificati assieme, usa i numeri di priorità (1–10) per controllare l'ordine nel log: così il messaggio aggregato risulta più leggibile, soprattutto su modelli con molti campi tracciati.

Combina con diritti di accesso adeguati

Il tracciamento rende più senso se è accompagnato da regole di accesso e permessi adeguati. Tenere una cronologia non è utile se chiunque può modificarla: proteggi il modello prima di affidarti al chatter come meccanismo di audit.

Documenta i campi tracciati

Mantieni un elenco chiaro dei campi con tracciamento attivo, in particolare nei progetti condivisi o multi-sviluppatore. Questo evita confusione durante le review del codice e problemi in fase di upgrade dei moduli.

Testa in staging prima della produzione

Verifica sempre il comportamento del tracciamento in un ambiente di collaudo: alcuni tipi di campo (per esempio i campi calcolati o related) possono comportarsi in modo diverso rispetto ai campi memorizzati.

Errori ricorrenti da evitare


Errori comuni e cause di malfunzionamento

Mancata eredità da mail.thread

Il problema più frequente è dimenticare di ereditare mail.thread. In questo caso l'attributo tracking viene ignorato senza generare errori: nessun messaggio apparirà nel chatter. Controlla sempre la catena di ereditarietà del modello.

Tracciare campi computati non memorizzati

I campi computati possono essere tracciati solo se sono memorizzati (store=True). Un campo calcolato non memorizzato non ha valore persistente nel database, quindi non c'è nulla da confrontare prima e dopo. Tracciare un campo non memorizzato non produce alcun effetto.

Attivare il tracciamento su troppi campi

La tentazione di abilitare il tracciamento ovunque per massima trasparenza porta a un chatter sovraccarico. Essere selettivi aiuta a mantenere la storia significativa e consultabile.

Aspettarsi tracciamento su operazioni che bypassano l'ORM

Il tracciamento viene attivato dall'ORM quando si usa write(). Aggiornamenti diretti via SQL, import massivi che ignorano l'ORM o chiamate a basso livello possono non generare log. Assicurati che le scritture passino dall'ORM quando vuoi mantenere la storia.

Conflitti tra Studio e definizioni Python

Se un campo è stato creato in Studio con tracciamento, fai attenzione quando lo ridefinisci anche in un modulo Python: definizioni conflittuali possono causare comportamenti inaspettati durante aggiornamenti e upgrade.

Domande frequenti


Posso tracciare un campo su qualsiasi modello in Odoo?

Solo i modelli che ereditano da mail.thread supportano il tracciamento. Gran parte dei modelli standard già include questo mixin, mentre i modelli custom devono dichiararlo esplicitamente.

L'abilitazione del tracciamento incide sulle prestazioni?

L'impatto è generalmente contenuto: ogni variazione tracciata crea un record mail.message, aggiungendo un leggero sovraccarico alla scrittura. Per modelli con volumi molto elevati, valuta con attenzione quanti campi tracciare per evitare un numero eccessivo di log.

Posso disabilitare il tracciamento senza perdere la cronologia già salvata?

Sì: disattivando il tracciamento smetti di registrare nuove modifiche, ma i messaggi già creati nel chatter rimangono disponibili. La storia pregressa non viene cancellata.

Il tracciamento funziona sui campi Many2many?

Sì: Odoo supporta il tracciamento per Many2many. Nella conversazione verrà mostrato quali record sono stati aggiunti o rimossi dalla relazione, con un formato diverso rispetto ai campi a valore singolo.

Posso usare il tracciamento senza Odoo Studio?

Assolutamente: tracking è un parametro standard nei campi Python dell'ecosistema Odoo. Puoi abilitarlo in qualsiasi modulo custom senza utilizzare Studio; Studio è solo l'interfaccia visuale che semplifica l'operazione per chi non scrive codice.

Conclusione


Il tracciamento è una di quelle funzionalità che, con poca configurazione, porta grandi benefici: crea una traccia affidabile delle modifiche, riduce le dispute su chi ha fatto cosa e sostiene una governance dei dati più solida.

Sia che tu scelga Studio per una soluzione rapida senza codice, sia che implementi il tracciamento in un modulo Python come parte di un progetto di sviluppo, l'obiettivo è lo stesso: avere visibilità completa sull'evoluzione dei dati aziendali.

La chiave è applicarlo nei punti giusti: concentra gli sforzi sui campi che influenzano decisioni, approvazioni e responsabilità, e otterrai il massimo risultato con uno sforzo minimo.

Da Dasolo supportiamo le aziende nell'implementazione, personalizzazione e ottimizzazione di Odoo per i loro processi. Se hai bisogno di aiuto per progettare il modello dati, abilitare il tracciamento nei workflow o sviluppare moduli su misura, il nostro team può affiancarti.

Contattaci per valutare insieme la tua implementazione Odoo. Contattaci e definiamo insieme l'approccio più adatto al tuo progetto.

Campo Tracking in Odoo: Come Monitorare le Modifiche ai Record Con Sicurezza
Dasolo 6 marzo 2026
Condividi articolo
Accedi per lasciare un commento