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 |
|---|---|---|---|---|---|
nvarchar(128) |
✅ Required |
❌ |
Number of the parent Item in the BOM hierarchy. References Items→ItemNumber. |
||
int |
✅ |
❌ |
1 |
Exact version of the parent Item. References Items→Version. |
|
nvarchar(128) |
✅ Required |
✅ |
Number of the child Item. References Items→ItemNumber. |
||
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 |
|
_OriginalBCPOverflow |
xml |
⚪ auto (only available when importing from a source Vault BCP package) |
✅ |
Enables identical re-export of the BCP package. |
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