Skip to main content

Associate Records via a custom workflow

The requirement


I've been asked to automatically associate the account manager of a customer to an opportunity, if it takes place in a branch.

In our case customers are always contacts and the main account manager of the client is a lookup field.

The linking happens via a n:n relationship between the opportunity entity and a custom employee entity (schemanname = tt_mitarbeiter). The corresponding subgrid showing the participants of type employee is shown in an own section on the opportunity form.

Options

I know there are third party tools available, like the 365 Workflow Tools that are able to fullfill this requirement. But since I am working in a banking environment, I prefer to write the necessary code on my own.

So I decided to go for a custom workflow activity, which first checks if the account manager is already associated to the opportunity, or not. If the account manager isn't added so far, he/she is associated to the current opportunity.

Creating a custom workflow

To create a custom workflow, you need to create a custom workflow project in Visual Studio. I use the Dynamics 365 Developer extensions for that purpose.

In the workflow project you need to add a workflow class:
Then you need to write your code.

Input/Output parameters

Input/Output parameters are used to pass information from a workflow to a custom workflow activity or vice versa.

In my case I defined one mandatory input parameter, where I pass the account manager to the workflow activity.

Check if account manager is already linked

Next I check with a RetrieveMultiple request, weither the account manager of the customer of the current opportunity has been linked:

Associate account manager

In case the count of the RequestMultiple request is 0, I associated the account manager to the opportunity.

Register custom workflow

If you are done with development and you've built your workflow project, you can register it using the Plugin Registration Tool.

Adding the custom workflow activity to a workflow

In my case I created a real time workflow that triggers, when a new opportunity is created or when the field location (-> branch) is being changed.
Finally I added a check condition, if the location equals branch and then I can select our newly developed custom workflow activity at "add steps":

By clicking on properties, the input parameter (account manager) can be defined:
Now, whenever an opportunity with location branch is being created, or the location of an existing opportunity is being changed to branch, the account manager is automatically linked:



Comments

Popular posts from this blog

Power Automate Get absolute Sharepoint URL from document location

Document Locations If you enable Sharepoint document integration in your model driven apps, you can define for which entities the possibility to upload documents to sharepoint shall be offered and you can define a folder structure. Possible folder structures can either be based on account or contact, which means if you create child items (e.g. opportunities, activities, ...) sub folders are created below. If an entity is enabled for document management a "Files" tab is added to the form of your model driven app and as soon as you click on that tab a folder is automatically generated on Sharepoint. Once the folder has been created you have options to create new or upload existing file or to open the document location (folder) on Sharepoint: What happens behind the scenes is, as soon as you click on the files tab your model driven app checks, weither a "document location" for this item already exists, or not. The document location is an own entity in C

Send e-mails with a link to the record via Power Automate

Today we gonna have a look at how to send an e-mail with a link to a CDS record via Power Automate. In the good old classic workflows, you could directly reference the "record URL" from the dynamic data. But since UCI has been launched and you have the possiblity to target different apps, you already had to do a few more steps in the classic workflows as well. The URL to a CDS record consists of multiple things: CRM URL appid entity name record id So we will work this out one after the other. First we add a "List record" action to lookup the appid of the app, we target. We look for "model driven apps" and filter by the name of the app: Then we initialize a variable with the resulting app id: Then we initialize another variable and extract the CRM_URL: Then we fetch our records, where we want to send out a notification with a link, in this case we look for workorders fullfilling certain criteria: Now we compose the record URL: As a next step we create a new

Working with Optionset lables in Power Automate

Connector Types Power Automate currently offers 3 different connectors, to connect Power Automate with your Dynamics 365 instance: Dynamics 365 Common Data Service Common Data Service (current environment) Today we will look on ways how to retrieve option set labels via the different connectors, for our sample accounts: Dynamics 365 This connector should not be used any more , since in April 2019 it has been announced as being deprecated. https://flow.microsoft.com/en-us/blog/nine-new-connectors-in-april-and-improved-visibility-into-trigger-failures/ With the Dynamics 365 connector it was quite easy to work with optionsets, since it offered both the optionset value (int) and the optionset label (name) in the dynamic content: And here we go, these are our results: Common Data Service Since the Dynamics 365 connector has been deprecated, this is the connector you should use. If you perform a "Get record" or "List records&