Dispatchers drag every appointment after the run
The clearest signal of all. The engine is optimising for something other than what the board actually values — usually travel when the business is really managing SLA risk.
Salesforce Field Service decides who gets which job using work rules and service objectives you configure. When the schedule looks wrong to the people who run the board, the engine is working correctly against the wrong instructions. Twopir tunes those instructions until the optimizer produces assignments dispatchers accept. Configuration, not reimplementation.
These are configuration symptoms, not platform defects. Each one points at a specific rule or objective that is missing, too strict, or weighted for the wrong outcome. All six are fixable without touching code.
The clearest signal of all. The engine is optimising for something other than what the board actually values — usually travel when the business is really managing SLA risk.
A work rule is rejecting every candidate. Over-strict skill matching, a territory with no members for that window, or a required resource preference that nobody satisfies.
Straight-line distance instead of street-level routing, or operating hours that ignore where a technician actually starts and ends the day, produce schedules that only work in theory.
Preferred-resource weighting or a narrow skills matrix funnels work to a handful of people. Utilization averages look acceptable while individuals burn out and capacity goes unused.
Without in-day optimization and a priority model, a single urgent job is absorbed by manually moving six others — and the cost of that disruption is never measured.
Installations needing two people for three days, or a crew with a required lead, fall outside a policy designed for single-visit break-fix — so they get booked outside the system entirely.
This is the distinction almost every mistuned policy gets wrong. Work rules are hard filters that reject any resource violating them, and they run first. Service objectives are weighted scores applied only to the candidates that survived. A rule removes options; an objective ranks them.
| Work Rules | Service Objectives | |
|---|---|---|
| What it does | Rejects any service resource that violates the rule. Produces the candidate list. | Scores the surviving candidates and ranks them. Produces the chosen assignment. |
| When it runs | First. Always before objectives. | Second, and only against resources the rules already allowed. |
| Effect of getting it wrong | Appointments come back unscheduled, or the only eligible technician is three hours away. | Appointments schedule fine but to the wrong person, so dispatchers override them. |
| Typical examples | Required skill and skill level, matching service territory, working within operating hours, resource availability and absences, required resource preference. | Prioritise the earliest possible slot, minimise travel, favour a preferred resource for that account, balance technician workload. |
| How it is tuned | By relaxing or tightening the constraint — usually by making a hard skill requirement a preference instead. | By changing the relative weighting, so the objective the business actually cares about outranks the others. |
| Diagnostic question | "Why was nobody eligible for this job?" | "Why was this person chosen over that one?" |
The practical consequence: if objectives are weighted for minimum travel while your dispatchers are really managing SLA risk, the engine will keep producing technically valid schedules that a human overrules — every single day.
Running the wrong mode at the wrong time is a common cause of schedule churn — technicians see their day rearranged after they have already driven to the first job.
A scheduled batch run across a territory and date range, usually overnight. It reshuffles everything it is allowed to touch to find the best overall plan.
Re-optimizes the remainder of the current day when reality diverges from the plan — an overrun, a no-access, an emergency call.
Optimizes one technician's day rather than the whole territory. Useful for targeted fixes and for handling a single resource's disruption.
Scheduling tuning is empirical. We change one thing, re-run against real appointments, and measure — rather than redesigning the policy in a workshop and hoping.
We measure which assignments dispatchers change and what they change them to. The override pattern is the most honest statement of what your business actually optimises for.
Every work rule and service objective reviewed against that pattern — what is over-strict, what is missing, what is weighted against the outcome you say matters.
Skills, skill levels, territory membership, operating hours and travel configuration. Most "optimizer problems" are actually stale foundation data underneath the policy.
Changes applied to a policy variant and run against real historical appointments, so the effect is visible before any live schedule depends on it.
One territory at a time, with override rate tracked as the primary success metric. If dispatchers stop overriding, the policy is right.
The figures below come from one documented engagement with an HVAC services company running more than 100 field technicians across multiple regions. They describe that client's results — not an industry benchmark and not a Twopir average.
Automated scheduling and optimized routing across a 100+ technician fleet.
Before the engagement there was no real-time visibility of technician schedules or locations, which made assigning jobs efficiently almost impossible. Configuring the scheduling engine to optimize assignments on skills, location and availability produced the reduction in response times above, and technicians completed 20% more jobs per day from efficient routing and faster access to job information.
The five checks that explain most underperforming scheduling policies.
The engine produces the schedule; dispatchers work it. Console configuration, capacity planning, shifts and crews — and the change management that decides adoption.
Auto-dispatch rules, bulk scheduling jobs and the work order automation that feeds appointments into the engine in the first place.
Agentforce can assist with scheduling and gap-filling — but only on top of a policy that already produces sensible assignments. Tune first, then automate.
If you are not live yet, the scheduling policy is designed during implementation — alongside the territory and skills model it depends on.
A work rule is a hard filter. It rejects any service resource that violates it, and rules are always applied before objectives — they produce the list of candidates who are allowed to take the job. A service objective is a weighted score applied only to the candidates that survived the rules, and it decides which of them is chosen. The practical difference is diagnostic: if an appointment will not schedule at all, look at your work rules; if it schedules to the wrong person, look at your objective weightings.
Fewer than most orgs end up with. A policy per genuinely different scheduling behaviour is right — typically one for routine planned work, one for emergency or SLA-driven work where speed outranks travel, and sometimes one for installations or multi-day jobs. A policy per work type, per region and per customer tier is how orgs end up with twenty policies nobody can reason about. If two policies differ only in one objective weighting, they usually should have been one.
A work rule rejected every candidate. The usual causes are an over-strict skill requirement where a skill level is set higher than anyone actually holds, a territory with no members available in the appointment window, an operating hours or absence configuration that removes the people you expected, or a required resource preference that only one person satisfies and they are already booked. The fix is almost always to relax the constraint — often by converting a hard skill requirement into a preference so it becomes an objective rather than a filter.
Global optimization belongs outside working hours, typically overnight, scoped per territory — running it mid-morning rearranges days that technicians have already started, which destroys trust faster than a bad schedule does. In-day optimization is what handles disruption during the working day, and it should be constrained so it only moves work that has not been started. Resource schedule optimization is the narrowest and is useful both for a single disrupted technician and as a safe way to test a policy change before applying it broadly.
Yes. Service crews let you schedule a group of resources as a unit with defined roles, and multi-day work can be modelled so a single job spans several appointments across days. Both need deliberate design rather than default configuration — crew membership has to be maintained as people move, and multi-day work needs rules about whether the same crew must return. Orgs that skip this design usually end up scheduling installations manually outside the system, which then distorts every utilization and capacity report they produce.
Substantially less than an implementation, because the platform is already live and the work is configuration rather than build. The audit and override analysis need enough historical scheduling data to see real patterns, so the constraint is usually how much clean data exists rather than consultant time. Tuning then runs as cycles — change, simulate, roll out to one territory, measure — and it is deliberately iterative, because a policy that is reweighted once and never re-examined drifts again as territories, skills and job mix change.
The override pattern is the fastest diagnostic there is. Bring us a week of it and we will show you which rules are too strict, which objectives are weighted wrong, and what it takes to fix.
Speak with a team that tunes scheduling policies for a living