D365 Reference
RouteVersion
mainRoute version — the link that assigns a route to a finished item for a validity period, quantity range, and site, mirroring how BOMVersion assigns a BOM
Module: Production ControlCompany-partitioned (DataAreaId)
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/ValidToeffectivity 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.
Fields
10 fields · 2 key
10 fields.
| Key | Field | EDT | Description | Type | Length | Flags |
|---|---|---|---|---|---|---|
| Key | RouteId | RouteId | Route this version assigns | string | 20 | |
| Key | ItemId | ItemId | Finished item the route is assigned to | string | 20 | |
| Active | Whether this version is the active one planning and order creation pick | enum | ||||
| Approved | Whether the version is approved | enum | ||||
| Approver | RecId | RecId of the worker who approved the version | int64 | |||
| FromDate | Version validity start; unset rows carry the 1900-01-01 sentinel | date | ||||
| ToDate | Version validity end; unset rows carry the 1900-01-01 sentinel | date | ||||
| FromQty | Minimum order quantity the version applies from | real | ||||
| InventDimId | InventDimId | Dimension scope of the assignment (typically the site); join to InventDim | string | 25 | ||
| Name | Version name | string | 60 |
Field provenance: hand-curated.
Boilerplate SQL
Starting point for reading RouteVersion 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
4 parameters not filled: <catalog>, <schema>, <company>, <ItemId>
-- ============================================================
-- Table : RouteVersion Route version — the link that assigns a route to a finished item for a validity period, quantity range, and site, mirroring how BOMVersion assigns a BOM
-- Purpose: Column-selected read of RouteVersion — auto-generated from field metadata
-- Grain : One row per company (dataareaid) + RouteId + ItemId
-- 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
r.routeid AS "Route this version assigns",
r.itemid AS "Finished item the route is assigned to",
r.active AS "Whether this version is the active one planning and order creation pick", -- enum: decode r.active via GlobalOptionsetMetadata join — see quirks guide #enums
r.approved AS "Whether the version is approved", -- enum: decode r.approved via GlobalOptionsetMetadata join — see quirks guide #enums
r.approver AS "RecId of the worker who approved the version",
CASE WHEN CAST(r.fromdate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(r.fromdate AS DATE) END AS "Version validity start; unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
CASE WHEN CAST(r.todate AS DATE) = DATE '1900-01-01' THEN NULL ELSE CAST(r.todate AS DATE) END AS "Version validity end; unset rows carry the 1900-01-01 sentinel", -- 1900-01-01 sentinel → NULL
r.fromqty AS "Minimum order quantity the version applies from",
r.inventdimid AS "Dimension scope of the assignment (typically the site); join to InventDim",
r.name AS "Version name"
FROM <catalog>.<schema>.routeversion r
-- Dimension expansion: uncomment to resolve site / warehouse / location / batch
-- LEFT JOIN <catalog>.<schema>.inventdim id ON id.inventdimid = r.inventdimid AND id.dataareaid = r.dataareaid
WHERE
r.dataareaid = '<company>'
-- AND r.itemid = '<ItemId>'
ORDER BY r.routeid;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
ON routeversion.routeid = routetable.routeid AND routeversion.dataareaid = routetable.dataareaidON routeversion.itemid = inventtable.itemid AND routeversion.dataareaid = inventtable.dataareaidON routeversion.inventdimid = inventdim.inventdimid AND routeversion.dataareaid = inventdim.dataareaid
Data Entities That Expose This Table
Route export entities exist in Data management, but their programmatic names could not be primary-source verified — land the raw tables.
More Production Control tables
- BOMBill of materials line — one component per row under a BOM header, with quantity per unit, validity dates, scrap factors, and the operation it is consumed at
- BOMTableBill of materials header — one row per BOM identifier, with its name, approval state, and production site; versions in BOMVersion decide which items use it and when
- BOMVersionBOM version — the link that assigns a BOM header to a finished item for a validity period, quantity range, and site; the Active flag decides which version planning and orders pick
- ProdBOMProduction 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
- ProdTableProduction order header — one row per order carrying the item being built, order status and type, scheduled and actual dates, and the BOM and route it was created from
- RouteRoute operation sequence — one row per operation number on a route, ordering the operations and linking each to the next; operation times live on the related RouteOpr table