xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
Auto DMSConsumer Goods DMSSales Force Automation (SFA) FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Field Service/Troubleshooting field service
TROUBLESHOOTING · Last reviewed

Troubleshooting field service

This page helps you fix a field service problem from the symptom you see: work that nobody receives, a console that shows the wrong people or jobs, a technician who can't start or end work, a missing position on the map, a slot that can't be booked, or a record that wasn't assigned to anyone. Each answer names the cause and the record or setting to check, then links to the page that explains that part of field service in full.

Overview

Field service decisions in xMatix follow fixed rules applied to records you can inspect. Most problems come from one of these places:

AreaWhat decides the resultFull explanation
Queue routingThe queue's agent pool, each person's presence, skills and open loadSkills, capacity and work routing
Dispatch consoleThe console page's settings, attendance records and leave requestsThe dispatch console
Technician's dayThe mobile app configuration, the time sheet and the user's security profileThe technician's day
LocationThe mobile app's Location Tracking tab, the phone's permission and who may read positionsLocation and the travelled path
BookingsBranch time slots and their per-date bookingsResource availability and slot holds
Automatic assignmentProcess Studio assignment rules and partner-resource rulesAutomatic owner assignment

Start with the section that matches what you see. If you still need help, collect the details in What to collect before you escalate.

Queue routing

Queued work stays Pending

Nobody passed the queue's checks at the moment the work was routed. The work is not lost: it stays Pending until someone picks it up or a supervisor assigns it. Check, in this order:

  1. Membership. The person's resource is a member of the queue's Agent pool (a resource group).
  2. Identity. The resource is active and linked to a user account.
  3. Presence. The person's presence is Available, and their browser renewed it in the last five minutes. A presence that wasn't renewed reads as Offline, even if it still says Available. This happens when someone closes the browser without going offline.
  4. Skill. Only on a Skill-based queue, and only when the route asks for a skill: the person needs a resource skill whose Name is exactly that skill, with Proficiency Level 1 or more.
  5. Capacity. The person's open work (assigned and accepted items) plus the new item fits within Max Work Items on their presence record. The default is 5.

The supervisor view shows each queue's pending backlog and each person's effective presence, maximum and current load. Compare it with the checks above.

Work on a skill-based queue never reaches anyone

Out of the box, every new resource skill is named from the RS number series, for example RS-21102025-000014, and starts at level 0. A skill-based queue compares the requested skill with that stored name, so nothing matches. Turn off Resource Skills Name Setting, give each resource skill the exact skill text your routes request, and set Proficiency Level to at least 1. See Skills, resource skills and skill requirements.

Work went to someone without the skill

Three things send work without a skill check:

  • A decline routes the work again through the same queue, without the original skill.
  • Transfer to a queue routes without a skill, and Transfer to a resource assigns straight to that person with no checks at all.
  • A supervisor Reassign skips every check.

Inbound calls never carry a skill, so on a call a skill-based queue offers the call to the least-loaded available agent.

Work keeps arriving from a queue we switched off

Switching a queue's Active off does not stop a route that names it. Work routed there still creates Pending items. Also change the business rules and telephony routes that send work to that queue.

Two people were equally free, and the same one always wins

When candidates are tied, the winner is decided by an internal order, not by any priority you set. If you need a specific person first, use a Direct route that names them, or an assignment rule.

Dispatch console

I can't find the dispatch or allocation menu

Your security profile hasn't been granted the console page, or the page isn't in your app. In the shipped setup, Service → Settings → Service Order Dispatch can only be reached by System Admin. Ask your administrator to grant the page. The shipped pages and their grants are listed on the field service overview.

I dispatched a service order but the technician doesn't see it

Service Order Dispatch writes the order's Service Advisor, not its Technician. Open the order and use Time Sheet to put the technician on the labour lines.

Finished jobs still appear on the console

A console hides only items whose status exactly matches one of its closed statuses. The defaults are completed, cancelled, closed, expired and rejected, and none of the shipped pages changes them. No service order status matches those words, so Work Completed, Invoiced and Delivered orders stay. Converted and lost leads stay too. Ask your administrator to set the page's closed statuses, as described in the configuration reference.

Someone shows as Absent but is working

The console infers Absent when a person has no attendance record for the day while other people do. Attendance records are created when a person checks in on the field app, so the person hasn't checked in yet. Ask them to check in.

Someone marked Absent still gets work from Optimize day

Optimize day and Get candidates skip only people on leave, on a holiday or on a week off. People with an inferred Absent or a Half Day keep their lane. An attendance record whose type is Absent, or any other value the console doesn't recognise, is read as present. Review those lanes before you accept the result. See How the dispatch console reads attendance.

A person is on leave for the day, but the leave isn't approved yet

Any leave request that overlaps the day takes the person off it, unless its status contains "reject" or "cancel". A pending request already counts. Reject or cancel the request if the person is working after all.

"No available resources in scope"

Every person in scope is on leave, on a holiday or on a week off that day, or the scope is empty. Check the scope chips and any pending leave requests.

"No free slots in the visible window"

Every available lane is full up to the end of the window you are looking at. Switch to a longer window, add people to the scope, or move to another day.

A Gantt drop changes the owner but not the time

The console page has no schedule field. Without one, a drop only reassigns, and Get candidates and Optimize day aren't offered. Of the shipped pages, Service → Allocation Console is set up this way.

Every card is the same length on the Gantt

The page has no duration field, so every item is drawn as a 90-minute block. Your administrator can set one in the page's console settings.

"Update failed — reverted" or "Reschedule failed — reverted"

The record refused the change: you can't edit it, a field is read-only for you, or a validation or business rule rejected it. Select Open record →, make the same change on the record, and read the message it shows.

The Map view isn't there

The console page has no location setting, or its views exclude the map. Your administrator sets both on the page.

Work I expect isn't on the console

Check the period (Day, Week or Month), the scope chips, the Unassigned toggle and any Showing a subset warning. Work assigned to someone outside your scope isn't shown.

The technician's day

"This action requires a connection"

The technician ran Start, Pause, End, Time Sheet, Check In or another server action while the phone was offline. These are never queued. Run the action again once connected. It records the time it actually ran, so tell the service advisor if the work really started earlier.

My service orders aren't available offline

The shipped mobile app doesn't download service orders or time sheets for offline use. Open your jobs while connected. An administrator can add Service Order, with its lines and time sheets, on the mobile app's Offline & Sync tab. See The technician's day.

Start, Pause or End isn't offered, or is refused

The user's security profile has no grant for the action. In the shipped profiles, only System Admin, Standard User and Sales Manager hold Start, Pause and End on the time sheet. The Service and Sales Executive profiles don't. An administrator adds the grants on the profile's Actions tab. See Security profiles.

A time sheet action is refused with a message

The action checks every ticked line before it changes any, so one wrong line refuses the whole action. For Start and End the heading reads Work Start is not allowed on one or more selected time sheet lines. (or Work End …). For Pause it reads One or more validation errors occurred. Each line then shows its reason:

MessageCauseFix
Work has already started on this line.The line is runningUse Pause or End instead
Work has already ended on this line; it cannot be started again.The line is finishedNothing more to record on it. Add a new labour line if more work is needed
Work has not started on this line yet, so it cannot be paused.The line hasn't startedSelect Start first
Work on this line is already paused.The line is already pausedSelect Start to carry on
Work Pause Reason is required when the work is set to Paused.No pause reason was givenChoose a pause reason
Work End cannot be marked before Work Start: start the work on this line first.The line hasn't startedSelect Start, then End
Work on this line is paused and that segment is closed. Start it again before marking Work End.The line is pausedSelect Start, then End
Work has already ended on this line.The line is finishedNothing to do

The service order still says work is running

The service order's work flags follow all the lines on its time sheet. One line that hasn't ended keeps the order from showing work ended. Open the time sheet, find the line that is still running or paused, and end it.

There is no Resume button

Use Start on the paused line. It opens a new stretch of work for the same task. A Resume action exists on the time sheet, but it has no server implementation and fails if someone adds it to a page.

My offline check-in shows a warning

An offline punch was recorded with warnings — some check-in rules were not met. The check-in was saved but flagged, for example because the phone was outside the branch radius. Offline check-ins are recorded at the phone's time. Tell your supervisor.

Location and the map

Check-in is disabled and asks for "Allow all the time"

Location tracking is on for the mobile app, and this Android phone doesn't allow background location. On the phone, set the xMatix app's location permission to Allow all the time, then return to the app. If the phone's policy won't allow it, an administrator can switch tracking off for that mobile app. There is no exception for one user.

A technician's position is hours old

Check that the person is checked in and hasn't paused the session, that the phone is online, and that the app was opened recently. Positions are uploaded in batches, so the latest position is only as recent as the last upload. On an iPhone the app records only while it is open on screen.

A resource is missing from the map

Check each of these:

  • The console page has a location setting. Without it the map isn't offered.
  • Enable location tracking is on for the mobile app, and the person is in a profile with Check-in required. People who don't check in are never tracked.
  • The resource is linked to a user and has uploaded at least one position.
  • You are allowed to read that person's position. You see your own position, the positions of people below you in the role hierarchy, and everyone's position if one of your security profiles has View All on Resource. See Who can see positions.

The path has gaps, or doesn't line up with the check-in

Gaps are expected while an iPhone app is in the background, during a pause, while standing still (the minimum-distance setting), or after a long offline stretch. The last batch of a session and batches that waited offline are uploaded without a link to the check-in, so compare a path with attendance by person and time.

Bookings and slots

A branch time slot isn't offered

The booking wizard lists only Active slots for the branch, with the exact Transaction Type being booked and a matching item, item group or service type where the slot names one. Check these, in order:

  • Active is switched on. A slot created without it is never offered.
  • The date isn't a branch holiday or in the past.
  • That weekday's capacity isn't 0. An empty weekday capacity is saved as 0, which closes the day.
  • Places are left. Places left are the date's booking Capacity (or the slot's weekday capacity) minus Capacity Utilized.

See Branch time slots.

"The time slot '…' is fully booked on …"

Someone else took the last place while you were filling the form. The places shown in the wizard are a guide, and the check that counts is made when the appointment is saved. Pick another slot or date.

"The selected time slot is inactive."

The slot's Active flag is off. An administrator switches it on in the branch's time slots, then you can save again.

"Booking an appointment requires a connection."

The mobile booking wizard needs a connection. Book again once the phone is online.

No appointment slots appear in the appointment-scheduling engine

The engine's background jobs run only when Enable appointment scheduling sweeps is on, under Setup → Feature Hub → Sales → Settings → Scheduling. It is off by default. The demo and service bookings made from the booking wizard don't use this engine. See Scheduling appointments.

Automatic assignment

A new record didn't get an Executive

Partner-resource rules fill the Executive only when a Lead, Opportunity or Appointment is created, never on edit and never on other records. Check, in order:

  1. No active Setup → Process Studio → Assignment rules entry writes the Executive on create for that entity. If one does, it decides instead.
  2. A partner resource exists with a Resource, the record's Partner Account, and either no branch or the record's Branch.
  3. Its Rule Success Criteria is empty or exactly All Rules Are Met, Any Rule Is Met or Always (No Criteria).
  4. It has at least one rule, unless its criteria is Always (No Criteria).
  5. Each rule's Operation stores one of equals, notEqual, lessThan, greaterThan, lessOrEqual or greaterOrEqual. The shipped Equal option never matches.
  6. Each Field Name is the internal name of a standard field on the record.

The full procedure, including the form fields an administrator must add first, is on Automatic owner assignment.

The wrong person was assigned, or my choice was replaced

On a new lead, opportunity or appointment, the first matching candidate replaces the Executive on the form. Candidates with no Assignment Sequence Number are tried before every numbered one. Look for those, for duplicate numbers, and for a broad fallback placed too early. Change the Executive after the first save: assignment doesn't run again on edit.

Service orders never get a technician automatically

Partner-resource rules don't run on service orders. Use a Setup → Process Studio → Assignment rules entry that fills the service order's Technician, or assign technicians with Time Sheet on the order.

A Process Studio assignment with a skill never picks anyone

Each candidate must hold every skill in Must hold every one of these skills: active, within its dates and at or above At proficiency. Names are compared ignoring capitals, but spaces and spelling must match. Use the assignment's Dry run to see who qualifies.

What to collect before you escalate

A screenshot rarely shows why a decision was made. Write down, or export where you are allowed to:

  • the record type and number, and the date and time with your time zone;
  • the partner account and branch on the record;
  • the person you expected and the person (or nobody) who received the work;
  • for queues: the queue, its routing model, and each candidate's presence, open load and Max Work Items, and the exact skill text requested;
  • for the console: the page, the scope chips, the period and window, and each affected person's attendance type and leave request status for that day;
  • for time sheets: the lines selected and the exact message;
  • for location: the mobile app, the person's last upload time and whether they were checked in.

Common questions

Why does the console show someone as available when attendance says Absent?

The console reads attendance by keywords: leave, half day, holiday and week off. A record typed Absent, or any other value, is read as present. Only an inferred Absent, when a person has no record for the day while others do, shows the Absent marker. Even then, Optimize day doesn't skip that lane: it skips only leave, holiday and week off. Treat the marker as a warning, move work by hand where needed, and correct the attendance record if it is wrong.

Can a supervisor give work to someone who is offline or lacks the skill?

Yes. Reassign and Transfer to a resource are deliberate overrides and run none of the routing checks: not membership, presence, skill or load. That is intentional, so a supervisor can deal with an exception, but it means the supervisor owns the check. Before you reassign, look at the person's presence and current load in the supervisor view, and their resource skills. A declined or transferred item that is routed through a queue again also loses its original skill requirement.

Is anything decided by AI in field service?

No. Queues offer work by a fixed routing model, assignment rules follow the conditions you write, and Optimize day fills free time back to back on the lane that becomes free earliest, at most 20 items per run. It doesn't consider skills, travel or customer preferences. Every result is an ordinary field value that a person can review and change, so check an optimized day before you rely on it.

Who can see where a technician has been?

The technician, the people above them in the role hierarchy, and users whose security profile grants View All on Resource. In the shipped profiles, System Admin, Standard User, Sales, Sales Executive and Service have View All on Resource, so they see everyone's position. Sales Manager doesn't. To limit position access to the role hierarchy, remove View All on Resource from a profile. A visit plan's path is visible to anyone who can read that visit plan.