---
id: object/table/90
type: object
title: Table 90 "BOM Component"
summary: Table 90 "BOM Component" in Base Application (Microsoft.Inventory.BOM). 18 fields, 1 public procedures, 5 events. Present since at least BC23, still in BC30, changed in BC24, BC27-28.
tier: official
language: en
tags:
  - table
  - 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: 0457f82212353782d057e440f25e2c63ff9ce0acb87165282543244c35786062
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/BOM/BOMComponent.Table.al
    title: src/Layers/W1/BaseApp/Inventory/BOM/BOMComponent.Table.al (releases/29.x)
    date: null
    commit: ea08af5ef2d6a9b5c5af4a029288abbe2c883220
    t: null
    quote: null
links:
  learn:
    - https://learn.microsoft.com/dynamics365/business-central/finance-chart-of-accounts
    - https://learn.microsoft.com/dynamics365/business-central/finance-general-ledger
    - 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
    - topic/business-central/business-functionality/finance/financial-analytics/built-in-finance-analysis-tools
    - topic/business-central/business-functionality/finance/work-with-the-chart-of-accounts-and-gene
  localizations: []
  videos: []
  posts: []
  guidelines: []
object_type: table
object_id: 90
name: BOM Component
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"
  - "27"
  - "28"
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 18
  procedures: 8
  events: 5
  subscribers: 0
relations:
  out: 11
  referenced_by: 3
  pages: 2
  extended_by: 0
  event_subscribers: 5
  calls: 0
  called_by: 0
  implements: 0
---

# Table 90 "BOM Component"

> Table 90 "BOM Component" in Base Application (Microsoft.Inventory.BOM). 18 fields, 1 public procedures, 5 events. Present since at least BC23, still in BC30, changed in BC24, BC27-28.

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

Learn documents this table through its pages: [Page 37 "Where-Used List"](../page/37.md) (2 Learn pages), [Page 36 "Assembly BOM"](../page/36.md) (1).

## Properties

| Property | Value |
|---|---|
| Caption | BOM Component |
| 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 | Parent Item No. | Code[20] | Specifies the number of the assembly item that the assembly BOM component belongs to. | TableRelation [Table 27 "Item"](../table/27.md) (Item where(Type = const(Inventory))); NotBlank |
| 2 | Line No. | Integer | — |  |
| 3 | Type | Enum "BOM Component Type" | Specifies if the assembly BOM component is an item or a resource. | enum [Enum 91 "BOM Component Type"](../enum/91.md) |
| 4 | No. | Code[20] | Specifies the number of the involved entry or record, according to the specified number series. | TableRelation [Table 156 "Resource"](../table/156.md), [Table 27 "Item"](../table/27.md) (if (Type = const(Item)) Item where(Type = filter(Inventory \| "Non-Inventory")) else if (Type = const(Resource)) Resource) |
| 5 | Assembly BOM | Boolean | Specifies if the assembly BOM component is an assembly BOM. | FlowField: exist("BOM Component" where("Parent Item No." = field("No."))); not editable |
| 6 | Description | Text[100] | Specifies a description of the assembly BOM component. |  |
| 7 | Unit of Measure Code | Code[10] | 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. | TableRelation [Table 205 "Resource Unit of Measure"](../table/205.md), [Table 5404 "Item Unit of Measure"](../table/5404.md) (if (Type = const(Item)) "Item Unit of Measure".Code where("Item No." = field("No.")) else if (Type = const(Resource)) "Resource Unit of Measure".Code where("Resource No." = field("No."))) |
| 8 | Quantity per | Decimal | Specifies how many units of the component are required to assemble or produce the parent item. |  |
| 9 | Position | Code[10] | Specifies the position of the component on the bill of material. |  |
| 10 | Position 2 | Code[10] | Specifies the component's position in the assembly BOM structure. |  |
| 11 | Position 3 | Code[10] | Specifies the third reference number for the component position on a bill of material, such as the alternate position number of a component on a print card. |  |
| 12 | Machine No. | Code[10] | Specifies a machine that should be used when processing the component on this line of the assembly BOM. |  |
| 13 | Lead-Time Offset | DateFormula | Specifies the total number of days required to assemble the item on the assembly BOM line. |  |
| 14 | BOM Description | Text[100] | Specifies a description of the assembly BOM if the item on the line is an assembly BOM. | FlowField: lookup(Item.Description where("No." = field("Parent Item No."))); not editable |
| 20 | Resource Usage Type | Option | Specifies how the cost of the resource on the assembly BOM is allocated during assembly. | OptionCaption: Direct,Fixed |
| 5402 | Variant Code | Code[10] | Specifies the variant of the item on the line. | TableRelation [Table 5401 "Item Variant"](../table/5401.md) (if (Type = const(Item)) "Item Variant".Code where("Item No." = field("No."))) |
| 5900 | Installed in Line No. | Integer | — |  |
| 5901 | Installed in Item No. | Code[20] | Specifies which service item the component on the line is used in. | TableRelation [Table 27 "Item"](../table/27.md) (if (Type = const(Item)) Item) |

## Keys

- Key1: Parent Item No., Line No. (clustered)
- Key2: Type, No.

## Events published

- `OnAfterCopyFromItem(var BOMComponent: Record "BOM Component"; Item: Record Item)` (integration)
- `OnAfterCopyFromResource(var BOMComponent: Record "BOM Component"; Resource: Record Resource)` (integration)
- `OnBeforeCopyFromItem(var BOMComponent: Record "BOM Component"; xBOMComponent: Record "BOM Component"; Item: Record Item; CallingFieldNo: Integer; var IsHandled: Boolean)` (integration)
- `OnCopyFromItemOnAfterGetParentItem(var Item: Record Item; ParentItem: Record Item)` (internal)
  - subscribers: [Codeunit 99000781 "Mfg. Calculate BOM Tree"](../codeunit/99000781.md) OnCopyFromItemOnAfterGetParentItem
- `OnBeforeValidateAgainstRecursion(ItemNo: Code[20]; var IsHandled: Boolean; var BOMComponent: Record "BOM Component")` (integration)

## Trigger event subscribers

- OnAfterDeleteEvent: [Codeunit 52 "BOM-BOM Component"](../codeunit/52.md) UpdateParentItemReplenishmentSystemOnAfterDeleteBOMComponent
- OnAfterInsertEvent: [Codeunit 52 "BOM-BOM Component"](../codeunit/52.md) UpdateParentItemReplenishmentSystemOnAfterInsertBOMComponent
- OnAfterRenameEvent: [Codeunit 52 "BOM-BOM Component"](../codeunit/52.md) UpdateParentItemReplenishmentSystemOnAfterRenameBOMComponent
- OnBeforeValidateEvent(No.): [Codeunit 8055 "Sub. Contracts Item Management"](../codeunit/8055.md) BOMComponentOnAfterValidateNo

## Procedures

- `ValidateAgainstRecursion(ItemNo: Code[20])`

Plus 2 local procedures.

## Triggers

OnInsert, OnModify, OnRename

## Relations

- drill-down page [Page 36 "Assembly BOM"](../page/36.md)
- lookup page [Page 36 "Assembly BOM"](../page/36.md)
- No.: TableRelation [Table 156 "Resource"](../table/156.md) (conditional)
- Unit of Measure Code: TableRelation [Table 205 "Resource Unit of Measure"](../table/205.md) (conditional)
- BOM Description: CalcFormula [Table 27 "Item"](../table/27.md)
- Installed in Item No.: TableRelation [Table 27 "Item"](../table/27.md)
- No.: TableRelation [Table 27 "Item"](../table/27.md) (conditional)
- Parent Item No.: TableRelation [Table 27 "Item"](../table/27.md)
- Variant Code: TableRelation [Table 5401 "Item Variant"](../table/5401.md)
- Unit of Measure Code: TableRelation [Table 5404 "Item Unit of Measure"](../table/5404.md) (conditional)
- Assembly BOM: CalcFormula [Table 90 "BOM Component"](../table/90.md)

## Referenced by

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

- [Table 27 "Item"](../table/27.md): Assembly BOM
- [Table 5700 "Stockkeeping Unit"](../table/5700.md): Assembly BOM
- [Table 90 "BOM Component"](../table/90.md): Assembly BOM

## Pages and codeunits on this table

- [Page 36 "Assembly BOM"](../page/36.md) (source table)
- [Page 37 "Where-Used List"](../page/37.md) (source table)
- [Codeunit 51 "BOM-Explode BOM"](../codeunit/51.md) (codeunit runs on it)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: BC24, BC27-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). 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: "BOM Component")`, then `bcatlas_get_procedure_body` or `bcatlas_get_neighbors` on the returned id.
