Service agreements
The commercial relationship with a customer: period, coverage, optional visit pack, optional recurring charges. It is not a work order, not a preventive plan, and not a Veldriq Plan invoice.
Sales → Service agreements · /app/w/{workspace}/service-agreements · capability service_agreements + plan feature contracts_pm · service_agreements.view / create / activate
Three authorities
Section titled “Three authorities”| What | Where | What it does |
|---|---|---|
| This page | Sales → Service agreements | Contract period, coverage, billing schedule, included visits |
| Preventive maintenance | Operations → Preventive Maintenance | Creates Draft work orders on a recurrence — optional link here |
| Visit entitlements | Included visits | Counts office Complete on a work order with intent — not Closeout |
An agreement can exist without a plan. A plan can exist without an agreement. Recurring billing does not consume visits. Completing a visit does not create the retainer invoice.
Create an agreement
Section titled “Create an agreement”- Sales → Service agreements → Create agreement.
- Customer (required). Optional name, customer reference, primary contact, billing contact, description, service terms, internal notes.
- Starts on (required). Ends on optional unless you set a visit pack (then required). Open-ended agreements have no end.
- Coverage: Whole customer (every site and asset), Selected sites (≥1 site to activate), or Selected assets (≥1 asset). One mode at a time.
- Optional Included visits — integer ≥ 1, or leave empty if visits are not counted. Empty is not “unlimited”; it means the pack is off.
0is rejected. - Save. Number
AGR-YYYY-######. Status Draft. - Activate when ready.
Lifecycle
Section titled “Lifecycle”| Stored | Meaning | Actions |
|---|---|---|
| Draft | Not operational. | Activate, edit, Archive |
| Active | Can cover work and generate billing/PM when dates allow. | Cancel agreement, Renew, edit allowed fields |
| Cancelled | Stopped. Linked work orders and reports stay. | Archive |
Effective badges (not a stored status): Upcoming, Active, Expired, Expiring soon (30-day window). Cancel and expiry do not cancel existing jobs. Archive is soft-delete. Cancel an Active agreement first (Cancel an active agreement before archiving it.).
Renew clones a Draft. Copy: Create a draft renewal of :name? Existing work orders and reports stay on the current agreement. Linked maintenance plans move when you activate the renewal. There is no automatic renewal.
Recurring billing (optional)
Section titled “Recurring billing (optional)”Configure recurring billing. Copy: Recurring charges create draft invoices from this schedule. They do not include work orders or preventive-maintenance visits.
Frequency: Monthly / Quarterly / Yearly. Scheduler hourly: fsm:agreement-billing-generate (cron must run). Or Generate now for a period that is already due. Result: a Draft job invoice. Office still Issues it. Same period cannot be billed twice (This billing period already has an invoice.).
Stop recurring billing — existing invoices stay. This is not Plan & billing → Plan invoices.
Link work and plans
Section titled “Link work and plans”Attach the agreement on a work order. Coverage does not by itself count a visit. Add maintenance plan can stamp visit intent when the pack is on. Estimate Convert to work order does not inherit — attach it yourself if it should count.
Portal customers can read agreements (nav Agreements). They cannot edit, cancel, or generate invoices. Technicians do not manage contracts in Field.
What-if
Section titled “What-if”If Activate created no visit and no invoice: expected. Needs a plan and/or billing schedule + scheduler.
If you Cancel expecting jobs to vanish: they stay listed.
Related: Preventive maintenance, Visit entitlements, Invoices.