All document types
Dynamics 365 Field Servicemsdyn_workordermsdyn_workorderproductmsdyn_workorderservicetask

Generate a work order report from Dynamics 365 Field Service

A completed work order is a record with three child lists: the service tasks that were done, the products used and the services billed. The customer wants one document that shows all three, and the back office wants it filed against the work order without a technician doing anything extra.

VerseDocs generates the report from the msdyn_workorder row with each child table pulled in by a link-entity and looped in its own table. A flow on booking status Completed can generate the PDF and email it to the service account's contact, so the report exists before the technician has left the site.

Unlimited watermarked use, no time limit. $2,400 a year per tenant removes the watermark.

How it works

From record to work order report in 3 steps

01

Start from the order confirmation template

Download it, change the bound table to msdyn_workorder, and replace the line-item link-entity with three: msdyn_workorderservicetask, msdyn_workorderproduct and msdyn_workorderservice, each from msdyn_workorder to msdyn_workorderid with its own alias.

02

Lay out the three tables

One table per child list, each with {{#each msdyn_workorder.<alias>}} in the first cell and {{/each}} in the last. Use the field browser in Template Studio to pick the columns; Field Service column names carry the msdyn_ prefix.

03

Generate on completion

A flow triggered when the work order's system status changes to Completed calls vdocs_GenerateAndAttach so the PDF is on the work order's timeline, then emails it from the attachment.

The template

Start from the order confirmation starter

Field Service tables use msdyn_ logical names throughout: {{msdyn_workorder.msdyn_name}} is the work order number, {{msdyn_workorder.msdyn_serviceaccount}} the account, {{msdyn_workorder.msdyn_systemstatus}} the status label. Confirm the exact names in the field browser rather than guessing.

  • Order number, confirmation date and requested delivery date
  • Ship-to and bill-to addresses side by side
  • Order name, shipping method, payment terms and status
  • Line items from order products
  • Subtotal, tax, conditional freight and order total

Tokens in the template

Work order {{msdyn_workorder.msdyn_name}} · {{msdyn_workorder.msdyn_systemstatus}}
Service account: {{msdyn_workorder.msdyn_serviceaccount}}

Service tasks
{{#each msdyn_workorder.tasks}}{{msdyn_name}} | {{msdyn_percentcomplete}}%{{/each}}

Products used
{{#each msdyn_workorder.products}}{{msdyn_name}} | {{_raw.msdyn_quantity:0.##}} | {{msdyn_totalamount}}{{/each}}

{{#if msdyn_workorder.msdyn_workordersummary}}Summary: {{msdyn_workorder.msdyn_workordersummary}}{{/if}}

Paste any of this into the template playground with the sample data to see it render in your browser.

Questions
Can the technician's signature or site photos be included?
Through the flow-driven Populate a Word Template with Data action, which takes an images map in Options: the flow reads the work order and its child rows, builds the Data, adds the signature or photo bytes by name, and the template places them with {{image:signature width=50mm}}. The record-bound actions do not take images.
Does this work with the Field Service mobile app?
The document is generated server-side by the flow, so the technician's app is not involved. The result is on the work order's timeline and in the customer's inbox.
Is there a limit on the number of service tasks?
No fixed limit in the template. Very large documents are bounded by the Dataverse plug-in time budget; a work order with hundreds of lines renders in seconds.

Rendered in your tenant. Priced per tenant.

VerseDocs is a managed solution of Dataverse plug-ins. Templates, field values and generated files stay in your environment. Try every feature free with a watermark; one licence key removes it for every environment, user and document in the tenant.