Har du nogensinde ønsket at vide, hvem der ændrede en værdi på en Odoo-post — og hvornår? Feltsporing er værktøjet, der automatisk svarer på det spørgsmål.
I Odoo kan du få systemet til automatisk at registrere ændringer på udvalgte felter og gemme hver ændring som en besked i postens chatter. Det betyder, at teams får et indbygget revisionsspor over dataens udvikling uden at skulle bygge et separat audit-system.
Uanset om du arbejder via Odoo Studio eller udvikler i Python, er forståelse af feltsporing afgørende for at få styr på datamodellen. Denne guide giver dig grundlæggende viden og praktiske pointer, så du kan konfigurere og bruge sporing korrekt.
Hvad er feltsporing i Odoo
Sporing er ikke en særlig felttype — det er en egenskab, du slår til på eksisterende felter som Char, Many2one, Selection, Integer eller Date. Når sporing er aktiveret, gemmer Odoo automatisk ændringerne i chatteren med både gammel og ny værdi plus tidspunkt og hvem der foretog ændringen.
I brugerfladen vises det som en logbesked i postens meddelelsestråd. For eksempel kan du på en salgschance se en automatisk besked som: »Status ændret fra Ny til Kvalificeret«, den registreres øjeblikkeligt når en sælger skifter fase.
Egenskaben kan aktiveres på de fleste standardfelttyper, enten via Odoo Studio for no-code-tilpasning eller ved at angive den i Python, når du laver en teknisk udvidelse.
Hvilke data gemmes
Hver ændring oprettes som en mail.message-post, der er knyttet til dokumentet. Meddelelsen indeholder typisk:
- Navnet eller etiketten på det felt, der blev ændret
- Den tidligere værdi (før ændringen)
- Den nye værdi (efter ændringen)
- Tidspunktet for ændringen
- Brugeren, der udførte ændringen
Dette revisionsspor er synligt for alle med læserettighed til posten. Du behøver ikke yderligere opsætning udover at aktivere sporing på det pågældende felt.
Hvordan feltet fungerer
Sporing kræver, at modellen arver mail.thread-mixinen. Den leverer den messaging- og logningsinfrastruktur, chatteren bygger på. Mange Odoo-standardmodeller som sale.order, crm.lead, account.move og stock.picking har allerede denne arv.
Når en bruger gemmer en post med sporede felter, sammenligner Odoo automatisk gamle og nye værdier og poster en log i chatteren — brugeren skal ikke gøre noget ekstra.
Hvordan ORM'en håndterer det teknisk
Rent teknisk fanger Odoo ORM skriverier på modelniveau. Når write()-opkaldet ændrer et sporet felt, henter systemet den gamle værdi, foretager ændringen og opretter en mail.message med forskellen.
I Python aktiveres sporing ved at sætte tracking=True på feltdefinitionen i modelklassen, når du definerer felter.
Eksempel i kode (konceptuelt): state = fields.Selection([('draft', 'Draft'), ('confirmed', 'Confirmed')], tracking=True)
Du kan også angive en prioritet fra 1–10 for at styre rækkefølgen af feltnavne i logen, når flere ændringer gemmes på samme tid. Lavere tal vises først.
Eksempel med prioritet: partner_id = fields.Many2one('res.partner', tracking=1) priority = fields.Selection(tracking=10)
Sporing og relaterede poster
Hver log gemmes på den post, hvor feltet hører til — ændringerne propagere ikke automatisk til beslægtede modeller. Skal du have historik andre steder, skal du aktivere sporing på de relevante modeller også.
Det er bevidst designet sådan: revisionssporet følger objektet, så historikken er nem at gennemgå uden at skulle krydse mange relaterede poster.
Erhvervsmæssige anvendelsestilfælde
Fem praktiske eksempler hvor feltsporing gør en forskel i hverdagen
1. CRM og pipeline-styring
Salgsteams har brug for at se, hvornår en lead skifter fase, og hvem der foretog ændringen. Ved at spore stage_id i CRM får man en fuld tidslinje over alle fase-skift.
Det gør det lettere at finde flaskehalse i salgstragten, planlægge pipeline-gennemgange og vejlede sælgere ud fra dokumenteret adfærd fremfor hukommelse.
2. Indkøb og godkendelsesflows for fakturaer
I regnskab og indkøb er det ofte påkrævet at kunne dokumentere, hvem godkendte en ordre eller faktura og hvornår. At spore state på indkøbsordrer og leverandørfakturaer gør denne dokumentation umiddelbart tilgængelig i chatteren.
Det er særligt værdifuldt i virksomheder med finansielle kontroller eller krav til intern revision.
3. Lagerstyring
Når beholdninger eller lokationer ændrer sig uventet, hjælper sporing på stock moves eller produktfelter lageransvarlige med hurtigt at finde årsagen til afvigelser.
I stedet for at lede i eksterne logs eller spørge rundt, ligger svaret direkte i den relevante post´s historie.
4. Kvalitet i kundedata
Hvis dit team jævnligt opdaterer kundeoplysninger, kan du spore felter som email, phone eller pricelist_id på partneren. Det giver en tydelig historik over ændringer, nyttigt for kundeservice og datakontrol.
5. HR og medarbejderregistre
Ved at spore ændringer i stilling, afdeling eller løntrin får HR et klart revisionsspor over personaleændringer — vigtigt for compliance og interne kontroller.
Oprette eller tilpasse sporingsfeltet
To veje til at slå sporing til: no-code via Studio eller fuld kontrol via Python i et modul.
Brug Odoo Studio
I Studio er det simpelt: åbn modellen i Studio, klik på feltet og slå 'Track Changes' til i feltindstillingerne. Det er ideelt til administratorer og superbrugere, der hurtigt vil tilføje sporing uden udviklere.
Når du aktiverer det i Studio, vil fremtidige ændringer automatisk dukke op i chatteren. Det er hurtig, sikker tilpasning til brug på standardinstallationer.
Du kan også aktivere sporing når du opretter et nyt felt i Studio — valget ligger i samme oprettelsesvindue.
Brug Python i et tilpasset modul
Udviklere tilføjer tracking direkte i feltdefinitionen i modelklassen. Det er standardpraksis i alle tekniske Odoo-udvidelser og giver fuld kontrol ift. versionering og deployment.
Husk, at modellen også skal arve mail.thread for at sporing virker — ellers ignoreres tracking-flaget.
Eksempel på en minimal modeludvidelse (konceptuelt): 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)
Mønsteret er typisk, når du udvider en eksisterende model i en udviklingsopgave: feltet fungerer som enhver anden databasekolonne, men ændringer logges automatisk.
Vigtigt om helt nye custom-modeller
Når du opretter nye modeller fra bunden, sørg for at inkludere _inherit = ['mail.thread', 'mail.activity.mixin'] i klassedefinitionen. Uden det bliver tracking-flaget effektivt ignoreret.
Det er en klassisk fejl mange nye udviklere støder på — mixinen er ikke valgfri hvis du ønsker chatter-logging.
Bedste fremgangsmåder
Gode praksisser så sporing forbliver nyttig i stedet for støj
Spor kun felter, der betyder noget
At slå sporing til overalt skaber hurtigt støj. Fokusér på de felter, der rent faktisk skal kunne revideres: status, ansvarlig, vigtige datoer og økonomiske værdier.
Brug prioritetstal for overskuelighed
Når flere felter logges samtidigt, hjælper prioritet (1–10) med at gruppere og bestemme rækkefølgen i meddelelsen. Det øger læsbarheden i chatteren, især på komplekse modeller.
Kombinér med adgangskontrol
Sporing giver mest værdi sammen med korrekte rettigheder. Hvis alle kan ændre poster uden kontrol, mister revisionssporet sin værdi. Tjek brugerroller og post-regler før du stoler på chatteren som audit.
Dokumentér hvilke felter der spores
Hold en oversigt over hvilke felter der har sporing, især i projekter med flere udviklere. Det forhindrer forvirring, dobbeltkonfiguration og problemer ved opgraderinger.
Test i staging inden produktion
Prøv altid sporing i et testmiljø før go-live. Computede felter og relaterede felter kan opføre sig anderledes, og det er bedst at opdage det tidligt.
Almindelige faldgruber
Hyppige fejl udviklere og brugere begår med feltsporing
Glemme at arve mail.thread
Det mest almindelige problem er manglende arv fra mail.thread. Hvis modellen ikke arver den, ignoreres tracking uden fejlmeddelelse. Tjek altid model-arv ved fejl.
Forsøge at spore ikkestorede beregnede felter
Beregnefelter kan kun spores hvis de er gemt (store=True). Uden gemning findes der ingen vedvarende værdi at sammenligne, så sporing virker ikke på ikke-gemte compute-felter.
Aktivere sporing på for mange felter
Det er forståeligt at ville gennemsigtighed, men over-sporing gør chatteren ubrugelig. Vælg felter med konkret revisions- eller driftsmæssig betydning.
Forvente sporing ved direkte SQL eller udenom-ORM-opdateringer
Sporing sker via ORM'ens write(). Direkte SQL-opdateringer, importskridt eller lavniveaukald, der går udenom ORM, udløser ikke sporing. Sørg for at ændringer går gennem Odoos write-metoder, hvis du vil have dem logget.
Konflikter mellem Studio og Python-definitioner
Hvis et felt oprindeligt er oprettet i Studio med sporing, skal du være forsigtig når du ændrer det i Python. Modstridende definitioner kan give uventet adfærd ved opdateringer eller module-opgraderinger.
Ofte stillede spørgsmål
Kan jeg spore et felt på enhver model i Odoo?
Kun modeller, der arver mail.thread, understøtter feltsporing. De fleste standardforretningsmodeller har det, men custom-modeller skal erklære det eksplicit.
Vil sporing påvirke ydeevnen?
I langt de fleste tilfælde er påvirkningen minimal: hver ændring opretter en mail.message, hvilket giver et lille overhead. På meget højt volumen-transaktionelle modeller bør du dog være selektiv med hvilke felter du sporer for at undgå et stort antal logposter.
Kan jeg slå sporing fra uden at miste eksisterende historik?
Ja — de eksisterende chatbeskeder forbliver i systemet. At slå sporing fra stopper kun fremtidige logposter, historikken bevares.
Virker sporing på Many2many-felter?
Ja. For Many2many viser chatteren hvilke poster der er blevet tilføjet eller fjernet fra relationen fremfor et før/efter-tekstfelt. Formatet er anderledes, men funktionen er understøttet.
Kan jeg bruge sporing uden Odoo Studio?
Absolut. tracking-parameteren er en almindelig Python-feltegenskab i Odoo. Du kan aktivere den i et hvilket som helst custom modul uden Studio; Studio er blot en visuel no-code-grænseflade til samme funktionalitet.
Konklusion
Feltsporing er en af de simple Odoo-funktioner, der i det daglige giver meget værdi med begrænset indsats. Rigtigt brugt skaber det et troværdigt revisionsspor, mindsker tvister om ændringer og styrker datastyring i organisationen.
Om du slår det til hurtigt i Studio eller bygger det ind i et modul via Python, er resultatet det samme: synlighed over, hvordan jeres forretningsdata ændrer sig over tid.
Nøglen er at vælge de rigtige felter — dem, der understøtter beslutninger, godkendelser og ansvar i jeres processer — så får I mest gevinst for mindst arbejde.
Hos Dasolo hjælper vi virksomheder med at implementere, tilpasse og optimere Odoo, så systemet passer til deres arbejdsgange. Vi kan rådgive om datamodellering, slå feltsporing til på tværs af workflows eller udvikle skræddersyede moduler efter behov.
Kontakt os gerne for en snak om jeres Odoo-setup og mulighederne for at forbedre sporbarhed og governance. Kontakt os — så finder vi sammen den bedste løsning til dit projekt.