Table: ItemBOMs

Defines parent-child relationships between Vault Items, representing one level in the Bill of Materials (BOM).

Columns

Column

Data Type

Can Import

Allows Null

Default

Description

ParentItemNumber

nvarchar(128)

Required

Number of the parent Item in the BOM hierarchy. References Items→ItemNumber.

ParentVersion

int

1

Exact version of the parent Item. References Items→Version.

ChildItemNumber

nvarchar(128)

Required

Number of the child Item. References Items→ItemNumber.
For imports from BCP packages, this column is NULL for BOM rows that are turned off (_OriginalBCPOverflow then contains ChildFileIterationID= and ChildUID=).

RowOrder

int

Required

0

The order in which the Item appears in the BOM, starting with 1 for each BOM.

PositionNumber

nvarchar(50)

Optional position that the row appears at in the BOM.

Quantity

float

1

Quantity in BOM.

ItemQuantity

int

1

The Item Quantity (Item QTY).

UnitQuantity

float

1

The Unit Quantity (Unit QTY).

UDP_…

nvarchar(max)

Columns starting with UDP_ define user-defined properties in Vault.
They can be added as needed; there are no predefined UDP columns.

_OriginalBCPOverflow

xml

auto (only available when importing from a source Vault BCP package)

Enables identical re-export of the BCP package.
Stores additional XML data from the original BCP file that is not captured by other columns (e.g. <bomLink attributes UofMID=, LinkType=, ChildFileIterationID=, CAD=, ChildUID=, GroupBy= or <Detail nodes).

Remarks

The combination of ParentItemNumber (including the ParentVersion), ChildItemNumber, and PositionNumber are usually unique within this table.
A single child Item can therefore appear multiple times in a BOM at different positions (typically with with different RowOrder values).

However, since Vault also allows situations where identical BOM-rows appear multiple times within the same BOM (for example, with GroupBy= attribute in _OriginalBCPOverflow), this table does not have a unique primary key.

Limitations with BOM Units

For imports from BCP packages, the Export-BCPDatabase cmdlet exports all records including the original UofMID= attribute to ensure correct display of historical data.
As a result, updates to the Items→Unit column do not appear in the BOM tab.
To make these changes visible, the UofMID value must be manually corrected in the _OriginalBCPOverflow column.

Similarly, for newly inserted records —or BOM rows imported from sources other than Vault— all BOM links get the unit Each by default in the target Vault.

Examples

Listing the multi-level BOM for a given Vault Item recursively

WITH RecursiveBOM AS (
     -- top-level Item
    SELECT ParentItemNumber, ChildItemNumber, RowOrder, PositionNumber, Quantity
    FROM ItemBOMs
    WHERE ParentItemNumber = '100005'
      AND ParentVersion = 6

    UNION ALL

    -- recursively get child-rows
    SELECT b.ParentItemNumber, b.ChildItemNumber, b.RowOrder, b.PositionNumber, b.Quantity
    FROM ItemBOMs b
    INNER JOIN RecursiveBOM rb
        ON b.ParentItemNumber = rb.ChildItemNumber
)
SELECT *
FROM RecursiveBOM
ORDER BY ParentItemNumber, ChildItemNumber, RowOrder;
ParentItemNumber  ChildItemNumber  RowOrder  PositionNumber  Quantity
----------------  ---------------  --------  --------------  --------
100005            200010           1         1-1             2
100005            100006           2         1-2             4
100005            100008           3         1-3             1
200010            200011           0                         0.6666
100006            100007           1         1               30000
100006            100007           1         2               0

Default assignment with RowOrder for all empty PositionNumber’s

UPDATE ItemBOMs
SET PositionNumber = CAST(RowOrder AS nvarchar(50))
WHERE PositionNumber IS NULL