---
id: object/codeunit/3682
type: object
title: Codeunit 3682 "BOM Tree"
summary: Codeunit 3682 "BOM Tree" in Base Application (Microsoft.Inventory.BOM.Tree). 4 public procedures. Present since at least BC23, still in BC30.
tier: official
language: en
tags:
  - codeunit
  - base application
versions:
  introduced: null
  last_changed: null
  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: 50847b410652754d5c0b54ead7624cfae03e879459ce54789cdbca9ee041aeac
evidence:
  - kind: code
    url: https://github.com/microsoft/BCApps/blob/ea08af5ef2d6a9b5c5af4a029288abbe2c883220/src/Layers/W1/BaseApp/Inventory/BOM/Tree/BOMTree.Codeunit.al
    title: src/Layers/W1/BaseApp/Inventory/BOM/Tree/BOMTree.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: 3682
name: BOM Tree
namespace: Microsoft.Inventory.BOM.Tree
app: Base Application
extends: null
first_version: "23"
last_version: "30"
present_in:
  - "23"
  - "24"
  - "25"
  - "26"
  - "27"
  - "28"
  - "29"
  - "30"
changed_in: []
source_major: "29"
obsolete: null
countries: []
ms_search_form_ids: []
counts:
  fields: 0
  procedures: 4
  events: 0
  subscribers: 0
relations:
  out: 0
  referenced_by: 0
  pages: 0
  extended_by: 0
  event_subscribers: 0
  calls: 1
  called_by: 1
  implements: 0
---

# Codeunit 3682 "BOM Tree"

> Codeunit 3682 "BOM Tree" in Base Application (Microsoft.Inventory.BOM.Tree). 4 public procedures. Present since at least BC23, still in BC30.

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

## Properties

| Property | Value |
|---|---|
| Access | Public |

## Procedures

- `AddRelation(Parent: Codeunit "BOM Node"; Child: Codeunit "BOM Node")`: Adds a relation between two nodes connected in a parent- child relationship.
- `TraverseDown()`: Traverses the nodes starting from the root node and traverses down to the children and so on. Note that there can be many root nodes, in which case, the traversal starts from each of them.
- `TraverseDown(Node: Codeunit "BOM Node")`: Traverses the nodes starting from the given node and traverses down to the children and so on.
- `ChildHasKey(ParentKey: Text; ChildKey: Text): Boolean`: Finds if a node with the given key is a child of another node with the given parent key. The key of the parent node. The key of the child node. True if there was a child found with the key, false otherwise. This will return false if the node with the parent key was not found.

## 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 3683 "BOM Tree Impl."](../codeunit/3683.md) (3 calls: `AddRelation → AddRelation`, `ChildHasKey → ChildHasKey`, `TraverseDown → TraverseDown`)

## Called by

- [Codeunit 3687 "Low-Level Code Calculator"](../codeunit/3687.md) (4 calls: `AddChildToParent → AddRelation`, `AddChildToParent → ChildHasKey`, `PopulateFromBOMComponents → ChildHasKey`, …)

## Across versions

- Present in: BC23-30
- Changed (declaration) in: none

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