Scheduling

How the scheduler chooses placements, and every option that controls it.

Run a schedule

Click Schedule in the top bar to open the Run Scheduler modal. Pick a direction, sort order and constraints, then PreviewApply. APS runs the engine client-side — nothing is committed to Odoo until you publish.

Direction

Forward

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. Material availability (if enabled) is only enforced in this mode.

Backward (just-in-time)

Every operation ends as late as possible before its due date. Good for minimising work-in-progress and storage. Late orders surface immediately.

Bidirectional

Schedules around locked & anchor operations. Predecessors push backward from each anchor, successors push forward. Use after locking key milestones.

Sort order (which job goes first)

When two operations compete for the same time slot, the sort order decides who wins.

  • Priority — lower priority value wins. Ties broken by due date (earlier first), then hierarchy (children before parents).
  • Due date — earliest due date wins. Ties broken by priority, then hierarchy.
  • Earliest start — operations already scheduled earliest win. Useful for tweaks that should preserve existing order.
Priority is inherited. A parent MO's priority is propagated to all its children so a tree is scheduled as one cohort. You can't accidentally schedule a sub-assembly later than its parent.

Freeze horizon

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.

  • 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.
  • No freeze window — switch on to ignore freeze entirely.

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).

Include past work orders

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.

Use alternative resources

When the assigned work center is congested, APS can move an operation to an equivalent one configured in Odoo. The first alternative with a free slot is chosen. Disable if you want strict per-resource assignment.

Capacity mode

  • Finite (default) — respects work-center capacity. Two ops can't overlap on the same unit.
  • Infinite — overlaps allowed. Useful for “ideal world” lead-time analysis.

Material-aware scheduling

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:

  • Forward — enforces material availability by delaying placement until parts are on hand.
  • Backward — keeps the deadline-anchored placement but post-validates materials and flags MATERIAL_LATE / MATERIAL_SHORTAGE conflicts on infeasible ops, so you can spot what won't finish on time without expediting.
  • Bidirectional — ignores material constraints entirely.

See Materials for details.

What happens during a run

  1. Operations are sorted (sort order setting)
  2. Freeze horizon locks past + near-future ops in place
  3. Engine walks the sorted list, placing each op in its earliest legal slot
  4. Capacity, calendar, dependencies, alternatives and (optionally) materials are checked
  5. If no slot fits, the op is flagged with a conflict (you'll see it on the Gantt)

Nothing is committed to Odoo. The plan lives in the active dataset until you Publish to Odoo.

APS 4 Manufacturing

Built by Avalah

Odoo Gold Partner

APS 4 Manufacturing

Built by Avalah

Odoo Gold Partner