- Home
- Apps
- Specialized Solutions
- Finite Capacity Planning & Scheduling (APS)
Illustrative previewConstraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic,
sequence-optimized production plans.
What is Finite Capacity Planning & Scheduling (APS)?
Constraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic, sequence-optimized production plans. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Odoo's stock manufacturing scheduler is infinite-capacity by default: it back-schedules work orders from the deadline as if every work center could absorb unlimited load, so a plan can show three jobs "running" on the same CNC cell at the same hour. On paper the MO is on time; on the floor the queue explodes, planners re-sequence by hand in a spreadsheet, and promised dates slip. This build-to-order module replaces that behaviour with a true Advanced Planning & Scheduling (APS) engine that respects finite capacity, work-center shifts and calendars, setup and changeover times, and order priority.
ECOSIRE designs, builds, installs and supports this module for your specific manufacturing.mo / mrp.workorder flows — it is NOT an instant apps.odoo.com download. We scope your work centers, routings, shift calendars and sequencing rules, then deliver a purpose-fit module for Odoo 17, 18 or 19 (Community or Enterprise). The engine adds a finite-capacity solver on top of your existing routings and BoMs: work orders are placed into real time slots on each resource.resource_calendar, respecting concurrent-capacity limits, setup time carried on the work center or operation, and changeover cost when the product/attribute changes between consecutive jobs. Sequencing is driven by due date, MO priority and your custom weighting, and every plan is written back to the standard date_planned_start / date_planned_finished fields so the rest of Odoo (deliveries, MRP, reporting) stays coherent.
Planners work in a drag-and-drop Gantt (OWL front-end, backed by a dedicated planning model with computed load fields via @api.depends). Move a work order and the engine recomputes downstream slots, highlights any capacity conflict or calendar violation, and flags orders that will now miss their commitment date. Bottleneck and overload heat views show which work centers are the constraint so you plan the whole line around them. Access is governed by ir.model.access.csv plus record rules so shop-floor users see their cell while planners see the full board, and a QWeb dispatch/sequence report prints the finalized schedule per work center. An automated action (or scheduled ir.cron) can re-run the solver on new confirmed MOs, and the schedule is reachable over XML-RPC / JSON-RPC for MES or external APS dashboards. The result: dates you can actually commit to, less manual re-planning, and visibility into the real constraint on your floor.
What you get
- Purpose-built Odoo module (source code) scoped to your manufacturing.mo, mrp.workorder, work centers and routings — installable on Odoo 17, 18 or 19
- Finite-capacity solver configured to your concurrent-capacity limits, setup/changeover data and per-cell sequencing rules
- Work-center shift calendars and resource.resource_calendar configuration matched to your real shift patterns, breaks and holidays
- Security layer: ir.model.access.csv access rights and record rules distinguishing planner vs shop-floor roles
- QWeb dispatch/sequence report template plus the drag-and-drop Gantt planning view, styled to your workflow
- Deployment on your environment (Odoo.sh, ECOSIRE managed hosting, or your self-hosted server) with data migration of existing routings/calendars where applicable
- Admin and planner documentation plus a live training session for your planning team
- Post-launch support window with bug fixes and Odoo minor-version compatibility, and an optional ongoing support/updates plan
Who this is for
Make-to-order production planner
Plans jobs against real machine capacity every day and is tired of Odoo showing on-time MOs that pile up on the same cell. Needs a finite-capacity Gantt where sequencing by due date and priority reflects what the floor can actually run this shift.
Operations / plant manager in complex multi-stage manufacturing
Owns delivery performance across routings with shared bottleneck resources. Wants bottleneck and overload visualization to see the true constraint and commit dates that hold up, without buying a separate standalone APS system alongside Odoo.
Manufacturing IT / Odoo ERP administrator
Maintains the Odoo instance and its integrations. Values a module built on standard models (mrp.workorder, resource.resource_calendar), governed by ir.model.access.csv and record rules, that writes back to native date fields and exposes the schedule over XML-RPC/JSON-RPC for MES and BI.
How Finite Capacity Planning & Scheduling (APS) Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| Finite-capacity scheduling (respects concurrent work-center limits) | Yes — dedicated solver places jobs into real capacity slots | Possible but you build and maintain the solver yourself | Varies; many generic APS apps assume simplified capacity | No — Odoo core back-schedules with infinite capacity |
| Setup-time & changeover-aware sequencing | Yes — setup carried per work center/operation, changeover penalty between differing jobs | Only if you design and code the rules | Rarely; usually fixed durations with no changeover cost | No — setup time not used to optimize sequence |
| Fit to your routings, shifts & sequencing rules | Built to order around your exact work centers and calendars | Fully custom, but on your time and risk | Generic; you adapt your process to the app | Generic core behaviour, no tailoring |
| Drag-and-drop Gantt with live conflict highlighting | Yes — OWL Gantt recomputes downstream slots and flags conflicts | Requires significant front-end work to replicate | Sometimes, but conflict logic is often shallow | Enterprise Gantt exists but does not enforce finite capacity |
| Bottleneck & overload visualization | Yes — per-work-center load heat views surface the constraint | Build it yourself with custom computed fields and views | Occasionally; depth varies by vendor | No dedicated bottleneck view |
| Writes back to native date_planned fields (no shadow schedule) | Yes — MRP, deliveries and reports stay coherent | Depends on your implementation discipline | Some keep a parallel schedule that drifts from core | Native by definition, but infinite-capacity dates |
| Delivery, installation & training by the builder | Yes — scoped, installed, trained and supported (one working week) | You own delivery and training internally | Self-install download; support via generic ticket queue | No project; you configure it yourself |
| Support window + Odoo 17/18/19 compatibility | Included window plus optional ongoing plan | You maintain it every version | Vendor-dependent, often per-version repurchase | Covered by your Odoo subscription/patches only |
Frequently Asked Questions about Finite Capacity Planning & Scheduling
How long does delivery take, since this isn't an instant download?
This is a build-to-order module, not an off-the-shelf apps.odoo.com download, so there is no instant download. After purchase we run a short scoping call to capture your work centers, routings, shift calendars and sequencing rules, then build, install and validate the module on your Odoo 17, 18 or 19 environment. Typical lead time is one working week depending on the number of work centers, changeover complexity and any MES/BI integration. You will get a written delivery timeline during scoping.
What support and updates are included after go-live?
Every engagement includes a post-launch support window covering bug fixes and compatibility with Odoo minor releases on your major version. Because the module is built on standard models and writes back to native date_planned fields, it stays compatible when you patch within a major version. Moving between major versions (for example 17 to 18) is an upgrade we scope separately. An optional ongoing support and enhancement plan covers new sequencing rules, added work centers and priority changes over time.
Why not just use Odoo's built-in manufacturing scheduler?
Odoo core schedules with infinite capacity: it back-schedules work orders from the deadline as if each work center had unlimited concurrent capacity, so plans can show multiple jobs on the same cell at once. That looks on-time in the MO but overloads the floor and forces manual re-sequencing. This module adds a real finite-capacity solver that respects concurrent-capacity limits, shift calendars, setup and changeover time, and order priority — giving you dates you can actually commit to.
Does it work with Odoo Community or only Enterprise?
Both. The module is built on manufacturing (mrp), routings and resource.resource_calendar, which exist in Community and Enterprise. We target Odoo 17, 18 and 19. On Enterprise we can align with the native Planning/Gantt look and feel; on Community we ship our own OWL drag-and-drop Gantt so the planner experience is the same. We confirm your exact edition and version during scoping.
Will it break my existing MOs, deliveries and reports?
No. The engine writes its results back to the standard mrp.workorder date_planned_start and date_planned_finished fields rather than a parallel shadow schedule, so MRP, deliveries and native reporting read the same dates you plan. It layers on top of your existing routings and BoMs without replacing them, and access is scoped with ir.model.access.csv and record rules so it does not change what other users can see or do.
Can it integrate with our MES or external dashboards?
Yes. The planning model is reachable over Odoo's XML-RPC and JSON-RPC API, so an MES can pull the finalized sequence and push actual start/finish times back, and tools like Power BI can read work-center load and utilization. We can also add automated actions or an ir.cron job to re-run the solver automatically when new MOs are confirmed. Integration scope is agreed during the initial call.
Related Modules

Field Service & Maintenance Contracts
Custom-built Odoo module: dispatch technicians to sites with contracts, SLAs, work orders, checklists and on-site invoicing.

Fleet Rental Management
A build-to-order Odoo module that turns your fleet into a rentable inventory — availability calendars, rate cards, contracts, check-in/check-out and automated billing. ECOSIRE designs, builds, installs and supports it for your Odoo 17/18/19.

Fleet Repair & Workshop Service Center
Custom-built Odoo workshop module for fleets: service intervals, job-order workflow, technician checks and parts consumption per repair.
Finite Capacity Planning & Scheduling
Constraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic, sequence-optimized production plans.
- Finite-capacity solver that places every work order into a real time slot on its work center, honoring concurrent-capacity limits instead of Odoo's infinite-capacity back-scheduling
- Work-center shift and calendar awareness built on resource.resource_calendar — jobs are only scheduled inside working hours, across breaks, holidays and multi-shift patterns
- Setup-time and changeover-aware sequencing: carries setup time on the work center/operation and adds a changeover penalty when product, attribute or tooling changes between consecutive jobs
- Priority and due-date driven order sequencing using MO priority, commitment date and a configurable weighting rule so the most critical orders claim capacity first
