| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Field Service (industry_fsm) • Inventory (stock) • Maintenance (maintenance) • Repairs (repair) • Timesheets (timesheet_grid) • Project (project) • Employees (hr) • Helpdesk (helpdesk) • Sales (sale_management) • Invoicing (account) |
| Lines of code | 393 |
| Technical Name |
rteam_fsm_repair |
| License | LGPL-3 |
| Website | https://rteam.agency |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Field Service (industry_fsm) • Inventory (stock) • Maintenance (maintenance) • Repairs (repair) • Timesheets (timesheet_grid) • Project (project) • Employees (hr) • Helpdesk (helpdesk) • Sales (sale_management) • Invoicing (account) |
| Lines of code | 393 |
| Technical Name |
rteam_fsm_repair |
| License | LGPL-3 |
| Website | https://rteam.agency |
FSM + Repair
Field Service Repair Workflow for Odoo 19
Bridge Odoo Field Service and Repair into one continuous service case. Tablet signatures, instant protocol email, multi-visit history per asset, localized in 8 languages.
Why this module exists
Native Odoo treats Field Service tasks and Repair Orders as two unrelated workflows. In real service operations they're the same case: an engineer visits, can't fix it on-site, the unit goes to a workshop, parts are ordered, a second engineer re-installs after the in-shop work.
Today this means two disconnected records and a manager piecing the timeline together by chatter. FSM + Repair adds the missing bridge.
Localized in 8 languages
English · Русский · Українська · Deutsch · Español · Română · Polski · العربية
Every field, button, page label, selection value, and error message translated. Drop-in for international rollouts without manual i18n work.
Features
1. Request Type per visit
Every Field Service task is classified as Installation, Repair, Diagnostic, Preventive Maintenance, or RMA. Drives reporting, SLA filtering, and the engineer's mental model of what they're going to do on-site.
2. Equipment + serial lifecycle
Link each visit to a maintenance.equipment record + an optional stock.lot serial. Equipment Serial Number surfaces as a related field. The unit being serviced is now first-class data, not a free-text note.
3. Repair tab on the FSM task form
A dedicated tab with rich-text Problem Description, Engineer Findings, and Resolution / Work Done. The engineer sees the same form on tablet and desktop, types their notes once, signs, and the protocol is ready.
4. Tablet signatures (engineer + customer)
Both signatures captured live on the tablet. The customer signature auto-stamps a "Signed At" timestamp. The Send Repair Protocol button only appears after the customer signature exists.
5. Send Repair Protocol email
One click renders the QWeb PDF protocol with both signatures embedded, opens the standard mail composer pre-filled with the customer recipient + branded HTML body + the PDF attached. Engineer leaves the site with the customer's protocol already in their inbox.
6. Bridge to Odoo Repair
Every FSM task can link to a repair.order. The repair order is the persistent case-file, the FSM tasks are the visits. One Create Repair Order button on the task spawns a fresh case pre-filled with customer + lot + problem description.
7. Multi-visit cases
A single repair order can host N field visits. Smart-button Field Visits on the repair order shows the count + a filtered list. Smart-button Repair Case on the FSM task jumps back to the case file. Manager has the whole history of an asset in one click.
8. 8-language localization
Every field, button, page label, and selection value translated into English, Russian, Ukrainian, German, Spanish, Romanian, Polish, and Arabic. Drop-in for international rollouts.
Technical reference
Exactly what this module adds and where. Useful for developers extending it and for end-users who want to know which form they will see new fields on.
Model project.task (Field Service tasks)
| Technical name | Type | Visible in |
|---|---|---|
x_request_type | Selection (Installation / Repair / Diagnostic / Preventive Maintenance / RMA) | Repair tab + kanban |
x_equipment_id | Many2one -> maintenance.equipment | Repair tab |
x_equipment_serial_no | Char (related, read-only) | Repair tab |
x_serial_lot_id | Many2one -> stock.lot | Repair tab |
x_problem_description | Html | Repair tab |
x_findings | Html | Repair tab |
x_resolution | Html | Repair tab |
x_engineer_signature | Binary widget="signature" | Repair tab |
x_customer_signature | Binary widget="signature" | Repair tab |
x_signed_by | Char | Repair tab |
x_signed_at | Datetime (auto-stamp via onchange) | Repair tab |
x_repair_order_id | Many2one -> repair.order | Repair tab + smart-button |
Model repair.order (Repair Orders)
| Technical name | Type | Visible in |
|---|---|---|
fsm_task_ids | One2many -> project.task (inverse x_repair_order_id) | smart-button |
fsm_task_count | Integer (computed) | smart-button counter |
New page, buttons, smart-buttons
- New "Repair" tab in
project.view_task_form2notebook (visible only whenis_fsm == True) - Button "Create Repair Order" in Repair tab (visible if no repair order linked yet)
- Button "Send Repair Protocol" in Repair tab (visible if customer signature captured)
- Smart-button "Repair Case" in
project.taskbutton_box (visible if linked) - Smart-button "Field Visits" with count in
repair.orderbutton_box (visible if count > 0) - Kanban inherit on
project.view_task_kanbanto surfacex_request_type
New records
ir.actions.reportRepair Protocol: QWeb PDF, bound toproject.taskvia Print menumail.templateFSM: Repair Protocol: branded HTML body, "View in Odoo" CTA, PDF auto-attachedpost_init_hooklinks the report to the mail template'sreport_template_ids
No new menus, no new top-level views, no global ACL changes. Existing FSM and Repair access groups govern visibility.
Who is this for
- Manufacturers and OEMs that build, sell, and service their own equipment (laser cutters, packaging machines, industrial printers, medical devices)
- Equipment dealers with after-sale service contracts and a mix of in-field and in-shop repair
- Field service teams running tiered service programs (on-site visit -> in-shop repair -> RMA escalation to OEM)
- Any Odoo deployment using
industry_fsmANDrepairANDhelpdesk_fsmtogether
Configuration
- Apps -> Update Apps List -> install FSM + Repair. Dependencies
industry_fsm+helpdesk_fsm+repair+maintenanceare pulled automatically. - Project -> Settings -> create a Field Service project, add the recommended kanban stages: Diagnostic -> Quote -> Awaiting Parts -> In Progress -> Testing -> Closed.
- Equipment -> create the units you service (one record per serial number). Link them in
maintenance.equipment. - Open any FSM task: the Repair tab is right there with all the new fields.
What it does NOT do
Out of scope for this module (consider as separate / native Odoo configuration):
- Role-based access groups (configure standard FSM/Repair groups via Settings -> Users)
- Multi-currency parts costing per repair (handled natively by
industry_fsm_sale+ Odoo Accounting) - Sign module integration with certified-PDF audit trail (planned for a separate companion module)
- RMA shipping tracking to external OEMs (planned for a separate companion module)
About Rteam
Rteam is a global Odoo partner specializing in Odoo Enterprise implementations and custom development for manufacturers, equipment dealers, and distribution companies.
We design and ship production-grade Odoo Apps for the public catalogue and tailor enterprise deployments end-to-end across the EU, the UK, the UAE, and Ukraine.
Feature requests, bug reports, custom adaptation: alex@rteam.top
Source code: github.com/RteamAgency/rteam-fsm-repair
Website: rteam.agency
License: LGPL-3. Free forever.
Please log in to comment on this module