Dynamic Model Approval
Foundation app for Captivea Dynamic Approval — configure reusable multi-stage workflows with user or group approvers, amount thresholds, activity or email notifications, and full audit history.
Overview
Install this app first. Domain packs (Sale, Purchase, Invoice, Payment, Stock) plug into the same engine so every document family shares one consistent approval experience.
Reusable Engine
One core mixin powers every domain pack: stage preview, submit, approve, reject, notifications, history and company scoping.
Ordered Stages
Define as many sequential stages as you need. Each stage has a custom name and either specific users or a security group as approvers.
Amount Thresholds
Optional rules per stage: apply when document amount is greater-or-equal or less than a threshold, with workflow currency conversion.
Live Stage Preview
Before submit, users see which stages will be Pending vs Skipped based on the current amount. Amount changes refresh the preview.
Flexible Notifications
Set Approver Notify By to None, Activity (To-Do, default) or Email. See the dedicated section below for full behaviour of each option.
Full Audit Trail
Track every stage decision, who approved and when, plus reject date, reject user and mandatory reject reason.
Multi-company
Workflows are company-aware. Prefer a company-specific workflow, otherwise fall back to a shared (empty company) definition.
Applicable Types
Register document families (Sale Order, Vendor Bill, Delivery…) so one model can host several workflow families.
Manager Security
Dedicated Dynamic Approval Administrator group gates the configuration app and menus.
Approval Workflow
Each document moves through a clear path. Confirm / Post / Validate actions stay blocked until every required stage is approved. Reject cancels the document with a reason recorded in chatter.
Draft / Ready → Send For Approval → Waiting Approval → Approve / Reject → Done / Cancelled
Configure Approval Workflow
Every workflow is built from ordered stages. For each stage you choose who must approve (specific Users or a Group) and optionally when the stage applies using an amount rule (Greater than or equal (>=) or Less than (<)).
Open Dynamic Approval → Workflows, create a workflow for your model / Applied On type, then add stage lines with Approver Type and optional Amount Condition. Domain packs (Sale, Purchase, Invoice, Payment, Stock) use this same configuration screen.
Approver Type: Users
Select one or more specific Odoo users as approvers for that stage. Only those users can click Approve when the stage is pending. Ideal when a named manager, finance controller or department head must personally sign off.
- Pick any active internal users
- Multiple users on one stage: any of them may approve that stage
- Combine with amount rules so VIP users only see high-value documents
Approver Type: Groups
Select a security Group instead of named users. Any member of that group can approve the stage. Best when responsibility is shared (Sales Managers, Accountants, Warehouse Managers) and membership can change without editing the workflow.
- Uses standard Odoo res.groups
- New group members automatically become eligible approvers
- Mix User stages and Group stages in the same workflow
Amount Rule: Greater Than or Equal (>=)
The stage is required only when the document amount is greater than or equal to the threshold you set. Below that amount the stage is automatically Skipped. Use this for escalation: e.g. Director approval only when amount >= 10,000.
- Example: Stage “CFO” with >= 50,000 — runs only on large documents
- Lower stages without a rule always run for every document
- Currency is taken from the workflow; amounts are converted when needed
Amount Rule: Less Than (<)
The stage is required only when the document amount is less than the threshold. At or above that amount the stage is Skipped. Useful for lightweight review of small documents while large ones take a different path.
- Example: Stage “Team Lead” with < 1,000 — only small tickets need that review
- Pair with a >= stage for the complementary high-value path
- Leave the amount rule empty to always require the stage
How stages work together
Stages run in sequence (Stage 1, then Stage 2, …). You can freely mix User and Group approvers across stages, and mix >= / < / no-rule amount conditions. Before Send For Approval, the document shows a live preview of which stages will be Pending versus Skipped for the current amount. Changing the amount refreshes that preview so users always know who must approve.
Example setup: Stage 1 = Group “Sales Managers” (always) → Stage 2 = User “Finance Controller” with amount >= 5,000 → Stage 3 = User “CFO” with amount >= 25,000. A 3,000 document only needs Stage 1; a 12,000 document needs Stages 1 and 2; a 40,000 document needs all three.
Approver Notify By
On each workflow, set Approver Notify By to choose how the next stage’s approvers are informed when their turn starts. This is a workflow-level setting (one choice for the whole workflow).
Notifications fire when a document is sent for approval and again when the next pending stage becomes active after a previous stage is approved. Recipients are the active internal users on that stage (selected users and/or all members of the selected group).
None
Do not create activities or send emails when a stage becomes pending. Approvers rely on opening the document themselves, filters, or other process follow-up. Use this when you want a silent workflow or already notify outside Odoo.
- No To-Do activities are scheduled
- No approval-request email / chatter notification is sent
- Approve / Reject buttons still work as usual
- Best for demos, internal teams that watch a queue, or custom notification elsewhere
Activity (default)
Creates a standard Odoo To-Do activity for every eligible approver of the current pending stage. Activities appear in the user’s activity tray / Discuss schedule and are linked directly to the document.
- Summary format: Stage name: Review Document Name
- Deadline set to today so the task shows as due immediately
- One activity per approver; duplicates for the same stage are avoided
- When the stage is approved or the flow moves on, related To-Dos are closed
- Ideal when approvers work inside Odoo every day
Posts an approval-request message on the document chatter and notifies the stage approvers by email, including a direct link to open the record. Uses the built-in mail template with stage, document, amount, company and requester details.
- Subject: Approval required: Stage for Document Name
- Body includes workflow name, stage, amount, company, requester and Open link
- Goes through Odoo’s mail queue — a down mail server never blocks Approve / Reject
- Also reaches users who prefer “In Odoo” inbox by forcing the email path when needed
- Ideal when approvers may be offline or outside the app most of the day
Important behaviour details
- Who is notified? Active internal users of the current stage (named users and/or every member of the stage group). Portal / shared users are excluded.
- When? On Send For Approval for the first pending stage, then again for the next pending stage after each successful Approve.
- Skipped stages (amount rule not matched) never notify anyone.
- Empty approvers: If Notify By is Activity or Email and the stage has no active internal user, Odoo raises a clear error so you can fix the stage setup.
- Per workflow: Sale, Purchase, Invoice, Payment and Stock workflows can each choose None, Activity or Email independently.
- Default: New workflows use Activity unless you change Approver Notify By.
How It Works
|
01
|
Open Dynamic Approval → WorkflowsAfter installing the foundation app, open the Dynamic Approval app from the home menu. The Workflows list shows every configured workflow with document type, Applied On, Approver Notify By and company. |
Dynamic Approval / Workflows list
|
02
|
Create or open a workflowClick New or open an existing workflow. Set Description, Referenced Document, Applied On, Company, Currency and Approver Notify By (None / Activity / Email). |
Workflow form — header & Notify By
|
03
|
Add ordered stages (Users, Groups, Amount rules)In Approval Lines add stages with a custom state name. Choose User or Group approvers. Optionally enable Use Amount Condition with >= or < and a threshold. |
Workflow stages — users, groups & amount rules
|
04
|
Choose Approver Notify ByActivity creates To-Do tasks for the next stage approvers. Email sends a templated message with a document link. None keeps the flow silent. |
Approver Notify By on the workflow
|
05
|
Use different notify modes per document familyEach domain pack can have its own workflow. Example: Purchase Order Approval using Email notify while Sale uses Activity. |
Purchase workflow with Email notify
Approver Access Rights
Approve / Reject rights are defined per domain pack, not as a single shared group. Install Sale, Purchase, Invoice, Payment and/or Stock packs to get their Approver access rights under Settings → Users → Access Rights (category Dynamic Approval).
Sale Order Approval / Approver
Approve / Reject on quotations and sales orders.
Purchase Order Approval / Approver
Approve / Reject on RFQs and purchase orders.
Invoice & Bill Approval / Approver
Approve / Reject on customer invoices and vendor bills.
Payment Approval / Approver
Approve / Reject on outbound vendor payments.
Stock Transfer Approval / Approver
Approve / Reject on receipts, deliveries, internal transfers and returns.
Dynamic Approval / Administrator
Foundation right to configure workflows (this app). Does not replace pack Approver rights.
Approver
Enable on the user under Settings → Users → Access Rights (privilege Dynamic Approval). Users with this right can approve or reject when their user (or group) matches the pending stage.
Administrator
Configures workflows under Dynamic Approval → Workflows and implies Approver, so managers can also approve/reject when stage rules allow it.
Settings / Users — Dynamic Approval Approver access (highlighted)
Highlighted areas: (1) Dynamic Approval privilege on the user, (2) Approver access right that unlocks Approve / Reject buttons.
Approve & Reject Security
Approve / Reject rights are defined per domain pack, not as a single shared group. Install Sale, Purchase, Invoice, Payment and/or Stock packs to get their Approver access rights under Settings → Users → Access Rights (category Dynamic Approval).
User Access Rights — Dynamic Approval Approver
Without Approver, buttons are hidden and server actions raise a clear access error. Stage User/Group rules still apply on top of this access right.
Need Help or Have Questions?
Our team is ready to help with installation, customisation, or any questions about the Dynamic Model Approval module for Odoo 19.
Contact UsOdoo 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