Service Management landscape
Service Management is not “another form next to Sales Orders”. It is the delivery and cash collection chain for service obligations: what was sold, where the work happens, when money is due, and which document is allowed to create an invoice.
This page is the landscape. Child pages go deeper: contract & billing, ticket → order / field, field execution, amendments. App guide: Service Management.

Three layers — do not collapse them
| Layer | Documents | This layer does | It does not |
|---|---|---|---|
| Commercial | Quotation, (depending on mix) Sales Order, Service Contract | What the customer bought, rates, term, SLA | Dispatch technicians or consume van stock |
| Delivery | Service Order, Service Project, Ticket, Field job | Schedule, execute, accept, log hours, use parts | Post the general ledger |
| Cash | Billing queue → Invoice (Finance) | Turn delivered work into receivables | Own the field calendar |
A Service Order is not a duplicate Sales Order. They fulfil different promises:
| Sales Order | Service Order | |
|---|---|---|
| Promise | Deliver goods (plus minor service sold with the sale) | Deliver service with schedule, completion, technicians |
| Fulfilment | Delivery Order (product lines only), then invoice | Eight statuses: draft → (pending approval) → confirmed → scheduled → in progress → completed → invoiced |
| Service lines on a Sales Order | Treated as fulfilled when invoiced — no technician lifecycle | Tracks qty scheduled / completed / invoiced |
| Field | Does not dispatch jobs | May dispatch one or many jobs |
Six pairs people mix up
| Pair | One-sentence rule |
|---|---|
| Service Management tickets vs Customer Success Helpdesk | Two queues, two tables. Helpdesk is general support; billable contracted work is promoted into Service Management. |
| Service Project vs Operations Project | Service Project = delivery block + cost ceiling (not customer revenue). Operations Project = PMO / portfolio. They may link via an execution project, but do not invoice SM hours from Operations. |
| Service Contract vs Legal hub contract | Service Contract answers who pays, which rates, which SLA. Legal hub is signature / legal review. |
| Service catalog vs Products (P&M) | Products = sellable SKUs. Catalog = operational rate card (SLA, billing type, estimated hours). One active product maps to one active catalog item. A quote SKU with no catalog link cannot convert to a Service Order. Digital/Sales-only SKUs do not need a rate card. |
| P&M subscription vs retainer contract | Not auto-mapped. |
When to link the SKU to a rate card: required if the quotation will become a Service Order; not required for Sales-only digital SKUs or ad-hoc service lines without a product id. Create the rate card from the product (Create rate card); do not auto-create on convert.
| Project budget vs contract value | Budget is a cost cap for delivery. Revenue lives on the contract / order / invoice. |
Accepted quotation — convert to what?
A quotation converts once (accepted → converted). The wrong next document either double-sells or skips the delivery lifecycle you need.
Customer accepted the quotation
├─ Goods only (stock-tracked)
│ → Sales Order → (Delivery Order if required) → Invoice
│
├─ Services only, or service-led (with spare parts)
│ → Service Order
│ ├─ small one-off → Mode 1 (invoice from the order)
│ ├─ multi-phase implementation → add Contract + Project (Mode 2)
│ ├─ time & materials → T&M contract (Mode 3)
│ └─ needs a site visit → dispatch jobs from the order
│
├─ Mixed, goods-led (sell a machine + minor install)
│ → Sales Order
│ Install lines are fulfilled at invoice time.
│ If install needs a schedule / sign-off / technician → split a Service Order
│ (do not add scheduling fields onto sales lines).
│
└─ Recurring / retainer
→ Service Order + retainer contract (Mode 4)A won CRM deal follows the same mix: services-only often opens a Service Contract; goods + install stays on the Sales Order unless you explicitly split an SOW.
Ticket → quotation (out-of-contract upsell): many quotations per ticket are allowed. After accept, use the tree above.
Contract, project, service order — three independent frames
| Service Contract | Service Project | Service Order | |
|---|---|---|---|
| Answers | Who pays, rates, billing model, SLA, term | What we deliver, who, milestones, cost | One billable delivery scope |
| Lifespan | Years, renewals | Closes when the block of work is done | One execution |
| “Contains” orders | Orders consume entitlements / rate card | Orders are slices of the work | The order itself |
A Service Order has two independent parents. All four combinations are valid:
- Contract only — retainer / support, no project.
- Contract + one project — fixed-price SOW.
- Contract + many projects — MSA, several engagements.
- Project or order only — one-off (Mode 1). No contract required.
Linking rules:
- Orders under a contract inherit account, currency, payment terms, and the effective rate card (base lines + effective annexes), not raw catalog price.
- Attach orders only to an active contract, schedule inside the term. Exceeding contract value warns, it does not hard-block.
- Do not attach a project from contract A to an order on contract B.
- For a short one-off, do not force both a contract and a project.
Four billing models (and one golden rule)
Larger work (Modes 2–4) converges on the Billing queue. Cron only stages. A billing user creates a real draft invoice in Finance. Mode 1 invoices directly from the completed Service Order (partial invoices allowed).
Mode 1 — One-off
Quotation → Service Order → confirm → (schedule / in progress) → complete → invoice from the order.
No contract, project, or queue required. On-site → dispatch jobs from the order. Those jobs never auto-invoice.
Mode 2 — Fixed price / milestones
fixed_price contract + Project + milestones with amounts → complete a milestone → stage → invoice that slice.
A milestone stages once. It flips to invoiced only when a real invoice exists — not at stage time.
Mode 3 — Time & materials
Billable + approved timesheets → stage (when the T&M feature is on) → invoice.
A shortcut still exists: bill unbilled timesheets from the timesheet screen. The two paths exclude each other via timesheet billing status.
Mode 4 — Retainer / recurring
retainer contract + amount + cycle. Each period stages exactly one event (enable Recurring retainer billing). A human still creates the invoice. Auto-renew of the contract is a different switch.
Contract/ticket materials (no Service Order): record → stage → same invoice. If a Service Order exists, parts go on order part lines — do not also record contract consumption for the same items.
One engagement, one billing path
Four invoice origins. The same work may use only one:
| Path | When | What the product blocks |
|---|---|---|
| 1. Invoice from Service Order | Mode 1, or packaged hours on the order | Jobs dispatched from that order never auto-invoice |
| 2. Billing queue | Modes 2–4 | Hour overlap with completed Service Order hour-lines on the same contract + month is rejected |
| 3. Job auto-invoice | Job not linked from a Service Order, and not covered | Covered entitlement (contract / asset / serial warranty) with no explicit billing type → skip auto-invoice |
| 4. Timesheets.bill() shortcut | Finance bills approved hours without the queue | Cannot bill hours already staged / billed |
Do not sell hour lines on a Service Order and also stage timesheets for the same work, contract, and month. The product blocks this (it is not a warning). Pick one: hours on the order, or hours on timesheets.
Invoices that stamp an execution project require every line to share one workspace. Mixing two execution projects is rejected — invoice each project separately.
Tickets — demand intake
A service ticket is an incident / request / maintenance item tied to a customer (and often a contract).
Do not use the CS Helpdesk queue for this. Promote from Helpdesk to create a service ticket and keep the document chain.
From an open ticket, pick a primary next document (quotations may run in parallel):
| Intent | Next document | Constraint |
|---|---|---|
| In-entitlement or needs a billable lifecycle | Service Order | One live order per ticket. Cancelled orders can be replaced. The new-order form with ticketId is locked the same way. |
| Technician on site, order not needed yet | Field job | Inherits customer, asset, site, contract, checklist |
| Work outside the contract | Quotation | Many quotes OK |
| Support only | Resolve the ticket | Non-billable time; do not stage |
resolved / escalated are dedicated actions — not bulk list edits.
SLA: the contract policy wins over the company default.
Service Order lifecycle
Draft
Scope, catalog lines (or contract / quote lines whose SKUs already link), inventory parts, site address.
Pending approval (optional)
When Require service order approval is on, new orders hit a workflow gate.
Confirmed → scheduled → in progress
Delivery is committed. Dispatch field work from here. Lines track scheduled / completed / invoiced qty.
Completed
Scope delivered. If Service order parts stock is on, remaining parts issue from inventory at complete — not when the line is added. Cancelling the order voids those goods issues.
Invoiced
Full or partial invoices exist. The order shows invoiced / paid / due totals.
Do not delete a posted commercial document. Void the invoice instead.
Field Service — execution
The job answers who went, when, what they did, what they used. The order / ticket answers what was sold and how it bills.
- One Service Order → many jobs.
- Jobs from an order: no auto-invoice.
- Jobs from a ticket without an order may auto-invoice on complete/accept — except covered work unless someone sets an explicit billing type.
- Van stock, requisitions, tools sit on Inventory + Assets. With Enforce inventory link, parts must have a real item.
Finance invoices — the only AR output
Service Management does not insert ledger rows itself. It asks Finance to create draft invoices from the Service Order, the billing queue, the timesheet shortcut, or a standalone job.
Voiding an invoice restores queued events, timesheets billed via the shortcut, and invoiced quantities on the Service Order. Used hours on a retainer are not reversed on void — the work still consumed entitlement. Reverse used hours by rejecting a timesheet (blocked if already staged/billed: void the invoice first).
Foreign-currency contracts may stage at rate 1; edit the rate on the draft invoice before posting.
Amendments
Do not edit price / scope / term on a locked contract. Use an amendment: draft → (sign) → manual apply. Draft/pending annexes never change numbers. Effective annexes are immutable — fix with a new annex.
Situations — which path?
1. One-off repair, no contract
Ticket (optional) → quotation (if you need a price) → Service Order → complete → invoice from the order. On-site → dispatch from the order.
2. Sell a machine + minor install
Mixed quotation → Sales Order. Ship on a Delivery Order; install fulfils at invoice. Need a crew schedule → split a Service Order (never convert the same quote line twice).
3. Multi-phase implementation / SOW
Fixed-price contract + Project + amount milestones → stage each completed milestone. Do not milestone-invoice from Operations Projects when origin is Service Management.
4. Hourly outsourcing / legal / IT
T&M contract. Approve timesheets, stage, invoice. Do not also sell hour lines on a Service Order for the same month.
5. Recurring maintenance / retainer
Retainer contract, enable recurring staging. In-entitlement incidents: resolve (and job if needed) without auto-invoice. Over-entitlement hours: billable timesheets or an upsell quote/order.
6. Asset still under warranty
Ticket on the asset/serial. Covered job → no auto-invoice. Bill out-of-warranty work with an explicit billing type or a separate Service Order.
7. Helpdesk took the call, then it became contracted work
Promote to a Service Management ticket, then order/job. Do not keep working it on CS.
8. Emergency visit, commercial terms not decided
Ticket → job. Bill later: covered → close; out of scope → order or quote.
9. Same customer buys hardware and a maintenance plan
Two parallel chains, same CRM contact: Sales Order for the machine; retainer contract for maintenance. Do not mix execution workspaces on one invoice.
10. Scope change mid-project
Amendment (money/term) + new project milestones. Do not silently edit a signed contract.
11. Deposit / partial invoice on a large order
Mode 1: invoice part of the line qty. Mode 2: invoice by milestone. Do not type a manual Finance invoice and “reconcile later”.
12. Wrong invoice
Void it. Do not delete the order/contract. Do not create a second invoice for the same events until the first is voided.
13. Van is short of parts
Requisition from the job → approve → van issue or PO for the shortage. If the Service Order has part lines: inventory issues at order complete (when the stock gate is on) — do not also consume the same SKU on the contract.
14. Subcontractor did the work
That is buying a service: PO → service confirmation → AP bill. Not a customer AR invoice.
15. Quote rejected, or converted to the wrong Sales Order
If not yet converted, fix the mix. If already converted, you cannot convert again; raise a new document that does not reuse consumed quote lines.
Catalog, SKUs, parts
| You are entering | Pick from | Note |
|---|---|---|
| Service Order / contract lines | Service catalog | The order form does not pick Products |
| Quotation / Sales Order | Products | A service SKU that should become a Service Order must already link to an active catalog item |
| Parts on a Service Order | Inventory + UoM | Issue at order complete (stock gate) |
| Job parts | FS parts / van stock | Real inventory when the enforce-link gate is on |
| Consumption without an order | Contract/ticket materials | Do not combine with order part lines |
Before you click “create invoice”
- Which Mode? Only one path.
- If there is a Service Order: child jobs must not auto-invoice.
- Hours: approved, billable, uninvoiced; no same-month overlap with order hour-lines.
- Milestones: completed, not staged twice.
- One invoice = one execution workspace.
- Warranty / in-entitlement: confirm it is not billable.
- Quote SKUs already have catalog links.
Minimum permissions by role
| Work | Typical permission |
|---|---|
| View queue, orders, contracts | service_management:read |
| Create orders, tickets, contracts | :write |
| Assign work | :assign |
| Approve hours | :approve_timesheets |
| Stage / create service invoices | :billing |
| Activate an amendment | :amend_contract |
| SLA / automation | :config |
| Comment on service tickets | :write or tickets:write |
Settings that change the path
| Setting | Effect |
|---|---|
| Require service order approval | New orders start pending approval |
| Service order parts stock | Issue + COGS at order complete |
| Enforce inventory link (field) | Parts must map to inventory items |
| Auto-stage T&M | Approved timesheets enter the queue |
| Recurring retainer billing | One event per period |
| Auto-renew contract | Contract life, not cash |
| Customer signature on job | Acceptance gate before close |
Common failures
| Symptom | Typical cause |
|---|---|
| Cannot create an order from a ticket | A live order already exists |
| Cannot convert a quotation | Not accepted, already converted, or SKU missing a catalog link |
| Helpdesk tickets missing | Wrong app / queue |
| Approved hours not in the queue | Timesheet shortcut already billed them, or hour-path overlap |
| Job done, no invoice | Job came from a Service Order, work is covered, or acceptance is pending |
| “Wrong” SLA | Contract policy overrides company default |
| Project budget ≠ revenue | Budget is cost, not sell price |
| Record not found | Data scope own / team — the API returns 404 |