Skip to Content
Manufacturing

Preventive maintenance in Odoo: stop machines breaking down at the worst time

dooPartners· 18 July 2026 · 15 min read
Preventive maintenance in Odoo: stop machines breaking down at the worst time

Breakdowns stop being surprises when every machine has an equipment record, a preventive schedule that runs before the failure, and a team that every request routes to. Odoo's Maintenance app holds all three, and the reliability numbers then tell you where to tighten.

It is the middle of your biggest run of the quarter and the main machine stops. Not a warning, not a rattle anyone wrote down, just dead in the middle of an order that was already tight on time. Now you are calling a technician who cannot come until tomorrow, the work orders behind that machine are stacking up, and the customer who was promised Friday is going to hear a different story. The repair itself is not even the worst of it. The worst of it is that the bearing that failed had been getting louder for weeks, and nobody had a fixed moment to look at it.

This is the maintenance problem in manufacturing, and it is almost never about people not caring. It is about not having a fixed schedule for the checks that prevent a breakdown, and not having a record of what each machine has done and when it was last serviced. When upkeep lives in someone's head ("we grease that one every so often"), it gets skipped on the busy weeks, which are exactly the weeks the machine is under the most load and most likely to fail. Odoo's Maintenance app fixes that by giving every machine its own record, scheduling the preventive work on a fixed cadence, and tying a breakdown on a work center straight to the production it blocks. Here is the difference between preventive and corrective maintenance, how to set up the equipment and the schedule, and where it connects to the manufacturing downtime that costs you orders.

Why machines break at the worst possible time

Breakdowns cluster on the busy days for a few reasons, and they all come back to maintenance being reactive instead of scheduled.

Upkeep depends on someone remembering. If preventive maintenance is "we service it when we get a chance", it is the first thing dropped when an order is late. So the grease, the filter, the calibration all slide, and the machine runs longest without care exactly when you are leaning on it hardest. The failures are not bad luck. They are the predictable result of skipped service on the weeks you could least afford to skip it.

There is no record per machine. When nobody can say when a machine was last serviced, how often it has failed, or what was replaced, you cannot plan anything. You are reacting to each breakdown as if it were the first. The history that would tell you "this press fails roughly every six weeks, schedule it at five" is scattered across people's memories and a few WhatsApp messages.

A breakdown stops more than the machine. When the machine that fails sits in the middle of a production flow, it does not fail alone. Every work order that routes through that work center halts behind it. So a one-hour repair becomes a half-day of stalled production, idle operators, and a delivery date you can no longer hit, because the cost of the breakdown is the downtime, not the part.

Corrective work crowds out preventive work. Once you are firefighting, you stay firefighting. The team spends its time fixing what already broke, which leaves no time to prevent the next failure, which guarantees the next failure, which keeps the team firefighting. Without a scheduled cadence that survives the busy weeks, the loop never breaks.

Diagram comparing corrective maintenance as a reactive loop with preventive maintenance scheduled from an Odoo equipment record, linked to a work center to prevent manufacturing downtime

What it costs you

A machine that fails mid-run is the most expensive kind of failure, and the bill is far bigger than the repair.

You pay in downtime, not in parts. The replacement bearing might cost very little. The eight hours of stalled production behind it, the operators standing idle, the overtime to catch up, and the order that ships late all cost a great deal more. The later you catch a developing fault, the more of that downtime you have already booked.

You lose the delivery date you promised. A breakdown in the middle of a run does not just delay one order. It pushes back everything queued behind it, so one failure ripples through a week of promised dates. Customers who get a working delivery on time reorder without thinking. Customers who get "the machine broke, it will be late" start building a buffer into every order they place with you, or they place it somewhere else.

You cannot plan around a machine you do not understand. Without a service history and the basic reliability numbers, you cannot tell a machine that is fine from one that is about to go. So you either over-service everything and waste time, or under-service the wrong things and get caught out. Either way you are guessing.

Preventive vs corrective maintenance

Before the setup, get the two kinds of maintenance straight, because the whole point is to shift the balance from one to the other.

Corrective maintenance is the fix after something breaks. The machine has failed or become unusable, and you raise a request to repair it. This is the firefighting: necessary, but reactive, and it always happens at the worst time because failures do not wait for a quiet moment. In Odoo you log it as a maintenance request with the type set to Corrective.

Preventive maintenance is the work you do on a schedule to stop the failure happening in the first place: the service, the calibration, the part you replace before it wears out. It is planned, it happens on a quiet moment you chose, and it is far cheaper than the breakdown it prevents. In Odoo you log it as a maintenance request with the type set to Preventive, and you can have the system create those requests automatically on a recurring schedule.

The goal is not zero corrective maintenance. Things still break. The goal is to move the predictable failures out of the corrective column and into the preventive one, so the machine gets serviced on a Tuesday morning you planned instead of failing on a Friday afternoon you did not.

The fix, in numbered steps

You set up maintenance in Odoo by giving each machine a record, putting the preventive work on a schedule, and routing every request to a team. The steps build on each other.

1

Install Maintenance and create an equipment record for each machine.

Turn on the Maintenance app, then add your machines, tools and work-center equipment as equipment records. Each record is the home for one machine: its category, the team responsible, the technician, the location, and from here on, its full maintenance history. This record is what turns "that press over there" into a thing you can plan around, because every request, every repair and every reliability number hangs off it.

2

Link the equipment to the work center it sits in.

If the machine is part of a production flow, connect its equipment record to the work center it belongs to. This is the link that matters for downtime: now a breakdown on that machine is connected to the production that runs through it, and Odoo can track the machine's cost and productivity against that work center rather than treating it as a standalone asset.

3

Set the preventive schedule so the service happens before the failure.

On the equipment, define the preventive maintenance frequency. Odoo can generate a preventive request automatically on a recurring cadence (for example every month, or you can base it on the reliability numbers it computes). The point of this step is that the service no longer depends on anyone remembering. The request appears on the schedule on its own, ahead of the failure, on a moment you control.

4

Route every request to a maintenance team.

Set up your maintenance teams under Configuration, then assign one to each piece of equipment and each request. Now a request, preventive or corrective, lands with the people responsible instead of floating. The team works its requests from a kanban board where the stages (New Request, In Progress, Repaired, Scrap) show at a glance what is waiting, what is being worked, and what is done. A planned calendar shows the preventive work ahead so it does not collide with your busiest production days.

5

Let the reliability numbers tune the schedule.

Once requests are flowing, Odoo computes the basic reliability statistics per machine: mean time between failures (MTBF), mean time to repair (MTTR), and an estimated next failure date based on the machine's own history. Use these to set the preventive frequency to the machine, not to a guess. A machine that fails roughly every six weeks gets serviced at five. A stable one gets a longer interval so you are not wasting service time. The schedule stops being a hunch and starts following the evidence.

The part that trips people up

A few things catch almost everyone

A few things catch almost everyone setting maintenance up for the first time.

The equipment record has to come first, or nothing else has a home. People want to start logging breakdowns straight away, but a request without an equipment record behind it cannot build a history, and the history is the whole point. Create the equipment for your real machines first, even a rough version, so every request from then on attaches to the right machine and the reliability numbers actually accumulate.

The work-center link is the difference between a maintenance log and a downtime tool. Logging that a machine broke is useful. Knowing that the breakdown halts a specific work center, and being able to block that work center so no work orders get scheduled onto a dead machine, is what connects maintenance to your production plan. If you skip the link, you have a tidy repair history and no view of what the failure actually cost you in stalled orders.

Preventive scheduling fails quietly if you never tune it. Setting "every machine, every month" and walking away is better than nothing, but it either over-services the stable machines or under-services the fragile ones. The reliability numbers exist so you can adjust. If nobody ever looks at the MTBF and moves the frequency to match, you keep the same surprise failures with extra paperwork on top.

Corrective requests need an owner, or they pile up. The kanban board only helps if someone works it. A stack of open requests sitting in New Request is just a list of machines you know are wobbling and have not got to. Assign the team, and make working the board someone's actual job, or the app becomes a record of problems instead of a way to fix them.

Maintenance is a standard app, but it pays off with the manufacturing link. The Maintenance app, equipment records and preventive scheduling are standard Odoo. They earn their keep when the equipment is tied to your real work centers and the preventive cadence is set from the reliability data. A half-configured setup gives you equipment records nobody updates and a false sense that maintenance is handled.

Quick checklist

  • The Maintenance app is installed and every real machine has an equipment record with a category, a team and a responsible technician.
  • Each machine in a production flow is linked to the work center it sits in, so a breakdown is connected to the production it blocks.
  • Preventive maintenance is on a recurring schedule that creates requests automatically, ahead of the failure, on moments you control.
  • Every request, preventive and corrective, is routed to a maintenance team that works it on the kanban board and plans it on the calendar.
  • The reliability numbers (MTBF, MTTR, estimated next failure) are used to tune the preventive frequency to each machine, not left to a guess.
  • Someone owns the request board, so open requests get worked instead of piling up.

FAQ

What is the difference between preventive and corrective maintenance in Odoo?

Corrective maintenance is the repair you do after a machine has broken or become unusable; you log it as a maintenance request with the type set to Corrective. Preventive maintenance is the work you do on a schedule to stop the failure happening: the service, the calibration, the part replaced before it wears out, logged as a request with the type set to Preventive. Odoo can create preventive requests automatically on a recurring schedule, so the service happens ahead of the failure on a moment you chose rather than as an emergency.

How do I schedule preventive maintenance in Odoo?

On the equipment record, set a preventive maintenance frequency, and Odoo generates the preventive request automatically on that recurring cadence. You can base the interval on a fixed period or tune it using the reliability numbers Odoo computes per machine. Each generated request lands with the assigned maintenance team and appears on the maintenance calendar, so the planned work is visible ahead of your busy production days.

What are equipment records and why do I need them first?

An equipment record is the home for one machine in Odoo: its category, the responsible team and technician, its location, and its full maintenance history. You create one for each real machine before logging requests, because a request without an equipment record behind it cannot build a history, and the history is what lets Odoo compute reliability numbers and lets you plan around each machine.

How does Odoo maintenance connect to manufacturing downtime?

By linking an equipment record to the work center it sits in. Once linked, a breakdown on that machine is tied to the production that routes through the work center, and you can block the work center so no work orders get scheduled onto a machine that is down. Odoo also tracks the machine's cost and productivity against that work center, so you can see what a failure actually cost you in stalled production rather than just the price of the part.

What maintenance metrics does Odoo calculate?

Odoo computes mean time between failures (MTBF), mean time to repair (MTTR), and an estimated next failure date for each piece of equipment, based on its own maintenance history. MTBF is the average uptime before a breakdown, MTTR is the average repair duration, and the estimated next failure date helps you set the preventive frequency to the machine. Use these numbers to schedule service at evidence-based intervals instead of guessing.

Read next Make-to-order vs make-to-stock in Odoo: choosing the right replenishment

Open knowledge. Are you an Odoo partner who solves these problems too? Contribute your own solutions and grow toward Gold with the network.

For partners
When to get a partner

Some problems need a pair of hands, not a how-to.

dooPartners is a worldwide network of independent, Odoo-certified partners. Local where you are, with the network behind them when a project grows beyond one agency. You keep one point of contact, and you choose who you work with.

Find a partner near you