Constraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic, sequence-optimized production plans. One-time license from $499.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Constraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic, sequence-optimized production plans.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
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.
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
Drag-and-drop Gantt re-planning in an OWL interface — move a work order and the engine recomputes downstream slots in place
Real-time conflict highlighting: capacity overloads, calendar violations and orders that will now miss their due date are flagged the instant a plan changes
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.
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.
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.
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.
Buy the license on ecosire.com and download the Finite Capacity Planning & Scheduling (APS) module ZIP from your account dashboard.
Extract the ZIP into your Odoo custom addons folder on the server (or upload via Apps > Install from file on Odoo.sh / runbot).
Activate Developer Mode, open Apps, click Update Apps List, search for Finite Capacity Planning & Scheduling (APS), and press Install.
Open the new menu, paste your ECOSIRE license key, connect any external credentials (Shopify, Amazon, Stripe, etc.), and save.
Run the built-in connection test, sync your first 10 records, and schedule the recurring cron. Contact support if anything fails.
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| 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 | |
| Delivery, installation & training by the builder | Yes — scoped, installed, trained and supported (2–4 weeks) | You own delivery and training internally | Self-install download; support via generic ticket queue | |
| Support window + Odoo 17/18/19 compatibility | Included window plus optional ongoing plan | You maintain it every version | Vendor-dependent, often per-version repurchase |
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 2 to 4 weeks depending on the number of work centers, changeover complexity and any MES/BI integration. You will get a written delivery timeline during scoping.
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.
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.
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.
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.
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.
Constraint-based finite-capacity APS for Odoo that replaces the infinite-capacity default with realistic, sequence-optimized production plans.