Acumatica · Customization

Acumatica Field Service — Dispatch Board

How to use the Acumatica Field Service dispatch board — assigning staff to appointments, optimising routes, tracking time on site, and the mobile app that closes the loop.

John Kihiu12 min read

The dispatch board — Acumatica calls it the Calendar Board — is where the Field Service module either wins or loses the room. Back-office staff will forgive clunky setup screens; a dispatcher staring at the board eight hours a day will not. I've configured field service for an equipment maintenance company and an HVAC-adjacent contractor, and in both cases the board configuration and the discipline around appointment statuses mattered more than any other module setting.

The object model under the board

Understanding the board means understanding three documents. A service order (FS300100) is the commitment — customer, location, problem, estimated services and inventory. An appointment (FS300200) is a scheduled visit against that order: one order can have many appointments (initial visit, return with parts). The board schedules appointments, assigning them to staff (employees flagged as service personnel, with skills, licenses and service areas) on a timeline. Everything you drag on the board is an appointment; everything unscheduled in the side panel is an order or appointment awaiting a slot.

Board setup that dispatchers actually thank you for

The board is only as live as the mobile flow

Status colors update when technicians update statuses. If techs don't tap "en route" and "start" on the mobile app, the board is a beautifully rendered fiction. Make the mobile status flow brutally simple — the standard app screens, trimmed via mobile site map customization to just status actions, signature and photos — and the board becomes trustworthy.

The status flow and its automation

Appointments run a workflow: Not Started → En Route → In Process → Completed → Closed (with Paused branches). Each transition timestamps — that's where actual-vs-estimated duration reporting comes from, and it's what makes payroll-adjacent questions answerable. Business events on these transitions do useful work with zero code: notify the customer by SMS/email when the tech goes en route, alert the dispatcher when an appointment sits In Process ninety minutes past its estimated duration, or when a scheduled appointment hasn't gone en route fifteen minutes after start time.

For deeper logic, appointment DACs extend like anything else. One client needed appointments over four hours to require a second tech — a RowPersisting validation on the appointment graph extension:

C#
public class AppointmentEntryExt : PXGraphExtension<AppointmentEntry>
{
    protected virtual void _(Events.RowPersisting<FSAppointment> e)
    {
        var row = e.Row;
        if (row == null || row.EstimatedDurationTotal <= 240) return;

        int staffCount = Base.AppointmentServiceEmployees
            .Select().Count;
        if (staffCount < 2)
            PXUIFieldAttribute.SetWarning<FSAppointment.estimatedDurationTotal>(
                e.Cache, row,
                "Appointments over 4 hours normally require two staff members.");
    }
}

Routes and the map view

If you license the routes functionality, the board pairs with map-based views — appointments plotted by service address, and route optimization to sequence a day's visits per vehicle. My experience: the map view earns its keep immediately for density visualization (a dispatcher seeing three jobs in the same suburb schedules them consecutively without any algorithm), while full route optimization requires clean address data and realistic durations before its output beats a competent human. Geocode validation on customer locations is the unglamorous prerequisite — garbage coordinates put appointments in the ocean.

From appointment to invoice

The board's downstream payoff is billing. Completed appointments carry actual services, parts consumed, and time; the billing cycle configuration (per customer) decides whether invoices generate per appointment, per service order, or batched. Make sure techs close appointments with accurate lines on the day — the single biggest field-service billing failure I've seen is appointments left In Process for a week, invisible to the billing run, discovered when the month's revenue comes up short.

Wrapping up

Treat the calendar board as the dispatcher's cockpit: few rows, status colors, realistic durations, warnings over blocks. Wire business events to the status flow for customer notifications and exception alerts, keep the mobile flow so simple that techs actually feed the board live data, and enforce same-day appointment closure so billing sees reality. The module's mechanics are solid — the implementation work is making the humans and the board tell each other the truth.

John Kihiu
Acumatica ERP Developer · Laravel Engineer

Independent software engineer in Nairobi specialising in Acumatica customisations, Laravel backends, and tax fiscalisation integrations across East and Southern Africa.