---
id: object/page/5870
type: object
title: Page 5870 "BOM Structure"
summary: Page 5870 "BOM Structure" in Base Application (Microsoft.Inventory.BOM). 5 public procedures, 3 events. Present since at least BC23, still in BC30, changed in BC24-25, BC27, BC30.
tier: official
language: en
tags:
  - page
  - base application
versions:
  introduced: null
  last_changed: "30"
  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: ca4e8b5424d928bff1115d6a678e4bad919f46216d73a4747d1ea76de6d66691
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/BOM/BOMStructure.Page.al
    title: src/Layers/W1/BaseApp/Inventory/BOM/BOMStructure.Page.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
  - kind: learn
    url: https://learn.microsoft.com/dynamics365/business-central/assembly-how-work-assembly-boms
    title: Work with assembly BOMs
    date: null
    commit: null
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/assembly-how-work-assembly-boms
  objects: []
  features: []
  topics:
    - topic/business-central/analytics-business-intelligence-and-repo/built-in-reports/assembly-management
    - topic/business-central/business-functionality/assembly-management
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes:
    - change/bcapps/12066
object_type: page
object_id: 5870
name: BOM Structure
namespace: Microsoft.Inventory.BOM
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"
  - "27"
  - "30"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids:
  - docs/learn-smb-docs/business-central/assembly-how-work-assembly-boms.md
counts:
  fields: 0
  procedures: 11
  events: 3
  subscribers: 0
  controls: 14
  actions: 7
relations:
  out: 1
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 3
  called_by: 0
  implements: 0
---

# Page 5870 "BOM Structure"

> Page 5870 "BOM Structure" in Base Application (Microsoft.Inventory.BOM). 5 public procedures, 3 events. Present since at least BC23, still in BC30, changed in BC24-25, BC27, BC30.

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

## Properties

| Property | Value |
|---|---|
| Caption | BOM Structure |
| SourceTable | BOM Buffer |
| PageType | Worksheet |

## Fields on this page

Layout controls in source order, grouped by the container they sit in. Shows: the table field a control is bound to (or its expression as written); ToolTip: the control's own, else the bound field's (marked).

| Group | Control | Shows | ToolTip |
|---|---|---|---|
| Option | Item Filter | `ItemFilter` | Specifies the items that are shown in the BOM Structure window. |
| Lines | Type | [Type](../table/5870.md#fields) | Specifies the item's position in the BOM structure. Lower-level items are indented under their parents. <small>from the table field</small> |
|  | No. | [No.](../table/5870.md#fields) | Specifies the number of the involved entry or record, according to the specified number series. <small>from the table field</small> |
|  | Description | [Description](../table/5870.md#fields) | Specifies the item's description. <small>from the table field</small> |
|  | Warning | `HasWarning` | Specifies if the BOM line has setup or data issues. |
|  | Low-Level Code | [Low-Level Code](../table/5870.md#fields) | Specifies the item's level in the BOM structure. <small>from the table field</small> |
|  | Variant Code | [Variant Code](../table/5870.md#fields) | Specifies the variant code that you entered in the Variant Filter field in the Item Availability by BOM Level window. <small>from the table field</small> |
|  | Qty. per Parent | [Qty. per Parent](../table/5870.md#fields) | Specifies how many units of the component are required to assemble or produce one unit of the parent. <small>from the table field</small> |
|  | Qty. per Top Item | [Qty. per Top Item](../table/5870.md#fields) | Specifies how many units of the component are required to assemble or produce one unit of the top item. <small>from the table field</small> |
|  | Unit of Measure Code | [Unit of Measure Code](../table/5870.md#fields) | Specifies how each unit of the item or resource is measured, such as in pieces or hours. By default, the value in the Base Unit of Measure field on the item or resource card is inserted. <small>from the table field</small> |
|  | Replenishment System | [Replenishment System](../table/5870.md#fields) | Specifies the item's replenishment system. <small>from the table field</small> |
|  | Lead-Time Offset | [Lead-Time Offset](../table/5870.md#fields) | Specifies the total number of days that are required to assemble or produce the item. <small>from the table field</small> |
|  | Safety Lead Time | [Safety Lead Time](../table/5870.md#fields) | Specifies any safety lead time that is defined for the item. <small>from the table field</small> |
|  | Lead Time Calculation | [Lead Time Calculation](../table/5870.md#fields) | Specifies how long it takes to replenish the item, by purchase, assembly, or production. <small>from the table field</small> |

## Actions

| Group | Action | ToolTip | Runs |
|---|---|---|---|
| Item Availability by | Event | View how the actual and the projected available balance of an item will develop over time according to supply and demand events. |  |
|  | Period | View the projected quantity of the item over time according to time periods, such as day, week, or month. |  |
|  | Variant | View or edit the item's variants. Instead of setting up each color of an item as a separate item, you can set up the various colors as variants of the item. |  |
|  | Location | View the actual and projected quantity of the item per location. |  |
|  | Lot | View the current and projected quantity of the item in each lot. | [Page 520 "Item Availability by Lot No."](../page/520.md) |
|  | BOM Level | View availability figures for items on bills of materials that show how many units of a parent item you can make based on the availability of child items. |  |
| Processing | Show Warnings | View details about bottlenecks. |  |

## Events published

- `OnBeforeGenerateBOMTree(var BOMBuffer: Record "BOM Buffer"; var Item: Record Item; var AsmHeader: Record Microsoft.Assembly.Document."Assembly Header"; var ProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line"; ShowBy: Integer; ItemFilter: Code[250]; var IsHandled: Boolean)` (integration, obsolete 27.0)
- `OnBeforeRefreshPage(var BOMBuffer: Record "BOM Buffer"; var Item: Record Item; var SourceRecordVar: Variant; ShowBy: Enum "BOM Structure Show By"; ItemFilter: Code[250]; var IsHandled: Boolean)` (integration)
- `OnRefreshPageOnBeforeRaiseError(var Item: Record Item; var RaiseError: Boolean; var ErrorText: Text)` (integration)

## Procedures

- `InitItem(var NewItem: Record Item)`
- `InitSource(NewSourceRecordVar: Variant; NewShowBy: Enum "BOM Structure Show By")`
- `InitAsmOrder(NewAsmHeader: Record Microsoft.Assembly.Document."Assembly Header")` (obsolete 27.0: Replaced by procedure InitSource())
- `InitProdOrder(NewProdOrderLine: Record Microsoft.Manufacturing.Document."Prod. Order Line")` (obsolete 27.0: Replaced by procedure InitSource())
- `RefreshPage()`

Plus 3 local procedures.

## Triggers

OnAfterGetRecord, OnOpenPage

## Relations

- source table [Table 5870 "BOM Buffer"](../table/5870.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.

- [Codeunit 5870 "Calculate BOM Tree"](../codeunit/5870.md) (3 calls: `RefreshPage → GenerateTreeForManyItems`, `RefreshPage → GenerateTreeForSource`, `RefreshPage → SetItemFilter`)
- [Page 5874 "BOM Warning Log"](../page/5874.md) (2 calls: `ShowWarnings → (object)`, `ShowWarningsForAllLines → (object)`)
- [Codeunit 353 "Item Availability Forms Mgt"](../codeunit/353.md) (1 call: `ShowItemAvailability → ShowItemAvailabilityFromItem`)

## Recent changes

- 2026-10-02 [#12066 Bugs/remove asm inv mfg clean27 tags for wave2 2026](../../changes/bcapps/12066.md) (main, BC30, obsoletion)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24-25, BC27, BC30

## Documented on Microsoft Learn

- [Work with assembly BOMs](https://learn.microsoft.com/dynamics365/business-central/assembly-how-work-assembly-boms)

## Deprecations

- procedure InitAsmOrder: Pending 27.0 (#if not CLEAN27), "Replaced by procedure InitSource()"
- procedure InitProdOrder: Pending 27.0 (#if not CLEAN27), "Replaced by procedure InitSource()"
- procedure OnBeforeGenerateBOMTree: Pending 27.0 (#if not CLEAN27), "Replaced by event OnBeforeRefreshPage"

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: "page", object_name: "BOM Structure")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
