---
id: object/table/6502
type: object
title: Table 6502 "Item Tracking Code"
summary: Table 6502 "Item Tracking Code" in Base Application (Microsoft.Inventory.Tracking). 48 fields, 6 public procedures, 7 events. Present since at least BC23, still in BC30, changed in BC24, BC26, BC28-29.
tier: official
language: en
tags:
  - table
  - base application
versions:
  introduced: null
  last_changed: "29"
  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: 4096a181503a0fbd9cce7d332340110186d4985ec148cc9d5d3e4aa22be9028c
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Tracking/ItemTrackingCode.Table.al
    title: src/Layers/W1/BaseApp/Inventory/Tracking/ItemTrackingCode.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/10150
object_type: table
object_id: 6502
name: Item Tracking Code
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"
  - "26"
  - "28"
  - "29"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 48
  procedures: 19
  events: 7
  subscribers: 0
relations:
  out: 2
  referenced_by: 2
  pages: 2
  extended_by: 2
  event_subscribers: 10
  calls: 1
  called_by: 0
  implements: 0
---

# Table 6502 "Item Tracking Code"

> Table 6502 "Item Tracking Code" in Base Application (Microsoft.Inventory.Tracking). 48 fields, 6 public procedures, 7 events. Present since at least BC23, still in BC30, changed in BC24, BC26, BC28-29.

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

## Properties

| Property | Value |
|---|---|
| Caption | Item Tracking Code |
| DataClassification | CustomerContent |

## Fields

Explanation: the field's ToolTip in the code; without one, the ToolTip of a page control bound to the field (marked via the page); without that, its Caption (marked caption) when that differs from the name.

| No. | Name | Type | Explanation | Notes |
|---|---|---|---|---|
| 1 | Code | Code[10] | Specifies the code of the record. | NotBlank |
| 2 | Description | Text[100] | Specifies a description of the item tracking code. |  |
| 3 | Warranty Date Formula | DateFormula | Specifies the formula that calculates the warranty date entered in the Warranty Date field on item tracking line. |  |
| 5 | Man. Warranty Date Entry Reqd. | Boolean | Specifies that a warranty date must be entered manually. |  |
| 6 | Man. Expir. Date Entry Reqd. | Boolean | Specifies that items that use this item tracking code must have an expiration date, and that you must enter the expiration date manually. The date formula specified in the Expiration Calculation field on the item card will be ignored. |  |
| 8 | Strict Expiration Posting | Boolean | Specifies if the expiration date is considered when you sell items. For example, you cannot post a sales order for an item that has passed its expiration date. For tracked items, this setting also uses the First-Expired-First-Out (FEFO) method to determine which items to pick, regardless of the Pick... |  |
| 9 | Use Expiration Dates | Boolean | Specifies that items that use this item tracking code can have an expiration date. This will enable checks for expiration dates, which can affect performance for documents with many Item Tracking Lines. |  |
| 11 | SN Specific Tracking | Boolean | Specifies that when handling an outbound unit of the item in question, you must always specify which existing serial number to handle. |  |
| 13 | SN Info. Inbound Must Exist | Boolean | Specifies that serial numbers on inbound document lines must have an information record in the Serial No. Information Card. |  |
| 14 | SN Info. Outbound Must Exist | Boolean | Specifies that serial numbers on outbound document lines must have an information record in the Serial No. Information Card. |  |
| 15 | SN Warehouse Tracking | Boolean | Specifies that warehouse document lines require serial numbers. |  |
| 21 | SN Purchase Inbound Tracking | Boolean | Specifies that inbound purchase document lines require serial numbers. |  |
| 22 | SN Purchase Outbound Tracking | Boolean | Specifies that outbound purchase document lines require serial numbers. |  |
| 23 | SN Sales Inbound Tracking | Boolean | Specifies that inbound sales document lines require serial numbers. |  |
| 24 | SN Sales Outbound Tracking | Boolean | Specifies that outbound sales document lines require serial numbers. |  |
| 25 | SN Pos. Adjmt. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type positive entry require serial numbers. |  |
| 26 | SN Pos. Adjmt. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type positive entry require serial numbers. |  |
| 27 | SN Neg. Adjmt. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type negative entry require serial numbers. |  |
| 28 | SN Neg. Adjmt. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type negative entry require serial numbers. |  |
| 29 | SN Transfer Tracking | Boolean | Specifies that transfer order lines require serial numbers. |  |
| 34 | Create SN Info on Posting | Boolean | Specifies that if the Serial No. Information card is missing for the document line, the card will be created during posting. |  |
| 41 | Lot Specific Tracking | Boolean | Specifies that when handling an outbound unit, always specify which existing lot number to handle. |  |
| 43 | Lot Info. Inbound Must Exist | Boolean | Specifies that lot numbers on inbound document lines must have an information record in the Lot No. Information Card. |  |
| 44 | Lot Info. Outbound Must Exist | Boolean | Specifies that lot numbers on outbound document lines must have an information record in the Lot No. Information Card. |  |
| 45 | Lot Warehouse Tracking | Boolean | Specifies that warehouse document lines require a lot number. |  |
| 51 | Lot Purchase Inbound Tracking | Boolean | Specifies that inbound purchase document lines require a lot number. |  |
| 52 | Lot Purchase Outbound Tracking | Boolean | Specifies that outbound purchase document lines require a lot number. |  |
| 53 | Lot Sales Inbound Tracking | Boolean | Specifies that inbound sales document lines require a lot number. |  |
| 54 | Lot Sales Outbound Tracking | Boolean | Specifies that outbound sales document lines require a lot number. |  |
| 55 | Lot Pos. Adjmt. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type positive entry require a lot number. |  |
| 56 | Lot Pos. Adjmt. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type positive entry require a lot number. |  |
| 57 | Lot Neg. Adjmt. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type negative entry require a lot number. |  |
| 58 | Lot Neg. Adjmt. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type negative entry require a lot number. |  |
| 59 | Lot Transfer Tracking | Boolean | Specifies that transfer order lines require a lot number. |  |
| 64 | Create Lot No. Info on posting | Boolean | Specifies that if the Lot No. Information card is missing for the document line, the card will be created during posting. |  |
| 70 | Package Specific Tracking | Boolean | Specifies that when handling an outbound unit, always specify which existing package number to handle. |  |
| 71 | Package Warehouse Tracking | Boolean | Specifies that warehouse document lines require a package number. |  |
| 73 | Package Info. Inb. Must Exist | Boolean | Specifies that package numbers on inbound document lines must have an information record in the Package No. Information Card. |  |
| 74 | Package Info. Outb. Must Exist | Boolean | Specifies that package numbers on outbound document lines must have an information record in the Package No. Information Card. |  |
| 75 | Package Purchase Inb. Tracking | Boolean | Specifies that inbound purchase document lines require a package number. |  |
| 76 | Package Purch. Outb. Tracking | Boolean | Specifies that outbound purchase document lines require a package number. |  |
| 77 | Package Sales Inbound Tracking | Boolean | Specifies that inbound sales document lines require a package number. |  |
| 78 | Package Sales Outb. Tracking | Boolean | Specifies that outbound sales document lines require a package number. |  |
| 79 | Package Pos. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type positive entry require a package number. |  |
| 80 | Package Pos. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type positive entry require a package number. |  |
| 81 | Package Neg. Inb. Tracking | Boolean | Specifies that inbound item journal lines of type negative entry require a package number. |  |
| 82 | Package Neg. Outb. Tracking | Boolean | Specifies that outbound item journal lines of type negative entry require a package number. |  |
| 83 | Package Transfer Tracking | Boolean | Specifies that transfer order lines require a package number. |  |

## Keys

- Key1: Code (clustered)

## Events published

- `OnAfterIsSpecific(ItemTrackingCode: Record "Item Tracking Code"; var Specific: Boolean)` (integration)
  - subscribers: [Codeunit 6516 "Package Management"](../codeunit/6516.md) ItemTrackingCodeIsSpecific
- `OnAfterIsSpecificTrackingChanged(ItemTrackingCode: Record "Item Tracking Code"; ItemTrackingCode2: Record "Item Tracking Code"; var TrackingChanged: Boolean)` (integration)
  - subscribers: [Codeunit 6516 "Package Management"](../codeunit/6516.md) ItemTrackingCodeIsSameSpecificTracking
- `OnAfterIsWarehouseTracking(ItemTrackingCode: Record "Item Tracking Code"; var WarehouseTracking: Boolean)` (integration)
  - subscribers: [Codeunit 6516 "Package Management"](../codeunit/6516.md) ItemTrackingCodeIsWarehouseTracking
- `OnAfterIsWarehouseTrackingChanged(ItemTrackingCode: Record "Item Tracking Code"; ItemTrackingCode2: Record "Item Tracking Code"; var TrackingChanged: Boolean)` (integration)
  - subscribers: [Codeunit 6516 "Package Management"](../codeunit/6516.md) ItemTrackingCodeIsSameWarehouseTracking
- `OnValidateSNSpecificTrackingOnAfterSet(var ItemTrackingCode: Record "Item Tracking Code")` (integration)
  - subscribers: [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnValidateSNSpecificTrackingOnAfterSet, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnValidateSNSpecificTrackingOnAfterSet
- `OnValidateLotSpecificTrackingOnAfterSet(var ItemTrackingCode: Record "Item Tracking Code")` (integration)
  - subscribers: [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnValidateLotSpecificTrackingOnAfterSet, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnValidateLotSpecificTrackingOnAfterSet
- `OnValidatePackageSpecificTrackingOnAfterSet(var ItemTrackingCode: Record "Item Tracking Code")` (integration)
  - subscribers: [Codeunit 935 "Asm. Item Tracking Mgt."](../codeunit/935.md) OnValidatePackageSpecificTrackingOnAfterSet, [Codeunit 99000891 "Mfg. Item Tracking Mgt."](../codeunit/99000891.md) OnValidatePackageSpecificTrackingOnAfterSet

## Procedures

- `TestSetSpecific(CurrentFieldName: Text[100])`
- `TestRemoveSpecific(CurrentFieldName: Text)`
- `IsSpecific(): Boolean`
- `IsSpecificTrackingChanged(ItemTrackingCode2: Record "Item Tracking Code"): Boolean`
- `IsWarehouseTracking(): Boolean`
- `IsWarehouseTrackingChanged(ItemTrackingCode2: Record "Item Tracking Code"): Boolean`

Plus 6 local procedures.

## Triggers

OnDelete

## Relations

- drill-down page [Page 6502 "Item Tracking Codes"](../page/6502.md)
- lookup page [Page 6502 "Item Tracking Codes"](../page/6502.md)

## Referenced by

2 fields in 2 objects relate to this table (TableRelation or CalcFormula).

- [Table 1382 "Item Templ."](../table/1382.md): Item Tracking Code
- [Table 27 "Item"](../table/27.md): Item Tracking Code

## Pages and codeunits on this table

- [Page 6502 "Item Tracking Codes"](../page/6502.md) (source table)
- [Page 6512 "Item Tracking Code Card"](../page/6512.md) (source table)

## Extended by

- [Table extension 910 "Asm. Item Tracking Code"](../tableextension/910.md)
- [Table extension 99000900 "Mfg. Item Tracking Code"](../tableextension/99000900.md)

## 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 31 "Item List"](../page/31.md) (1 call: `EnsureRelatedItemsHaveNoExpirationDate → (object)`)

## Recent changes

- 2026-08-12 [#10150 [Bug 617189] Clarify strict expiration posting tooltip](../../changes/bcapps/10150.md) (main, BC30, fix)

## Across versions

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

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: "table", object_name: "Item Tracking Code")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
