MSC_SYSTEM_ITEMS
Schema: MSCmasterPer inventory orgThe planning copy of the item master at plan + instance + org + item grain — collected item attributes frozen per plan run, and the bridge column back to the source EBS item
INVENTORY_ITEM_ID here is the planning-side surrogate — the EBS item id is SR_INVENTORY_ITEM_ID; the single bridge edge uses that item pair plus ORGANIZATION_ID to prevent fan-out and assumes one collected source instance
Attributes are frozen per plan run — the same item differs across PLAN_IDs. The physical unique key extends the four-part grain with simulation-set columns, so simulation runs can duplicate the working key. The bridge back to EBS is one edge: SR_INVENTORY_ITEM_ID is its item pair, while the organization pair is retained under the catalog's fan-out rule. Because collected organization ids are instance-qualified, that join assumes a single collected source instance; multi-instance estates must resolve the source instance before using it.
What the badges mean
- Schema: INV
- Schema: the Oracle product schema that owns the table (INV, ONT, WSH, PO, BOM, WIP, MRP, MSC, AR, AP, GL, HR, APPLSYS) — tells you which product family the object belongs to, not who can query it.
- master
- Data class: what the table holds — master data, transaction documents, control/configuration, interface/staging, or an APPS-schema view.
- OU-striped (ORG_ID)
- Rows are scoped to an operating unit. A landed extract carries every operating unit’s rows — filter or join on
ORG_ID, and don’t confuse it withORGANIZATION_ID(see the quirks guide). - Per inventory org
- Rows are scoped to an inventory organization (plant or warehouse) via
ORGANIZATION_ID— a different partition from OU-striped tables (see the quirks guide). - Language-striped
- The table carries a
LANGUAGEcolumn (a _TL translation table or FND_LOOKUP_VALUES) — one row per language. Filter to oneLANGUAGEor a join multiplies rows (see the quirks guide). - View
- This is an APPS-schema convenience view, not a physical table. Extract the base tables it joins instead — views can be slow at scale and aren't guaranteed stable across patches.
Structural facts — how the table is partitioned, not a trap by itself
Join & extract hazards — verify before you rely on this
Fields
18 fields · 4 key
18 fields.
| # | Field | Description | Type | Flags |
|---|---|---|---|---|
| 1 | PLAN_ID | The plan — item attributes are frozen per plan run | NUMBER | Primary-key field |
| 2 | SR_INSTANCE_ID | The collected source instance — part of the key | NUMBER | Primary-key field |
| 3 | ORGANIZATION_ID | Planning-instance copy of the org id — part of the key | NUMBER | Primary-key field |
| 4 | INVENTORY_ITEM_ID | The planning-side item surrogate — part of the key; NOT the EBS item id | NUMBER | Primary-key field |
| 5 | SR_INVENTORY_ITEM_ID | The item id in the source EBS instance — the ONLY sound bridge back to the item master | NUMBER | |
| 6 | ITEM_NAME | The item name as collected | VARCHAR2 | |
| 7 | DESCRIPTION | Item description as collected | VARCHAR2 | |
| 8 | UOM_CODE | Primary UOM as collected | VARCHAR2 | |
| 9 | MRP_PLANNING_CODE | How the item is planned — MRP, MPS, DRP combinations; codes enumerated in the data dictionary's own comment | NUMBER | |
| 10 | FIXED_LEAD_TIME | Fixed lead time as collected | NUMBER | |
| 11 | VARIABLE_LEAD_TIME | Variable lead time | NUMBER | |
| 12 | PREPROCESSING_LEAD_TIME | Preprocessing lead time | NUMBER | |
| 13 | POSTPROCESSING_LEAD_TIME | Postprocessing lead time | NUMBER | |
| 14 | PLANNING_TIME_FENCE_DATE | Planning time fence as of the plan run | DATE | |
| 15 | DEMAND_TIME_FENCE_DATE | Demand time fence as of the plan run | DATE | |
| 16 | STANDARD_COST | Standard cost as collected | NUMBER | |
| 17 | SAFETY_STOCK_CODE | Safety stock method as collected | NUMBER | |
| 18 | MINIMUM_ORDER_QUANTITY | Minimum order quantity constraint | NUMBER |
Field provenance: hand-curated. 4 key fields.
Boilerplate SQL
Starting point for reading MSC_SYSTEM_ITEMS on Databricks — real DATE columns need no conversion, and the org anchor is already in place. The optional LAST_UPDATE_DATE watermark is included. Set your Unity Catalog location, schema, and org values below; they’re substituted into the SQL and the copy button.
7 parameters not filled: <catalog>, <schema>, <inventory_org_id>, <PLAN_ID>, <SR_INSTANCE_ID>, <INVENTORY_ITEM_ID>, <watermark>
-- ============================================================
-- Table : MSC_SYSTEM_ITEMS — The planning copy of the item master at plan + instance + org + item grain — collected item attributes frozen per plan run, and the bridge column back to the source EBS item
-- Purpose: Column-selected read of MSC_SYSTEM_ITEMS — auto-generated from field metadata
-- Grain : One row per inventory org (ORGANIZATION_ID) + PLAN_ID + SR_INSTANCE_ID + INVENTORY_ITEM_ID
-- Caution: INVENTORY_ITEM_ID here is the planning-side surrogate — the EBS item id is SR_INVENTORY_ITEM_ID; the single bridge edge uses that item pair plus ORGANIZATION_ID to prevent fan-out and assumes one collected source instance
-- Notes : Auto-generated skeleton for Oracle EBS R12 data landed in your lakehouse. Dates are real DATE/TIMESTAMP columns — no conversion needed. WHO audit columns omitted (see the quirks guide); the optional LAST_UPDATE_DATE watermark filter supports incremental extracts.
-- ============================================================
SELECT
t.PLAN_ID AS "The plan — item attributes are frozen per plan run",
t.SR_INSTANCE_ID AS "The collected source instance — part of the key",
t.ORGANIZATION_ID AS "Planning-instance copy of the org id — part of the key",
t.INVENTORY_ITEM_ID AS "The planning-side item surrogate — part of the key; NOT the EBS item id",
t.SR_INVENTORY_ITEM_ID AS "The item id in the source EBS instance — the ONLY sound bridge back to the item master",
t.ITEM_NAME AS "The item name as collected",
t.DESCRIPTION AS "Item description as collected",
t.UOM_CODE AS "Primary UOM as collected",
t.MRP_PLANNING_CODE AS "How the item is planned — MRP, MPS, DRP combinations; codes enumerated in the data dictionary's own comment",
t.FIXED_LEAD_TIME AS "Fixed lead time as collected",
t.VARIABLE_LEAD_TIME AS "Variable lead time",
t.PREPROCESSING_LEAD_TIME AS "Preprocessing lead time",
t.POSTPROCESSING_LEAD_TIME AS "Postprocessing lead time",
t.PLANNING_TIME_FENCE_DATE AS "Planning time fence as of the plan run",
t.DEMAND_TIME_FENCE_DATE AS "Demand time fence as of the plan run",
t.STANDARD_COST AS "Standard cost as collected",
t.SAFETY_STOCK_CODE AS "Safety stock method as collected",
t.MINIMUM_ORDER_QUANTITY AS "Minimum order quantity constraint"
FROM <catalog>.<schema>.MSC_SYSTEM_ITEMS t
WHERE
t.ORGANIZATION_ID = <inventory_org_id> -- inventory org, NOT the operating unit — see quirks guide #two-orgs
-- AND t.PLAN_ID = <PLAN_ID>
-- AND t.SR_INSTANCE_ID = <SR_INSTANCE_ID>
-- AND t.INVENTORY_ITEM_ID = <INVENTORY_ITEM_ID>
-- AND t.LAST_UPDATE_DATE >= TIMESTAMP '<watermark>' -- WHO watermark, bulk-stamped by batch jobs; see quirks guide #who-columns
ORDER BY t.PLAN_ID;Verified September 2026
Relationships
Diagram of 1-hop neighbors — join details below. FND lookup decode and translation edges are highlighted; they’re the joins newcomers most often get wrong.
Loading relationship diagram…
Join details
ON MSC_SUPPLIES.INVENTORY_ITEM_ID = MSC_SYSTEM_ITEMS.INVENTORY_ITEM_ID AND MSC_SUPPLIES.PLAN_ID = MSC_SYSTEM_ITEMS.PLAN_ID AND MSC_SUPPLIES.SR_INSTANCE_ID = MSC_SYSTEM_ITEMS.SR_INSTANCE_ID AND MSC_SUPPLIES.ORGANIZATION_ID = MSC_SYSTEM_ITEMS.ORGANIZATION_IDON MSC_DEMANDS.INVENTORY_ITEM_ID = MSC_SYSTEM_ITEMS.INVENTORY_ITEM_ID AND MSC_DEMANDS.PLAN_ID = MSC_SYSTEM_ITEMS.PLAN_ID AND MSC_DEMANDS.SR_INSTANCE_ID = MSC_SYSTEM_ITEMS.SR_INSTANCE_ID AND MSC_DEMANDS.ORGANIZATION_ID = MSC_SYSTEM_ITEMS.ORGANIZATION_IDON MSC_SYSTEM_ITEMS.SR_INVENTORY_ITEM_ID = MTL_SYSTEM_ITEMS_B.INVENTORY_ITEM_ID AND MSC_SYSTEM_ITEMS.ORGANIZATION_ID = MTL_SYSTEM_ITEMS_B.ORGANIZATION_ID
More Planning tables
- MRP_FORECAST_DATESThe forecast fact — one row per forecast entry per item, org, forecast name, and date, carrying both the entered quantity and the post-consumption remainder
- MRP_FORECAST_DESIGNATORSThe forecast name and forecast set master per organization — consumption behavior (consume flag, forward/backward time fences, outlier cap) lives at this level
- MRP_SCHEDULE_DATESMDS/MPS schedule entries — one row per entry per item, org, schedule name, and date, spanning discrete quantities and repetitive rates, demand rows and supply rows
- MRP_SCHEDULE_DESIGNATORSThe MDS/MPS schedule name master per organization — schedule type, relief behavior, and whether the schedule supplies ATP
- MSC_DEMANDSEvery demand row a plan considered — sales orders, forecasts, and the dependent demand exploded from supplies, each with its due date, quantity, and origin
- MSC_PLANSThe ASCP plan registry — one row per plan with its user-visible name, owning org, type, planning horizon, and run timestamps; every plan-output query starts by picking a row here