Preventive maintenance — multi-asset schedules
A preventive schedule defines what to do, how often, and where. The "where" is plural by design — one schedule can fan out to many work orders each cycle.
Anatomy of a schedule
When you click + New schedule under Field Service → Preventive, the form has three multi-select pickers (customers, assets, assignees), one single-select project picker, and the standard cadence (weekly / monthly / quarterly / semi-annual / annual + an "every N" multiplier).
The fan-out: one work order per linked asset, every cycle.
- 1 schedule × 8 assets × monthly = 8 WOs every month.
- 1 schedule × 0 assets × monthly = 1 generic WO every month (legacy single-WO behaviour).
The cycle
A daily Vercel Cron job runs at 5 AM UTC and:
- Finds every active schedule with
nextDueAt <= now. - For each, creates one WO per linked asset.
- If a project is linked, every generated WO is attached to that project (useful for contract roll-up).
- Advances the schedule's cursor by the cadence (so the next firing is correctly spaced).
Per-WO account resolution
When an asset is linked to multiple customers, Roldesk picks the customer to put on the generated WO using:
- The asset's primary linked customer, if it overlaps with the schedule's customers.
- Otherwise, the schedule's first customer.
Net effect: generated WOs are billed to the right customer without you having to think about it.
Run-now button
Need to test a schedule? The Run now button on any row force-generates the WOs regardless of due date. The cursor still advances exactly once. Doesn't affect the cron's normal cadence.
Related
- Setting up recurring maintenance — the original article, still accurate
- Duplicating work orders in bulk — the right tool for one-off batches