Codeunit 423 "Change Log Management"
Base Application · System.Diagnostics
Across versions
- BC23present
- BC241 events added
- BC255 events removed, 1 procedures removed
- BC26-30unchanged
Neighbourhood 10 connected objects and pages
Base Application · System.Diagnostics · BC23-30 · source at ea08af5e · facts from BC29
Properties
| Property | Value |
|---|---|
| SingleInstance | true |
| Permissions | TableData “Change Log Setup” = r, TableData “Change Log Setup (Table)” = r, TableData “Change Log Setup (Field)” = r, TableData “Change Log Entry” = ri, TableData “Field Monitoring Setup” = r |
Events published
OnAfterLogInsertion(var RecRef: RecordRef)(integration)OnAfterLogModification(var RecRef: RecordRef)(integration)OnAfterLogDeletion(var RecRef: RecordRef)(integration)OnInsertLogEntryOnBeforeChangeLogEntryValidateChangedRecordSystemId(var ChangeLogEntry: Record "Change Log Entry"; RecRef: RecordRef; FldRef: FieldRef)(integration)- subscribers: Codeunit 36951 “Initialization” OnInsertLogEntryOnBeforeChangeLogEntryValidateChangedRecordSystemId
OnBeforeLogDeletion(var RecRef: RecordRef)(integration)OnBeforeLogInsertion(var RecRef: RecordRef)(integration)OnBeforeLogModification(var RecRef: RecordRef)(integration)OnBeforeLogRename(var RecRef: RecordRef; var xRecRefParam: RecordRef)(integration)OnAfterIsAlwaysLoggedTable(TableID: Integer; var AlwaysLogTable: Boolean)(integration)- subscribers: Codeunit 106 “Ledg. Entry-Track Changes” OnAfterIsAlwaysLoggedTable, Codeunit 115 “G/L Entry-Edit” OnAfterIsAlwaysLoggedTable, Codeunit 36951 “Initialization” OnAfterIsAlwaysLoggedTable, Codeunit 482 “Update Dim. Set Glbl. Dim. No.” OnAfterIsAlwaysLoggedTableHandler, Codeunit 8390 “Financial Report Auditing” OnAfterIsAlwaysLoggedTable
OnLogModificationOnAfterCheckSecurityFiltering(var xRecRef: RecordRef)+ BC24 (integration)OnLogModificationOnBeforeCheckSecurityFiltering(var xRecRef: RecordRef)(integration)OnLogModificationOnBeforeRecRefLoopStart(var RecRef: RecordRef; var xRecRef: RecordRef)(integration)OnInsertLogEntryOnBeforeInitChangeLogEntry(var ChangeLogEntry: Record "Change Log Entry")(integration)
Event subscriptions
- OnBeforeInsertChangeLogSetup subscribes to Table “Change Log Setup (Table)” OnBeforeInsertEvent
- OnBeforeRenameChangeLogSetup subscribes to Table “Change Log Setup (Table)” OnBeforeRenameEvent
- OnAfterRenameChangeLogSetupField subscribes to Table “Change Log Setup (Field)” OnAfterRenameEvent
- OnAfterModifyChangeLogSetupField subscribes to Table “Change Log Setup (Field)” OnAfterModifyEvent
- OnAfterInsertChangeLogSetupField subscribes to Table “Change Log Setup (Field)” OnAfterInsertEvent
- OnAfterDeleteChangeLogSetupField subscribes to Table “Change Log Setup (Field)” OnAfterDeleteEvent
Procedures
GetDatabaseTableTriggerSetup(TableID: Integer; var LogInsert: Boolean; var LogModify: Boolean; var LogDelete: Boolean; var LogRename: Boolean)IsLogActive(TableNumber: Integer; FieldNumber: Integer; TypeOfChange: Option Insertion,Modification,Deletion): BooleanIsAlwaysLoggedTable(TableID: Integer): BooleanInsertLogEntry(var FldRef: FieldRef; var xFldRef: FieldRef; var RecRef: RecordRef; TypeOfChange: Enum "Change Log Entry Type"; IsReadable: Boolean)LogInsertion(var RecRef: RecordRef)LogModification(var RecRef: RecordRef)LogRename(var RecRef: RecordRef; var xRecRefParam: RecordRef)LogDeletion(var RecRef: RecordRef)IsNormalField(FieldRef: FieldRef): BooleanHasValue(FldRef: FieldRef): BooleanInitChangeLog()EvaluateTextToFieldRef(InputText: Text; var FieldRef: FieldRef): Boolean
Plus 2 local procedures.
Triggers
OnRun
Calls
From the extracted call graph of BC29 (graphify-al on the snapshot checkout): calls whose target is known from a declared type or an Object::"Name" argument. Interface dispatch and calls through events are not counted, so the list is not complete.
- Codeunit 53 “Translation Helper” (8 calls:
OnAfterDeleteChangeLogSetupField → RestoreGlobalLanguage,OnAfterDeleteChangeLogSetupField → SetGlobalLanguageToDefault,OnAfterInsertChangeLogSetupField → RestoreGlobalLanguage, …) - Codeunit 1367 “Monitor Sensitive Field Data” (4 calls:
GetDatabaseTableTriggerSetup → CheckIfTableIsMonitored,InsertLogEntry → HandleMonitorSensitiveFields,InsertLogEntry → IsIgnoredMonitorField, …) - Codeunit 8711 “Telemetry” (4 calls:
OnAfterDeleteChangeLogSetupField → LogMessage,OnAfterInsertChangeLogSetupField → LogMessage,OnAfterModifyChangeLogSetupField → LogMessage, …)
Called by
- Codeunit 49 “GlobalTriggerManagement” (5 calls:
GetDatabaseTableTriggerSetup → GetDatabaseTableTriggerSetup,OnDatabaseDelete → LogDeletion,OnDatabaseInsert → LogInsertion, …) - Table 405 “Change Log Entry” (1 call:
GetLocalValue → EvaluateTextToFieldRef)
Recent changes
- 2026-09-08 #10927 [Change Log] Preserve SystemId for unloaded record modifications (main, BC30, fix)
Ask your agent
Procedure bodies are not stored here (D10). The call sections above are our own, per object, from the BC29 call graph. For a procedure body or the calls of one procedure, ask bc-code-atlas (external, by Stefan Maron, MIT; default corpus w1-28), which the bc-observatory plugin connects: bcatlas_resolve_node(object_type: "codeunit", object_name: "Change Log Management"), then bcatlas_get_procedure_body or bcatlas_get_neighbors on the returned id.