The Maintenance Product module, part of the OCA (Odoo Community Association) repositories, extends Odoo’s core Maintenance app by linking equipment with products in your database. For companies managing both assets and inventory, this module bridges the gap, making equipment management more structured and efficient. By allowing equipment to inherit product details, it reduces manual entry and ensures consistency across records.
Key features
Once installed, the module introduces a Product
field in the Equipment form view. To use it effectively, some configuration is required:
- Product category setup
- Each internal product category intended for maintenance must be linked to an Equipment category. Note: When a Product Category is selected, its name will override the Equipment Category name (if one already exists).
- Product setup
- Products must be assigned to a category that is connected to the Equipment category.
- The checkbox
Can be Maintenance
must be enabled on each product that should be selectable in the equipment form.
How it works in practice
After setup is complete:
- Open the Equipment view and click
New
. - Select an
Equipment Category
. - The
Product
field will display all products flagged asCan be Maintenance
within that category. - When a product is selected, the following details are automatically copied into the Equipment record:
- Name
- First vendor from the product’s vendor list
- Cost
- Vendor product code
This process makes equipment creation faster and ensures that equipment records stay aligned with product information already in the database. However, note that any subsequent changes to the product data will not be automatically synced with Equipment records already created.
Potential improvements
A useful enhancement would be to add a Smart Button on the product form that opens a list of all related equipment. This would give users quick visibility into where a product is being used.
Summary
The Maintenance Product module is a simple but effective extension that connects products with equipment in Odoo’s Maintenance app. By leveraging existing product data, it streamlines equipment creation and ensures that newly created equipment records reflect the product information, though subsequent changes to products are not automatically updated.
The latest available version is 18.0.1.0.2.
The Scheduled Date in a Manufacturing Order (MO) can vary depending on how the MO is created, whether Work Orders (WOs) are generated, and whether the actions “Plan” or “Plan Based on Component Availability” are applied.
Let’s review each scenario step by step.
Default Scheduled Date
The default Scheduled Date depends on how the MO is created:
-
Manually created MO
When you create an MO manually, the Scheduled Date defaults to the creation date. No calculations are performed based on component availability, Work Orders, or other factors. -
MO triggered automatically (e.g., from a Sales Order)
When an MO is generated automatically to fulfill a demand, Odoo sets the Scheduled Date to:
Delivery Order Scheduled Date - Manufacturing Lead Time - Manufacturing Security Lead Time (if defined)
.
Actions That Affect the Scheduled Date After Confirmation
Once the MO is confirmed, two manual actions can recalculate the Scheduled Date:
- Plan
- Available only if Work Orders exist for the MO.
- Sets the MO Scheduled Date to the earliest Start Date of a WO.
(You can explore this action further in the post Understanding the "Plan" Button in Manufacturing Order.)
- Plan Based on Component Availability
- Calculates the Scheduled Date based on the forecasted availability of components.
- The Scheduled Date is set to the latest date when all required components are available.
- Each component must have an expected date defined for the calculation to be correct.
- Important: Make sure expected dates are set on Purchase Orders before confirming them. Updates made afterwards will not be reflected in the MO.
Manufactured Components
If the BoM includes manufactured components, the Scheduled Date for their MOs is calculated as:
Main MO Scheduled Date – Manufacturing Lead Time (child MO) – Manufacturing Security Lead Time (if defined)
.
Understanding how Scheduled Dates are calculated and which actions influence them is essential for designing effective manufacturing and procurement processes. Leveraging Odoo’s standard functionality helps avoid unnecessary customisations, which are often costly to maintain and migrate later.
When using the Replenish on Order (MTO) route in Odoo, it is important to understand that a product will always be purchased when there is a demand for it, even if stock is available.
For some companies, this can be a limitation, especially when existing stock should be used first, and only the missing quantity should be purchased.
The Stock MTS+MTO Rule module is designed to handle this scenario. It introduces the Make To Order + Make To Stock
route, which first reserves available stock and then creates a purchase order only for the difference.
How to Configure
Once the module is installed, you will see a new route in the Routes section. At first, this route has no rules and does nothing. To make it functional, two steps are required:
-
Activate the Route’s Rules
Go toInventory > Configuration > Warehouse
, select the warehouse where you want to use this route, and enable the option:Use MTO+MTS rules
. -
Assign the Route to Products
For the products that should follow this logic, select theMake To Order + Make To Stock
route along with theBuy
route.
How the Make To Order + Make To Stock Route Works
Once configured, when demand is created for a product, the system applies the following logic:
- If the demand is less than or equal to the forecasted quantity, the product is taken from stock.
- If the demand is greater than the forecasted quantity (and the forecasted quantity is positive), available stock is reserved, and a purchase order is created for the missing quantity.
- If the forecasted quantity is zero or negative, a purchase order is created for the full required quantity.
Suggested Improvement
One possible improvement for the module would be to automatically archive the Make To Order + Make To Stock
route when the route's rules are not enabled at the warehouse level. This would prevent confusion, since the route currently appears on products even without rules.
This module is maintained by the Odoo Community Association (OCA). The latest version available is 17.0.1.0.1.
Do you need more control over who can be added as a follower in your system? Whether you want to limit follower selection to a specific group of users or forbid certain partners from becoming followers, either globally or on certain models, the Restrict Follower Selection module from the Odoo Community Association (OCA) provides a powerful and flexible solution.
Main Features
This module allows you to define exactly who can be added as a follower by applying custom domain filters. Key functionalities include:
- Filter the selection of available followers.
- Restrict follower addition to recipients that meet a defined domain.
Configuration
You can configure the module to apply restrictions globally across the system, or specifically for certain models (like sales orders, tasks, etc.).
Setup Steps:
-
Enable Developer Mode in Odoo.
-
Navigate to:
Settings > Technical > Parameters > System Parameters
-
Create or edit the parameter:
mail_restrict_follower_selection.domain
Set the domain according to your requirements (e.g., to allow only employees to be added as followers).
This applies a global restriction on follower selection across the system.
To apply restrictions only to a specific model, add another system parameter using the format:mail_restrict_follower_selection.domain.$your_model
For example, to restrict followers on the sale order model the parameter should look like this:
mail_restrict_follower_selection.domain.sale.order
You can combine both global and model-specific filters. Odoo will use the model-specific domain where defined, and fall back to the global domain otherwise.
Example Usage
In case only employees need to be followers across the system. Your global domain might look like: [('employee_ids', '!=', False)]
If you need to apply a stricter filter only on Sales Orders, you could set a system parameter: mail_restrict_follower_selection.domain.sale.order
with a domain that, for example, allows only users to be followers for sales orders: [('user_ids', '!=', False)]
Important Notes
- The module does not remove existing followers that don’t meet the domain conditions.
- Changes to domain filters only affect newly added followers after the update.
- When using the Add Followers wizard, the system may not apply model-specific domains in the selection popup. This is due to the wizard not always knowing which model it was triggered from.
- To navigate the issue use a broader global domain and stricter model-specific domains where needed.
- Even if an unqualified recipient appears in the list and is selected, the system will silently ignore them if they don’t match the specific domain for the model.
The module is maintained by the Odoo Community Association (OCA), with the latest version available: 18.0.1.0.0.
Have you ever found yourself missing the Cc
and Bcc
fields when composing emails in Odoo? If so, the “Email CC and BCC” module by the Odoo Community Association (OCA) is exactly what you need.
Once installed, this module adds both Cc
and Bcc
fields to the email composer. It also lets you configure default Cc
and Bcc
emails per company, making it easy to include specific recipients in all outgoing emails automatically.
Key Features of the module:
- Adds
Cc
andBcc
fields to the Email Composer - Enables default
Cc
/Bcc
values at the company level - Introduces the
Bcc
field in Email Templates, allowing you to set Bcc recipients per template - Sends individual emails to each recipient in
To(Recipients)
,Cc
, andBcc
while maintaining consistent headers - Includes a custom
X-Odoo-Bcc
header whenBcc
is used
The default Cc
/Bcc
values are only applied when using the Email Composer not when sending inline messages from Chatter.
If you're using Odoo and want more control over email recipients, this module is worth checking out! The latest available version is 18.0.1.0.0.
Automating actions when users submit forms on your website can save time and improve efficiency—whether you're capturing leads, creating tasks, or managing email subscriptions.
However, not all website forms trigger automation actions. For example, a standard newsletter form won’t trigger automation rules. Instead, you should use the Form Block
, which offers greater flexibility in field customization, default values, and triggers automation rules.
In this post, we’ll continue with our email sequences automation example from How to Create Fully Automated Email Sequences article, focusing on how to trigger an email sequence immediately after a user subscribes, eliminating the need for scheduled actions.
Step 1: Setting Up the Subscription Form
To ensure automation triggers work, we’ll configure a Form Block
instead of a basic newsletter block. Here’s how:
- Go to your website editor and select the Form Block.
- Set the action to "Subscribe to Newsletter."
- Customize your form layout.
- Define the form fields (e.g., Name and Email), ensuring they are mapped to the correct model fields.
- Add the
Mailing List
selection field, if it’s not already included in the form:- Set the default value to the list you want (e.g., AI Course).
- Hide the field if you don’t want users to view or change the list.
- Add a specific tag for subscribers from this form:
- Add a new field to the form.
- Map the field to the
Tags
field in theMailing Contact
model. - Set the default tag to be applied on submission (e.g., AI Course).
- Hide the field if you don’t want users to modify it.
Now, when users submit this form, they’ll be added to the specified mailing list and tagged with the correct tag.
Step 2: Creating the Automation Rule
Next, we’ll set up an automation rule that triggers when a new subscriber is tagged.
-
Create a new Automation Rule and set the model to
Mail Contact
. -
Set the trigger to
When a tag is added
(use the same tag from the form, e.g., "AI Course"). -
Add additional filters to target the right subscribers—for example,
Mailing List Name = AI Course
. -
Add two
Execute Code
actions:
- The first action adds the subscriber to the email sequence:
- The second action triggers the flow instantly:
Final Thoughts
With this setup a new subscribers are automatically added to your email sequence and the first email is triggered immediately—no waiting for scheduled jobs.
By using Form Blocks
and automation rules, you can streamline workflows and ensure instant responses to user actions.