| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
Discuss (mail)
|
| Lines of code | 3077 |
| Technical Name |
enterprise_workflow |
| License | OPL-1 |
Enterprise Workflow Engine
Visual Drag-and-Drop BPM for Odoo 19
Design, automate, and monitor any business process without leaving Odoo. Multi-level approvals, SLA enforcement, 12 automated action types, REST API, webhooks, and a tamper-proof audit trail â all in one free module.
Why Your Business Needs This
Teams manage approval chains via email threads and messaging apps. Nobody knows what stage a PO or complaint is at without asking someone. SLA deadlines live in spreadsheets. Approvals get forgotten. Onboarding a new process requires custom development. Audit trails are nonexistent â a compliance disaster.
Every process is visible on a live canvas. Approvals trigger automatically and escalate when SLAs breach. Every decision and state change is immutably logged. New workflows go live in minutes â drawn, not coded. Your compliance team finally has something to show auditors.
Draw Processes, Don't Code Them
An OWL-powered drag-and-drop canvas lets you build any workflow by connecting nodes. Zoom, pan, auto-layout, and keyboard shortcuts keep even complex diagrams manageable.
Keyboard Shortcuts
Delete removes selected node · Ctrl+S saves layout · Esc cancels connect mode. Built for power users.
Auto-Layout & Fit Screen
One-click organises all stages into a clean column layout by type. Fit-to-screen scales the canvas to show the full workflow instantly.
Persistent Positions
Node positions save to the database instantly. Layouts survive reloads and are shared across all users and browser sessions.
9 Stage Types for Every Process Shape
From a simple linear checklist to parallel approval gates and nested sub-processes â the right building block exists for every process pattern.
Entry point of the workflow. Only one allowed per definition. Triggered by the configured automation rule.
A work step. Can be blocking, require a comment on exit, have an SLA deadline, and run entry/exit actions.
Pauses the workflow until designated approvers respond. Supports 5 voting modes and approval delegation.
Evaluates outgoing transition conditions and routes automatically. Use for if/else branching logic.
Fans out into multiple concurrent paths so independent tasks can proceed simultaneously.
Waits for all incoming parallel paths to complete before proceeding. The synchronisation gate.
Triggers a separate active workflow definition on the same record. Compose processes from reusable modules.
Terminal stage. Marks the instance completed, fires a completion notification template, and posts to chatter.
Catch-all for exceptions. Route any transition here to handle failures gracefully without losing history.
Everything an Enterprise Process Needs
Every capability was designed for the messy reality of real organisations â complex conditions, delegation, compliance requirements, and external integrations.
Multi-Level Approvals
Five voting modes: Single, Any, All, Majority, Sequential. Assignable by user, by security group, or dynamically from a Many2one field on the record. Full delegation wizard with audit trail on every handoff.
SLA Enforcement
Warning + Breach thresholds per workflow total, per stage, or per approval response. Breach actions: Notify Owner, Notify Manager, Escalate, Auto-Advance, Abort, Send Email. Cron runs every 15 minutes. Business-hours-only calculation option available.
6 Trigger Types
Manual, On Create, On Update (with field-change monitoring), On Create or Update, Scheduled Cron (custom expression), and External Webhook. Domain-filter limits which records fire the workflow.
Conditional Branching
Four condition types on transitions: None, Domain filter, Python expression
(sandboxed safe_eval), or Field Value comparison with 9 operators.
Multiple outgoing transitions evaluated in sequence order for automatic routing.
Immutable Audit Trail
Every event logged: stage entries, transitions, approvals, SLA breaches, errors.
ORM-level write() and unlink() overrides make logs tamper-proof.
Comments captured on every transition and approval decision.
Versioning & Lifecycle
Draft â Active â Deprecated lifecycle. One-click New Version clones the full definition and deprecates the current one automatically. Parent/child version chain preserved for full traceability.
Workflow Mixin
Add full workflow awareness to any Odoo model with a single _inherit line.
Adds wf_instance_count, wf_active_stage, wf_active_state
computed fields and smart buttons automatically. No view editing required.
Role-Based Access
Three groups â User, Designer, Manager â with fine-grained record rules. Users see only active definitions and their own approvals. Designers create and edit blueprints. Managers have full override capability.
REST API & Webhooks
6 JSON-RPC endpoints to read instance state, list transitions, execute transitions, and retrieve canvas data. Public webhook endpoint with token auth lets external systems trigger workflows without an Odoo user account.
12 Action Types That Run Themselves
Attach any combination of actions to stage entry, stage exit, or transition events. An optional per-action Python condition means each action only fires when it should.
Set any writable field to a literal, Python expression, or copied from another field. Auto-casts to the correct type.
Fire a mail template or send to a dynamic address expression via Odoo's standard mail queue.
Dispatch an SMS via Odoo's built-in SMS gateway to any number resolved from the record's fields.
Schedule a to-do activity on the record. Assignee can be a static user or resolved from a Many2one field dynamically.
Execute any existing ir.actions.server in the context of the current record. Reuse existing automation.
Execute arbitrary Python in a sandboxed safe_eval context with record, env, user, instance.
HTTP GET/POST/PUT/PATCH/DELETE with custom headers and body. Configurable timeout and error handling: ignore/log/raise.
Create a new record on any model with values defined as a Python dict expression using the current record's data.
Set the responsible user. Auto-detects user_id, responsible_id, or assigned_to on the record.
Push an in-app notification to specific users via Odoo's message_notify. Appears in the user's inbox immediately.
Trigger a nested workflow definition on the same record. Compose complex multi-stage processes from reusable parts.
Write a note or message to the record's chatter via message_post. Message text can be a dynamic Python expression.
Integrate Everything via 6 Endpoints
Built-in JSON-RPC endpoints let external systems read instance state, list transitions, execute transitions, and trigger workflows via a public token-authenticated webhook.
/wf/api/instance/<id>/wf/api/instance/<id>/transitions/wf/api/instance/<id>/transition{ transition_id, comment }. Returns new stage and state./wf/api/definition/<id>/designer/wf/api/definition/<id>/designer/save{ positions: { stage_id: {x, y} } }/wf/webhook/<wh_id>/<token>Add Workflows to Any Odoo Model in Minutes
The workflow.mixin abstract model adds full workflow support to any existing or custom model
with a single _inherit line. No view editing required.
# Add workflow support to Sale Orders in 3 lines from odoo import models class SaleOrder(models.Model): _inherit = ['sale.order', 'workflow.mixin'] # That's it. You now get automatically: # ⢠wf_instance_count â smart button count on the form view # ⢠wf_active_stage â current stage name of the active instance # ⢠wf_active_state â running / pending_approval / waiting # ⢠action_start_workflow() â opens the trigger wizard # ⢠action_view_workflows() â opens the instance list view
Role-Based Access from Day One
| Group | Read Defs | Edit Defs | Own Approvals | All Approvals | Full Override |
|---|---|---|---|---|---|
| Workflow / User | Active only | â | â | â | â |
| Workflow / Designer | â | â | â | â | â |
| Workflow / Manager | â | â | â | â | â |
111 Records Ready on First Install
Enable demo data during installation to get six fully-wired workflows, 17 running instances in various states, and 18 audit trail entries â ready to explore immediately.
Employee Onboarding
HR docs â IT setup â Manager approval â Orientation complete
PO Approval
Conditional routing by amount â manager or director chain + finance release
Customer Complaint
Triage â Investigation â Resolution â Auto-close after 3 days
IT Change Request
ITIL-aligned · CAB majority vote · Post-implementation review
Product Launch
Parallel legal + marketing · Executive final gate · Go-live button
Contract Renewal
Scheduled weekly trigger · 90-day expiry filter · Ready to activate
Works With Your Existing Stack
Stop Managing Processes
in Your Head
Install in under a minute. Demo data gives you six fully working workflows to explore immediately. No configuration required.
Support: raj.odoo2026@gmail.com
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module