Scheduler
The scheduler turns released work orders into a concrete timetable. It looks at the routing on each work order, the calendars on each work center, and the work centers’ available capacity — then drops every operation onto a specific time window. The result is a Gantt you can read and a per-work-center Load chart that shows how busy each resource is over time.
You’ll find the scheduler in three places:
- The Operations tab on each work order — shows the per-operation scheduled start/end and the Schedule / Clear schedule actions for that single WO.
- The Load tab on each work center — shows the day-by-day (or hour-by-hour) load picture for that WC.
- The Scheduler page under Manufacturing — the cross-WO Gantt with bulk re-scheduling.
Schedule a single work order
- Open the work order and stay on the Operations tab (it’s the default).
- Click the Schedule button in the toolbar above the operations grid.
- Pick a direction and an anchor date:
- Forward — slot every operation starting from the anchor date. The anchor is usually today or the day the components will be ready.
- Backward — work the timetable so that the last operation finishes on the anchor date. Useful when you have a promise date and want to find the latest possible release.
- Click Schedule. The grid refreshes — each operation now shows a Scheduled Start and Scheduled End.
Clicking Schedule again re-runs the scheduler. The scheduler keeps any operation that has already been started — it won’t lie about the past.
The Clear schedule button wipes every segment. Operations that have already started keep their actual_start_date; everything else is reset to no scheduled date.
To see the resulting timetable as a Gantt, open the Scheduler page under Manufacturing — it draws every WO segment on its work center lane.
Read the WC Load chart
The Load tab on each work center shows one bar per time bucket on a shared y-axis (labelled in hours, with dashed grid lines):
- Available capacity — the grey outer envelope, sized to “calendar open minutes × parallel capacity”.
- Committed — the blue inner bar drawn inside the envelope, sized to “sum of scheduled segments × parallelism”.
The toolbar above the chart shows the work center’s parallel capacity — how many operations can run on it at the same time. Pick Day for the 30-day overview, Hour for a 48-hour zoomed view. The info icon next to the granularity toggle opens a glossary explaining every concept on the chart.
When the inner bar turns red and exceeds the envelope, the bucket is over-committed — the scheduler had originally fit work, but a calendar exception (holiday, maintenance) added later shrank the available windows. Re-scheduling the affected WOs flushes the over-commit.
Hover any bar to see a tooltip listing every WO contributing to that bucket and how much time each one consumes.
The Scheduler dashboard
The dashboard (Manufacturing → Scheduler in the sidebar) is the cross-work-order view. Rows are work centers; rectangles are segments scheduled on them. Use the filters to narrow by date range, work center, or status.
Hover a rectangle for a tooltip with the work order number, work center, exact start/end, duration, and parallelism. Click the rectangle to open that work order’s detail page — handy when you want to drill into a specific WO without leaving the timeline.
The Re-schedule visible button runs the scheduler on every work order currently in scope. If you have a status filter set (e.g. Released), only WOs in that status are scheduled. If you have no filter, the scheduler picks every RELEASED and IN_PROGRESS work order.
The bulk dialog asks for the same direction + anchor date as the per-WO dialog. The result toast tells you how many WOs succeeded and how many failed — the dashboard refreshes automatically.
What automatic, what is manual?
| Action | When does it happen? |
|---|---|
scheduled_start_date / scheduled_end_date written on each operation | Each schedule run — refreshed from the segments produced. |
| Segments removed when you clear the schedule | When you click Clear schedule — operations that have started are kept. |
| In-progress operations preserved across re-runs | Every re-schedule — the scheduler reads actual_start_date and pins those ops in place. |
| WO list page Scheduled columns refresh | Every schedule run — they read the per-op rollup. |
| Auto re-schedule when a calendar exception is added | No. In Beelocity 1.x the scheduler runs only when you explicitly click. We don’t auto-rebuild commitments behind your back. |
When does the scheduler refuse to run?
A few situations the scheduler will report as errors:
- Routing cycle. If two operations declare each other as predecessor, scheduling is impossible. Fix the routing first.
- No calendar windows. If a work center has no open windows in the next 365 days, the scheduler can’t place an operation on it. Check the work center’s calendar and any active exceptions.
- Subcontract lead time missing. A subcontract operation must have
supplier_lead_time_daysset, otherwise the scheduler doesn’t know how long the supplier will hold the part. - No operations. The work order must have its routing snapshotted before scheduling. That happens at WO release — release the WO first.
- Anchor in the past. For forward scheduling, the anchor date must be today or later.
Every error is surfaced as a toast with a sentence telling you what to do.
What the scheduler does not do (yet)
- It doesn’t pick a different (alternate) routing when the primary work center is closed for the whole range. That’s coming in a later iteration.
- It doesn’t model supplier capacity for subcontract operations — every subcontract op gets a flat calendar-day lead time. Supplier calendars are on the roadmap.
- It doesn’t model individual operator schedules —
assignee_user_idis just a hint. - It doesn’t smooth load (level capacity) or minimize tardiness across the shop. v1 is greedy first-fit; if you need objective-function optimization, that’s v2.
See Work Orders for the Operations tab and Work Centers for the Load tab.