cr1ad_workorderService Work Order
Field-service prospects bring custom solutions where the OOTB Sales Order doesn't fit. This template demonstrates Templ8r against `cr1ad_workorder`: work order number, customer (polymorphic-ready — Account or Contact), technician, equipment, scheduled vs. actual times, service-line breakdown, and a conditional follow-up block when the work-order is flagged for revisit. Same workflow as the OOTB starters: copy tokens, paste into your template, attach when booking the demo.
cr1ad_ as a placeholder publisher prefix. Replace it with whatever prefix your custom solution uses (e.g. acme_, new_, your_). All other token grammar — multi-hop lookups, format hints, repeating-row 1:N, conditional blocks — works identically to the OOTB starters.- 1Copy a tokenClick any
{{token}}on this page — it copies the literal token string to your clipboard, ready to paste. - 2Paste into your Word templateOpen your existing branded Word document and paste each token where you want that field to appear. Keep your fonts, layout, letterhead, and prose — Templ8r only touches the
{{tokens}}themselves. - 3Attach when you book a demoDrop the tokenised .docx into the form on /book-demo. We’ll bind it against your live D365 records before the call so you see your branded template populated with your real data.
Tokens in this template
Every {{token}} below maps to an out-of-the-box column on cr1ad_workorder. On a fresh prospect tenant, these bind without modification. Click any token to copy it. Paste it into your Word template wherever you want that field to appear.
Service Lines · cr1ad_workorder_cr1ad_serviceline
The template includes a single-row table; Templ8r repeats the row for every related record at generation time.
Totals breakdown
Sub-totals + tax + grand total rendered as a right-aligned table beneath the line items. Each row is an OOTB rolled-up column on cr1ad_workorder.
Conditional sections
Sections wrapped in {{#if x}} ... {{/if}} guards. Each renders only when the guard column is populated; otherwise Templ8r drops the entire block at generation time.
What you need in your tenant
- ↳Custom Work Order entity in your solution (
cr1ad_workorder— replacecr1ad_with your publisher prefix) - ↳Custom 1:N relationship
cr1ad_workorder_cr1ad_servicelineto acr1ad_servicelinechild entity (with columnscr1ad_servicedescription,cr1ad_quantity,cr1ad_rate,cr1ad_linetotal) - ↳Customer-type lookup
cr1ad_customerid(polymorphic — Account or Contact) — Templ8r's bare-attribute polymorphic shortcut handles both targets in a single OData call - ↳Lookup
cr1ad_technicianidpopulated as a system user - ↳Lookup
cr1ad_equipmentidto a custom Equipment entity (cr1ad_equipment) carryingcr1ad_assettag - ↳Calculated address column
cr1ad_serviceaddress_composite(or pull individual address lines if your solution doesn't have a composite) - ↳DateTime columns
cr1ad_scheduledstart,cr1ad_scheduledend - ↳Decimal column
cr1ad_actualduration - ↳Rollup money columns
cr1ad_subtotal,cr1ad_vatamount,cr1ad_totalamountfor the totals breakdown (or replace with whatever your solution uses) - ↳Choice columns
cr1ad_priority,cr1ad_status— formatted-values rendered automatically - ↳Boolean
cr1ad_followuprequiredplus optional memocr1ad_followupreasonfor the conditional follow-up block