codeunitAL Developmentofficial - Microsoftderived - from the source, no model text

Codeunit 423 "Change Log Management"

Base Application · System.Diagnostics

Across versions

  1. BC23present
  2. BC241 events added
  3. BC255 events removed, 1 procedures removed
  4. BC26-30unchanged

Neighbourhood 10 connected objects and pages

Codeunit 36951 "Initialization" (event subscribers, 2 links)InitializationCodeunit 106 "Ledg. Entry-Track Changes" (event subscribers)Ledg. Entry-Track ChangesCodeunit 115 "G/L Entry-Edit" (event subscribers)G/L Entry-EditCodeunit 482 "Update Dim. Set Glbl. Dim. No." (event subscribers)Update Dim. Set Glbl. Dim. No.Codeunit 8390 "Financial Report Auditing" (event subscribers)Financial Report AuditingCodeunit 53 "Translation Helper" (calls, 8 links)Translation HelperCodeunit 49 "GlobalTriggerManagement" (calls, 5 links)GlobalTriggerManagementCodeunit 1367 "Monitor Sensitive Field Data" (calls, 4 links)Monitor Sensitive Field DataCodeunit 8711 "Telemetry" (calls, 4 links)TelemetryTable 405 "Change Log Entry" (calls)Change Log Entry

Open in the neighbourhood explorer

One hop out, from the extracted relations and call graph. Up to 40 shown; the sections below list them all.

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)
  • 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)
  • 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): Boolean
  • IsAlwaysLoggedTable(TableID: Integer): Boolean
  • InsertLogEntry(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): Boolean
  • HasValue(FldRef: FieldRef): Boolean
  • InitChangeLog()
  • 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

Recent changes

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.

Evidence 1 sources