Document template feature of Dynamics CRM 2016 came as a big relief to many consultants like us whose only option prior to that was to go to customer and speak about mail merge and many a times which was not liked by customers much. However the introduction of word and excel template features in Dynamics CRM 2016 never ceases to amaze the customers and has made the life of consultants like us much easier.
Now coming to word templates, one big disadvantage while accomplishing from the CRM UI is that it cannot be done for multiple records. You have to do for each individual record which is quite cumbersome right?
Well you have a quick fix for that. There is a new step introduced in the workflow called Perform Action Step and using that you can actually set the word template for an entity. So basically the idea is you can have an on-demand workflow which will use this step to set the word template to the target entity type and then coming back to the UI, you can select multiple records and run the workflow. And your very complex workflow will attach the word template to each of the records you selected the workflow to run. You could view the the attachment in the annotations section for each record.
The above pics are taken from Inogic blog on the same article. It is a wonderful article which has explained the same approach that I highlighted above. Just like all their other articles, this one is also a treat to read. – http://www.inogic.com/blog/2016/02/set-word-template-through-workflow-in-dynamics-crm-2016/
Well so far so good. But wait, are we missing a link here. Hell yeah!
All the examples you find on this topic are all using OOB entities and indeed all the examples work great. But to be honest, in most of the cases we end up designing lot of custom entities for the customer. So what if we need to do something similar for the custom entities. Well then you have a problem. Let’s explore that.
I have created a custom entity called Template Test. I created a global word template for the custom entity. Now I create a workflow of on-demand type which will set the word template to the custom entity as the target.
As usual, I select the Perform Action –> Set word template –> Click on Set properties –> Select the appropriate word template for the entity
Oops! What happened here? The problem here is that while selecting the target, the entity is not showing up in the Form Assistant like the one it shows for OOB entities like Account and Contact.
Scratching your head here to identify the issue. Well I have two solutions for you as a workaround for this and I leave this up to you to identify which one fits best for you
Sol 1: Enable Business Process Flows for the custom entity:
As weird it may sound, enabling business process flow for the custom entity would indeed make your entity appear in the form assistant for the target field.
Go to your entity customization and check the checkbox for business process flow fields creation.
Save and publish the entity customizations. Now come back to the workflow created earlier and click on the target field. You should be able to set it to the custom entity.
You actually do not need to create the business process flows for the entity. Just enabling it to support business process flows would do the trick for you.
Sol 2: Programmatically set the word template for your target entity
If the above solution is not your cup of tea, then you can do something like below:
- Create a on-demand workflow for your custom entity which would invoke a custom workflow assembly.
- The custom workflow assembly would set the word template programmatically using the below code.
OrganizationRequest req = new OrganizationRequest("SetWordTemplate");
req["Target"] = new EntityReference("<custom entity schema name>", customentityguid);
req["SelectedTemplate"] = new EntityReference("documenttemplate", templateid);
A small stuff but enough to waste your days researching on the same.
Hope this helps!