Zum Inhalt springen

Odoo Tracking Field: Änderungen sicher nachverfolgen und protokollieren

Erklären Sie, wie das Attribut „tracking“ in Odoo funktioniert, wann es sinnvoll ist und wie Sie es im Datenmodell einrichten können.
6. März 2026 durch
Odoo Tracking Field: Änderungen sicher nachverfolgen und protokollieren
Dasolo
| Noch keine Kommentare

Wenn Sie sich jemals gefragt haben, wer in Odoo einen Wert geändert hat und zu welchem Zeitpunkt — das Feld-Tracking liefert die Antwort.


Odoo protokolliert Änderungen an ausgewählten Feldern direkt im Chatter der jeweiligen Datensätze. So entsteht eine lückenlose Änderungsübersicht innerhalb der Anwendung, ganz ohne externes Audit-Tool.

Egal, ob Sie Felder per Odoo Studio konfigurieren oder Entwicklercode schreiben: Verstehen, wie Feld-Tracking funktioniert, ist zentral für jede Arbeit am Odoo-Datenmodell. Diese Anleitung erklärt die wichtigsten Punkte kompakt und praxisnah.

Wozu dient das Tracking-Feld in Odoo?


In Odoo ist Tracking kein eigener Feldtyp, sondern eine Eigenschaft, die Sie vorhandenen Feldern hinzufügen — etwa Char-, Many2one-, Selection-, Integer- oder Date-Feldern. Ist Tracking aktiviert, protokolliert Odoo bei jeder Änderung in der Historie die alte und die neue Angabe, Datum und Benutzer.

Im Benutzerinterface erscheint das als Eintrag im Nachrichtenverlauf des Datensatzes. Beispielsweise sieht ein Vertriebsleiter im CRM sofort einen automatisch erzeugten Eintrag wie „Phase geändert: Neu → Qualifiziert“, sobald der Prozessschritt geändert wurde.

Die Tracking-Option steht für die meisten Standardfeldtypen zur Verfügung und lässt sich entweder direkt in Odoo Studio aktivieren oder im Python-Code einer individuellen Odoo-Entwicklung setzen.

Welche Informationen speichert das System?

Jede getrackte Änderung wird als mail.message-Eintrag am betroffenen Dokument abgelegt. Dieser Eintrag enthält mehrere relevante Metadaten:

  • Den Feldnamen bzw. die Feldbeschriftung, die geändert wurde
  • Den vorherigen Wert (vor der Änderung)
  • Den neuen Wert (nach der Änderung)
  • Den Zeitpunkt der Änderung
  • Den Benutzer, der die Änderung ausgeführt hat

Dieses Protokoll ist für alle Personen mit Leserechten auf den Datensatz sichtbar und erfordert keine zusätzliche Einrichtung außer dem Aktivieren des Trackings auf dem Feld.

Wie das Tracking praktisch funktioniert


Damit Tracking funktioniert, muss das Modell das mixin mail.thread verwenden. Dieses liefert die Messaging- und Logging-Infrastruktur für den Chatter. Viele Standardmodelle wie sale.order, crm.lead, account.move oder stock.picking erben bereits davon.

Sobald ein Benutzer einen Datensatz speichert und dabei getrackte Felder geändert wurden, vergleicht Odoo die alten und neuen Werte und schreibt automatisch eine Log-Nachricht in den Chatter — ohne zusätzlichen Schritt seitens des Anwenders.

Technisches Verhalten im Odoo-ORM

Technisch greift der ORM auf Schreiboperationen ab: Bei einem write()-Aufruf erkennt das Framework geänderte Felder, erfasst den vorherigen Wert, schreibt die neue Version und legt anschließend eine mail.message mit der Differenz an.

In Python aktivieren Sie Tracking, indem Sie das Attribut tracking=True bei der Felddefinition setzen.

Beispiel im Code:

Sie können außerdem eine Prioritätszahl von 1 bis 10 verwenden, um die Reihenfolge der Anzeige zu steuern, wenn in einem Save-Vorgang mehrere Felder geändert werden. Kleinere Zahlen werden früher gelistet.

Beispiel mit Prioritäten: partner_id = fields.Many2one('res.partner', tracking=1; priority = fields.Selection(tracking=10)

Auswirkungen auf verknüpfte Datensätze

Änderungslogeinträge werden am Datensatz selbst abgelegt und nicht automatisch auf verknüpfte Modelle übertragen. Wenn Sie Historien auf mehreren Entitäten brauchen, müssen Sie das Tracking gezielt auf jedem relevanten Modell aktivieren.

Das ist Absicht: Odoo bewahrt die Audit-Spur dort, wo die Änderung stattgefunden hat. So findet man die Historie direkt am Objekt, ohne sich durch Beziehungen zu klicken.

Wann sich Tracking im Geschäftsalltag lohnt


Fünf konkrete Einsatzfälle, in denen Tracking echten Mehrwert bringt


1) CRM und Vertriebs-Pipeline

Für Sales-Manager ist wichtig zu sehen, wer wann eine Opportunity in eine andere Phase verschoben hat. Tracking auf dem stage_id-Feld liefert die zeitliche Abfolge aller Statuswechsel und macht Verzögerungen und Engpässe sichtbar.

Damit können Pipeline-Reviews faktenbasiert geführt und Vertriebsmitarbeiter gezielt gecoacht werden — statt sich auf Erinnerungen zu verlassen.


2) Einkaufs- und Rechnungsfreigaben

In Einkauf und Buchhaltung verlangt die Compliance oft eine Nachvollziehbarkeit, wer ein Dokument genehmigt hat. Tracking des state-Feldes auf Bestellungen oder Rechnungen stellt diese Historie sofort im Chatter bereit.

Das ist besonders wichtig für Unternehmen mit internen Kontrollen oder externen Prüfpflichten.


3) Lagerbestand und Logistik

Bei unerwarteten Mengen- oder Standortänderungen helfen getrackte Felder auf Stock-Moves oder Produktdatensätzen Lagerleitern, die Ursache schnell einzugrenzen.

Anstatt umfangreiche Logs zu durchforsten, ist die relevante Information direkt im Chatter des betroffenen Belegs zu finden.


4) Qualität der Kundendaten

Wenn Kundendaten regelmäßig angepasst werden, lohnt es sich, Änderungen an Feldern wie E-Mail, Telefon oder Preisliste am Partner-Record zu verfolgen. Das unterstützt Service-Teams und Datenqualitätsprüfungen.


5) HR und Mitarbeiterakten

Tracking von Positions-, Abteilungs- oder Gehaltsänderungen schafft eine nachvollziehbare Historie in Mitarbeiterakten — ein Pluspunkt für interne Audits und Compliance im Personalwesen.


So legen Sie ein Tracking-Feld an oder passen es an


Zwei Wege, Tracking zu aktivieren: No-Code via Odoo Studio oder technisch per Python-Modul.

Tracking per Odoo Studio

Mit Odoo Studio schalten Administratoren Tracking ohne Code ein: Studio öffnen, Feld im Formular anklicken und die Option "Änderungen verfolgen" aktivieren.

Ab diesem Moment erscheinen alle künftigen Änderungen dieses Feldes im Chatter — ideal für Power-User und Admins, die Anpassungen selbst steuern möchten, ohne Entwickler einzubinden.

Auch beim Anlegen neuer Felder in Studio können Sie das Tracking sofort beim Erstellen einschalten.

Tracking per Python in einem Custom-Modul

Entwickler ergänzen das tracking-Attribut direkt in der Felddefinition innerhalb des Modells — das ist die Standardvorgehensweise bei technischen Erweiterungen.

Wichtig: Das Modell muss mail.thread erben, damit Tracking wirkt. Ein kurzes Minimalbeispiel zeigt die Struktur.

Beispielstruktur im Modul: from odoo import models, fields ... class ProjectTask(models.Model): _name = 'project.task' _inherit = ['project.task', 'mail.thread'] x_client_priority = fields.Selection([...], string='Client Priority', tracking=True)

Dieses Muster ist typisch, wenn bestehende Modelle erweitert werden. Das Feld verhält sich wie jedes andere, zusätzlich zeichnet Odoo nun jede Wertänderung automatisch auf.

Wichtiger Hinweis zu komplett neuen Modellen

Bei neu erstellten Modellen unbedingt _inherit = ['mail.thread','mail.activity.mixin'] angeben. Ohne diese Mixin-Erweiterung wird das tracking-Attribut stillschweigend ignoriert und es erscheinen keine Einträge im Chatter.

Viele Entwickler stolpern hier — das Mix-in ist keine Option, wenn Sie Änderungsprotokolle erwarten.

Empfohlene Vorgehensweisen


Tracking ist einfach einzurichten, aber man kann es auch leicht falsch einsetzen. Diese Hinweise helfen, den Nutzen zu maximieren.

Nur relevante Felder tracken

Wenn Sie Tracking überall aktivieren, entsteht schnell Lärm im Chatter. Konzentrieren Sie sich auf wirklich auditrelevante Felder: Stati, Zuständigkeiten, Schlüsseldaten und finanzielle Werte.

Prioritäten für bessere Lesbarkeit nutzen

Bei vielen getrackten Feldern steigert die Vergabe von Prioritätszahlen (1–10) die Verständlichkeit der zusammengefassten Logeinträge — so sehen Leser zuerst die wichtigsten Änderungen.

Mit Zugriffsrechten kombinieren

Tracking ist nur dann sinnvoll, wenn die Rechtevergabe passt. Ist die Historie für alle manipulativ veränderbar, verliert das Audit an Aussagekraft. Stellen Sie aussagekräftige Zugriffsregeln sicher, bevor Sie sich auf den Chatter als Nachweis verlassen.

Dokumentation der getrackten Felder

Führen Sie ein Inventar der getrackten Felder, besonders in Teams mit mehreren Entwicklern. Das verhindert Überraschungen bei Code-Reviews oder nach Modul-Updates.

Vor dem Livegang testen

Prüfen Sie das Verhalten in einer Staging-Umgebung. Insbesondere berechnete (computed) oder verwandte (related) Felder können sich anders verhalten, wenn sie getrackt werden.

Typische Fehlerquellen und wie man sie vermeidet


Häufige Fehler beim Einsatz von Tracking

Vergessen, von mail.thread zu erben

Das ist der häufigste Fehler: Ohne mail.thread wirkt Tracking nicht — es gibt keinen Fehler, aber auch keine Logeinträge. Prüfen Sie daher immer die Vererbungskette Ihres Modells.

Versuch, nicht-gespeicherte computed-Felder zu tracken

Computed-Felder funktionieren nur mit store=True für Tracking. Nicht-gespeicherte Computed-Felder haben keinen persistierten Wert, den man vergleichen könnte, daher bleibt Tracking wirkungslos.

Zu viele Felder tracken

Reizüberflutung durch zu viele Logeinträge macht die Chatter-Historie unbrauchbar. Seien Sie selektiv und tracken Sie nur das, was operativ oder auditseitig wirklich zählt.

Tracking bei direkten DB- oder Bulk-Operationen erwarten

Tracking wird vom ORM über write() ausgelöst. Direkte SQL-Updates, Importe oder Low-Level-Operationen, die den ORM umgehen, erzeugen keine Tracking-Einträge. Achten Sie bei Batchprozessen darauf, den ORM zu nutzen.

Konflikte zwischen Studio- und Python-Definitionen

Wenn ein Feld in Studio angelegt wurde und Sie es später im Code modifizieren, können widersprüchliche Definitionen zu Problemen bei Upgrades oder Migrationen führen. Koordinieren Sie Änderungen zwischen No-Code- und Entwickler-Ansätzen.

Häufige Fragen (FAQ)


Kann ich ein Feld in jedem Modell tracken?

Nur Modelle, die mail.thread erben, unterstützen Feld-Tracking. Viele Standardmodelle tun das bereits; bei eigenen Modellen müssen Sie die Mixin-Vererbung selbst hinzufügen.

Hat Tracking spürbare Performance-Auswirkungen?

Der Overhead ist in der Regel gering: Jede Änderung legt eine mail.message an. Bei sehr transaktionsintensiven Modellen sollten Sie aber sorgfältig auswählen, welche Felder getrackt werden, um eine Flut von Log-Einträgen zu vermeiden.

Kann ich Tracking deaktivieren, ohne die bestehende Historie zu verlieren?

Ja. Das Abschalten stoppt neue Protokolleinträge, bereits vorhandene Nachrichten im Chatter bleiben erhalten und werden nicht gelöscht.

Funktioniert Tracking bei Many2many-Feldern?

Ja. Many2many-Änderungen werden angezeigt — allerdings wird dargestellt, welche Datensätze hinzugefügt oder entfernt wurden, statt eines einfachen Vorher-Nachher-Wertes wie bei skalaren Feldern.

Brauche ich Odoo Studio für Tracking?

Nein. tracking ist ein standardmäßiges Python-Attribut in Odoo und kann in jedem Modul ohne Studio aktiviert werden. Studio bietet lediglich eine bequeme No-Code-Oberfläche für dasselbe Feature.

Fazit


Richtig eingesetzt ist das Tracking eine kleine, aber mächtige Funktion: Es schafft Nachvollziehbarkeit, reduziert Streitfragen über Zuständigkeiten und bildet die Grundlage für bessere Datenverwaltung in Ihrem Unternehmen.

Ob Sie Tracking schnell per Studio aktivieren oder es sauber in einem Custom-Modul implementieren — das Ergebnis ist dasselbe: Sie gewinnen Transparenz darüber, wie sich Ihre Geschäftsdaten über die Zeit ändern.

Wichtig ist, es gezielt einzusetzen: Tracken Sie die Felder, die Entscheidungen, Freigaben und Verantwortlichkeiten steuern, dann erzielen Sie das beste Kosten-Nutzen-Verhältnis.

Bei Dasolo unterstützen wir Unternehmen dabei, Odoo an ihre Prozesse anzupassen: von Datenmodell-Design über gezieltes Field-Tracking bis hin zu kompletten Modulentwicklungen.

Sprechen Sie uns gerne an, wenn Sie Hilfe bei Ihrer Odoo-Implementierung brauchen. Kontaktieren Sie uns und gemeinsam finden wir die passende Lösung für Ihr Projekt.

Odoo Tracking Field: Änderungen sicher nachverfolgen und protokollieren
Dasolo 6. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen