---
id: object/codeunit/6520
type: object
title: Codeunit 6520 "Item Tracing Mgt."
summary: Codeunit 6520 "Item Tracing Mgt." in Base Application (Microsoft.Inventory.Tracking). 17 public procedures, 29 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: "28"
  deprecated: null
review:
  state: derived
  by: null
  at: null
  flags: []
generated:
  at: "2026-10-11T00:31:51.816Z"
  pipeline: 0.2.0
  prompts: {}
  input_hash: 8b93a162f74aeabb5259e67350894d68cbb9e5559296f17c326de80fe12d5d12
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/ItemTracingMgt.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/Tracking/ItemTracingMgt.Codeunit.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: codeunit
object_id: 6520
name: Item Tracing Mgt.
namespace: Microsoft.Inventory.Tracking
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "24"
  - "25"
  - "26"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 57
  events: 29
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 8
  calls: 11
  called_by: 2
  implements: 0
---

# Codeunit 6520 "Item Tracing Mgt."

> Codeunit 6520 "Item Tracing Mgt." in Base Application (Microsoft.Inventory.Tracking). 17 public procedures, 29 events. Present since at least BC23, still in BC30, changed in BC24-26, BC28.

Base Application · Microsoft.Inventory.Tracking · BC23-30 · [source at ea08af5e](https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/ItemTracingMgt.Codeunit.al) · facts from BC29

## Events published

- `OnAfterInitItemTracingHistoryBuffer(var ItemTracingHistoryBuffer: Record "Item Tracing History Buffer"; var ExtFilterExists: Boolean)` (integration)
- `OnAfterInitSearchParam(var ItemTracingBuffer: Record "Item Tracing Buffer"; var ItemTracingBuffer2: Record "Item Tracing Buffer")` (integration)
- `OnAfterInitSearchCriteria(SerialNoFilter: Text; LotNoFilter: Text; PackageNoFilter: Text; ItemNoFilter: Text; var SearchCriteria: Option)` (integration)
- `OnAfterTransferData(var ItemLedgerEntry: Record "Item Ledger Entry"; var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; ValueEntry: Record "Value Entry")` (integration)
- `OnBeforeExitLevel(TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeFindComponents(var ItemLedgEntry2: Record "Item Ledger Entry"; var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; Direction: Option Forward,Backward; ShowComponents: Option No,"Item-tracked only",All; ParentID: Integer; var CurrentLevel: Integer; var TempLineNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeInsertRecord(var ItemTracingBuffer: Record "Item Tracing Buffer"; ParentID: Integer; var Result: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeIsSpecificTracking(ItemNo: Code[20]; ItemTrackingSetup: Record "Item Tracking Setup"; var IsSpecific: Boolean; var IsHandled: Boolean)` (integration)
- `OnBeforeItemTracingHistoryBufferInsert(var ItemTracingHistoryBuffer: Record "Item Tracing History Buffer")` (integration)
- `OnBeforeNextLevel(var TempTrackEntry: Record "Item Tracing Buffer" temporary; var TempTrackEntry2: Record "Item Tracing Buffer" temporary; Direction: Option Forward,Backward; ShowComponents: Option No,"Item-tracked only",All; ParentID: Integer; var CurrentLevel: Integer; var TempLineNo: Integer; var IsHandled: Boolean)` (integration)
- `OnBeforeShowDocument(RecRef: RecordRef; var IsHandled: Boolean)` (integration)
- `OnBeforeSetRecordID(var TrackingEntry: Record "Item Tracing Buffer"; var IsHandled: Boolean)` (integration)
- `OnBeforeUpdateHistory(var TempItemTracingHistoryBuffer: Record "Item Tracing History Buffer" temporary; var CurrentHistoryEntryNo: Integer; SerialNoFilter: Text; LotNoFilter: Text; PackageNoFilter: Text; ItemNoFilter: Text; VariantFilter: Text; TraceMethod: Option; ShowComponents: Option; var OK: Boolean; var IsHandled: Boolean)` (integration)
- `OnFindComponentsOnAfterSetFilters(var ItemLedgerEntry: Record "Item Ledger Entry"; var ItemLedgerEntry2: Record "Item Ledger Entry")` (integration)
- `OnFindComponentsOnAfterTransferData(var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; var ItemLedgerEntry2: Record "Item Ledger Entry"; ItemLedgerEntry: Record "Item Ledger Entry")` (integration)
- `OnFirstLevelOnAfterSetLedgerEntryFilters(var ItemLedgerEntry: Record "Item Ledger Entry"; var SerialNoFilter: Text; var LotNoFilter: Text; var ItemNoFilter: Text)` (integration)
- `OnFirstLevelOnAfterItemLedgEntrySetCurrentKey(var ItemLedgerEntry: Record "Item Ledger Entry")` (integration)
- `OnFirstLevelOnAfterTempItemTracingBufferSetCurrentKey(var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary)` (integration)
- `OnFirstLevelOnAfterTransferData(var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary)` (integration)
- `OnFirstLevelOnBeforeInsertFirstLevelEntry(var ItemTracingBuffer: Record "Item Tracing Buffer"; ItemLedgerEntry: Record "Item Ledger Entry")` (integration)
- `OnFirstLevelOnBeforeTransferData(var ItemLedgerEntry: Record "Item Ledger Entry"; var ItemLedgerEntry2: Record "Item Ledger Entry")` (integration)
- `OnInsertRecordOnBeforeSetDescription(var TempTrackEntry: Record "Item Tracing Buffer"; var RecRef: RecordRef; var Description2: Text[100])` (integration)
  - subscribers: [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnInsertRecordOnBeforeSetDescription, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnInsertRecordOnBeforeSetDescription
- `OnNextLevelOnAfterTransferData(var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; var TempItemTracingBuffer2: Record "Item Tracing Buffer" temporary)` (integration)
- `OnRetrieveHistoryDataOnAfterTraceHistoryLine(var TempItemTracingHistoryBuffer: Record "Item Tracing History Buffer" temporary)` (integration)
- `OnSetRecordIDOnProcessServiceDocument(ItemLedgEntry: Record "Item Ledger Entry"; var TrackingEntry: Record "Item Tracing Buffer")` (integration)
  - subscribers: [Codeunit 6481 "Serv. Item Tracing Mgt."](../codeunit/6481.md) OnSetRecordIDOnProcessServiceDocument
- `OnBeforeInitSearchCriteria(var SearchCriteria: Option "None",Lot,Serial,Both,Item,Package; SerialNoFilter: Text; LotNoFilter: Text; PackageNoFilter: Text; ItemNoFilter: Text; var IsHandled: Boolean)` (integration)
- `OnShowDocument(RecRef: RecordRef; RecID: RecordId)` (integration)
  - subscribers: [Codeunit 6481 "Serv. Item Tracing Mgt."](../codeunit/6481.md) OnShowDocument, [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnShowDocument, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnShowDocument
- `OnFindRecordsOnBeforeInitTempTable(var ItemTracingBuffer: Record "Item Tracing Buffer"; Direction: Option; ShowComponents: Option)` (integration)
- `OnAfterSetRecordID(var TrackingEntry: Record "Item Tracing Buffer"; RecRef: RecordRef)` (integration)
  - subscribers: [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnAfterSetRecordID, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnAfterSetRecordID

## Procedures

- `FindRecords(var TempTrackEntry: Record "Item Tracing Buffer"; var TempTrackEntry2: Record "Item Tracing Buffer"; SerialNoFilter: Text; LotNoFilter: Text; PackageNoFilter: Text; ItemNoFilter: Text; VariantFilter: Text; Direction: Option Forward,Backward; ShowComponents: Option No,"Item-tracked only",All)`
- `NextLevel(var TempTrackEntry: Record "Item Tracing Buffer"; TempTrackEntry2: Record "Item Tracing Buffer"; Direction: Option Forward,Backward; ShowComponents: Option No,"Item-tracked only",All; ParentID: Integer)`
- `FindComponents(var ItemLedgEntry2: Record "Item Ledger Entry"; var TempItemTracingBuffer: Record "Item Tracing Buffer" temporary; Direction: Option Forward,Backward; ShowComponents: Option No,"Item-tracked only",All; ParentID: Integer)`
- `InsertRecord(var TempTrackEntry: Record "Item Tracing Buffer"; ParentID: Integer): Boolean`
- `InitTempTable(var TempTrackEntry: Record "Item Tracing Buffer"; var TempTrackEntry2: Record "Item Tracing Buffer")`
- `ExpandAll(var TempTrackEntry: Record "Item Tracing Buffer"; var TempTrackEntry2: Record "Item Tracing Buffer")`
- `TransferData(var ItemLedgEntry: Record "Item Ledger Entry"; var TempTrackEntry: Record "Item Tracing Buffer")`
- `InitSearchCriteria(SerialNoFilter: Text; LotNoFilter: Text; PackageNoFilter: Text; ItemNoFilter: Text)`
- `InitSearchParm(var ItemTracingBuffer: Record "Item Tracing Buffer"; var SerialNoFilter: Text; var LotNoFilter: Text; var PackageNoFilter: Text; var ItemNoFilter: Text; var VariantFilter: Text)`
- `SetRecordID(var TrackingEntry: Record "Item Tracing Buffer")`
- `ShowDocument(RecID: RecordID)`
- `SetExpansionStatus(Rec: Record "Item Tracing Buffer"; var TempTrackEntry: Record "Item Tracing Buffer"; var TempTrackEntry2: Record "Item Tracing Buffer"; var ActualExpansionStatus: Option "Has Children",Expanded,"No Children")`
- `IsSpecificTracking(ItemNo: Code[20]; ItemTrackingSetup: Record "Item Tracking Setup"): Boolean`
- `RecallHistory(Steps: Integer; var TempTrackEntry: Record "Item Tracing Buffer"; var TempTrackEntry2: Record "Item Tracing Buffer"; var SerialNoFilter: Text; var LotNoFilter: Text; var PackageNoFilter: Text; var ItemNoFilter: Text; var VariantFilter: Text; var TraceMethod: Option "Origin->Usage","Usage->Origin"; var ShowComponents: Option No,"Item-tracked only",All): Boolean`
- `GetHistoryStatus(var PreviousExists: Boolean; var NextExists: Boolean)`
- `SetVariables(NewTempLineNo: Integer; NewCurrentLevel: Integer)`
- `GetVariables(var NewTempLineNo: Integer; var NewCurrentLevel: Integer)`

Plus 11 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.

- [Page 130 "Posted Sales Shipment"](../page/130.md) (1 call: `ShowDocument → (object)`)
- [Page 132 "Posted Sales Invoice"](../page/132.md) (1 call: `ShowDocument → (object)`)
- [Page 134 "Posted Sales Credit Memo"](../page/134.md) (1 call: `ShowDocument → (object)`)
- [Page 136 "Posted Purchase Receipt"](../page/136.md) (1 call: `ShowDocument → (object)`)
- [Page 138 "Posted Purchase Invoice"](../page/138.md) (1 call: `ShowDocument → (object)`)
- [Page 140 "Posted Purchase Credit Memo"](../page/140.md) (1 call: `ShowDocument → (object)`)
- [Page 38 "Item Ledger Entries"](../page/38.md) (1 call: `ShowDocument → (object)`)
- [Page 5743 "Posted Transfer Shipment"](../page/5743.md) (1 call: `ShowDocument → (object)`)
- [Page 5745 "Posted Transfer Receipt"](../page/5745.md) (1 call: `ShowDocument → (object)`)
- [Page 6650 "Posted Return Shipment"](../page/6650.md) (1 call: `ShowDocument → (object)`)
- [Page 6660 "Posted Return Receipt"](../page/6660.md) (1 call: `ShowDocument → (object)`)

## Called by

- [Page 6520 "Item Tracing"](../page/6520.md) (8 calls: `FindRecords → ExpandAll`, `FindRecords → FindRecords`, `FindRecords → GetHistoryStatus`, …)
- [Codeunit 6500 "Item Tracking Management"](../codeunit/6500.md) (1 call: `ExistingExpirationDate → IsSpecificTracking`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-26, BC28

Source: AL metadata extracted from the code (names, ids, signatures, properties); no code bodies (D10).

## 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: "Item Tracing Mgt.")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
