Skip to Content
Skip to content
Case study ยท Services

Construction, Contracting & Field Service

Site-wise analytic accounting, milestone (RA) billing, material to site, subcontractors and AMC field visits (now in Planning on Odoo 20).

Odoo ProjectOdoo AccountingOdoo PurchaseOdoo PlanningOdoo Subscriptions

Implementation blueprint based on the patterns of real Odoo projects. Company names are illustrative, so the configuration and the lessons apply directly to your business.

1. Company profile

"BuildRight Interiors & MEP Contractors" (fictional): commercial interiors, electrical/HVAC installation, annual maintenance contracts (AMC). 10โ€“15 sites running at once; 120 site workers (mostly not Odoo users).

2. Pain points

Material sent to site isn't tracked; site profitability is known only at the end; progress billing (RA bills) in Excel; technicians' visits not recorded.

3. Apps

CRM, Sales (quotation sections/templates), Project, Purchase, Inventory, Accounting (analytic), Planning (incl. field service in v20), Timesheets, Documents, Sign, Fleet, Maintenance (customer equipment), Subscriptions (AMC). Industry package: General Contractor (v20 rename of Construction Builder).

4. Design decisions

Topic Decision
Project = site One project + one analytic account per site (analytic plan "Sites")
Estimation & quote Quotation sections (Civil, Electrical, HVAC) and section templates (v20); description-only lines for scope text; margin editing per line (v20)
Billing Milestones for progress (RA) bills; retention via payment terms or a separate line; down payments for mobilisation advance
Material to site One site location per project (WH/Sites/Project-X) or a dedicated warehouse; deliveries from the main store โ†’ site location; returns back; consumption by inventory adjustment or a "Consume" transfer
Direct purchases to site PO with delivery address = site and analytic distribution = project (drop-ship route)
Subcontractors Vendor bills with analytic = project; purchase agreements for rate contracts
Labour Supervisors log timesheets for crews; employee cost for labour cost
Field service / AMC v18โ€“19: Field Service app (tasks with worksheets, signatures, map). v20: folded into Planning (live map, travel fees, routing, worksheets)
Equipment at customer site Maintenance equipment + AMC as a Subscription (v20: maintenance contracts via Subscriptions)

5. Configuration steps

  1. Accounting: analytic plan Sites (mandatory on purchases & expenses via applicability rules).
  2. Project template "Site project" with stages and milestone list (Mobilisation 10 %, Civil 30 %, MEP 40 %, Handover 20 %).
  3. Sales: products "Interior work โ€“ milestone" (service, based on milestones, create project from template).
  4. Inventory: location per site or warehouse per big site; a route "Send to site".
  5. Purchase: approval thresholds; vendor price agreements.
  6. Planning/Field service: shift templates, worksheets (checklists + photos), customer signature, map view.
  7. Dashboards: per-site P&L (analytic report), committed costs (POs not yet billed), budget vs actual (analytic budgets).

6. KPIs

Site margin vs estimate, cost-to-complete, billing vs progress %, retention receivable, technician first-time-fix rate, AMC renewal rate.

7. Pitfalls

  • Make the analytic distribution mandatory, or costs will miss the site.
  • Material returned from site must be received back. Otherwise site cost is overstated.
  • Odoo 20 licensing: site workers kept as employees without users now cost Light User fees. Decide who must be an employee record.

8. Version notes

v18 v19 v20
Field Service app, milestones, analytic budgets Gantt improvements, task scheduling from templates, field-service geo tracking Field Service โ†’ Planning, live technician map, travel-fee invoicing, routing optimisation, WBS view (Property Developer), section templates, description-only lines

Planning an Odoo project like this one?

I have implemented these flows for real businesses. Let's map your process and see how Odoo fits, free discovery call.