{"id":1579,"date":"2026-05-07T20:45:00","date_gmt":"2026-05-08T01:45:00","guid":{"rendered":"https:\/\/automatethemundane.com\/index.php\/2026\/05\/07\/building-dynamic-word-documents-in-power-platform-using-model-driven-apps-and-power-automate\/"},"modified":"2026-05-07T20:45:00","modified_gmt":"2026-05-08T01:45:00","slug":"building-dynamic-word-documents-in-power-platform-using-model-driven-apps-and-power-automate","status":"publish","type":"post","link":"https:\/\/automatethemundane.com\/index.php\/2026\/05\/07\/building-dynamic-word-documents-in-power-platform-using-model-driven-apps-and-power-automate\/","title":{"rendered":"Building Dynamic Word Documents in Power Platform using Model Driven apps and Power Automate"},"content":{"rendered":"\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Generating Word documents is one of the most underrated features in the Power Platform. Most organizations still rely heavily on documents for reports, approvals, summaries, intake forms, and customer-facing outputs. There are some really great ways to build Microsoft Word Documents using some overlays and other great hacks to avoid the premium connector. But for me I like to use the built-in features as much as humanly possible. That way if something is amiss, its more than likely a service issue then it is with logic that I created. <\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">In this post, we are going to walk through two approaches:<\/p>\n\n\n<ol class=\"wp-block-list\">\n<li>Building a native Word template directly in a Model-Driven App (MDA)<\/li>\n\n\n\n<li>Using Power Automate to populate a Word template and convert it to PDF<\/li>\n<\/ol>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">For this example, we will use two Dataverse tables:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Pet Types<\/strong><\/li>\n\n\n\n<li><strong>Pets<\/strong><\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">The relationship will be:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>One Pet Type \u2192 Many Pets (1:N)<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Example:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Pet Type<\/th><th>Pets<\/th><\/tr><\/thead><tbody><tr><td>Dog<\/td><td>Max, Charlie<\/td><\/tr><tr><td>Cat<\/td><td>Luna, Milo<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">The final result will generate a formatted Word document containing information about a pet and its related pet type.<\/p>\n\n\n<h1 class=\"wp-block-heading\">Why Use Word Templates in the Power Platform?<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Before jumping into the build, it is important to understand where Word templates fit well.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Word templates are great for:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Intake summaries<\/li>\n\n\n\n<li>Customer reports<\/li>\n\n\n\n<li>Inspection forms<\/li>\n\n\n\n<li>Invoice generation<\/li>\n\n\n\n<li>Pet records<\/li>\n\n\n\n<li>HR onboarding packets<\/li>\n\n\n\n<li>PDF exports<\/li>\n\n\n\n<li>Approval documents<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">The biggest advantage is that business users already know how to work with Word documents. That lowers adoption friction significantly.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Solution Overview<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">In this walkthrough we will build:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Component<\/th><th>Purpose<\/th><\/tr><\/thead><tbody><tr><td>Dataverse Tables<\/td><td>Store pet data<\/td><\/tr><tr><td>Model-Driven App Word Template<\/td><td>Native document generation<\/td><\/tr><tr><td>Power Automate Flow<\/td><td>Generate document and convert to PDF<\/td><\/tr><tr><td>SharePoint (Optional)<\/td><td>Store generated files<\/td><\/tr><tr><td>Teams\/Email (Optional)<\/td><td>Distribute generated files<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Part 1\u2013 Building the Dataverse Tables<\/h1>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h2 class=\"wp-block-heading\">Step 1.1 \u2013 Create the Pet Types Table<\/h2>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Create a Dataverse table called:<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\"><code>Pet Types<\/code><\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Add the following columns:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Column Name<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>Name<\/td><td>Text<\/td><\/tr><tr><td>Description<\/td><td>Multiple Lines of Text<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<h2 class=\"wp-block-heading\">Step 1.2 \u2013 Create the Pets Table<\/h2>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Create another table called:<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\"><code>Pets<\/code><\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Add the following columns:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Column Name<\/th><th>Type<\/th><\/tr><\/thead><tbody><tr><td>Name<\/td><td>Text<\/td><\/tr><tr><td>Age<\/td><td>PowerFX Formula based off Birthdate and UTCnow<\/td><\/tr><tr><td>Birthday<\/td><td>Date Only<\/td><\/tr><tr><td>Weight<\/td><td>Decimal Number<\/td><\/tr><tr><td>Notes<\/td><td>Multiple Lines of Text<\/td><\/tr><tr><td>Pet Type<\/td><td>Lookup to Pet Types<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This lookup creates the 1:N relationship between Pet Types and Pets.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-1024x581.png\" alt=\"\"\/><\/figure>\n\n\n<p class=\"has-background\" style=\"background-color: rgb(241, 241, 239)\">&#x1f4a1; Note: Age is not shown in this view as the PowerFX cannot be added here, it has to be done in the normal table view.<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-1-673x1024.png\" alt=\"\"\/><\/figure>\n\n\n<pre class=\"wp-block-code\"><code>DateDiff(Birthday, UTCToday(), TimeUnit.Years)<\/code><\/pre>\n\n\n<p>&nbsp;<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h2 class=\"wp-block-heading\">Step 1.3 \u2013 Add Sample Data<\/h2>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Create a few records for testing.<\/p>\n\n\n<h3 class=\"wp-block-heading\">Example Pet Types<\/h3>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Name<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Dog<\/td><td>Domestic canine<\/td><\/tr><tr><td>Cat<\/td><td>Domestic feline<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<h3 class=\"wp-block-heading\">Example Pets<\/h3>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Name<\/th><th>Pet Type<\/th><th>Age<\/th><\/tr><\/thead><tbody><tr><td>Max<\/td><td>Dog<\/td><td>4<\/td><\/tr><tr><td>Luna<\/td><td>Cat<\/td><td>2<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-2-1024x206.png\" alt=\"\"\/><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-3-1024x229.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Part 2 \u2013 Creating the Word Template in the Model-Driven App<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">One of the most overlooked features in Model-Driven Apps is the native Word template functionality built directly into Dataverse.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This approach requires no Power Automate at all.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 2.1 \u2013 Open the Pets Table in the Model-Driven App<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Navigate to your Model-Driven App and open the Pets table. Then select a pet from the list<\/p>\n\n\n<h1 class=\"wp-block-heading\">Step 2.2 \u2013 Open the Word Template Area<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">From the command bar:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Select <strong>Word Templates<\/strong><\/li>\n\n\n\n<li>Choose <strong>Create Word Template<\/strong><\/li>\n<\/ul>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-4-1024x603.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 2.3 \u2013 Select the Relationships<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This is one of the most important steps.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">You will see a list of relationships available to include in the template.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Select:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Pet Type<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This allows fields from the related Pet Type record to be used inside the document.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-5-1024x726.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 2.4 \u2013 Download the Template<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Dataverse will generate a Word template file.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Download and open it.<\/p>\n\n\n<p class=\"has-background\" style=\"background-color: rgb(241, 241, 239)\">&#x1f4a1; I would also recommend renaming the file at this time, as this will be the name of the word template when uploaded. <\/p>\n\n\n<h1 class=\"wp-block-heading\">Step 2.5 \u2013 Enable the Developer Tab in Word<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">If you do not already have it enabled:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>File<\/li>\n\n\n\n<li>Options<\/li>\n\n\n\n<li>Customize Ribbon<\/li>\n\n\n\n<li>Enable Developer<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Then open:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Developer<\/li>\n\n\n\n<li>XML Mapping Pane<\/li>\n<\/ul>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-6-1024x627.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 2.6 \u2013 Design the Template<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Now build the document however you want.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Example:<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-7-1024x628.png\" alt=\"\"\/><\/figure>\n\n\n<p class=\"has-background\" style=\"background-color: rgb(241, 241, 239)\">&#x1f4a1; The andy_name under the title comes from the Pet Types table<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">To insert fields:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Right click a field in the XML Mapping Pane<\/li>\n\n\n\n<li>Select:\n<ul class=\"wp-block-list\">\n<li>Insert Content Control<\/li>\n\n\n<li>Plain Text<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Repeat for all desired fields.<\/p>\n\n\n<h1 class=\"wp-block-heading\">Step 2.7 \u2013 Upload the Template Back into Dataverse<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Save the document.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Return to the Model-Driven App and upload the completed template.<\/p>\n\n\n<h1 class=\"wp-block-heading\">Step 2.8 \u2013 Generate the Document<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Open any Pet record.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Then:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Word Templates<\/li>\n\n\n\n<li>Select your template<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Dataverse will generate the completed document automatically.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-8-1024x427.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">In addition to loading the document as a personal template an admin can open the advanced settings, and upload the template for all users or users with a security role with the template<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-9-1024x154.png\" alt=\"\"\/><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-10-1024x506.png\" alt=\"\"\/><\/figure>\n\n<\/div>\n\n<\/div>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-11-1024x213.png\" alt=\"\"\/><\/figure>\n\n\n<h1 class=\"wp-block-heading\">Advantages of the Native MDA Word Template Approach<\/h1>\n\n\n<h2 class=\"wp-block-heading\">Pros<\/h2>\n\n\n<ul class=\"wp-block-list\">\n<li>Extremely fast to build<\/li>\n\n\n\n<li>No Power Automate required<\/li>\n\n\n\n<li>Native Dataverse functionality<\/li>\n\n\n\n<li>Easy for business users<\/li>\n\n\n\n<li>Supports related tables<\/li>\n\n\n\n<li>Great for quick exports<\/li>\n<\/ul>\n\n\n<h2 class=\"wp-block-heading\">Cons<\/h2>\n\n\n<ul class=\"wp-block-list\">\n<li>Limited automation<\/li>\n\n\n\n<li>PDF conversion is not native<\/li>\n\n\n\n<li>Harder to control storage\/distribution<\/li>\n\n\n\n<li>Less flexible for advanced formatting logic<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This approach is perfect when users manually generate documents from records.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Part 3.1 \u2013 Building the Power Automate Version<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Now let\u2019s build the more automated approach.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This version allows us to:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Populate Word templates<\/li>\n\n\n\n<li>Convert to PDF<\/li>\n\n\n\n<li>Email files<\/li>\n\n\n\n<li>Post to Teams<\/li>\n\n\n\n<li>Save to SharePoint<\/li>\n\n\n\n<li>Attach to Dataverse records<\/li>\n\n\n\n<li>Trigger automatically<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This is usually the enterprise approach.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 3.2 \u2013 Create the Word Template<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Unlike the MDA template, this version uses the Word Online connector.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Create a standard Word document manually.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Inside the document add placeholders using:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Developer Tab<\/li>\n\n\n\n<li>Plain Text Content Controls<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Example fields:<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Placeholder Name<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">PetName<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">PetType<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Birthday<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Weight<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Notes<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-12-1024x713.png\" alt=\"\"\/><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 3.3 \u2013 Save the Template to SharePoint<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Store the template in SharePoint or OneDrive.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Example: <\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\"><span style=\"background-color: rgb(241, 241, 239);\">\u201c<\/span><a href=\"https:\/\/andworx.sharepoint.com\/sites\/DemoSite\/Shared\"><span style=\"background-color: rgb(241, 241, 239);\">\/DemoSite\/Shared<\/span><\/a><span style=\"background-color: rgb(241, 241, 239);\"> Documents\/Happy Pets\/Happy Pets Report.docx\u201d<\/span><\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Step 3.4 \u2013 Build the Flow<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Create a new Power Automate flow.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Possible triggers:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Manual trigger<\/li>\n\n\n\n<li>Dataverse trigger<\/li>\n\n\n\n<li>Button in Power Apps<\/li>\n\n\n\n<li>Instant cloud flow<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">For this example we will use:<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\"><code>When a row is added<\/code><\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-13-336x1024.png\" alt=\"\"\/><\/figure>\n\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/fa29bab1-0d4e-4ef5-9ab3-fb50955e25a5-782x1024.png\" alt=\"\"\/><\/figure>\n\n<\/div>\n\n<\/div>\n\n\n<p class=\"has-background\" style=\"background-color: rgb(241, 241, 239)\">&#x1f4a1; The Pet Type needs to use the get row by ID to get the actual name of the pet type<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-14-1024x416.png\" alt=\"\"\/><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n<\/div>\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/image-15-905x1024.png\" alt=\"\"\/><\/figure>\n\n<\/div>\n\n<\/div>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">&nbsp;<\/p>\n\n\n<h1 class=\"wp-block-heading\">Optional Ending Scenarios<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">At this point the document generation process is complete.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">What happens next depends entirely on your business process.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Some common next steps include:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Option<\/th><th>Description<\/th><\/tr><\/thead><tbody><tr><td>Email<\/td><td>Send the PDF to a customer<\/td><\/tr><tr><td>Teams<\/td><td>Post the PDF into a Teams channel<\/td><\/tr><tr><td>SharePoint<\/td><td>Store the file in a document location<\/td><\/tr><tr><td>Dataverse Notes<\/td><td>Attach the PDF to the record<\/td><\/tr><tr><td>Approval Process<\/td><td>Route the PDF for approval<\/td><\/tr><tr><td>Power Pages<\/td><td>Allow external download<\/td><\/tr><tr><td>Archive System<\/td><td>Push to long-term storage<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">This is where the Power Platform becomes extremely flexible.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Comparing the Two Approaches<\/h1>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Feature<\/th><th>MDA Word Template<\/th><th>Power Automate<\/th><\/tr><\/thead><tbody><tr><td>Easy Setup<\/td><td>Excellent<\/td><td>Moderate<\/td><\/tr><tr><td>Automation<\/td><td>Limited<\/td><td>Excellent<\/td><\/tr><tr><td>PDF Support<\/td><td>Limited<\/td><td>Excellent<\/td><\/tr><tr><td>Storage Flexibility<\/td><td>Limited<\/td><td>Excellent<\/td><\/tr><tr><td>User Driven<\/td><td>Excellent<\/td><td>Good<\/td><\/tr><tr><td>Enterprise Workflows<\/td><td>Moderate<\/td><td>Excellent<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">Final Thoughts<\/h1>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Both approaches have their place.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">The native Model-Driven App Word Template feature is incredibly fast and often overlooked. For simple business document generation, it can solve the problem in minutes.<\/p>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Power Automate takes things much further by enabling:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>PDF generation<\/li>\n\n\n\n<li>Automation<\/li>\n\n\n\n<li>Distribution<\/li>\n\n\n\n<li>Storage<\/li>\n\n\n\n<li>Integration<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">In most enterprise solutions, I often see both approaches used together:<\/p>\n\n\n<ul class=\"wp-block-list\">\n<li>Native templates for quick user-driven exports<\/li>\n\n\n\n<li>Power Automate for automated enterprise workflows<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">The important thing is understanding when each approach makes sense.<\/p>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n<h1 class=\"wp-block-heading\">What\u2019s Next?<\/h1>\n\n\n<ul class=\"wp-block-list\">\n<li>Child table repeating sections<\/li>\n\n\n\n<li>Images in Word templates<\/li>\n\n\n\n<li>Approval signatures<\/li>\n\n\n\n<li>Document versioning<\/li>\n\n\n\n<li>Automatic SharePoint folder creation<\/li>\n\n\n\n<li>AI-generated summaries<\/li>\n\n\n\n<li>Dynamic document generation from multiple related tables<\/li>\n<\/ul>\n\n\n<p class=\"has-text-color\" style=\"color: rgb(0, 0, 0)\">Because once you understand the foundation, document automation becomes one of the most powerful capabilities in the Power Platform.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>Generating Word documents is one of the most underrated features in the Power Platform. Most organizations still rely heavily on documents for reports, approvals, summaries, intake forms, and customer-facing outputs. There are some really great ways to build Microsoft Word Documents using some overlays and other great hacks to avoid the premium connector. But for [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1580,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[22,6,30,33],"tags":[],"class_list":["post-1579","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dataverse","category-model-driven-app","category-power-automate","category-sharepoint","entry","has-media"],"jetpack_featured_media_url":"https:\/\/automatethemundane.com\/wp-content\/uploads\/2026\/05\/photo-1562240020-ce31ccb0fa7d-scaled.jpg","_links":{"self":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts\/1579","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/comments?post=1579"}],"version-history":[{"count":0,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/posts\/1579\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/media\/1580"}],"wp:attachment":[{"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/media?parent=1579"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/categories?post=1579"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/automatethemundane.com\/index.php\/wp-json\/wp\/v2\/tags?post=1579"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}