Field Service Maintenance Agreements That Generate the Right Work Orders
A troubleshooting guide for agreements that miss visits or create wrong work orders: the agreement object model, the generation settings, a diagnostic order, silent renewals and converting paper maintenance plans with a verification pass.
When Dynamics 365 Field Service agreements miss maintenance visits or create the wrong work orders, start with the object model. An agreement holds booking setups and invoice setups. Each booking setup's recurrence, the agreement's start and end dates, the Auto Generate Work Order flag, the days-in-advance window, and the work order type, incidents, products and services decide what work order appears and when. To diagnose a miss, check that the agreement is Active and within its date range, that booking dates were generated, that the date falls inside the generation window and that the system jobs ran. To convert paper plans, map every field, import as Estimate and verify generated dates before activating.
Why do Field Service agreements generate missing or wrong work orders?
Because agreement automation is a chain of records and settings, and a gap anywhere in the chain fails silently. Nobody receives an error when a booking date is never generated or a work order is created a month late; the visit simply does not appear on the schedule board, and the first sign is a customer asking why the engineer never came.
Wrong work orders have a similar root. The booking setup is a template, copied into each work order at the moment it is generated. Change the template afterwards and the work orders already created keep the old content, while the next ones get the new content. Operators who fix a problem on one work order, rather than on the setup, see the same mistake again next cycle.
Most problems trace back to one of five causes: the agreement is not Active or has passed its end date, the recurrence does not describe the real plan, the generation window is shorter or longer than the business assumes, the setup content is wrong or outdated, or the background jobs that generate records did not run. The rest of this page takes them in order. How agreements fit into the wider Field Service build is on our Field Service implementation partner page.
How is a Field Service agreement structured?
An agreement is the contract; everything it generates hangs off two kinds of setup. Field names vary slightly between Field Service versions, so check the current Microsoft documentation for yours.
The invoice side runs separately from the work order side. An agreement invoice setup generates invoice dates and Field Service invoices for the fixed amount on its own schedule, whatever work orders were done. How agreement price lists keep generated work orders from billing again is covered in Field Service job costing. Accounting for those invoices stays in your ERP; Solzet does not implement ERP systems.
| Record | What it holds | What goes wrong |
|---|---|---|
| Agreement | Service and billing account, price list, start and end date, system status (Estimate, Active, Expired, Canceled), time zone and ownership | Left in Estimate, end date passed, or wrong time zone shifting dates across midnight |
| Agreement booking setup | Booking recurrence, Auto Generate Work Order, Generate Work Orders Days in Advance, work order type, priority, summary, preferred resource and time window | Recurrence not matching the plan, auto generate switched off, window left at a default nobody chose |
| Booking incidents, products, services and service tasks | The incident types, often with a customer asset, and the parts, labour and tasks copied onto each generated work order | Outdated content copied into every future visit, or asset missing so history attaches to nothing |
| Agreement booking dates | One row per planned visit date, generated from the recurrence, later linked to the work order created for it | Not generated far enough ahead, or regenerated after a recurrence change |
| Agreement invoice setup and invoice dates | Invoice recurrence and invoice products, generating invoice dates and invoices | Billing out of step with visits, or duplicated by billable work order lines |
Which settings decide when booking dates and work orders are generated?
Three horizons work together, and misunderstanding any one of them looks like a missing work order. Booking dates are generated some months ahead. Work orders are generated from those dates only when a date comes within a number of days ahead. And the background jobs that do both run on a schedule, not at the instant you save.
| Setting | Where | Effect |
|---|---|---|
| Generate Booking Dates X Months in Advance | Field Service settings, agreement tab | How far ahead booking dates exist. A visit beyond this horizon has no booking date yet, which is expected, not a fault |
| Generate Agreement Work Orders X Days in Advance | Field Service settings, agreement tab | The default number of days before a booking date that its work order is created |
| Generate Work Orders Days in Advance | Agreement booking setup | Overrides the default for this setup; a work order will not exist until the date is within this many days |
| Auto Generate Work Order | Agreement booking setup | If No, booking dates are created but work orders are not, and someone must generate them from each date |
| Record generation timing | Field Service settings, agreement tab | The time of day the generation jobs run, interpreted in a time zone, so dates near midnight can land a day early or late |
What decides what goes on a generated work order?
The booking setup at the moment of generation. The work order type, priority, summary, incidents with their customer assets, products, services and service tasks are copied from the setup and its child records into each new work order, and the incident types bring their own tasks, products and durations. The price list comes from the agreement.
That has three practical consequences. Correct content on the setup, not on individual work orders. After a change, check which work orders already exist for future dates, because they still carry the old content and need to be corrected or deleted and regenerated. And keep incident types accurate, because one outdated incident type spreads into every agreement that uses it.
Link each booking incident to the customer asset being maintained, so the service history lands on the equipment rather than only on the account, as described in Field Service asset history.
Why is a work order missing for a planned agreement visit?
Work down this list in order for the agreement and date in question. Most misses are found in the first four checks.
- Agreement status: the system status must be Active. Agreements saved as Estimate generate nothing, and Expired or Canceled agreements stop generating.
- Date range: the visit date must fall between the agreement start and end dates. A plan that renewed on paper but not in the system expired on its end date.
- Booking date exists: open the agreement booking dates for the setup. If there is no row for the date, check the recurrence and whether the date is beyond the Generate Booking Dates X Months in Advance horizon.
- Generation window: if the booking date exists but has no work order, check whether it is inside Generate Work Orders Days in Advance, and whether Auto Generate Work Order is Yes on the setup.
- Background jobs: in the system jobs view, look for agreement-related asynchronous operations that are waiting, suspended or failed around the expected time, and read their error messages.
- Ownership and access: a disabled owner or a missing security privilege can stop generation for the records concerned; check the agreement owner is an active user with the right roles.
- Recent edits: a change to the recurrence or dates can regenerate booking dates, which may remove the one you expected. Check the audit history on the setup.
- Duplicates elsewhere: if the visit was booked manually or by another automation, the problem may be an extra booking rather than a missing one, covered in Field Service scheduling rescue.
Why does an agreement generate the wrong work order?
A wrong work order is almost always faithful to a wrong template or a misunderstood setting. Fix the cause, then deal with the future work orders already created from it.
| Symptom | Likely cause | Fix |
|---|---|---|
| Visit on the wrong day | Recurrence pattern does not match the plan, or the agreement time zone differs from the site | Correct the recurrence or time zone, then review regenerated booking dates |
| Visits too frequent or duplicated | Two booking setups covering the same plan, or a second agreement for the same asset | Retire the duplicate setup or agreement and remove unwanted future work orders |
| Work order appears too late to schedule | Days in advance shorter than the planning lead time | Set Generate Work Orders Days in Advance to the real planning horizon |
| Wrong checklist, parts or duration | Outdated incident type or booking incident, product or service records | Correct the incident type or setup records, then update work orders already generated |
| Visit history not on the equipment | Booking incident without a customer asset | Add the asset to each booking incident |
| Customer billed twice | Invoice setup bills the agreement and generated work order lines are also billable | Use an agreement price list or set quantity to bill so visit lines are not charged again |
Why do maintenance plan renewals get missed silently?
Because an agreement does not renew itself. When the end date passes, the agreement becomes Expired, and booking dates and work orders stop. Nothing on the schedule board says a visit is missing; there is simply nothing there. If the paper contract renewed, or the customer kept paying, the system and the contract have quietly diverged.
Make renewal a managed step. Build a view and a dashboard of active agreements ending in the next 60 or 90 days, with the owner and the last completed visit, and a Power Automate flow that creates a renewal task for the account owner. Renew by copying the agreement with its setups into a new agreement for the next period, or by extending the end date where your process allows it, and check the generated booking dates either way. A monthly report of expired agreements whose accounts still have open contracts or recent invoices in the ERP catches the ones already missed. Contract hours and entitlements, which renew on the same rhythm, are covered in entitlements and contract hours billing.
How do you convert paper maintenance plans into Field Service agreements without a developer?
With a mapping workbook and the standard Dataverse import, not with custom code. Build the reference data first: accounts, functional locations, customer assets, incident types, products, services and price lists. Then load agreements as Estimate, their booking setups, the booking incidents and products, and the invoice setups, each in its own Excel template with the parent referenced by a unique name or alternate key. Nothing generates while agreements are Estimate, so mistakes can be fixed before they create work.
| Paper plan field | Field Service record and field | Mapping rule |
|---|---|---|
| Customer and site | Agreement service account, billing account, and functional location on the asset | Match to existing accounts by account number; never create accounts from the import |
| Contract start and end | Agreement start date and end date | Use the contract dates, not the date of the first visit |
| Equipment covered | Customer asset on each booking incident | One booking incident per asset, matched by serial number |
| Visit frequency | Booking recurrence on the booking setup | Translate "quarterly" into a concrete pattern and first date agreed with operations |
| What is done at each visit | Incident type on the booking incident, with its service tasks | Map each plan type to one incident type; do not type checklists per agreement |
| Parts included | Booking products, or products on the incident type | Put standard parts on the incident type and only exceptions on the setup |
| Preferred engineer and time | Preferred resource and time window on the setup | Only where the contract commits to it |
| Contract fee and billing cycle | Agreement invoice setup, invoice recurrence and invoice products | Match the billing schedule in the ERP, which remains the source for accounting |
| Price terms | Agreement price list | One price list per contract type rather than per customer where possible |
How do you verify converted agreements before go-live?
Activate in a copy of production or a test environment first, then in small batches in production, and compare what the system generated with what the paper says. The verification pass is what turns an import into a plan operations can trust.
- Reconcile counts: agreements, setups, booking incidents and invoice setups loaded against rows in the mapping workbook.
- For each agreement, compare the generated booking dates for the next year with the visit dates expected from the paper plan.
- Open the first generated work order for a sample of each plan type and check the work order type, incidents, assets, tasks, products and price list.
- Check invoice dates against the billing schedule in the ERP.
- Have the contract owner sign off a list of any plan that could not be mapped exactly, with the decision taken.
- Activate in batches, check the system jobs and generated records after each batch, and only then retire the paper plan.
Should maintenance plans run on Field Service agreements or a custom build?
If your engineers already work in Dynamics 365 Field Service, agreements are the right home for planned maintenance: the generated work orders arrive on the same schedule board, mobile app and asset history as reactive work, and the model is configuration that operations can own. Wider moves off legacy maintenance systems are covered in migrating from a legacy CRM to Dynamics 365.
We recommend the right solution - whether that's Microsoft Dynamics 365, Power Platform, or a custom-built CRM. Some businesses need the Microsoft ecosystem. Others need full control without licensing. We deliver both. For a service business that needs recurring maintenance plans, visit generation and renewals without per-user Microsoft licensing, the same model of contract, visit template, generated dates and verified renewals runs well in a custom-built CRM on React, Node.js, PostgreSQL or .NET.
Should planned maintenance run on Dynamics 365 Field Service or a custom build?
Can afford licensing and want the Microsoft ecosystem
Dynamics 365
Microsoft 365, Teams and Outlook integration, a mature partner ecosystem, Copilot, and apps for sales, service and field operations that are configured rather than built.
Need full control and zero licensing
Custom CRM
A CRM built on React, Node.js, PostgreSQL or .NET that you own outright: your data model, your hosting, no per-user subscription, and features shaped exactly to your process.
Not sure which fits
We help you decide
A short discovery weighs licensing budget, process complexity, integrations and long-term ownership, then recommends one path. We deliver both, so the recommendation has no reason to lean.
How does Solzet help fix Field Service agreements that generate the wrong work orders?
We start with the evidence: the agreements where visits were missed or wrong, their booking setups, booking dates, system jobs and audit history. From that we name the causes, fix the settings and templates, correct or regenerate the affected future work orders, and add the renewal view and flow so expiries stop being silent. Where paper plans remain, we build the mapping workbook with your operations team, load and verify them in batches, and hand over a process your team can repeat without a developer.
The work is done by senior consultants and full-stack developers delivering remotely from Yerevan, Armenia, with 8+ years of Dynamics 365 Customer Engagement and Power Platform work, directly for your team or white-label for Microsoft partners. The wider Field Service build and rescue work is on our Field Service implementation partner page.
What do people ask us?
Why is my Dynamics 365 Field Service agreement not generating work orders?
Check in order: the agreement system status is Active, the visit date is within the start and end dates, a booking date exists for it, the date is within the Generate Work Orders Days in Advance window, Auto Generate Work Order is Yes on the booking setup, and the agreement-related system jobs ran without failing. A disabled owner can also stop generation.
Why does a changed booking setup not fix existing work orders?
Because the booking setup is copied into each work order when it is generated. Changes apply to work orders generated afterwards. Work orders already created for future dates keep the old content, so find them and correct them, or remove them and let them regenerate.
What is the difference between agreement booking dates and work orders?
Booking dates are planned visit dates generated from the recurrence, as far ahead as the Generate Booking Dates X Months in Advance setting allows. Work orders are created from those dates only when each date comes within the days-in-advance window, and only if Auto Generate Work Order is Yes.
Do Field Service agreements renew automatically?
No. When the end date passes the agreement becomes Expired and stops generating booking dates and work orders. Track agreements approaching their end date in a view or dashboard, create renewal tasks with Power Automate, and renew by copying or extending the agreement, then check the generated dates.
Can I import paper maintenance contracts into Field Service agreements without a developer?
Yes. Load reference data first, then agreements as Estimate, booking setups, booking incidents and products, and invoice setups using Excel templates with the standard Dataverse import. Verify the mapping, activate in a test environment and in small batches, and compare generated booking dates with the paper plans before retiring them.
Why are agreement work orders appearing on the wrong day?
Usually the recurrence pattern does not match the plan, or the time zone used for the agreement differs from the site, so dates near midnight shift. Correct the recurrence or time zone, then review the regenerated booking dates and any work orders already created.
How do agreement invoice setups relate to generated work orders?
They run independently. The invoice setup bills on its own recurrence, whatever visits occurred. Make sure generated work order lines are not billable again, for example through an agreement price list or quantity to bill. Accounting for the invoices stays in your ERP.
Where do I see whether the agreement generation jobs ran?
In the system jobs view for the environment, where asynchronous operations related to agreements show their status and any error message. Look for jobs waiting, suspended or failed around the time generation was expected, and check the Field Service settings for when record generation runs.
Where should you go next?
Dynamics 365 Field Service implementation partner
The Field Service build: assets, incident types, agreements, scheduling and mobile, starting with a feasibility sprint.
Field Service job costing
Cost and price on work order lines, fixed price agreements and billing lines to zero.
Field Service asset history portal
One canonical asset record so maintenance history lands on the equipment.
Field Service scheduling rescue
Overlapping bookings from agreements, flows and integrations writing in parallel.
Entitlements and contract hours billing
Contract hours, entitlements and renewals for service contracts in Dynamics 365.
Custom CRM Development
Applications on React, Node.js, PostgreSQL and .NET for organizations that need full control without Microsoft licensing.
Which solution is right for your business?
Tell us what you need. A senior consultant replies within one business day with a recommendation - Dynamics 365, Power Platform, or a custom-built CRM - not a sales script.