Using Power Automate word templates with Model-Driven apps

By | November 17, 2020

I’ve never been a big fan of Word Template in Dynamics 365 since they have quite a few limitations, and, yet, I had to use them every now and then since they are so easy to develop (till  you run into the limitations, of course).

Besides, they are not so easy to deploy into different environments, so you’d almost inevitably need XrmToolBox (if you are ok with manual deployment) or a script like this one (if you wanted to automate the process)

But for the last few months I’ve been using Power Automate version of the Word Template, and I’m finding it much more useful:

https://docs.microsoft.com/en-us/connectors/wordonlinebusiness/#populate-a-microsoft-word-template

To create a template, we need to do a few things:

1. Create a new word document

2. Add controls to the document

This is where you need to open “Developer” tab and start adding controls. Just keep in mind that every control you put there should have a title, and that title is exactly what you’ll see in the Power Automate flow when setting up Word Template action:

image

image

2.1. What if I wanted to add a repeater above to display invoice fees?

I’d start by adding a plain text content control to the table row:

image

And I’d give it a title:

image

Would, then, select the whole row:

image

And would add a repeater:

image

As with any other content control, I’d add a title to the repeater:

image

As a result, once I’m back in the Flow designer, I can see Fee repeater there (may need to reload the Flow in the browser):

image

With the individual controls, it’s pretty straightforward – just use output from the other actions (or use expressions) to populate those.

It’s a little more tricky with the repeater, but it’s actually not that complicated.

What you need is an array variable, and you’ll need to add elements to that array which are all objects, and each of those objects should have properties which correspond to the titles of the controls used within the repeater.

If you lost me here, here is an example:

image

You might do it in the “apply to each” for a CDS (oh… sorry… Dataverse) entity (crap… table), or you might do it somehow else. You might add conditional logic when populating the array (so that’s less one limitation of D365 word templates). Basically, you have the power of Power Automate at your disposal when preparing values for the controls (repeating or not).

3. Finally, you need to configure “Word Template” actions and set template control values

For the sake of simplicity, I’ll use static values for the individual controls.

I will, however, switch to the “array” mode for the repeater:

image

And, for the repeater, I will use my “Fees” variable:

image

 

Time for a test? Let’s just add an action to send the result to me by email:

image

And, once I run the Flow(it’s an HTTP Request flow. I just run it by opening that URL in the browser… have to be configured to allow “Get” method on the trigger) and the email comes in here is what I see:

image

How about sorting? Well, just sort that array.

How about filtering? Same thing – just don’t add those values to the array.

And how about using this directly from the model-driven app?

That’s in the next post.

One thought on “Using Power Automate word templates with Model-Driven apps

  1. Donal

    I’ve been using it a lot the last few days.
    The first trick is to forget about the old templates and enter your own codes!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *