Service

This page is generated from the in-app guide content — edit featureToggleGuides and run pnpm gen:feature-toggle-docs.

Advanced scheduling (dispatch board)

Full-screen dispatch board, capacity from shifts and leave, and an optimizer that proposes several plans.

CodeDefaultSwitch atTurn on first
service.advanced_schedulingOff/field-service/settings—

How it works

Parent switch of the dispatch board: every scheduling endpoint (board, optimizer, apply plan, job scheduling attributes) checks it first.

When ON

The full-screen dispatch board, capacity from shifts and leave, and the plan optimizer are available.

When OFF

The board link disappears and scheduling endpoints answer ‘feature disabled’.

Caveats

Scheduling a job through the normal job form still works. Existing bookings stay.

Assign jobs to a team

Allow dispatching a job to a whole team instead of one technician.

CodeDefaultSwitch atTurn on first
service.team_assignmentOff/field-service/settingsTeam management (service.team_management)

How it works

Gates team dispatch on jobs: assigning a team, and maintenance plans applying their team to the jobs they generate. The AI job assistant proposes team dispatch only when on.

Conditions for it to take effect

Needs ‘Team management’ on; with the parent off this switch reads as off.

When ON

The Assign team section on a job appears; a job can be dispatched to a whole team; plan-generated jobs get the plan’s team.

When OFF

Teams cannot be newly assigned; plan-generated jobs are created without the team (logged).

Caveats

Teams already on jobs stay and can still be removed.

Auto-escalate on SLA Breach

Automatically escalate tickets that breach their SLA

CodeDefaultSwitch atTurn on first
service.auto_escalation_on_breachOff/service-management/settings—

How it works

A job every 15 minutes, per company, finds open Service Management tickets past their resolution deadline that were not yet auto-escalated, raises them one support tier and notifies the assignee (or creator).

When ON

Breached tickets climb a tier automatically, once each.

When OFF

No automatic escalation; escalate by hand.

Caveats

Needs deadlines, so ‘SLA Enforcement’ must be on. Helpdesk tickets use the SLA setting ‘Escalate on breach’ instead.

Auto-invoice Time & Material

Allows automatic staging of approved billable hours into the billing queue (no automatic job uses it yet). Manual “Stage for billing” always works; invoices are created from the queue.

CodeDefaultSwitch atTurn on first
service.auto_invoice_time_and_materialOff/service-management/settings—

How it works

Gate of the automatic path that stages approved billable hours into the billing queue.

When ON

The automatic staging path is allowed (no scheduled job calls it yet).

When OFF

The automatic path is refused.

Caveats

Manual ‘Stage for billing’ always works. Nothing is invoiced automatically — invoices are generated from the billing queue.

Auto-Renew Service Contracts

Active service contracts are automatically renewed for the same period when they reach their expiry date

CodeDefaultSwitch atTurn on first
service.auto_renew_service_contractOff/service-management/settings—

How it works

The daily contract job renews active service contracts that have ‘auto-renew’ ticked on the contract when they reach their end date.

When ON

Those contracts are extended for the same period and the owner is notified.

When OFF

No contract renews automatically, even with ‘auto-renew’ ticked.

Caveats

Contracts without the per-contract ‘auto-renew’ tick are never renewed by this. New tenants start with this on.

Company assets go through work orders

External Field Service jobs and maintenance plans cannot target company-owned assets — use an internal job or an asset work order

CodeDefaultSwitch atTurn on first
service.enforce_asset_ownershipOff/field-service/settings—

How it works

Checked by the job purpose guard on create/update, by Field Service import and by maintenance plans.

When ON

External jobs and maintenance plans cannot target company-owned assets.

When OFF

Not checked.

Caveats

Use an internal job or an asset work order for company assets.

Customer Portal Visibility

Show tickets to customers in the self-service portal

CodeDefaultSwitch atTurn on first
service.customer_portal_visibilityOff/service-management/settings—

How it works

Gates the Service Management ticket part of the customer portal and the portal link in ticket e-mails.

When ON

Customers see and reply to their tickets in the portal; ticket e-mails carry a portal link.

When OFF

The portal neither shows nor accepts Service Management tickets; e-mails go out without the portal link.

Caveats

The Customer Success helpdesk portal has its own switch.

Customer Signature Required

External jobs close to pending acceptance; the customer sign-off (signature or acceptance photo) is required before the job is accepted. Internal jobs are exempt

CodeDefaultSwitch atTurn on first
service.customer_signature_requiredOff/field-service/settings—

How it works

Changes how an external job closes: completion moves it to pending acceptance, and the customer sign-off (signature or acceptance photo) accepts it.

When ON

External jobs need the customer sign-off to be accepted.

When OFF

Completion closes the job directly.

Caveats

Internal jobs are exempt. Works with ‘Invoice on Customer Acceptance’ to defer billing.

Enforce agent eligibility on assignment

Tickets and service orders can only be assigned to an agent whose tier and skills meet the requirements declared on the service catalog item (or the ticket tier). When off, the picker only flags ineligible agents.

CodeDefaultSwitch atTurn on first
service.enforce_agent_eligibilityOff/service-management/settings—

How it works

Checked in the same transaction as assigning a ticket or service order.

When ON

An assignee whose tier (and, for catalog-linked work, skills) does not meet the requirement is refused.

When OFF

The agent picker only flags ineligible agents.

Caveats

Existing assignments are not re-checked.

Enforce contract rates on service orders

A service order line linked to an active contract must use the contract’s effective rate. When off, the contract rate is only a default and users may override it.

CodeDefaultSwitch atTurn on first
service.enforce_contract_ratesOff/service-management/settings—

How it works

Checked when lines are priced on service orders and service quotations linked to an active contract.

When ON

A line whose catalog item is on the contract must use the contract rate; a different price is refused.

When OFF

The contract rate is filled in as a default; a different price is kept as a manual override that remembers the contract price.

Caveats

Lines whose item is not on the contract are not affected.

Enforce Contract Validation

Block job creation when the linked service contract is missing, inactive, out of its date range, or out of included visits. The check always runs and always records its reason on the job; this switch decides whether it also blocks. Off by default — review the warnings first.

CodeDefaultSwitch atTurn on first
service.enforce_contract_validationOff/field-service/settings—

How it works

On job creation (form and import) the linked service contract is always checked (exists, active, in date range, visits left) and the reason is recorded on the job. This switch decides whether a failure also blocks.

When ON

Creation is refused when the check fails.

When OFF

The job is created with the warning recorded.

Caveats

Review the recorded warnings before turning it on.

Enforce Inventory / Asset Linkage

Field Service parts, stock, requisitions and tools are backed by canonical Inventory items and the Asset Register (van stock mirrors to Inventory; requisitions create a stock request; tools become assets). Off by default — turn on only after the backfill migration has run.

CodeDefaultSwitch atTurn on first
service.enforce_inventory_linkOff/field-service/settings—

How it works

Read by Field Service parts, stock and requisitions: they then use canonical Inventory items and the Asset Register.

When ON

Van stock mirrors to Inventory, requisitions create stock requests, tools become assets.

When OFF

Field Service keeps its own part records.

Caveats

Turn on only after the backfill migration has run.

Field Service jobs via billing queue

Completed field service jobs not dispatched from a service order stage billing items (priced scope lines, parts, technician hours at the agent rate) in the Service Management billing queue for review, instead of auto-creating an invoice.

CodeDefaultSwitch atTurn on first
service.fs_jobs_via_billing_queueOff/service-management/settings—

How it works

Decides where a completed Field Service job that did not come from a service order is billed.

When ON

Its priced scope lines, parts and technician hours are staged in the Service Management billing queue for review.

When OFF

The Field Service invoice consumer creates the invoice directly.

Screens, documents and reports affected

Field Service job completion, Service Management billing queue, job labour list.

Caveats

Jobs dispatched from a service order always bill through the order. Applies to jobs completed after the change.

First Response SLA

Track and enforce a separate SLA timer specifically for the first agent response to a new ticket

CodeDefaultSwitch atTurn on first
service.first_response_sla_enabledOn/service-management/settings—

How it works

Adds a first-response deadline next to the resolution deadline when a Service Management ticket is stamped.

When ON

Tickets also get a response-due time.

When OFF

Only the resolution deadline is stamped.

Caveats

Has effect only while ‘SLA Enforcement’ is on.

Invoice on Customer Acceptance

Defer the AR invoice until the customer signs off (accept) instead of on completion

CodeDefaultSwitch atTurn on first
service.invoice_on_acceptanceOff/field-service/settings—

How it works

Moves the moment a job is billed from completion to customer acceptance.

When ON

No invoice is created while the job waits for sign-off; Service Management invoices for it are blocked too.

When OFF

Billing happens on completion.

Caveats

Meaningful when ‘Customer Signature Required’ is on.

Invoice only from confirmed reconciliation

Service Management billing items can be invoiced only from a reconciliation statement the customer has confirmed (signed record attached). Manual selection and period invoicing are disabled.

CodeDefaultSwitch atTurn on first
service.billing_statement_requiredOff/service-management/settings—

How it works

Checked at the invoice writer, the service order invoice path and the button policy of the billing queue.

When ON

Billing items can be invoiced only from a reconciliation statement the customer confirmed (signed record attached); manual selection and period invoicing are disabled.

When OFF

Items can be invoiced by manual selection or by period.

Caveats

Turning it on does not touch invoices already issued.

Job Cost Tracking

Track labour time and parts cost against each field service job for profitability analysis

CodeDefaultSwitch atTurn on first
service.job_cost_trackingOn/field-service/settings—

How it works

Gates the job cost writes and the job cost card.

When ON

Labour and parts costs can be recorded on each job for profitability.

When OFF

Cost writes are refused and the cost card is hidden.

Caveats

Costs already recorded stay.

Maintenance lead time (days)

Default days-ahead for new maintenance plans. Existing plans keep their own value.

CodeDefaultSwitch atTurn on first
service.pm_default_lead_time_days7/settings/others-configuration—

How it works

Pre-fills the lead time of a new maintenance plan when none is entered.

When ON

Generation uses each plan’s own lead time.

When OFF

Not a switch — default 7 days.

Caveats

Changing it does not alter existing plans.

Parts Requisition Workflow

New parts requisitions start in pending approval and open the approval workflow; off = they start as draft and are submitted by hand (still approved before issue)

CodeDefaultSwitch atTurn on first
service.parts_requisition_workflowOff/field-service/settings—

How it works

Sets the starting status of a new parts requisition.

When ON

It starts in pending approval and opens the approval workflow.

When OFF

It starts as draft and is submitted by hand.

Caveats

Either way a requisition is approved before parts are issued. The parts availability agent runs only when on.

Preventive Maintenance

Generate service jobs automatically from maintenance plans on their schedule, ahead of each due date. Off by default — turn on after checking a plan with the manual “Generate now” button.

CodeDefaultSwitch atTurn on first
service.preventive_maintenanceOff/field-service/settings—

How it works

Turns on the scheduled job that generates service jobs from maintenance plans ahead of each due date (each plan’s own lead time).

When ON

Due plans create jobs automatically.

When OFF

Nothing is generated automatically.

Caveats

‘Generate now’ on a plan works whether on or off — use it to check a plan before turning this on.

Preventive maintenance anchored on

What a new or edited maintenance plan must be tied to: an asset, a maintenance contract, or either.

CodeDefaultSwitch atTurn on first
service.pm_anchor_modeasset/settings/others-configuration—

How it works

Checked when a maintenance plan is created or edited: asset, contract, or flexible (either).

When ON

Asset: a plan must target an asset. Contract: it must target a maintenance contract. Flexible: either.

When OFF

Not a switch — default asset.

Caveats

Changing the mode does not re-check existing plans; they keep generating as before.

Recurring Retainer Billing

Each billing cycle, stage a pending billing event for every active retainer contract; review it in the Billing queue and generate the invoice with one click

CodeDefaultSwitch atTurn on first
service.recurring_retainer_billingOff/service-management/settings—

How it works

Each billing cycle the contract job stages one pending billing event per active retainer contract.

When ON

Retainer fees appear in the billing queue each cycle; generate the invoice from there.

When OFF

The job skips silently; the manual ‘stage retainer’ action is refused as not configured.

Caveats

Stages only — never posts an invoice by itself.

Require service order approval

Every new service order must be approved before it can be confirmed. When off, an order still needs approval if it has a discounted line (with price approval on discount) or reaches the sales order amount threshold.

CodeDefaultSwitch atTurn on first
service.require_service_order_approvalOn/service-management/settings—

How it works

Decides at confirmation whether a new service order needs approval. Combined with OR: this switch, a discounted line with ‘price approval on discount’, or the order amount (in company currency) reaching the sales order approval threshold.

When ON

Every new service order needs approval before confirmation.

When OFF

Approval is needed only by the discount or amount rules.

Caveats

Turning it off does not release orders already waiting for approval.

Require service project approval

Every new service project must be approved through the approval workflow before work starts. When off, only projects whose budget reaches the service project approval threshold need approval.

CodeDefaultSwitch atTurn on first
service.require_project_approvalOff/service-management/settings—

How it works

Checked when a service project is created through the approval workflow.

When ON

Every new service project goes to approval before work starts.

When OFF

Only projects whose budget reaches ‘Service project approval threshold’ go to approval.

Caveats

The threshold applies whether this is on or off; clear the threshold to remove the amount rule.

Resolution Note Required

A ticket cannot be marked resolved without a resolution note.

CodeDefaultSwitch atTurn on first
service.require_resolution_noteOff/service-management/settings—

How it works

Checked in the Resolve action of a Service Management ticket.

When ON

Resolving without a resolution note (blank or only spaces) is refused.

When OFF

Tickets can be resolved without a note.

Caveats

The general edit and bulk update cannot set ‘resolved’, so Resolve is the only path.

Service Contract Required for Ticket

A ticket can only be created linked to a service contract that is active and within its term.

CodeDefaultSwitch atTurn on first
service.contract_required_for_ticketOff/service-management/settings—

How it works

Checked when a Service Management ticket is created (form, AI copilot).

When ON

A ticket must link to an active service contract within its term, otherwise creation is refused.

When OFF

Tickets can be created without a contract.

Caveats

CSV import (migration) is exempt. Existing tickets are not re-checked.

Service project approval threshold

Service projects whose budget, converted to company currency, reaches this amount need approval when created, and again when the budget is raised above the last approved budget while planning or active. Rejecting a raise restores the approved budget. Blank = no amount rule.

CodeDefaultSwitch atTurn on first
service.project_approval_threshold50000000/service-management/settings—

How it works

Amount in company currency. Project budgets are converted at the document rate; a missing exchange rate is refused rather than skipped.

When ON

Projects at or above the amount need approval on create, and again when the budget is raised above the last approved budget.

When OFF

Blank = no amount rule.

Caveats

Works independently of ‘Require service project approval’. Default 50,000,000.

Shared equipment scheduling

Book shared machines and tools by time slot so two jobs never use the same equipment at once.

CodeDefaultSwitch atTurn on first
service.equipment_schedulingOff/field-service/settingsAdvanced scheduling (dispatch board) (service.advanced_scheduling)

How it works

Adds shared equipment to scheduling: the optimizer checks equipment conflicts, job templates copy their equipment requirements onto new jobs, and equipment attributes become editable.

Conditions for it to take effect

Needs ‘Advanced scheduling (dispatch board)’ on; with it off the scheduling endpoints refuse before this is read.

When ON

Two jobs cannot be planned on the same machine or tool at the same time.

When OFF

No equipment conflict check; template equipment is not copied; equipment attributes cannot be edited.

Caveats

Existing equipment bookings stay and still follow when a job is moved.

SLA Enforcement

Enforce SLA timers and alert agents when breaches are approaching

CodeDefaultSwitch atTurn on first
service.sla_enforcementOn/service-management/settings—

How it works

Service Management’s own SLA switch, read together with the SLA engine switches: a ticket is stamped only when this, Settings → SLA ‘Enable SLA engine’ and ‘Service Management tickets’ are all on (create, import, priority change).

When ON

New Service Management tickets get a resolution deadline (and a first-response deadline when ‘First Response SLA’ is on); breach agents run.

When OFF

New tickets get no SLA policy or deadlines. Deadlines already stamped stay.

Screens, documents and reports affected

Service Management tickets, SLA breach agents for tickets and field jobs, SLA reports.

Caveats

Policy choice follows the sla.* rules (priority match, per-priority targets, business hours).

Team management

Group technicians into service teams. Off: the Teams page and its nav entry are hidden.

CodeDefaultSwitch atTurn on first
service.team_managementOff/field-service/settings—

How it works

Parent switch for Field Service teams: the team roster API and the Teams screens.

When ON

The Teams page and menu entry appear; teams can be created and members managed.

When OFF

Teams page and menu are hidden and the roster API refuses. ‘Assign jobs to a team’ and the teammates’ jobs switch become effectively off.

Screens, documents and reports affected

Field Service → Teams, technician form, job team assignment, team data scope.

Caveats

Teams already on jobs stay and are still shown on job detail. Existing tenants that already had teams were kept on by migration 1388.

Teammates’ jobs visible

Widens the ‘own’ data scope so members of a team also see that team’s jobs. Only ever adds records.

CodeDefaultSwitch atTurn on first
service.team_data_scopeOff/field-service/settingsAssign jobs to a team (service.team_assignment)

How it works

Widens the ‘own’ data scope on Field Service jobs: lists, detail, reports and overview add jobs assigned to the viewer’s teams.

Conditions for it to take effect

Needs ‘Assign jobs to a team’ (and therefore ‘Team management’) on; otherwise read as off in both list and report queries.

When ON

Own-scope users also see jobs dispatched to their team.

When OFF

Own-scope users see only jobs where they are the technician.

Caveats

Only ever adds records; team or all scope users are unaffected. No data changes when toggled.