Integration between SharePoint and Exchange Online

Recently I worked on one project where I integrated the contacts and groups from SharePoint to Exchange Online. I want to share the approach that I followed to do this.

I used PowerShell scripts to create objects (Contacts and Groups) in Exchange Online. Initially, I thought of using Azure Functions with C#, but it’s not possible as there is no API exposed for Exchange Online. I used MS Flow to trigger my PowerShell scripts that I have developed in Runbooks (Azure Automation) on Create/Update of sharepoint list item. We have an action in Flow to create a job of a particular Runbook (Azure Automation –> Create job).

The reason to use MS Flow for this requirement is to develop an application with low-code which facilitates the customer to perform some basic changes without need of a developer.

Architectural Diagram

Flow Design

Happy to hear the feedback on my approach.

How to remove unwanted PowerApp parameters in MS Flow

Recently I worked on one PowerApp which will call the MS Flow to perform my action. Initially, I created a Flow with 8 parameters and passing the values from PowerApp but at the end I realized that I can perform my action with 6 parameters in MS Flow, so decided to delete the extra 2 parameters as my PowerApp is expecting the value for those parameters which are not required. There is no direct approach to delete the parameters in Flow, I think Microsoft still working on this issue but there is workaround to do this

Workaround:

  1. Delete the PowerApp trigger on the top of the MS Flow and you see a message box “This step and associated dynamic content will be deleted from this flow.”
  2. Click on OK (It won’t affect the actions in your flow)
  3. Add the PowerApp trigger again, this should give you a chance to provide a new dynamic content.

I know it’s not a best approach but as of now we don’t have any better way to resolve this issue. Hope it helps….

Call Microsoft Flow from Custom Ribbon Button

In one of my previous blog I mentioned how to use on demand flow within MS CRM. But we have some limitations with that approach

  1. we can’t apply Enable rules on the Flow button as it is OOB context menu which generates dynamically based on the number of flows.
  2. we can’t restrict a call to Flow to check the conditions whether Flow needs to run or not, I mean we can’t apply our conditions before a request goes to Flow.

the solution for the above problems is to call the Flow from custom ribbon button. To call a Flow from ribbon button, we have to create a flow on “HTTP Request” trigger. In my example I am creating a contact with First Name and Last Name fields and passing the parameters from ribbon button (as of now I am passing some constant values from my javascript). Here is the step by step process to do this

Step 1: Create a Flow with HTTP Request with proper “Request Body JSON schema” (use sample payload option to generate the schema)

Step 2: Add “Create a new record (Dynamics)” action to create a new Contact in CRM.

Step 3: Add a Response action at the end to send the response back to CRM and Save the Flow .

Step 4: Once your flow is created you will see the URL in the “HTTP Request” trigger. Use “HTTP POST URL” to trigger the Flow from ribbon button action (javascript).

Step 5: Create a ribbon button in CRM and call the below function from the ribbon button.

with this approach you can add all your validations in the java script and call the Flow once the conditions met, this way we can reduce lot of unnecessary calls to Flow. We can pass whole record context to Flow if needed. Hope it is interesting 🙂

MS Flow is an alternative for Dialog

We all know that dialogs should be replaced with either BPF or Canvas App as dialogs were deprecated in Dynamics 365 CE, but what if we want a simple dialog which will accept some custom parameters and use those values to process the business logic? The best alternative for this scenario is MS Flows. We can create a Flow and call explicitly from “Flow” button on the CRM record. For this, we need to create a Flow with the trigger “Common Data Service –> When the record is selected”. Take an example to convert a lead to opportunity based on some parameters. The below is the Flow that I developed.

After the Flow creation, you can see this Flow from the Lead entity records like below.

The Flow will open the dialog like below with set of questions that we defined above once you click on “Qualify Lead” button.

Click on “Run Flow” button to execute the Flow

Your flow executed successfully and created an opportunity record.

With this, we can create simple dialogs very easily with out any extra efforts. Hope this will be useful for other developers.