Field Service Reference Public

Research Evidence

The live Field Service module files inspected to write this guide: the 26 controllers, 61 models, 10 migrations covering 60 tables, 5 cron jobs, 15 config sidecars, 3 libraries, helpers, seeder and tests under modules/FieldService.

Guide version: r1 Module version: 1.13.1 Updated: 2026-08-02 Estimated time: 4 min
Research Evidence

Research Evidence

This page records the live module files that were read to write this guide, so the documentation can be trusted and re-verified. Everything below was inspected directly under modules/FieldService/. Nothing here is aspirational — it is what the package ships today.

Source: modules/FieldService/ Manifest: module.json Verified: 2026-07-18

Package Footprint

26Controllers
61Models
10Migrations
60Tables
5Cron jobs
3Libraries
3Helpers
15Config sidecars

Also inspected: README.md, CHANGELOG.md, specs/ (implementation plan, reuse contract, build status), one seeder and the test suite.

Controllers (26)

Screen controllers extend App_Controller and gate on the module and a permission in their constructor. The portal is a GuestController; the two API controllers extend the API base classes.

Dashboard & ops

  • FieldService
  • Fs_requests
  • Fs_work_orders
  • Fs_calendar
  • Fs_dispatch_board

Master data

  • Fs_skills
  • Fs_service_zones
  • Fs_service_templates
  • Fs_customer_sites
  • Fs_customer_assets

Workforce

  • Fs_technicians
  • Fs_crews

Planning

  • Fs_maintenance_plans
  • Fs_service_contracts
  • Fs_sla_policies

Commerce & parts

  • Fs_parts
  • Fs_quotes
  • Fs_billing
  • Fs_reports

Portal, app, APIs, admin, AI

  • Fs_portal, Fs_portal_access
  • Field_service_app
  • FieldService_api, FieldService_euapi
  • FieldService_settings
  • Fieldservice_ai

Data Layer — 10 Migrations, 60 Tables, 61 Models

Migrations are grouped by domain, idempotent and reversible, tracked in migrations_field_service. There is one model per table plus a dashboard aggregate model (61 total).

Migration fileCreates
..191340_create_fs_config_tablesSettings, number sequences
..191400_create_fs_service_master_tablesSkills, certifications, zones, templates
..191420_create_fs_customer_tablesSites, contacts, assets, warranties, meters, history
..191440_create_fs_request_tablesService requests and events
..191500_create_fs_work_order_tablesWork orders, tasks, notes, evidence, parts, time, expenses, approvals
..192000_create_fs_workforce_tablesTechnician profiles, crews, availability, routes, location
..192100_create_fs_planning_tablesMaintenance, contracts, entitlements, SLA
..192200_create_fs_commerce_tablesQuotes, billing candidates, payment links
..192300_create_fs_portal_mobile_tablesForm bindings, reports, feedback, portal tokens, devices, sync
..192400_create_fs_ai_tablesAI interactions and usage

The manifest lists all 60 tables (module.jsondatabase.tables), matching the migrations one-for-one.

Cron Jobs (5)

Each implements the job contract, is per-tenant, self-gated and idempotent, under modules/FieldService/jobs/.

  • GenerateMaintenanceOccurrencesJob → slug fs_generate_maintenance
  • EvaluateSlaRiskJob → slug fs_evaluate_sla
  • SendAppointmentRemindersJob → slug fs_appointment_reminders
  • ExpirePortalTokensJob → slug fs_expire_portal_tokens
  • DetectStaleTechnicianSyncJob → slug fs_stale_sync

Config Sidecars (15)

Under modules/FieldService/config/ — these wire the module into ERPat's menus, permissions, settings, routing and both APIs.

Registration & UI

  • module_config.php
  • menu.php, default_menu.php
  • permissions.php
  • widgets.php
  • profile_tabs.php
  • settings.php

Routing, logic & APIs

  • routes.php
  • statuses.php (status engine data)
  • system_logs.php
  • public_pages.php (CMS pickup)
  • api_routes.php, api_scope.php
  • euapi_routes.php

Libraries and Helpers

Libraries (3)

  • Fs_workflow.php — the status engine that reads config/statuses.php and enforces legal transitions.
  • Fs_report.php — service-report PDF generation.
  • Fieldservice_ai_service.php — wraps the AkbAI client for AI assist (named to avoid colliding with the Fieldservice_ai controller).

Helpers (3)

  • field_service_helper.php — gate helpers and shared utilities.
  • field_service_widget_helper.php — dashboard widget render functions.
  • fieldservice_ai_helper.php — AI redaction, prompt fingerprinting and allow-lists.

Seeder and Tests

  • Seeder: FieldServiceDemoSeeder.php — idempotent, reversible (--remove) two-week demo dataset covering the full table set (work orders in every status, SLA risk states, maintenance occurrences, quotes, billing, portal, mobile sync, AI history) with demo technician logins; forces Pro mode + all feature flags. Runs via php erpat db:seed FieldServiceDemo.
  • Tests: tests/FieldServiceTest.php + tests/bootstrap.php, run by php erpat module:test FieldService (not the core suite).

Specs Consulted

These planning documents under modules/FieldService/specs/ informed the descriptions on the other pages:

  • ERPat_Field_Service_Implementation_Plan.md — the original blueprint.
  • 01-REUSE-CONTRACT.md — how the module reuses Clients, Warehouse, Finance, Forms, Assets and Notifications.
  • 02-BUILD-STATUS.md — what is built vs. remaining.
Some advanced surfaces (parts of the AI subsystem, the full PWA client bundle, some Pro screens and commerce libraries) are documented per their specs and may still be under active completion. Where a capability is described here, it reflects the shipped configuration, routes, permissions and models for that area.
Was this guide helpful?

Report a content problem