Maintenance Plan
A Maintenance Plan is a Salesforce Field Service record that defines a recurring schedule for preventive maintenance on customer assets.
Definition
A Maintenance Plan is a Salesforce Field Service record that defines a recurring schedule for preventive maintenance on customer assets. It ties one or more assets to a Work Type and a cadence, then generates Work Orders in batches so technicians service the equipment before it fails. The standard MaintenancePlan object usually mirrors the terms of a service contract or an entitlement.
Think of it as the engine that turns a "service every 90 days" promise into actual scheduled work. Instead of staff tracking due dates in spreadsheets, the platform calculates the next service date for each covered asset and creates the Work Orders for you. From there the work flows into normal Field Service dispatch, scheduling, and completion.
How a Maintenance Plan turns a service promise into scheduled work
The preventive maintenance data model
A Maintenance Plan never works alone. It sits at the centre of a small group of Field Service objects that together describe what gets serviced, how often, and what the work looks like. The MaintenancePlan record holds the plan-level settings: the account, an optional service contract, the default Work Type, and the timing fields that control generation. Each piece of equipment the plan covers is recorded as a MaintenanceAsset, which links the plan to a specific Asset. A single asset can belong to more than one plan, and a single plan can cover many assets. The cadence itself lives in maintenance work rules, where you set the recurrence pattern. The Work Type acts as a template, so generated Work Orders inherit its duration, required skills, products, and knowledge articles. When the batch runs, Salesforce creates Work Orders (and optionally Work Order Line Items) for the covered assets. Knowing this chain matters, because a missing Work Type or an inactive asset is the usual reason a plan generates nothing.
Generation timeframe versus generation horizon
Two timing fields confuse almost everyone at first, so it helps to separate them. The Generation Timeframe (and its type of days, weeks, months, or years) controls how much work is created in each batch. Set it to 3 Months and each batch produces roughly three months of upcoming Work Orders at once. This is about volume per run. The Generation Horizon (Days) is different. It controls when the next batch is created, measured as the number of days before the next suggested maintenance date. A horizon of 5 means the platform generates the next batch five days before the asset is due. Pair the two and you get a steady rolling pipeline: the timeframe decides the size of each wave, the horizon decides how far ahead it appears. The Date of First Work Order in the Next Batch field on each maintenance asset shows the suggested service date for the next Work Order, which is not the same as the date the record is created. Getting these two settings right is what keeps dispatchers from drowning in clutter or running short of scheduled work.
Calendar, usage, and criteria based work rules
Early Maintenance Plans only supported a fixed frequency. Modern Field Service uses maintenance work rules, which come in three flavours. Calendar based rules fire on a date cadence, such as every month or every quarter, and you can layer several on one plan. A common pattern is a light monthly visit plus a deeper annual service, each as its own calendar rule on the same plan. Usage based rules trigger from meter or consumption data rather than the calendar, which suits equipment measured in hours run or units produced. Criteria based rules use a filter against asset fields, so a Work Order is created only when an asset meets a condition you define. The advanced recurrence options arrived around the Spring '21 release and replaced the old single-frequency limitation for most scenarios. If your real-world schedule is more complex than "every N days," reach for work rules before assuming you need custom Apex.
From generated Work Order to completed visit
Generation is only the first step. Each Work Order the plan creates carries a read-only Generated From Maintenance Plan checkbox, so you can always tell automated work from manually logged jobs. That flag is handy for reporting on how much of your service volume is preventive versus reactive. Once created, the Work Orders behave like any others. They roll into Field Service dispatch, where scheduling and optimization assign each one to a Service Resource based on skills, service territory, and availability. A Service Appointment represents the actual visit. The technician completes the work, the Work Order moves to a completed state, and the asset's next suggested maintenance date advances so the following batch lands on schedule. Because the plan reuses the standard Work Order lifecycle, you do not need a separate process for preventive jobs. The same dispatcher console, mobile app, and completion flow handle both, which keeps training and reporting simple.
Plans, service contracts, and entitlements
Maintenance Plans usually exist because a customer is owed service. A service contract might promise quarterly inspections for two years, and the Maintenance Plan is how that promise becomes work on the calendar. You can link a plan to a Service Contract so the commercial agreement and the operational schedule stay connected. This makes renewals and audits cleaner, because the contract and the work it produced live a click apart. The relationship also helps with billing and entitlement checks. When a generated Work Order is serviced, you have a clear record tying that visit back to the contract that entitled it. For regulated maintenance, such as fire-safety inspections or warranty-required servicing, this trail is valuable evidence. Compliance teams can show every scheduled and completed event for an asset, with dates, without assembling it by hand. The plan effectively becomes the bridge between what was sold and what was delivered.
Common pitfalls and gap analysis
The most frequent support question is "why did my plan generate no Work Orders?" The usual causes are an end date in the past, an inactive maintenance asset, a missing Work Type, or a generation horizon that has not yet been reached for the next due date. Checking those four things resolves most cases. A plan also will not retroactively create history; it generates forward from its settings. The second common gap appears when you inherit a customer base. Equipment often exists in the system with no active plan attached, which means it silently falls off the maintenance schedule. A simple report of assets without a related active Maintenance Plan surfaces this coverage gap, and it is one of the highest-value reports a Field Service admin can build. Finally, remember that editing frequency on an existing plan affects future batches, not Work Orders already generated and scheduled, so plan changes take a cycle to fully take effect.
Surfacing maintenance to customers
Preventive maintenance is more valuable when customers can see it. Because Maintenance Plan and related Work Order data are standard records, you can surface them on an Experience Cloud site. Customers then self-serve answers to questions like "when is my next service due?" and can request changes without phoning the call centre. This visibility tends to lift trust in the service program and reduces no-access visits, because customers who know a date is coming are ready for the technician. It also opens the door to upsell, since a portal that shows an upcoming inspection is a natural place to offer an extended plan or an additional asset. The combination of automated generation, standard dispatch, and a customer-facing view is the shape most mature preventive-service operations end up with on the platform. None of it requires custom objects, which is part of why teams adopt the standard Maintenance Plan rather than building their own scheduler.
How to create a Field Service Maintenance Plan
You create a Maintenance Plan from the Maintenance Plans tab (Field Service must be enabled and the objects added to your page layouts). Set the account and timing, add the assets to cover, then generate the first batch of Work Orders. The plan keeps generating future batches on the schedule you defined.
- Open a new Maintenance Plan
On the Maintenance Plans tab, click New. Pick the Account the plan serves, give it a clear name, and link a Service Contract if the plan exists to fulfil one.
- Set the Work Type and timing
Choose a default Work Type so generated Work Orders inherit its duration and required skills. Enter the Generation Timeframe (how much work per batch) and the Generation Horizon in days (how far ahead each batch appears).
- Add the assets to cover
Add one or more maintenance assets, each pointing to an Asset record. You can set a per-asset frequency and first work order date here, which is how one plan can service several assets on slightly different cadences.
- Define the recurrence rules
For anything beyond a single fixed frequency, add maintenance work rules. Use calendar based rules for date cadences, usage based for meter triggers, and criteria based for condition triggers.
- Generate the Work Orders
Use Generate Work Orders to create the first batch. Confirm the Work Orders appear with the Generated From Maintenance Plan flag set, then let the schedule produce future batches automatically.
The customer the maintenance plan serves; it scopes the assets and ties the plan to the right relationship.
The date the plan begins generating work; batches are calculated forward from here.
The template that supplies duration, skills, products, and articles to every Work Order the plan creates.
How much upcoming work each batch creates, expressed as a number plus days, weeks, months, or years.
How many days before the next suggested maintenance date the next batch is generated.
- A plan with an end date in the past, or no active maintenance assets, generates nothing; check both first when troubleshooting.
- Generation Timeframe controls batch size; Generation Horizon controls timing. Mixing them up is the most common configuration mistake.
- Changing frequency affects future batches only. Work Orders already generated keep their original dates until the next cycle.
- A Maintenance Plan does not backfill history; it only generates work forward from its settings.
Trust & references
Cross-checked against the following references.
- Set Up Field Service Maintenance PlansSalesforce
- Maintenance Plan FieldsSalesforce
- Guidelines for Working with Maintenance Work RulesSalesforce
Straight from the source - Salesforce's reference material on Maintenance Plan.
Hands-on resources to go deeper on Maintenance Plan.
About the Author
Dipojjal Chakrabarti is a B2C Solution Architect with 29 Salesforce certifications and over 13 years in the Salesforce ecosystem. He runs salesforcedictionary.com to help admins, developers, architects, and cert/interview candidates sharpen their fundamentals. More about Dipojjal.
Test your knowledge
Q1. What is a Maintenance Plan?
Q2. What does a Maintenance Plan generate?
Q3. Who benefits from Maintenance Plans?
Discussion
Loading discussion…