Docs

Available Reports

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 ActualStart is null: the span uses PlannedStartPlannedFinish.
  • If ActualStart is set and ActualFinish is set: span = ActualStartActualFinish.
  • If ActualStart is set and ActualFinish is 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.
Back to help
On this page