Skip to content

D-06

Production Schedule Performance

The plant review that refuses to let total volume hide the wrong mix. A cascade wireframe on one frozen schedule snapshot fact: commitment and output side by side, plant and line cuts in the middle, and the item-line exceptions the team can actually work at the bottom.

There is a reference build of this pattern: the Production Schedule Performance dashboard in the showcase renders it over frozen, simulated data — not a live client system. Its tiles are this wireframe's five measures over a frozen, simulated year of weekly schedules at item × production line — credit capped per item before summing, scored against the schedule as frozen at the planning fence, with the week-end restatement published beside it.

Print the commitment
Schedule Version + Frozen At stays visible. A living schedule is not a scoreable baseline.
Keep the two answers
Volume credits all completion; mix caps credit per item at its frozen schedule.

Last verified September 2026.

What it answers

Did the plant build the frozen schedule, at the item and line where that commitment was made? The board keeps two answers visible at once: volume attainment says whether total output landed, while mix attainment caps credit per item so an easy overbuild cannot pay for a hard miss.

The governing rule comes from the schedule attainment definition: score one immutable schedule version. A current schedule has already absorbed replans, shortages, and recoveries; comparing actual output to it turns the review into a description of what happened. The filter bar therefore prints the version and freeze timestamp where the room can see them.

This is a daily or weekly review instrument, not a shift-control screen. Stops, rates, and live queues belong on an Andon or KPI-wall surface. This pattern asks a slower and more consequential question: which commitments missed, what did the plant build instead, and which item-line-period rows need recovery ownership?

The wireframe

A cascade, so plant, line, and item evidence stay visible together. The schedule version is a first-class filter, and the worklist is the visual destination rather than a drill hidden behind a chart.

Production schedule performance dashboard wireframe with frozen schedule filters, mix and volume attainment tiles, period trend, plant and line cuts, and an item-line exception worklist

Period | Schedule Version + Frozen At | Plant | Line | Planner
Mix Attainment %
Volume Attainment %
Shortfall Qty
Overbuild Qty
Items Missed
Mix vs volume attainment by closed schedule period
By Plant
By Production Line
By Planner / Family
Item × Line × Period Exceptions, worst shortfall first
Filters
KPI / Metric
Primary Chart
Secondary Viz
Detail / Table

Layout basis

  1. Filters dim_schedule_version shows the exact frozen commitment. Period status excludes open periods from the headline while keeping them available as a clearly marked preview.
  2. KPI row mix and volume are a pair, never substitutes. Shortfall and overbuild stay separate additive quantities; the item count is a worklist size, not another score.
  3. Period trend both rates recompute from pooled fact components for each closed period. A widening gap is the visible signature of output landing on the wrong items.
  4. Operating cuts the conformed item and production-line dimensions expose ownership without changing the capped-credit arithmetic.
  5. Exception worklist one row per item × line × period, carrying schedule, completion, shortfall, overbuild, order, and operation — the evidence behind every aggregate above it.

The star schema underneath

The fact is a frozen comparison, not a living work-order table. Each approved schedule version writes its own rows. Completion events can continue arriving until the period closes, but the scheduled quantity on that version never changes.

fct_production_schedule_performancePeriodic snapshot

Grain one row per item × production line or work center × schedule period × frozen schedule version

Stored components

  • scheduled_qty
  • completed_qty
  • credited_completion_qty
  • shortfall_qty
  • overbuild_qty
  • schedule_frozen_at
  • period_closed_at

Foreign keys

  • dim_schedule_period
  • dim_item
  • dim_production_line
  • dim_schedule_version
dim_schedule_periodsnapshot
  • period_start
  • period_end
  • fiscal_week
  • is_closed

The commitment window — normally shift, day, or week, chosen once for the review cadence.

dim_production_line
  • plant
  • work_center
  • line
  • area

The operating ownership path from plant result to the line that has to recover it.

production order / operationdegenerate
  • order_number
  • operation_number

The drill from an item-line exception to the execution records behind it.

dim_item
  • item
  • family
  • base_uom
  • planner

The mix grain. Product-family rollups never replace the item-level cap in the numerator.

dim_schedule_versionsnapshot
  • version_id
  • frozen_at
  • planning_fence
  • source_run

The immutable commitment. The dashboard defaults to one approved version and prints its freeze timestamp.

The schedule version is part of the grain. Ratios are absent by design; every rate is computed from the stored quantities.

Measures & additivity

Compute credited_completion_qty as the lesser of schedule and completion at item-line-period grain before any rollup. That single step prevents cross-item netting. Every percentage below then recomputes from summed components; no plant, week, or planner percentage is ever averaged into another one.

Production schedule performance measures and their additivity
MeasureFormulaAdditivityNote
mix_attainment_pctsum(least(completed_qty, scheduled_qty)) / nullif(sum(scheduled_qty), 0)Non-additiveCredit is capped per item-line-period before it is summed, so overbuilding one item cannot pay for missing another. The cap is an authored convention, not a standard — no located source defines schedule attainment — which is why volume attainment is published beside it rather than replaced by it.
volume_attainment_pctsum(completed_qty) / nullif(sum(scheduled_qty), 0)Non-additiveShown beside mix attainment as context; a perfect volume score can still be the wrong mix.
schedule_shortfall_qtysum(greatest(scheduled_qty − completed_qty, 0))AdditiveThe quantity still missing against the frozen commitment, normalized into the item's base unit before rollup.
overbuild_qtysum(greatest(completed_qty − scheduled_qty, 0))AdditiveReported as its own problem rather than credited against another item's shortfall.
completion_variance_qtysum(completed_qty − scheduled_qty)AdditiveSigned net volume variance; never substitute it for the separate shortfall and overbuild components.

On Databricks AI/BI

Rendering notes for building this wireframe on Databricks AI/BI dashboards. Where a capability below comes from hands-on checking rather than documentation, it was verified in one workspace on 2026-08-24 — a point-in-time observation, not a vendor commitment; re-check in your own workspace before committing a design to it.

What this wireframe needs from Databricks AI/BI, whether the platform provides it, and how to build it
NeedStatusNote
Mix credit capped per item × line × period before anything rolls upWorkaroundWidget-level aggregations are simple transforms — sum, average, min, max, count, count distinct, variance, standard deviation, first, last, percentile and median, the list enumerated in one workspace on 2026-08-24 — and none of them caps one column against another. Compute the capped credit in the dataset SQL as a per-row least() of completed and scheduled quantity, materialize it as its own column, and let the tiles and the table sum that column. Vendor guidance points the same way: complex conditional logic belongs in the dataset SQL, not the widget.
The frozen schedule version pinned in the filter barNativeMake the planning fence a parameter: it is substituted into the dataset SQL and re-runs the query, so every widget on the page reads the same frozen version. Carry the freeze timestamp as a column on that query so the pinned version is legible on the page rather than only inside the filter.
Frozen schedule, week-end restatement and completions distinguishable in one chartNativeThe line chart's Pattern section sets solid, dashed or dotted per Y-series, verified in one workspace on 2026-08-24. Dash the restatement and leave the frozen schedule and the completions solid.
Plant and line cuts that keep the capped arithmetic intactNativeOne rule comes with it: cut on the component dataset — the one carrying credited and scheduled quantity per row — so every percentage at every cut re-derives from summed credited over summed scheduled. Parameter filters re-run the SQL and field filters on datasets of 100K rows or fewer re-slice returned rows; both stay correct only while those rows carry components rather than a finished percentage.

Sourcing it from SAP

PLAF carries planned orders before conversion; AFKO and AFPO carry production-order header and item quantities. AFRUcarries confirmations and yield at the operation trail. For the numerator, settle whether final-operation confirmation or goods receipt is the plant's completion event and keep that choice stable.

None of those current-state tables is the frozen schedule. Extract the approved planning run at the fence intodim_schedule_version and the fact before orders are re-cut. Otherwise the dashboard inherits the same schedule laundering the KPI definition warns about.

Sourcing it from JD Edwards

F4801 and F4801T carry the work order and its manufacturing detail; F3112 provides routing-operation context. Completion inventory movements land in F4111, which is the event source for completed quantity after document types are scoped.

Convert Julian dates before assigning schedule periods, apply implied-decimal divisors before quantity arithmetic, and join on the full company/document key. The frozen schedule version still has to be persisted outside the living work-order records.

Sourcing it from Dynamics 365

ReqTrans provides the planned requirement side, ProdTable the production order, and InventTrans the report-as-finished inventory event. Store the selected planning run before firming or replanning changes it.

Pin DataAreaId throughout, decode production statuses from metadata, and resolve inventory dimensions before assigning a site or warehouse. An order marked complete is not itself a completed quantity; the numerator comes from the posted event.

Sourcing it from Infor M3

MWOHED carries the manufacturing-order commitment; MWOOPE supplies operation and work-center context, and MWOMAT keeps the material side available for root-cause drill-through without pretending it explains every miss.

Pin CONO, convert numeric YYYYMMDD dates, normalize quantities into the item's basic unit, and decode the status ladder before selecting the completed event. Snapshot the schedule before the order's plan fields move.

Sourcing it from Oracle EBS

WIP_DISCRETE_JOBS carries the planned job quantity, WIP_OPERATIONS the routing and department context, and WIP_MOVE_TRANSACTIONS the movement through operations. Finished output is anchored in MTL_MATERIAL_TRANSACTIONS rather than a job status.

Inventory organization and operating unit are different keys in EBS; assign plant and line through the inventory-org and WIP context, not ORG_ID by reflex. Take the schedule snapshot before job releases and reschedules overwrite the commitment you intend to score.

Sourcing it from Oracle Fusion

WIE_WORK_ORDERS_B carries the work order, WIE_WO_OPERATIONS_B its operation and work-center context, and WIE_OPERATION_TRANSACTIONSthe reported output. Use final-operation completion for the numerator unless the plant's contract explicitly chooses another event.

Fusion Cloud has no direct SQL path; the physical names describe the source model and the extract must use the verified BICC/PVO surfaces available for those tables. Decode user-defined work-order statuses through their system status and keep business-unit and inventory-organization scope explicit.

Running the workshop

Settle three decisions before drawing the dashboard:

  1. Which schedule version is the commitment? Name the planning fence, approval event, and freeze timestamp. If the team cannot point to the stored snapshot, the score is not ready to publish.
  2. Which event counts as completion? Final-operation confirmation, report-as-finished, or finished goods receipt can differ by hours or days. Choose one and keep starts and WIP out of the numerator.
  3. Which unit and period own the comparison? Normalize quantity before summing and choose shift, day, or week based on the review cadence — not on whichever timestamp is easiest to extract.

Then name the anti-patterns: a current schedule masquerading as a frozen one, total volume presented without mix, overbuild netted against shortfall, percentages averaged across weeks, and a plant score with no path to the item-line-period rows behind it.

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 SAP, Oracle, Microsoft, or Infor. Product names are trademarks of their respective owners.