Clone the live plan, try changes, publish only what works.
Your default dataset is called Live. It mirrors Odoo every sync. Live is read-only — you cannot run the scheduler against it or edit ops directly. Treat Live as the canonical reference state.
To plan, you create a scenario (an editable working copy of Live). All scheduling and edits happen inside scenarios.
A scenario is a named, editable copy of a dataset. Create one when you want to:
Scenarios are completely isolated. Editing a scenario does not touch Live or Odoo until you explicitly publish.
APS clones the currently-active dataset — usually Live — into a new scenario, copying every MO, WO, BOM line, locked state and priority. The Locked column on this page counts the locks each plan carries, read fresh every time, so you know how many decisions are in it before a run. Unlock all on the Work Orders page clears them. You're switched into the new scenario automatically.
Use the dataset switcher in the top bar to move between Live and your scenarios. Every page — Schedule, Orders, Materials — updates to show the active dataset's data.
Inside a scenario you can:
Tick two to ten datasets on the Datasets page and press Compare selected. The plans sit side by side as columns, measured inside one horizon you pick at the top: the whole plan, or the next 7, 30 or 90 days.
Below the table is the only list: orders that come out differently, finished in one plan and not another or more than a day apart, widest spread first, with each plan's finish and priority. Everything that moved by minutes is left out on purpose; on a real plant that list runs to hundreds of rows and says nothing. An order's row opens the schedule on the last column's plan with the first column as baseline, see Work orders for the ghost bars.
When you're happy with a scenario, click Publish in the top bar. APS writes the scenario's schedule (start dates, resource assignments) onto the matching MOs in Odoo. Only fields APS owns are touched — quantities, customers, products, etc. remain untouched.
Update material reservations is on by default. After the dates are written, APS releases the reservations it is allowed to touch and hands the stock back out in the order the plan starts the manufacturing orders: the order planned to start first is served first, whatever its priority. Orders the plan leaves without a date come last, rush orders first among them, then highest priority, then earlier deadline. Work that has already started keeps its material. The run has already shared out what Odoo reserved for orders free to move (see Materials), so this is the step that makes Odoo agree with the plan.
Publishing moves the dates of sub-assembly orders too. That is Odoo's own behaviour: a component's need date follows the order that consumes it, the same way Odoo's own Plan button works. The delivery date of the finished order, which comes from the sales order, is not touched.
Unplan what this plan leaves out is the second switch, and it is off unless you turn it on. With it, an order the run deliberately left out of the plan — because nothing covers its components — also has its dates cleared in Odoo, so the shop floor is not left looking at a date APS no longer stands behind.
Old scenarios cost nothing but clutter the switcher. Delete from the Datasets page when no longer relevant. Live cannot be deleted.