Dynamic multi-level approval chains and conditional workflows on any Odoo model — built, installed and supported by ECOSIRE. One-time license from $299.00 USD for Odoo 17, 18, 19 — includes 12 months of updates and support.

Dynamic multi-level approval chains and conditional workflows on any Odoo model — built, installed and supported by ECOSIRE.
No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.
Odoo's built-in approvals are narrow: the Approvals app covers a fixed set of request types, and beyond that you fall back to manual "state" fields, a lone approver group, or a hard-coded validation button. The moment Finance or Operations needs a real control matrix — "purchase orders over 50,000 need the department manager, then the CFO; anything above 250,000 also needs the CEO; if the manager is on leave it escalates after 48 hours" — native Odoo simply doesn't express it.
Define ordered approval stages per target model (sale.order, purchase.order, account.move, hr.expense, stock.picking, project.task, or any custom model) with no Python required
Role- and condition-based routing: assign each stage to a res.groups role, a related approver field (e.g. the record's department manager), or a domain condition evaluated against the document
Sequential AND parallel approval modes — chain tiers one after another, or require several approvers in the same stage to sign off simultaneously
Amount- and field-threshold rules using Odoo domains (e.g. amount_total > 50000 pulls in the CFO tier) recomputed via @api.depends whenever the source record changes
Time-based escalation: if an approver does not act within a configured SLA, an automated action reassigns or bumps the request to the next authority
Delegation rules so an approver on leave can hand their pending approvals to a backup, with the substitution recorded in the audit trail
The Multi-Level Approvals & Workflow Engine is a build-to-order Odoo module that ECOSIRE designs, develops, installs, and supports for your specific control requirements. It layers a configurable approval and workflow layer on top of ANY Odoo model — sale.order, purchase.order, account.move, hr.expense, stock.picking, project.task, or a custom model you own — without you writing a single line of Python.
At the core is an approval-definition model (models.Model) that lets an administrator define, per target model, an ordered set of stages. Each stage carries an approver rule expressed as a role (an ir.model.access / res.groups mapping or a related field like the record's department manager), a condition domain evaluated against the record, and a mode (sequential or parallel). Computed fields with @api.depends recalculate the required approver set and the live approval status whenever the source document changes, so a purchase order that crosses a threshold automatically pulls in the next tier. Every approval, rejection, delegation, and escalation is written to an immutable approval-history model, giving you a complete, timestamped, per-user audit trail that satisfies internal-control and SOX-style review.
Because ECOSIRE builds this to your rules, the engine is not a black box. We ship the full addon — __manifest__.py, models, views (XML list/form + OWL widgets for the approval timeline), security via ir.model.access.csv and record rules that stop a requester from approving their own document, QWeb approval-certificate reports, and automated actions/server actions that fire the escalation and notification logic. Approval requests reach approvers by email and as in-app Discuss/activity notifications with one-click Approve / Reject / Delegate, and the whole engine is reachable over Odoo's XML-RPC and JSON-RPC API so external systems can submit and query approvals.
The module targets Odoo 17, 18 and 19 and works on both Community and Enterprise (we flag any stage feature that depends on an Enterprise-only app before we build). Typical delivery is 2–4 weeks depending on how many models and control tiers you need — you receive a working, tested, documented module deployed on your instance, not a template to finish yourself.
CFOs and controllers who need documented, tiered sign-off on purchase orders, vendor bills, and expenses — with thresholds, an audit trail, and segregation of duties that stands up to internal or external review.
Ops leads routing quotations, purchase orders, and stock transfers through department managers and budget owners, who need escalation when approvers stall and delegation when someone is on leave.
Governance stakeholders who require an immutable, timestamped record of every approval decision, enforced control policies, and exportable evidence (QWeb certificates) for audits and regulatory checks.
Buy the license on ecosire.com and download the Multi-Level Approvals & Workflow Engine 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 Multi-Level Approvals & Workflow Engine, 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 |
|---|---|---|---|---|
| Multi-level, multi-tier chains (sequential + parallel) | Fully configurable per model, no code | Possible but must be hand-coded per case | Often single-tier or fixed request types | |
| Condition/threshold-based routing (e.g. amount > X) | Domain-driven rules recomputed via @api.depends | Yes, if you write and maintain the logic | Sometimes, limited to preset fields | |
| Escalation on SLA breach + delegation for absent approvers | Built via automated actions to your rules | Rarely built — extra effort each time | Uncommon in off-the-shelf apps | |
| Immutable, timestamped audit trail | Dedicated approval-history model, per decision | Only if you design it in | Basic log if any | |
| Segregation of duties (can't approve own doc) | Enforced with record rules + access controls | Depends on developer diligence | Varies, often not enforced | |
| Works on any model incl. custom, on 17/18/19 Community & Enterprise | Yes — scoped and tested to your models | Yes, but per-model rework | Usually fixed models / version-locked | |
| Ownership: who fixes it and upgrades versions | ECOSIRE builds, supports, and migrates | Your team / freelancer maintains it | Vendor SLA varies; may lag Odoo releases |
No. This is a build-to-order module. ECOSIRE designs, develops, installs, and supports it around your specific approval rules and target models. You are not buying a generic ZIP to finish yourself — you receive a working, tested module deployed on your instance.
Typical delivery is 2–4 weeks from confirmed requirements. Simpler scopes (one or two models, a few tiers) land closer to two weeks; larger control matrices with escalation, delegation, and API integration take toward four. We agree the timeline and milestones before we start and keep you updated through build, test, and handover.
Every build includes a post-delivery support window for bug fixes and adjustments. Beyond that, we offer an optional ongoing maintenance plan that covers enhancements and keeps the module compatible when you upgrade across Odoo 17, 18, and 19. Odoo version migrations of the module are handled under that plan or as a scoped task.
We build for Odoo 17, 18, and 19, on both Community and Enterprise. Most of the engine relies on core framework features (models, record rules, automated actions, QWeb, activities), so it runs on Community. If a stage you want depends on an Enterprise-only app, we flag it during scoping.
Yes. The engine attaches to any model — standard (sale.order, purchase.order, account.move, hr.expense, stock.picking) or a custom model your team owns. During scoping we map each model to its stages, approver roles, and conditions.
Segregation of duties is enforced with Odoo record rules and access controls. A requester never sees an approve button on their own document, and each approver only acts on the stages assigned to their role. Every decision — including delegations and escalations — is written to an immutable approval-history log for audit.
Yes. The module exposes its approval actions over Odoo's XML-RPC and JSON-RPC API, so an external portal, ERP, or automation can raise an approval request and query its status programmatically. We document the endpoints as part of handover.
Dynamic multi-level approval chains and conditional workflows on any Odoo model — built, installed and supported by ECOSIRE.