Back to Blog
·VerseBlocks

Dynamics 365 Word templates and the limits nobody documents

Dynamics 365Document GenerationPower PlatformDataverse

Every record in Dynamics 365 Sales, Customer Service, Field Service, Marketing and Project Service Automation carries a Word Templates option, and it costs nothing extra to use. Microsoft's Word template documentation describes the mechanism plainly. You download a .docx file with embedded XML that maps to entity fields, add content controls through Word's Developer tab using the XML Mapping Pane, and upload the finished template back into Dynamics. A user then opens a record, picks that template, and Dynamics merges live field data into a file that downloads to their own computer. No premium licence, no code.

For a short letter or a one-page confirmation, that loop works and keeps working. Teams run into trouble when they build something larger, a quote with a long product schedule, or a contract with a clause that only applies to certain customers. The constraints that stop those projects live in Microsoft's troubleshooting pages and admin documentation, well outside the walkthrough that shows you how to insert your first field.

The 100 record limit per relationship

Microsoft's Word template documentation sets a hard ceiling of 100 related records for every relationship a template pulls from. The example the documentation gives is an account and its contacts. Ask for the list, and the generated document returns at most 100 of them, regardless of how many contacts actually exist. The same ceiling applies to every 1:N, N:1 and N:N relationship. Microsoft states the reason plainly. Templates should "ensure documents download quickly," and keeping related records under 100 is how that's enforced.

Apply that to a quote. Quote line items sit in a 1:N relationship, and the repeating row mechanism built into Word templates, set by marking a table row as repeating in the XML Mapping Pane, is built to handle exactly that kind of list. It handles it right up to the 101st line. Past that point, the extra rows are not part of the export. Microsoft's documentation describes no warning or error for this scenario, it simply states the 100 record cap. A sales team quoting a large multi-line order, or a services company itemising a long project, needs to know that cap exists before it becomes a support ticket.

Two related gaps make it worse. Microsoft's documentation doesn't say how many relationship levels are supported when a template nests beyond the entity it started from, and it publishes no performance benchmarks or volume testing results for templates handling heavy record counts. The record cap is documented. Everything past it is silence. One more detail is worth knowing. Record lists in generated documents may not appear in the order shown in the app. Microsoft's documentation says they're listed by creation date and time instead, which matters if a user expects a quote's lines to appear in the order they were entered.

Which content controls actually work

Word templates support exactly two content control types. Microsoft's Word template documentation states that fields must be added as either Plain Text or Picture, and using any other content control type can cause Word to freeze. The same documentation lists a second freezing trigger, textual changes made to a content control field, including a capitalisation change applied automatically by AutoCorrect. Microsoft recommends turning off three AutoCorrect settings before working on a template. Capitalise first letter of sentences, use spelling suggestions, and hyphens with dashes are the three to disable.

Smaller traps exist too. Characters like < and > and the   entity get stripped from exported fields along with the surrounding text, according to Microsoft's troubleshooting documentation. Right-to-left language content can come out with formatting problems in the generated file. Microsoft documents each of these directly in its own support pages.

Pictures fare better than the freezing warning suggests. Entities that carry an EntityImage field by default, including Account, Contact, Opportunity, Order, Invoice, Product, Lead, Goal and Territory, can drop an image straight into a Picture content control. Entities without that field by default, such as Quote, Business Unit, Appointment and Email, need a custom image field created before a picture will work. Formatting such as bold text or a font colour change can be applied to a content control field, and that covers the extent of the visual flexibility Microsoft documents.

What Microsoft's documentation does not say is whether generated documents respect record-level security. If a user lacks read access to a related contact, there's no stated behaviour for whether that contact's data is excluded from the document or included anyway. That gap sits inside the security and permissions section of the documentation, and it stays a gap.

No conditional content beyond simple repeating rows

Word templates repeat table rows. That's the entire looping mechanism available, set by marking a relationship as repeating in the XML Mapping Pane. Conditional content, an IF field that shows one paragraph when a status equals one value and a different paragraph otherwise, is not documented as supported anywhere in Microsoft's Word template documentation. Calculated fields aren't documented as supported either. If a template needs a total that isn't already stored as a field on the record, or a block of text that should only appear under certain conditions, the native feature has no path to either.

Power Automate has its own "Populate a Microsoft Word template" connector action. Microsoft documents it as a separate feature from the Word Templates menu on a record, with its own set of limits, covered in the piece on where the Power Automate connector hits its ceiling. The two tools solve different problems and do not share templates.

PDF output and where it applies

PDF generation exists, but it's narrower than most people assume going in. Microsoft's documentation confirms it for Dynamics 365 Sales Hub and Sales Professional, and applies to seven entities, Account, Contact, Lead, Opportunity, Quote, Order and Invoice, across both web and mobile apps. It has to be turned on per entity in app settings, and a Word template has to already exist for that entity before PDF generation can be enabled for it. Microsoft ships out-of-the-box PDF templates for Account, Opportunity, Order, Quote and Invoice, so five of those seven entities start with something ready to use.

Once a PDF is generated, a user can download it locally, save it to Dynamics as a Note, or push it to SharePoint. Microsoft's documentation doesn't state when the PDF feature was introduced, or whether it extends to Customer Service, Field Service, Marketing or Project Service Automation beyond Sales. If a process lives in one of those other apps, treat PDF output as unconfirmed rather than assume it carries over.

Moving templates between environments

Templates aren't solution aware. Microsoft's documentation states this without qualification. They cannot be packaged and exported as part of a solution, and environment-to-environment migration isn't supported at all. For a team running separate development, test and production environments, every template has to be built or uploaded manually in each one. A change made in dev has to be recreated by hand in test, then again in production, with no automated sync and nothing tracking version drift between the three.

Personal templates complicate this further. A template created from a record, rather than through the Power Platform admin center, is stored in the PersonalDocumentTemplate entity and belongs to the individual who made it, visible to nobody else. Organisation-wide templates live in a separate DocumentTemplate entity, managed through Settings, Security, Security Roles, then the Business Management tab, under the Document Template permission. Mixing the two without a clear policy is how a business ends up with three different versions of the same quote template, none of them tracked anywhere a solution export would catch.

For a single-entity document with fewer than 100 related records, standard content controls and no conditional logic, the native feature earns its price tag of zero. It needs no premium licence and no code, and a business user with edit rights can build a working template in an afternoon. Past that line, once a quote routinely carries more than 100 lines or a document needs a clause that only applies to one customer type, the native feature becomes the constraint holding the project back. That's the point where teams start looking at VerseDocs' document generation feature instead of trying to force more logic into a content control that was only ever built to hold plain text.