Available Reports
Essembi includes a set of built-in manufacturing reports available in the main module. Each report is powered by a dedicated data engine that queries production data across work orders, routings, lines, formulas, and related tables. Reports support schema table filters for narrowing results and report options for controlling time windows, dimensions, and calculation behavior.
How Filters Work
Two layers of filtering apply to most reports:
- Report options — Fields shown in the report UI such as time window, dimension, and toggles like "Subtract Incident Time."
- Schema table filters — Tables available to narrow results in the reporting UI, such as Work Order, Line, Routing, and Formula.
Shared Production Concepts
The following concepts apply across all routing-based reports and are referenced throughout the individual report definitions below.
Effective Schedule (Run Time Window)
Run time for a routing is derived from WorkOrderRouting.GetEffectiveSchedule(). The logic is as follows:
- If
ActualStartis null: the span usesPlannedStart→PlannedFinish. - If
ActualStartis set andActualFinishis set: span =ActualStart→ActualFinish. - If
ActualStartis set andActualFinishis null (in-process): span =ActualStart→ UTC now.
Elapsed hours for a routing are (finish - start).TotalHours, optionally adjusted for incident time depending on the report.
Effective Run Time and Quantity (Standard / Planned Side)
GetEffectiveRunTime(quantity) and GetEffectiveQuantity(runTimeMinutes) use the linked Routing values, plus any active overrides from a Run Rate Rule applied via RoutingOverrideEngine.
- Fixed time type: Run time for a batch does not scale with quantity.
-
Per-unit time type: Uses yield =
quantity × ExpectedYield% / 100; ideal minutes per unit =RunTimeMinutes / yield; scales to the requested quantity or run minutes.
Subtract Incident Time
When the "Subtract Incident Time" option is enabled, incident duration is removed from elapsed routing hours before calculations. Behavior differs by report:
- Run Rates – By Work Order and Labor reports: All active incident durations are subtracted, regardless of incident type.
- Run Rates – Hourly Buckets: Only incidents flagged as Downtime type are subtracted, limited to their overlap with each hour bucket.
Routing Override Rules
Before many calculations, RoutingOverrideEngine.Apply may override the effective TimeType, RunTimeMinutes, Quantity, and ExpectedYield% for a work order routing. Standard and expected units respect active Run Rate Rules when configured.
Active Work Orders
A real-time status and forecast view for currently active work orders. Shows actual hours, run rate performance, projected quantities, and incident status across all started production routings.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Work Order, Line, Formula, Routing, Work Order Routing |
| Fixed engine behavior | Include in-process: yes · Include work orders without finishes: yes · Subtract incident time: no (not user-configurable for this report) |
| Query scope | Only work orders with status Active that have at least one production routing (Routing.Production = true) with an ActualStart. |
Output Fields
| Field | Description |
|---|---|
| Start Time | Earliest ActualStart across all started production routings. |
| Actual Hours | Summed elapsed hours across started production routings using effective schedule. |
| Remaining Hours | Effective run time for remaining quantity (planned minus finished) on the active runtime routing. |
| Planned Quantity / Finished Quantity | Planned quantity from the work order; finished quantity summed across started production routings. |
| Projected Quantity | Effective quantity from the runtime routing over elapsed actual hours. Clamped to planned quantity. |
| Quantity Delta | Projected quantity minus planned quantity. |
| Standard Units/Hour | Derived from GetEffectiveQuantity(60) on the current production routing. |
| Actual Units/Hour | Finished quantity divided by actual hours. |
| Run Rate % | (Actual Units/Hour / Standard Units/Hour) × 100 |
| Total Incident Hours | Sum of all incident durations. Open incidents use UTC now as the finish time. |
| Earliest Incident Time | The earliest incident start across all active incidents on the work order. |
| Active Incident / Active Routing | First incident with a start and no finish; first routing currently running. |
Labor Costs – By Work Order
Labor efficiency analysis grouped by individual work order, line, and formula. Compares actual labor cost per unit to the target labor cost per unit and calculates the delta.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Work Order, Line, Formula, Routing, Work Order Routing |
| Report options | Include In-Process Work Orders (default: off) · Include Work Orders Without Finishes (default: off) · Subtract Incident Time (default: off) |
| Query scope | Production routings with ActualStart set and Routing.Quantity > 0. When Include In-Process is off, routings without ActualFinish are excluded. |
| Grouping | Work Order + Line + Formula (formula sourced from the routing join). |
Output Fields
| Field | Description |
|---|---|
| Finished Quantity | Total finished units across all routings in the group. |
| Total Hours | Sum of per-routing elapsed hours from effective schedule, minus incident time if enabled. |
| Total Labor Cost | Sum of WorkOrderRouting.CalculateLaborCost(). Requires ActualStart and ActualFinish. Uses elapsed hours × line operators × loaded cost per worker (from line, falling back to facility). |
| Labor Cost / Unit | Total labor cost divided by finished quantity. |
| Target Labor Cost / Unit | Sum of distinct routing targets using WorkOrder.LineOperators, loaded cost, and Fixed vs. Per-Unit routing math. |
| Delta Cost | Difference between actual and target labor cost per unit, rounded to 2 decimal places. |
| Delta Cost % | Delta as a percentage of the target cost. |
Labor Costs – By Formula
Labor efficiency rolled up by formula and line across multiple work orders. Useful for identifying which formulas are over or under target labor cost across production runs.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Line, Formula, Routing, Work Order, Work Order Routing |
| Report options | Include In-Process Work Orders (default: off) · Include Work Orders Without Finishes (default: off) · Subtract Incident Time (default: off) |
| Query scope | Same production routing base query as By Work Order. Formula is required (formula ID > 0). Groups by Formula + Line. |
| Grouping | Formula + Line. The Work Order field is intentionally blank on each row — this is an aggregate across jobs. |
Output Fields
Same labor, target, and delta fields as Labor Costs – By Work Order, with the following addition:
| Field | Description |
|---|---|
| Work Order Count | Count of distinct work orders contributing to the formula/line combination. |
OEE – Daily Buckets
Daily OEE trend for a selected dimension over a configurable number of days. Results are aligned to local calendar days using the organization's timezone offset.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Shift, Line, Routing, Work Order, Work Order Routing, Formula |
| Dimension | Global, Facility, Shift, Line, Work Order Routing, Formula, Work Order |
| Report options | Number of Days (default: 7) · End Date (supports Equal, Today, Yesterday, Tomorrow) |
| Query scope | Only work orders of type Production Job with active work order and routing records. |
Output Fields
| Field | Description |
|---|---|
| Bucket Date | Local calendar date for the bucket, aligned using timezone offset. |
| Start / Finish | UTC start and finish of the day bucket. |
| Availability | See OEE Calculations below. |
| Performance | See OEE Calculations below. |
| Quality | See OEE Calculations below. |
| OEE | Availability × Performance × Quality, stored as a percentage. |
OEE – Hourly Buckets
Intraday OEE trend broken into one-hour buckets for a selected dimension. Useful for identifying hour-by-hour performance shifts within a production run.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Shift, Line, Routing, Work Order, Work Order Routing, Formula |
| Dimension | Global, Facility, Shift, Line, Work Order Routing, Formula, Work Order |
| Report options | Number of Hours (default: 24) · End Time (supports presets: Today, Last Week, In Last 8 Hours, and others) |
| Query scope | Same as OEE – Daily Buckets. End time is rounded up to the next hour boundary if not already on the hour. |
Output Fields
Same OEE component fields as Daily Buckets, bucketed by hour instead of day.
OEE – Time Span
A single OEE aggregate for an arbitrary start-to-end window. Returns one result row per selected dimension value rather than bucketed intervals.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Shift, Line, Routing, Work Order, Work Order Routing, Formula |
| Dimension | Global, Facility, Shift, Line, Work Order Routing, Formula, Work Order |
| Report options | Start Time (optional; defaults to 7 days before End Time if not provided) · End Time (supports same presets as Hourly Buckets) |
Output Fields
Same OEE component fields as Daily and Hourly Buckets. The interval equals End Time minus Start Time. Returns one aggregate row per dimension value.
OEE Calculations (Shared Across All Three OEE Reports)
OEE = Availability × Performance × Quality, stored and displayed as percentages. All three components are calculated per routing span and then aggregated with weighted averages based on overlap duration within each bucket or time span.
| Component | Calculation |
|---|---|
| Availability | If a line standard is configured, that value is used. Otherwise: (planned minutes − downtime minutes) / planned minutes, clamped to 0–1. Downtime minutes are incidents flagged with the Downtime type, clipped to the span. |
| Performance | If a line standard is configured, that value is used. Otherwise, for production routings: expected run time for finished quantity / actual run time. Actual run time subtracts all incident minutes in the span (not only downtime). Clamped to 0–1. |
| Quality | If a line standard is configured, that value is used. Otherwise: (finished − rejected) / finished. Quality rejections within the slice are used. Clamped to 0–1. |
| Line dimension override | When reporting by line dimension, if the line has Standard Availability, Performance, or Quality values configured, those replace the aggregated component values for the row before OEE is recomputed. |
Production Events
A timeline and event feed combining work order routing windows and incident windows into a single chronological view. Useful for reviewing what was running and when incidents occurred across lines during any time period.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Line, Facility, Work Order Routing, Work Order, Incident |
| Report options | Lines (multi-select) · Facilities (multi-select) · Start Time · End Time (default: last 24 hours UTC) |
| Query scope | Work order routing events: ActualStart < End and (ActualFinish ?? now) > Start. Incident events: Start < End and Finish > Start (open incidents use UTC now as finish). Both respect any Facility filtered-set constraints configured in the app. |
Output Fields
| Field | Description |
|---|---|
| Start Time / End Time | Event window. Open work order routings and open incidents use UTC now as a temporary end. |
| Line / Facility | The line and facility associated with the event. |
| Record Type | Identifies whether the event is a work order routing or an incident. |
| Description / Type | Work order events use the work order number and type. Incident events use the incident descriptor and incident type label. |
| Color | Work order color or incident type color, used for visual rendering in timeline views. |
Run Rates – By Work Order
Actual versus standard run-rate performance grouped by work order, line, and formula. Shows whether each work order ran at, above, or below standard and by how many units.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Work Order, Line, Facility, Formula, Routing, Work Order Routing |
| Report options | Include In-Process Work Orders (default: on) · Include Work Orders Without Finishes (default: off) · Subtract Incident Time (default: off — subtracts all incident types) |
| Query scope | Production routings with ActualStart set and Routing.Quantity > 0. Routing Override Rules are applied before calculations. Grouping: Work Order + Line + Formula (formula prefers the work order's formula over the routing's when both exist). |
Output Fields
| Field | Description |
|---|---|
| Total Units | Finished quantity summed across all routings in the group. |
| Total Hours | Elapsed hours from effective schedule, minus incident time if enabled. |
| Expected Units | Units expected from GetExpectedUnits(runMinutes) over the same elapsed run minutes. |
| Units Delta | Total units minus expected units. |
| Standard Units/Hour |
GetStandardUnitsPerHour(totalUnits, plannedMinutes) where planned minutes come from GetEffectiveRunTime(finishedQty) per routing. |
| Actual Units/Hour | Total units divided by total hours. |
| Run Rate % | (Actual Units/Hour / Standard Units/Hour) × 100 |
Run Rates – Hourly Buckets
Hourly run-rate performance trend over a configurable time window. Breaks production output and efficiency into one-hour buckets to identify where performance improved or declined within a shift or day.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Work Order, Line, Facility, Formula, Routing, Work Order Routing |
| Report options | Include In-Process Work Orders (default: on) · Include Work Orders Without Finishes (default: off) · Subtract Incident Time (default: off — subtracts downtime incidents only) · Number of Hours (default: 24) · End Time · Dimension: Global, Line, or Work Order |
| Query scope | Routings overlapping the window [End − N hours, End): ActualStart < End and ActualFinish is null or ≥ start. End Time is converted from local to UTC using timezone offset. |
Output Fields and Bucket Calculation
| Field | Description |
|---|---|
| Bucket Date | Local date derived from bucket start plus timezone offset. |
| Total Units | Finished quantity assigned by finish timestamp to the containing hour bucket. Quantity is not spread across hours. |
| Run Minutes | Overlap of the routing's effective schedule with the hour, minus downtime incident overlap if Subtract Incident Time is enabled. |
| Expected Units |
GetExpectedUnits(runMinutes) for the bucket's run minutes, not full routing hours. |
| Standard Units/Hour |
GetStandardUnitsPerHour(expectedUnits, totalRunMinutes) — ties the standard rate to expected units and run minutes within the bucket. |
| Actual Units/Hour | Total units divided by run minutes converted to hours. |
| Run Rate % | (Actual Units/Hour / Standard Units/Hour) × 100 |
Throughput Summary
Summarized throughput from sensor captures, including quantity totals, difference between successive sensor readings, and run rate metrics. Only sensors with Record Throughput enabled contribute to this report.
Filters and Options
| Type | Details |
|---|---|
| Schema table filters | Sensor, Line Component, Line, Routing, Work Order, Work Order Routing, Formula, Facility, Shift |
| Dimension | Combinable flags: Work Order, Work Order Routing, Formula, Facility, Shift, Line, Line Component, Line Component Name (default: Line Component) |
| Report options | Start Time · End Time (default: now and now − 24 hours if not provided) |
| Query scope | Only Throughput rows where the linked Sensor has RecordThroughput = true and timestamp falls within [Start, End). Routing Override Rules are applied on distinct routings present in the data. |
Output Fields
| Field | Description |
|---|---|
| Start / Finish | Time window for the aggregated group. |
| Total Quantity / Average Quantity | Sum and average of captured sensor quantities within the window. |
| Total Difference / Average Difference | Within groups sharing the same line, routing, work order, formula, facility, and shift, records are ordered by sensor sort position. The first sensor's difference is 0; subsequent differences = current quantity − previous quantity. |
| Total Run Rate / Average Run Rate | Quantity or average quantity divided by window length in hours. Minimum of 1 hour is applied to avoid divide-by-zero when the window length is zero. |
| Run Rate % | When a work order routing exists: compares average quantity per record against expected units per hour derived from GetEffectiveRunTime(quantity). This is throughput-specific and differs from the run-rate helper used in By Work Order reports. |
| Index | Sort order based on average sensor sort position across the group. |
Shared Calculation Reference
The following formulas are used across multiple reports. Refer to this section when interpreting run rate and OEE values.
Run Rate Calculations
| Calculation | Formula |
|---|---|
| Ideal Cycle Time (Fixed) | Equals the routing's total run time regardless of quantity. |
| Ideal Cycle Time (Per-Unit) | RunTimeMinutes / (quantity × ExpectedYield% / 100) |
| Expected Run Time for Quantity (Fixed) | Constant routing run time. |
| Expected Run Time for Quantity (Per-Unit) | idealCycleTime × quantity |
| Expected Quantity for Runtime (Fixed) | Routing quantity (fixed batch). |
| Expected Quantity for Runtime (Per-Unit) | runTimeMinutes / idealCycleTime |
| Actual Units/Hour | totalUnits / totalRunHours |
| Standard Units/Hour |
totalUnits / (plannedMinutes / 60) or bucket equivalent using expected units over run minutes. |
| Run Rate % | (Actual Units/Hour / Standard Units/Hour) × 100 |
| Units Delta | actual units − expected units |
OEE Calculations
| Component | Formula |
|---|---|
| OEE |
Availability × Performance × Quality (expressed as a percentage) |
| Availability (no line standard) |
(planned minutes − downtime minutes) / planned minutes, clamped 0–1. Downtime minutes are incidents with the Downtime type, clipped to the report interval. |
| Performance (no line standard) |
expected run time for finished quantity / actual run time. Actual run time subtracts all incident minutes in the span. Clamped 0–1. |
| Quality (no line standard) |
(finished − rejected) / finished. Quality rejection quantities within the slice. Clamped 0–1. |
| Time slicing | OEE engines split routing spans into report intervals (day / hour / span). Metrics are aggregated using weighted averages based on each routing's overlap duration within the interval. |