Odoo Field Service and Maintenance in Saudi Arabia: FM, HVAC and Lifts

Can Odoo run an FM, HVAC or lift maintenance business in Saudi Arabia? Yes: AMCs, Helpdesk SLAs on Saudi working hours, technician visits in Odoo 19.0 and 20, PPM for client assets and ZATCA e-invoices, with the limits stated plainly.

Published 2026-10-17 · METCH

Can Odoo run an FM or AMC maintenance business in Saudi Arabia?

Yes. A facility management (FM), HVAC or elevator company in Riyadh, Jeddah or Dammam can run its annual maintenance contracts (AMCs) in one Odoo database, with an app for each stage of the contract:

  • Contract signed: Subscriptions bills the AMC fee on schedule.
  • Client call: Helpdesk, with SLA policies for response and resolution.
  • Site visit: the Field Service app in Odoo 19.0, the only Odoo 19 version on Odoo.sh and on-premise. From Odoo Online version 19.2, and in Odoo 20, Odoo discontinued that app and moved its features into Planning, so a visit is a Planning shift. Your version is shown at the bottom of Settings > General Settings.
  • Spare parts: Inventory and Purchase.
  • Invoice: the Saudi localization issues ZATCA Phase 2 e-invoices with 15% VAT.
  • Monthly report to the client: Helpdesk reporting and project profitability.

Below, Odoo 20 also covers Odoo Online from version 19.2, though some features arrived there later. A new Odoo.sh or on-premise project can start on Odoo 20 unless a module it needs is not yet available for it.

An FM contractor billing AMCs needs Odoo Enterprise: Field Service, Helpdesk, Planning and Subscriptions are not in Community. Community does include the Maintenance app, which can serve as a maintenance system (CMMS) for your own assets.

Odoo fits when dispatch, stock, contracts and accounting should share one database. If you are keeping another ERP and only want a technician app beside it, a specialist field service tool may be simpler.

Annual maintenance contracts in Odoo: from AMC to ticket, visit and invoice

Picture a Riyadh maintenance company with AC contracts for office towers and a lift contract for a Jeddah hospital. The chain in Odoo:

  • Sell each AMC in Subscriptions, so contract invoices follow the schedule. In Odoo 20, Planning can also show, via Subscriptions, whether a customer's equipment is under contract.
  • Give each service line a Helpdesk team with SLA policies for response and resolution. Deadlines run in the team's working hours from ticket creation, and Odoo's default calendar is Monday to Friday, so set Sunday to Thursday first. List a stage such as Waiting for client access under the SLA's Excluding Stages so client delays do not count.
  • From the ticket, Plan Intervention creates the field task in Odoo 19.0, in the team's default Field Service project, while the Repair button opens a workshop repair order. In Odoo 20, the ticket creates a Planning shift instead.

Two cautions. Odoo 19.0 does not document a subscription creating a visit every period, so use Recurring Tasks on the project, which create the next task only when the previous one is Done or Canceled; test this in a demo database. And once your business is in a Phase 2 integration wave, each visit or AMC invoice from Odoo must be cleared by ZATCA's Fatoora platform before sending (B2B tax invoices) or reported within 24 hours (B2C simplified invoices). Businesses in Wave 25, with VAT-subject revenue above SAR 187,500 in any year from 2022 to 2025, must integrate by 1 February 2027; ZATCA notifies the taxpayers in each wave.

Technicians on site: Odoo 19.0 Field Service vs Odoo 20 Planning

Odoo 19.0 still uses the Field Service app, while Odoo 20 and Odoo Online 19.2 or later use Planning. Side by side:

  • Workspace: in 19.0, the Field Service task; in 20, the published shift in My Planning, which needs a Customer.
  • Time: a timer on the 19.0 task; in 20, Sign In and Complete set the shift's start and end.
  • Location: tracked while the 19.0 timer runs; in 20, with Geolocation on, logged in the shift's chatter at Sign In and Complete, plus a live technician map.
  • Worksheets: enabling them in 19.0 installs Studio, which needs the Custom plan; in 20, templates use property fields.
  • Parts: the 19.0 product catalog, once Time and Material Invoicing is on; the Products button on the 20 shift.
  • Signature: the customer signs the 19.0 worksheet report, or uses Sign Report under Customer Preview in 20. Both can hide prices.
  • Offline: 19.0 shows previously opened records read-only; 20 (Online from 19.3) allows limited edits, but no photo uploads.

The Saudi FM angle: the client's facility manager often needs a signed job card for each PPM visit to certify the monthly AMC, so send it without prices and let the priced invoice go to procurement. In lift machine rooms and basement plant rooms of malls and hospitals, have technicians open the visit before going down.

Routing: Navigate to opens Google Maps, a drawn itinerary needs a Mapbox token, and Odoo 20 adds ordered or optimized routes. Test the live map before promising clients real-time tracking.

CMMS in Odoo for hard FM: PPM for chillers, AHUs and lifts at client sites

Searching for CMMS software? In Odoo that is the Maintenance app, and for a hard-FM contractor the assets are often the client's: chillers, AHUs, pumps and lifts you operate under an O&M contract or AMC.

  • Register each asset as equipment with its model, serial number and maintenance team. Standard equipment records have no customer field, so group assets with one equipment category per client site, or add a Customer field with Studio, which needs the Custom plan.
  • Turn the contract's PPM scope into Preventive requests marked Recurrent, such as a quarterly AHU filter and coil check. The next request is created only when the current one reaches a done stage, so Odoo does not lay out a year of visits in advance.
  • MTBF and MTTR come from finished corrective requests, in days. MTBF counts from the equipment's Effective Date, which defaults to the day the record is created, so enter the real commissioning date when you load assets from an old system.

Know the boundary. A maintenance request keeps the asset's history but does not consume parts or raise an invoice, so the billable visit is still a Field Service task in Odoo 19.0 or a Planning shift in Odoo 20, where Planning also tracks customer equipment and intervention history. Odoo 19.0 does not document a link between a maintenance request and a field task: keep them separate, or budget a small customization to connect them.

Units brought back to your workshop, such as a lift control board, go through the Repairs app.

Field service reports and licence costs in Saudi Arabia, and your next step

Before you commit to KPIs in a contract, know what Odoo measures without customization:

  • Helpdesk reports cover Tickets Analysis, SLA Status Analysis and Customer Ratings, with time measures such as Hours to First Response and Working Hours to Close counted in working hours, plus Number of SLA Failed, a count of tickets that failed at least one SLA. A failed SLA tag stays red even after the ticket reaches the target stage.
  • Project profitability compares revenue with timesheets, materials, purchases and expenses per billable project, so one project per major contract gives contract-level margins.
  • No first-time fix rate or cost-per-job dashboard is documented, so design a revisit tag or a custom report from day one.

On licences, Odoo showed a Saudi visitor these prices on 17 October 2026, per user per month: Standard US$13.50 on yearly billing or US$16.90 monthly, and Custom US$25.50 or US$32.00. These discounted rates last 12 months for the users in the first order; after that, Standard is US$16.90 yearly or US$21.10 monthly, and Custom US$32.00 or US$40.00. Light Users are listed at US$5.90 and include Field Services and My Planning, arranged through an Odoo Advisor. Prices change, so check Odoo's official pricing page.

METCH is an official Odoo Ready Partner based in Riyadh. Bring one AMC schedule and your SLA matrix to a free consultation, and we will walk it through Odoo 19 or 20 with you, including how its invoices reach Fatoora. For a first budget, try the pricing estimator on our Pricing page.

Frequently asked questions

How much does Odoo Field Service cost in Saudi Arabia?

Odoo does not price field service as a separate app: Standard covers all apps on Odoo Online. On 17 October 2026, a Saudi visitor saw Standard at US$13.50 per user per month on yearly billing and Custom at US$25.50, discounted for the first 12 months; the regular yearly rates were US$16.90 and US$32.00. On Odoo 19.0, worksheets install Studio, which needs the Custom plan. Technicians may qualify as Light Users at US$5.90 through an Odoo Advisor. Check Odoo's pricing page, then try the estimator on our Pricing page.

How do I set Helpdesk SLA hours for Ramadan and after-hours emergency calls in Odoo?

SLA deadlines follow the working hours set on each Helpdesk team, which default to the company's. For Ramadan's shorter working day, switch the team to a Ramadan schedule for the month and back afterwards, testing the effect on a demo ticket first. Route 24-hour emergencies, such as a lift entrapment or an AC failure in a hospital, to a separate Helpdesk team with a round-the-clock schedule and its own SLA policies. An SLA with no priority selected applies only to low-priority tickets, so set priorities on emergency policies.

How do I set up comprehensive and non-comprehensive AMCs in Odoo?

In both cases the contract fee is a subscription product; only parts pricing differs. On a comprehensive AMC, tick Under warranty on the Odoo 20 shift, so parts and services added from it are priced at zero. In Odoo 19.0, use a contract pricelist that prices covered parts at zero, and test it on a demo task. On a non-comprehensive AMC, parts added during the visit go on its sales order at your normal prices and are invoiced. One project per major contract then shows each contract's margin.

Can FM clients and tenants log maintenance calls themselves in Odoo?

Yes. Each Helpdesk team can receive tickets through its email alias, a website form, which needs the Website app, and live chat. Portal users can see the tickets they follow if the team's visibility allows it. The SLA deadline is calculated from the ticket's creation date in the team's working hours, so a call logged at night starts counting only at the next working hour, unless the team runs a 24-hour schedule. Odoo 20 can also collect field service requests through a website form in Planning.

Need help with this?

METCH is a certified Odoo partner in Saudi Arabia — book a free consultation.

Get a proposal