Skip to content

Service Contract Onboarding

Charter process: New service contract lead to completion of first PM.

Scenario: A client with existing Hamilton STARs buys a service contract. We sell the subscription, register their systems, schedule the first PM, execute it, and close out.

Phase 1: Contract Sale

StepWhoWhat happens in OdooCheck
1SalesCreate opportunity in CRM for the service contract
2SalesCreate a subscription (recurring sales order) with PM service product
3SalesConfirm the subscription
4Verify: SO shows is_subscription=True, subscription_state is "In Progress"

Phase 2: System Registration

StepWhoWhat happens in OdooCheck
5OpsRegister the client's systems in Service > Systems (manual creation for existing field systems)
6OpsSet customer_id to the client, set subscription_id to the new contract
7Verify: is_under_contract shows True on each system
8Verify: client's contact form shows systems in the Systems tab

Phase 3: Schedule First PM

StepWhoWhat happens in OdooCheck
9DispatcherCreate a task in the Preventive Maintenance project
10DispatcherToggle Service Task on. Create a service request, select the system, set type to PM.
11Verify: name auto-generates ("Preventive Maintenance - [serial]")
12DispatcherAssign FSE, set dates, move through stages on Gantt

Phase 4: Execute PM

StepWhoWhat happens in OdooCheck
13FSEMove task to In Progress. Log time on the task.
14FSEIf parts consumed: create inventory transfer linked to the service request
15FSEOn the transfer, manually set the Analytic Account to the contract's analytic account
16FSEClick the report template URL on the service request to open the PM checklist in Google Sheets
17FSEFill out the checklist in Google Sheets. (No auto-fill from Odoo. FSE enters system info manually.)
18FSEMark task Completed - Awaiting Closeout

Step 15 is manual and easy to forget. The analytic account does not auto-fill from the contract. The FSE or dispatcher has to select the right one. If it's wrong or missing, parts costs won't show up on the contract's P&L.

Step 17: the report template URL is a plain link. It does not pre-fill any data from the service request. The FSE fills in system serial, date, and results manually in Google Sheets.

Phase 5: Closeout

StepWhoWhat happens in OdooCheck
19DispatcherReview: report filed, parts accounted for
20DispatcherMove task to Closed
21ManagerValidate timesheets for the week
22AccountingPost timesheets to GL at month end
23Verify: JE has correct analytic distribution. Trace cost back to contract.

What to Watch For

  • Subscription creation: does Odoo handle recurring PM products correctly?
  • System registration: does is_under_contract compute correctly from subscription_state?
  • Service request auto-naming with the PM service type
  • Analytic account on parts transfers is MANUAL. This is the weakest link in cost tracking.
  • Google Sheets PM checklist has no data auto-fill from Odoo. Manual entry.
  • Timesheet posting traces labor cost to the contract via analytic distribution
  • Gantt shows PM in the Preventive Maintenance project color

Nugget Scientific internal documentation