...
Building a Real-World Maintenance Assignment Flow in Odoo 19

Odoo’s Maintenance module is powerful out of the box, but like many ERP features, it’s designed around licensed users. In real-world operations, however, maintenance teams often consist of technicians and employees who don’t need (or justify the cost of) full Odoo user licenses.

In this article, we’ll walk through a clean and practical customization in Odoo 19 Maintenance that aligns the system with how maintenance teams actually work—without compromising visibility, accountability, or communication.

The result is a streamlined, license-free assignment flow that ensures maintenance requests are handled quickly, transparently, and professionally.

The Real-World Problem with Standard Maintenance Assignments

By default, Odoo maintenance requests are typically assigned to res.users. While this makes sense from a system perspective, it introduces several operational challenges:

  • Every assigned technician needs a paid Odoo license

  • Maintenance staff may not need system access at all

  • Communication often happens outside Odoo (WhatsApp, email, paper)

  • Silent failures occur when emails are missing or misconfigured

  • Request creators lack visibility after assignment

For many organizations—especially manufacturing plants, facilities teams, or service operations—this model simply doesn’t scale.

The Goal: Practical, License-Free Maintenance Operations

The objective of this customization was clear:

Allow maintenance requests to be assigned to employees, not licensed users, while maintaining strong communication and traceability.

To achieve that, the solution focuses on five key improvements:

  • Assign requests to hr.employee

  • Validate employee email addresses before assignment

  • Automatically send assignment emails

  • Include all critical maintenance details in the email

  • Keep request creators informed via CC

Let’s break down how each part fits into a clean operational flow.

Assigning Maintenance Requests to Employees (Not Users)

The foundation of this customization is replacing user-based assignment with an employee-based assignment.

Instead of linking a maintenance request to res.users, we introduce a new field:

  • assigned_employee_id → hr.employee

This allows maintenance requests to be assigned directly to real people—technicians, electricians, mechanics—without requiring them to log into Odoo.

Why This Matters

  • No additional Odoo licenses required

  • Assignment reflects real organizational roles

  • Works seamlessly with HR data (departments, job roles)

  • Keeps system usage clean and cost-effective

This simple change dramatically improves alignment between Odoo and day-to-day operations.

Preventing Silent Failures with Email Validation

One of the most common operational issues in ERP workflows is silent failure—when something doesn’t happen, and no one knows why.

In maintenance flows, this often occurs when:

  • An employee is assigned

  • The employee has no email address

  • No notification is sent

  • The request sits unattended

To prevent this, a constraint-level validation is added:

  • If an employee is assigned

  • And they do not have a valid email

  • The system raises a clear validation error

Result

  • No assignments without contact information

  • Errors are caught immediately

  • Administrators are forced to maintain clean HR data

  • Maintenance requests never disappear into a black hole

This small check saves hours of follow-up and confusion.

Automatic Email Notifications on Assignment

Once assignment is employee-based and email-safe, the next step is communication.

This customization automatically sends emails in two scenarios:

  1. When a maintenance request is created with an assigned employee

  2. When an existing request is reassigned to a different employee

There’s no manual button, no optional step, and no reliance on user discipline—the email is sent automatically as part of the workflow.

Why Automation Is Critical

Maintenance work is time-sensitive. If notification depends on someone remembering to click a button, delays are inevitable. Automation ensures:

  • Faster response times

  • Consistent communication

  • Zero training overhead for request creators

Email Content That Actually Helps Technicians

Sending an email is one thing. Sending a useful email is another.

The assignment email in this setup includes:

  • Maintenance request reference

  • Request title and description

  • Equipment or asset involved

  • Priority level

  • Request date

  • Clickable shared document link (instructions, SOPs, manuals)

Email Content That Actually Helps Technicians

The Shared Document Link

Instead of forcing technicians into Odoo, the email includes a shared document URL—such as:

  • Google Docs

  • SharePoint

  • Internal SOP portal

  • Cloud-based instruction manuals

This allows technicians to:

  • Access instructions instantly

  • View procedures on mobile devices

  • Work without system credentials

The result is a frictionless experience that respects how maintenance teams actually operate.

Keeping the Request Creator in the Loop (CC Logic)

Maintenance requests often originate from production managers, office staff, or supervisors. Once the request is submitted, visibility is critical.

This customization ensures:

  • The request creator is CC’d on assignment emails

  • They know who the request is assigned to

  • They receive confirmation that action has started

Operational Benefits

  • Reduced follow-up messages (“Did anyone see my request?”)

  • Clear ownership from the start

  • Improved trust in the maintenance process

  • Better cross-team communication

This single CC field eliminates a surprising amount of operational noise.

Clean Overrides: Create and Write Hooks

Clean Overrides: Create and Write Hooks

Figure: Extending maintenance.request to support employee-based assignment, email validation, and automated notifications using create/write overrides.

From a technical standpoint, the solution remains clean and maintainable by:

  • Using create() overrides to trigger initial emails

  • Using write() overrides to detect reassignment

  • Avoiding hard dependencies on UI actions

  • Keeping logic centralized and predictable

This approach ensures:

  • Emails are sent regardless of how the record is created (form, import, API)

  • Reassignments are always captured

  • The customization survives upgrades with minimal friction

The Final Result: A Real-World Maintenance Flow

With this setup in place, the maintenance workflow looks like this:

  1. A request is created in Odoo

  2. An employee is assigned (license-free)

  3. The system validates email availability

  4. An automatic assignment email is sent

  5. The technician receives all required details

  6. Instructions are accessible via shared link

  7. The request creator stays informed

No extra licenses. No manual steps. No communication gaps.

Why This Matters Beyond Maintenance

Although this example focuses on maintenance, the pattern applies broadly across Odoo:

  • Field service teams

  • Warehouse staff

  • Shop floor workers

  • External contractors

Any scenario where people need information, not system access, benefits from this approach.

Closing Thoughts

ERP systems should adapt to operations—not the other way around.

By assigning maintenance requests to employees instead of users, validating communication paths, and automating notifications, this Odoo 19 customization delivers a solution that is:

  • Cost-efficient

  • Operationally realistic

  • Technically clean

  • Easy to maintain

Most importantly, it respects how real teams work—fast, mobile, and outside the ERP interface.

If you’re building Odoo solutions for real-world environments, this is the kind of customization that makes the difference between using a system and trusting it.

For more tips on optimizing your Odoo workflows, check out my blog on streamlining Odoo operations and discover how to get the most out of your ERP system.

Reach Out for Support

Facing a problem? Contact us and receive expert help and fast solutions.