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.
Package Footprint
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
FieldServiceFs_requestsFs_work_ordersFs_calendarFs_dispatch_board
Master data
Fs_skillsFs_service_zonesFs_service_templatesFs_customer_sitesFs_customer_assets
Workforce
Fs_techniciansFs_crews
Planning
Fs_maintenance_plansFs_service_contractsFs_sla_policies
Commerce & parts
Fs_partsFs_quotesFs_billingFs_reports
Portal, app, APIs, admin, AI
Fs_portal,Fs_portal_accessField_service_appFieldService_api,FieldService_euapiFieldService_settingsFieldservice_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 file | Creates |
|---|---|
..191340_create_fs_config_tables | Settings, number sequences |
..191400_create_fs_service_master_tables | Skills, certifications, zones, templates |
..191420_create_fs_customer_tables | Sites, contacts, assets, warranties, meters, history |
..191440_create_fs_request_tables | Service requests and events |
..191500_create_fs_work_order_tables | Work orders, tasks, notes, evidence, parts, time, expenses, approvals |
..192000_create_fs_workforce_tables | Technician profiles, crews, availability, routes, location |
..192100_create_fs_planning_tables | Maintenance, contracts, entitlements, SLA |
..192200_create_fs_commerce_tables | Quotes, billing candidates, payment links |
..192300_create_fs_portal_mobile_tables | Form bindings, reports, feedback, portal tokens, devices, sync |
..192400_create_fs_ai_tables | AI interactions and usage |
The manifest lists all 60 tables (module.json → database.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→ slugfs_generate_maintenanceEvaluateSlaRiskJob→ slugfs_evaluate_slaSendAppointmentRemindersJob→ slugfs_appointment_remindersExpirePortalTokensJob→ slugfs_expire_portal_tokensDetectStaleTechnicianSyncJob→ slugfs_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.phpmenu.php,default_menu.phppermissions.phpwidgets.phpprofile_tabs.phpsettings.php
Routing, logic & APIs
routes.phpstatuses.php(status engine data)system_logs.phppublic_pages.php(CMS pickup)api_routes.php,api_scope.phpeuapi_routes.php
Libraries and Helpers
Libraries (3)
Fs_workflow.php— the status engine that readsconfig/statuses.phpand 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 theFieldservice_aicontroller).
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 viaphp erpat db:seed FieldServiceDemo. - Tests:
tests/FieldServiceTest.php+tests/bootstrap.php, run byphp 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.