Skip to content
D365 Reference

ProdBOM

worksheet line

Production order BOM line — the materials a specific production order plans to consume, copied from the item's active BOM at order creation and then adjusted per order

Module: Production ControlCompany-partitioned (DataAreaId)Header: ProdTable
What the badges mean
main
Table group: how F&O categorizes the table's role — main entity, group/header, transaction, worksheet header, worksheet line, reference, parameter, or framework.
Shared across companies
The table carries no DataAreaId— rows aren’t partitioned per company, so a query never needs (and can’t use) a company filter here (see the quirks guide).
Date-effective
The table carries a ValidFrom/ValidTo effectivity window — a join without a date filter multiplies every key by its history (see the quirks guide).
In field listings, K marks a key field.
Used in the library
KPI definitions

Header & line

ProdBOM lines join back to their header ProdTable — and the DataAreaId — so a line never fans out across companies.

Fields

22 fields · 2 key

22 fields.

Table fields: key flag, field name, extended data type, description, data type, length, and quirk flags. 22 fields.
KeyFieldEDTDescriptionTypeLengthFlags
KeyProdIdProdIdThe production order this material line belongs tostring20
KeyLineNumLineNumLine number within the order's BOMreal
ItemIdItemIdComponent item planned for consumptionstring20
InventDimIdInventDimIdInventory-dimension combination the component is consumed from; join to InventDim to resolve site / warehousestring25
BOMIdBOMIdBOM header the line was copied fromstring20
ProdLineTypeLine type — item, phantom, pegged supply, or vendor (subcontracted)enum
BOMQtyComponent quantity per the BOM quantity seriesreal
BOMQtySerieQuantity series (per-series denominator) BOMQty applies toreal
BOMConsumpWhether consumption is constant or varies with order quantityenum
QtyBOMCalcEstimated consumption in the BOM unitreal
QtyInventCalcEstimated consumption in the inventory unitreal
RemainBOMPhysicalRemaining quantity to consume in the BOM unitreal
RemainInventPhysicalRemaining quantity to consume in the inventory unitreal
UnitIdUnit the BOM quantities are stated instring10
OprNumRoute operation the component is consumed atint
PositionPosition reference on the parent item (where the component sits)string
ProdFlushingPrincipFlushing principle — when consumption posts automatically (start, finish, manual…)enum
ScrapConstConstant scrap quantity added to the requirementreal
ScrapVarVariable scrap percentage added to the requirementreal
VendIdVendAccountVendor for subcontracted (vendor-type) linesstring20
RawMaterialDateDate the material is required — the primary analysis date for component demanddate
InventTransIdInventTransIdInventory transaction reference of the line's issue — the lot the consumption posts againststring40

Field provenance: hand-curated.

Boilerplate SQL

Starting point for reading ProdBOM on Databricks — enums are decoded, 1900-01-01 dates are wrapped to NULL, and the DataAreaId anchor is in place. Set your Unity Catalog location, company, and filter values below; they’re substituted into the SQL and the copy button.

Query parameters

6 parameters not filled: <catalog>, <schema>, <company>, <ProdId>, <DATE_FROM>, <DATE_TO>

-- ============================================================
-- Table  : ProdBOM Production order BOM line — the materials a specific production order plans to consume, copied from the item's active BOM at order creation and then adjusted per order
-- Purpose: Column-selected read of ProdBOM — auto-generated from field metadata
-- Grain  : One row per company (dataareaid) + ProdId + LineNum
-- Notes  : Auto-generated skeleton for Synapse Link / Fabric Link-landed F&O data (lowercase column names). Enums decoded inline where verified; datetimes stored in UTC; 1900-01-01 dates are sentinels mapped to NULL. System/audit columns omitted — see the quirks guide.
-- ============================================================
SELECT
  p.prodid AS "The production order this material line belongs to",
  p.linenum AS "Line number within the order's BOM",
  p.itemid AS "Component item planned for consumption",
  p.inventdimid AS "Inventory-dimension combination the component is consumed from; join to InventDim to resolve site / warehouse",
  p.bomid AS "BOM header the line was copied from",
  p.prodlinetype AS "Line type — item, phantom, pegged supply, or vendor (subcontracted)",  -- enum: decode p.prodlinetype via GlobalOptionsetMetadata join — see quirks guide #enums
  p.bomqty AS "Component quantity per the BOM quantity series",
  p.bomqtyserie AS "Quantity series (per-series denominator) BOMQty applies to",
  p.bomconsump AS "Whether consumption is constant or varies with order quantity",  -- enum: decode p.bomconsump via GlobalOptionsetMetadata join — see quirks guide #enums
  p.qtybomcalc AS "Estimated consumption in the BOM unit",
  p.qtyinventcalc AS "Estimated consumption in the inventory unit",
  p.remainbomphysical AS "Remaining quantity to consume in the BOM unit",
  p.remaininventphysical AS "Remaining quantity to consume in the inventory unit",
  p.unitid AS "Unit the BOM quantities are stated in",
  p.oprnum AS "Route operation the component is consumed at",
  p.position AS "Position reference on the parent item (where the component sits)",
  p.prodflushingprincip AS "Flushing principle — when consumption posts automatically (start, finish, manual…)",  -- enum: decode p.prodflushingprincip via GlobalOptionsetMetadata join — see quirks guide #enums
  p.scrapconst AS "Constant scrap quantity added to the requirement",
  p.scrapvar AS "Variable scrap percentage added to the requirement",
  p.vendid AS "Vendor for subcontracted (vendor-type) lines",
  p.rawmaterialdate AS "Date the material is required — the primary analysis date for component demand",
  p.inventtransid AS "Inventory transaction reference of the line's issue — the lot the consumption posts against"
FROM <catalog>.<schema>.prodbom p
-- Dimension expansion: uncomment to resolve site / warehouse / location / batch
-- LEFT JOIN <catalog>.<schema>.inventdim id ON id.inventdimid = p.inventdimid AND id.dataareaid = p.dataareaid
WHERE
  p.dataareaid = '<company>'
  -- AND p.prodid = '<ProdId>'
  -- AND p.rawmaterialdate >= '<DATE_FROM>'  -- yyyy-MM-dd (UTC)
  -- AND p.rawmaterialdate <= '<DATE_TO>'  -- yyyy-MM-dd (UTC)
ORDER BY p.prodid;

Verified September 2026

Relationships

Diagram of 1-hop neighbors — join details below. RecId and InventDim edges are highlighted; they’re the joins newcomers most often get wrong.

Join details

  • ProdTableProdBOMheader line · 1:N
    ON prodtable.prodid = prodbom.prodid AND prodtable.dataareaid = prodbom.dataareaid
  • ProdBOMInventTableforeign key · N:1
    ON prodbom.itemid = inventtable.itemid AND prodbom.dataareaid = inventtable.dataareaid
  • ProdBOMInventDimInventDim · N:1
    ON prodbom.inventdimid = inventdim.inventdimid AND prodbom.dataareaid = inventdim.dataareaid

Data Entities That Expose This Table

The production-order BOM line export entity's programmatic name could not be primary-source verified — land the raw table.

Browse more production tables

More Production Control tables

Maintained by Summit Analytics, a supply chain analytics practice. The tools and references are free — the consulting is selective.

Part of the Summit Analytics reference library.

Work with the practice

Not affiliated with or endorsed by Microsoft. Microsoft, Dynamics 365, and Microsoft Fabric are trademarks of the Microsoft group of companies.