How the scheduler chooses placements, and every option that controls it.
Click Schedule in the top bar to open the Run Scheduler modal. Pick a direction, sort order and constraints, then Preview → Apply. APS runs the engine client-side — nothing is committed to Odoo until you publish.
Every operation starts as early as possible, respecting dependencies and resource capacity. Use when you want to know the earliest you could complete each order.
Every operation ends as late as possible before its due date. Good for minimising work-in-progress and storage. Late orders surface immediately.
A bill of material is exploded level by level. The finished order is placed against its own deadline; each sub-assembly is then backed up from the moment its parent needs it, not from a deadline of its own. An order whose deadline has already passed cannot be backed up from it at all — it is planned forward from now, in sequence, and reported once as PAST_DEADLINE.
Schedules around locked & anchor operations. Predecessors push backward from each anchor, successors push forward. Use after locking key milestones.
When two operations compete for the same time slot, the sort order decides who wins.
The freeze horizon protects the imminent future from being rescheduled. Any work order whose current operation_start falls inside the freeze window is locked in place during this run.
Two rules sit above the setting: work that is running or finished is never moved, whatever the horizon says, and work that should have started days ago and never did is not treated as in flight — it is rescheduled rather than left sitting in the past.
0 — freeze only operations already in the past.1 — freeze the past plus the next 24 hours.7 — freeze the past plus the next 7 days.Use higher values to keep the shop floor stable: workers don't want a new plan dropped on them mid-shift. Use No freeze window when rebaselining everything (e.g. after a major disruption).
Even with no freeze, an op whose start is in the past is left where it is by default. Switch this on to pull all past-scheduled ops forward into the future and reschedule them as if unscheduled. Useful when old data has accumulated.
When the assigned work center is congested, APS can move an operation to an equivalent one configured in Odoo. The candidate that frees the operation earliest is chosen, and only work centers listed as alternatives in Odoo are ever considered. Duration is recalculated for the work center that gets the job, so a slower or higher-capacity alternative changes the time the operation takes. Disable if you want strict per-resource assignment.
This works alongside the material settings: an operation moved to an alternative still cannot start before its components arrive, and an order left out for lack of material is not resurrected by having a second work center free.
Switch on Respect material availability to delay an MO until all its BOM components are in stock or arriving on a confirmed PO. APS uses FIFO supply allocation: higher-priority orders claim supply first.
Per direction:
MATERIAL_LATE / MATERIAL_SHORTAGE conflicts, so you can see what needs expediting rather than having the date quietly moved.All five presets ask for material awareness. One further choice sits on the Custom tab:
You do not need a separate setting to keep blocked work out of the early slots. The material floor already holds an order back to the date its parts arrive, so the time in front of that date stays available to work that can actually run.
See Materials for details.
Nothing is committed to Odoo. The plan lives in the active dataset until you Publish to Odoo.