---
id: object/codeunit/5703
type: object
title: Codeunit 5703 "Catalog Item Management"
summary: Codeunit 5703 "Catalog Item Management" in Base Application (Microsoft.Inventory.Item.Catalog). 17 public procedures, 42 events. Present since at least BC23, still in BC30, changed in BC25-28.
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: 4578a002ab883a3b1c55bdd447e21dc973af6fdc40fdc8d4715637c75307e1a3
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/Item/Catalog/CatalogItemManagement.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/Item/Catalog/CatalogItemManagement.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: 5703
name: Catalog Item Management
namespace: Microsoft.Inventory.Item.Catalog
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in:
  - "25"
  - "26"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 66
  events: 42
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 5
  calls: 2
  called_by: 6
  implements: 0
---

# Codeunit 5703 "Catalog Item Management"

> Codeunit 5703 "Catalog Item Management" in Base Application (Microsoft.Inventory.Item.Catalog). 17 public procedures, 42 events. Present since at least BC23, still in BC30, changed in BC25-28.

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

## Events published

- `OnAfterCreateNewItem(var Item: Record Item; NonstockItem: Record "Nonstock Item"; var NewItem: Record Item)` (integration)
  - subscribers: [Codeunit 8055 "Sub. Contracts Item Management"](../codeunit/8055.md) InsertItemServiceCommPackAfterCreateNewItem
- `OnAfterInsertUnitOfMeasure(UnitOfMeasureCode: Code[10]; ItemNo: Code[20])` (integration)
- `OnNonstockItemReferenceOnAfterSetBarCodeFilters(var ItemReference: Record "Item Reference"; NonstockItem: Record "Nonstock Item")` (integration)
- `OnNonstockItemReferenceOnAfterSetVendorItemNoFilters(var ItemReference: Record "Item Reference"; NonstockItem: Record "Nonstock Item")` (integration)
- `OnAfterDetermineItemNoAndItemNoSeries(var NonstockItem: Record "Nonstock Item")` (integration)
- `OnAfterItemReferenceInsert(var ItemReference: Record "Item Reference"; NonstockItem: Record "Nonstock Item")` (integration)
- `OnAfterNonstockItemDel(var Item: Record Item)` (integration)
- `OnAfterNonstockAutoItem(var NonStock: Record "Nonstock Item"; var NewItem: Record Item)` (integration)
- `OnBeforeCreateItemFromNonstock(var NonstockItem: Record "Nonstock Item")` (integration)
- `OnBeforeInsertItemUnitOfMeasure(UnitOfMeasureCode: Code[10]; ItemNo: Code[20])` (integration)
- `OnAfterNonstockItemVend(NonStockItem: Record "Nonstock Item"; var ItemVendor: Record "Item Vendor")` (integration)
- `OnBeforeNonstockItemVend(NonStockItem: Record "Nonstock Item")` (integration)
- `OnBeforeCheckNonStockItem(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckItemAlreadyExists(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeDelNonStockItem(var Item: Record Item; var IsHandled: Boolean)` (integration)
- `OnBeforeDelNonStockSales(var SalesLine2: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeDelNonStockPurch(var PurchaseLine2: Record "Purchase Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeDeleteCreatedFromNonstockItem(var NewItem: Record Item; var NonStock: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeDetermineItemNoAndItemNoSeries(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeNonstockAutoItem(var NonStock2: Record "Nonstock Item")` (integration)
- `OnBeforeNonstockItemReference(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeNonStockSales(var NonStockItem: Record "Nonstock Item"; var SalesLine: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnBeforeShowItemCreatedMessage(var NewItem: Record Item; NonStockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnCreateItemFromNonstockOnBeforeInsertItemUnitOfMeasure(var NonStockItem: Record "Nonstock Item")` (integration)
- `OnNonstockItemVendOnBeforeItemVendInsert(var ItemVend: Record "Item Vendor"; NonStockItem: Record "Nonstock Item")` (integration)
- `OnNonstockAutoItemOnAfterCreateNewItem(var NewItem: Record Item; var IsHandled: Boolean)` (integration)
- `OnNonstockAutoItemOnBeforeInsertItemUnitOfMeasure(var NonStockItem: Record "Nonstock Item")` (integration)
- `OnNonStockSalesOnAfterCreateNewItem(var NewItem: Record Item)` (integration)
- `OnNonStockSalesOnBeforeInsertItemUnitOfMeasure(var NonStockItem: Record "Nonstock Item")` (integration)
- `OnNonStockSalesOnBeforeProgWindowClose(var NonStockItem: Record "Nonstock Item"; var NewItem: Record Item; SalesLine2: Record "Sales Line"; var IsHandled: Boolean)` (integration)
- `OnAfterNonstockItemCrossRef(var NonStock2: Record "Nonstock Item")` (integration)
- `OnAfterInitItemFromTemplate(var Item: Record Item; ItemTempl: Record "Item Templ."; NonstockItem: Record "Nonstock Item")` (integration)
- `OnCreateNewItemOnBeforeItemInsert(var Item: Record Item; NonstockItem: Record "Nonstock Item")` (integration)
  - subscribers: [Codeunit 99000795 "Mfg. Item Integration"](../codeunit/99000795.md) OnCreateNewItemOnBeforeItemInsert
- `OnInsertItemUnitOfMeasuresOnBeforeItemUnitOfMeasureGet(UnitOfMeasureCode: Code[10]; var IsHandled: Boolean)` (integration)
- `OnBeforeCheckItemTemplateCode(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeInitItemFromTemplate(var Item: Record Item; NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnBeforeGetItemNoFromNoSeries(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnAfterGetItemNoFromNoSeries(var NonstockItem: Record "Nonstock Item")` (integration)
- `OnBeforeDelNonStockSalesArch(var SalesLineArchive2: Record "Sales Line Archive"; var IsHandled: Boolean)` (integration)
- `OnBeforeCreateNewItem(var NonstockItem: Record "Nonstock Item"; var IsHandled: Boolean)` (integration)
- `OnCreateNewItemOnBeforeItemModify(var Item: Record Item; NonstockItem: Record "Nonstock Item")` (integration)
- `OnDelNonStockItemOnAfterCheckRelations(var Item: Record Item; var ShouldExit: Boolean)` (integration)
  - subscribers: [Codeunit 6479 "Serv. Catalog Item Mgt."](../codeunit/6479.md) OnDelNonStockItemOnAfterCheckRelations, [Codeunit 8055 "Sub. Contracts Item Management"](../codeunit/8055.md) PreventDeletionOfSubscriptionItemOnDelNonStockItem, [Codeunit 99000898 "Mfg. Item Substitution"](../codeunit/99000898.md) OnDelNonStockItemOnAfterCheckRelations

## Procedures

- `NonstockAutoItem(NonStock2: Record "Nonstock Item")`
- `NonstockItemVend(NonStock2: Record "Nonstock Item")`
- `NonstockItemReference(var NonStock2: Record "Nonstock Item")`
- `NonstockItemDel(var Item: Record Item)`
- `NonStockSales(var SalesLine2: Record "Sales Line")`
- `DelNonStockSales(var SalesLine2: Record "Sales Line")`
- `DelNonStockPurch(var PurchLine2: Record "Purchase Line")`
- `DelNonStockSalesArch(var SalesLineArchive2: Record "Sales Line Archive")`
- `CreateItemFromNonstock(Nonstock2: Record "Nonstock Item")`
- `OpenProgressDialog(NonStockItem: Record "Nonstock Item"; ItemNo: Code[20])`
- `CloseProgressDialog()`
- `CheckLicensePermission(TableID: Integer): Boolean`
- `DelNonStockItem(var Item: Record Item)`
- `InsertItemUnitOfMeasure(UnitOfMeasureCode: Code[10]; ItemNo: Code[20])`
- `DetermineItemNoAndItemNoSeries(var NonstockItem: Record "Nonstock Item")`
- `CreateNewItem(NonstockItem: Record "Nonstock Item")`
- `CheckItemTemplateCode(NonstockItem: Record "Nonstock Item")`

Plus 7 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 1336 "Item Templ. Mgt."](../codeunit/1336.md) (2 calls: `CreateNewItem → InsertDimensions`, `InitItemFromTemplate → InitFromTemplate`)
- [Page 456 "No. Series"](../page/456.md) (1 call: `GetItemNoFromNoSeries → (object)`)

## Called by

- [Codeunit 6479 "Serv. Catalog Item Mgt."](../codeunit/6479.md) (10 calls: `DelNonStockFSM → DelNonStockItem`, `DelNonStockServiceArch → DelNonStockItem`, `NonStockFSM → CheckLicensePermission`, …)
- [Table 37 "Sales Line"](../table/37.md) (2 calls: `OnDelete → DelNonStockSales`, `ShowNonstock → NonStockSales`)
- [Codeunit 5701 "Item Subst."](../codeunit/5701.md) (1 call: `ItemSubstGet → CreateItemFromNonstock`)
- [Table 27 "Item"](../table/27.md) (1 call: `DeleteRelatedData → NonstockItemDel`)
- [Table 39 "Purchase Line"](../table/39.md) (1 call: `OnDelete → DelNonStockPurch`)
- [Table 5107 "Sales Header Archive"](../table/5107.md) (1 call: `OnDelete → DelNonStockSalesArch`)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC25-28

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