Webhooks to Dynamics 365 Serverless Integration using Azure Functions

Recently I needed to create an integration between a cloud platform and Dynamics 365 Customer Engagement Cloud. This Cloud Application (Unbounce) allows you to register Webhooks which you can use to send data across from that platform to any other web application.

Please note that this article already assumes that the reader understands the basics of Webhooks and Azure Functions.

Webhooks sends data when a server event occurs typically to a web application. They are lightweight HTTP pattern with a publish/subscribe model which sends POST requests with JSON payload. This means Webhook POST requests can be consumed by any programming language or web application anywhere.

So when our 3rd party Cloud application (for example Unbounce) sends out the webhook POST message, how can Dynamics 365 receive this POST message? The answer is: Azure Functions.

It’s not the first time that Microsoft Azure Serverless Inegration capabilities, namely Azure Function Apps, come to the rescue. Azure Functions are becoming more and more the default preferred option for many Dynamics 365 related integrations.

So Unbounce sends out the webhook POST message to the Azure Function which in turn sends this data to Dynamics 365. To do this, you need to create an Azure Function that is triggered by Webhook and in your function, you can write the code that sends Data to Dynamics 365. Below are 6 steps that show case the process for adding an Azure Function App triggered by a Webhook POST call. Please comment below if you require the code in the Azure funciton (It’s standard Dynamcis 365 call to create a field so nothing fancy).

1) First, create your Azure Function App:

2) Make sure that the function is triggered by Webhook + API and using C#:

3) Then once created, create a Function within your Function app

4) Following that, we need to reference Dynamics 365 CRM SDK Core Assembly package. To do this, add a file called project.json as below:

5) then input your code inside the run.cx function which will receive JSON POST message and writes it to Dynamics 365:

6) then finally, run a test on your Azure Function App to see a record created in Dynamics 365 (a Lead in our case):

Please note that in step 5 above, you will definitely need to write code to receive the JSON payload that will come in the POST request message. So in our example, if this is coming from Unbounce, we have parse the Unbounce JSON data sent in the POST message so we can then use this data to create our lead (or contact) in Dynamics 365.

Please comment below if you require this code and I’ll be happy to share it.

Note: I’m delivering this session at a number of Dynamics 365 Saturday events starting tomorrow in London (7th July 2018). Hence, I’ll be updating it regularly (and apologies for rushing the post!)

Your feedback via comments below is invaluable and will encourage me to update it and write more about this subject.

Free GDPR Add-on Solution for Microsoft Dynamics 365 CRM Customer Engagement

Today 25th May 2018 is the day GDPR goes live! To “celeberate” this important day, and as a contribution from me to the Microsoft Dynamics 365 community, I’m offering my Dynamics 365 GDPR Add-on Solution free to the community both Customers and Partners. You can find a link to download the solution for free at the end of this post.

The solution delivers the following functionality and Data Subject requests:

  1. Consent Management
  2. The Right to be Forgotten (anonymising contacts information)
  3. Personal Identifiable Information (PII) Management

The solution includes the following components:

  1. “Consent” Custom entity with relationship to Contact entity
  2. New form for Contact entity called GDPR and few additional fields on Contact
  3. “Configuration Settings” entity for capturing config information
  4. A Plugin Assembley for the Anonmisation function
  5. A Workflow for creating tasks to renew Consent at 30, 7 and 0 days from consent end date.

For the solution to work properly, once you import the solution, you will need to do the following:

  1. Create a Queue called “GDPR” so that tasks for consent renewal created by the workflow can be added to this queue.
  2. Create a Configuration Setting record called “GDPR Contact” as the screenshot below. You need to enter names of fields you want to be anonymised separate by semicolons.

The solution takes the approach of anonymising the contact information without actually deleting the contact record. This means everything stays the same, attributed to the same contact record but the record itself will no longer hold any personal identifable information (PII) of the customer.

Here are screenshots on how the “Anonymise” button works:

GDPR Contact Form:

Click on “Anonymise” button:

Anonymised Contact record:

I hope this solution helps many in the Dynamics 365 community. If you find this solution helpful, please review and/or vote on this solution. I’ll be happy to support the solution where I can (and based on its popularity).

N.B. The solution is provided as is with no warranty. It does not guarantee GDPR compliance and your organisation will still need to ensure they are compliant.

Dynamics 365 v9.0.2 Spring 2018 Release prcing and licensing guides and information sheets

With the new release of Dynamics 365 v9.0.2 Spring 2018, I thought I’ll share links to all the new licensing guides and information sheets that are available for Dynamics 365 Microsoft Partners with access to Microsoft Dynamics Partner source, they can get the same information here:

and here is what I believe a publicly available version of the Dynamics 365 Spring 2018 (v9.0.2) licensing guide:

https://mbs.microsoft.com/Files/public/365/Dynamics365LicensingGuide.pdf

Finally, you can find all detailed documents, guides and information sheets/videos on Partner Source here:

Microsoft Dynamics 365 Licensing Guide – Spring launch updates

Microsoft Dynamics 365 Existing Customer Transition Guide​​

Microsoft Dynamics 365 Licensing Guide – Addendum for Case Management​​

Microsoft Dynamics 365 Business edition Licensing Guide​​

Microsoft Dynamics 365 Pricing and Licensing Videos​

Microsoft Dynamics 365 Licensing and Pricing Deck​ – Spring launch updates

Microsoft Dynamics 365 Pricing and Licensing FAQ​ – Spring launch updates

MICROSOFT DYNAMICS 365 ON-PREMISES DOCUMENTATION

​​​​Microsoft Dynamics 365 On-Premises Licensing Guide

​Microsoft Dynamics Field Service On-Premises Planning Guide​

Microsoft Dynamics 365 On-Premises FAQ

Hope this helps!

Dynamics 365 Saturday in Amsterdam February 2018 – Event Summary and GDPR Slides

We have recently had a fantastic two days as part of our Dynamics 365 Saturday event and Hackathon. It started with a Hackathon on Friday afternoon all the way until the end of the night then followed by a Dynamics 365 Saturday full day event. We had some amazing content including opening keynote by Ben Vollmer, Microsoft Dynamics 365 Field Service Global Lead. We also had an excellent closing keynote by Steven Kaplan, LinkedIn Group Manager for Sales Navigator and an ex-Microsoft Dynamics exec himself.

I had the pleasure to interview Steve as part of the Question and Answer section of the closing keynote. You can read more about the event on this blog post:

https://www.linkedin.com/feed/update/urn:li:activity:6365472645869297664

You can also see my live LinkedIn video from the closing key note here:

https://www.linkedin.com/feed/update/urn:li:activity:6365582720701120513

We have also had some fantastic feedback from various attendees including this potential Dynamics 365 Customer:

I have also delivered a sesson on my “favourite” subject: GDPR. The session was titled: Business and Technical Design considerations for a GDPR compliant Dynamics 365 solution.

I’ve been asked many times about the session slides and I have just got round to upload them. You can find them on http://crm.boutique at the following location:

http://crm.boutique/microsoft-dynamics-gdpr-dynamics-365-saturday-amsterdam-feb-2018

Enjoy! I hope you find the slides useful.

Dynamics 365 v9 iPhone Mobile App access to Device Microphone not available

I have a Dynamics 365 Solution built on v9 (Cloud) and it is built on the new Unified Client Interface (UCI – also known as Unified Interface).

When I render my UCI App on Dynamics 365 Mobile app running on an iPhone Mobile Device, everything works fine except one issue: My Speech to Text web resource does not work. When I checked, I found out that the Dynamics 365 Mobile App (latest version as of Feb 2018) does not have access to the iPhone Device Microphone.

Moreover, when you go to check under the iPhone Settings –> Privacy –> Microphone, you can see all Apps that requested access to the Device Microphone but you will find that Dynamics 365 App is not listed. I also could not find a way (initially) to get the App to request acces to my device microphone.

This issue has now been reported to the Dynamics 365 Product Group team responsible for the Mobile App – so they are aware of it and hopefully will fix it in an upcoming release.

However, thanks to my friend and fellow MVP, Marius Agur Pedersen, he alerted me to the fact that there is a “Microphone” icon on the Timeline control on several Dynamics 365 entity forms. Once you click on this “Microphone” icon, I managed to get the standard Dynamics 365 Mobile App to request access to the Microphone from my iPhone Device and the App now shows up on the iPhone Microphone Setting under Privacy.

Here is how you can initiate this request from the App to access the Device:

 

I’ll be updating this post with more information once I get confirmation from the Product team that the App can request access to the Microphone when it runs for the first time. But for now, the above work around should be good enough and should allow your voice recognition, audio and/or Speech to text web resources and modules to work inside Dynamics 365 Mobile App.

Hope this helps!

Summary of our Dynamics 365 Saturday event with special guest James Phillips @ Microsoft London Jan 2018

We had a fantastic two days at Microsoft London Paddington Offices on Friday 26 and Saturday 27 January. It was the first time we had our event across the whole Microsoft Business Solutions platform and over 2 days, Friday afternoon and Saturday.

This time, we had a very special guest: James Phillips, Microsoft Corporate Vice President and the head of Microsoft Business Solutions (including Dynamics 365) Globally. He flew from the US to attend the event and show his support to the community.

Q&A with James Phillips

To check all the photos and a chronological report on the event, please read my LinkedIn article here:

https://www.linkedin.com/pulse/summary-report-our-dynamics-365-saturday-london-event-mohamed-mostafa/

James Phillips supporting our Dynamics 365 Saturday community

Directions EMEA 2017 Dynamics 365 GDPR Compliance Session Slides

Presented by myself and James Crowter, we have received various requests to share our slides from Directions EMEA 2017. I have added these here but please note that I have added more information than the original presentation slides. Hopefully it will be of some benefit to some of you.

Please note there is NO WARRANTY for this document and is provided as is without any guarantees. You should not make business decisions based on these or any similar high level material.

Microsoft Dynamics 365 & GDPR compliance – Oslo #MSDyn365 event slides and updates

I had really great audience and some excellent interactions at my Microsoft Dynamics 365 #GDPR compliance session in the stunning #Oslo at Microsoft Norway. I’ve heard and discussed several shared concerns on GDPR significant impact on #CRM solutions, its complexities and how soon the regulation is coming!

I also want to thank everyone for their positive and encouraging feedback. That’s what keep me (and other MVPs) going and make us continue to help the Dynamics 365 community in passion!

As per everyone’s request, I have incorporate our useful interactions into my slides and you can now download them via the link below on this post or on http://CRM.Boutique  (free registration is required).

If you would like to attend this session again in person, then you can join me at our next Free Microsoft Dynamics 365 event in Milan at Microsoft Italy offices on 16th September 2017. This will be another great CRM Saturday event, this time in Italy.

One last off-topic point: Oslo and Norway are absolutely stunning (did I say that before?). If you haven’t been there, then try visiting soon – preferably in the summer. Make sure you: a) take the Oslo Fjord cruise, b) do the Oslo River walk and c) eat plenty of Norwegian fish (especially Salmon).

I leave you with some photos from the event and amazing Norway!

  

Our Free Dynamics 365 #CRMSaturday #MSDyn365 Bootcamp has been a great success – what a day!

We have just had our first CRM Saturday Bootcamp at Microsoft UK London Paddington offices this Saturday, 22nd July 2017. It has been a lot of hard work for everyone at CRM Saturday especially the trainers: Neil Parkhurst, Janet Rob, Raz Choudry and Baris Kanilca. As for me, I did 16K steps just walking between the various rooms ensuring all sessions are adhering to our agenda times. Personally, my sessions both overrun by few minutes and some of my track attendees missed part of their breaks as I got carried away! For this, I’m sorry 🙂 It has been a seriously fun event with some excellent attendees.

Not only we had 110 excellent attendees @ our free #MSDyn365 #CRMSaturday Bootcamp. We also raised £1,421 for the London Fire Fund, British Red Cross.

We learnt Dynamics 365 together in 3 different parallel tracks. There was a lot of excellent networking as well as some great fun at the various breaks and the Raffle ticket awards.

Some of our attendees even went back home with an XBOX S One, an Amazon Alexa/Echo and other prizes. What a day!

However, I’ll have to name names in this post! Firstly, many many thanks go to: Microsoft’s Matt Fox and Bruce Nicholson Scribe’s Henk Adriaans and Steven Thornhill Nigel Frank’s Oliver Norton and Andrew Brownlie

Without our host, Microsoft, and our sponsors, such an amazing events wouldn’t have been possible. And of course special thanks goes to our trainers: Raz Dynamics, Neil Parkhurst, Janet Robb and Baris KANLICA

And our helpers: Lipi Sarkar (MBA), David Robertson and Samira Kadiri

And of course many thanks to our Dynamics Community colleagues and Professionals who attended the event and made the donations to make such an event a success!

Important list of Deprecated Features and Funcationalities in Microsoft Dynamics 365

If you are currently responsible for a Microsoft Dynamics CRM system or planning / delivering a Dynamics 365 solution, then you need to be aware of this important Microsoft announcement about the deprecation of some features and functionalities.

Microsoft defines “Deprecated” as an intention to remove the feature or capability from a future major release of Dynamics 365. The feature or capability will continue to work and is fully supported until it is officially removed. This deprecation notification can span a few years. After removal, the feature or capability will no longer work.

Hence, you should start planning replacing these features from your current Dynamics systems or avoid using these capabilities in your current Dynamics 365 implementation projects.

Here is the list of features, functionalities and capabilities officially deprecated and will be removed from Microsoft Dynamics 365 CRM:

  • Dynamics 365 for Outlook (Outlook client) is deprecated
  • Service scheduling in Dynamics 365 for Customer Service is deprecated
  • Dialogs are deprecated
  • Usage of Parature knowledgebase as the Dynamics 365 knowledge management solution is deprecated
  • Project Service Finder app is deprecated
  • Contracts, Contract Line Items, and Contract Templates entities are deprecated
  • Relationship Roles are deprecated
  • Mail Merge is deprecated
  • Announcements are deprecated
  • Ready-to-use business processes available through Add Ready to Use Business Processes setting are deprecated
  • Silverlight (XAP) web resource is deprecated
  • The following client APIs are deprecated
    Xrm.Page
    Xrm.Page.context
    Xrm.Page.context.getQueryStringParameters
    Xrm.Page.context.getTimeZoneOffsetMinutes
    Xrm.Page.context.getUserId
    Xrm.Page.context.getUserLcid
    Xrm.Page.context.getUserName
    Xrm.Page.context.getUserRoles
    Xrm.Page.context.getIsAutoSaveEnabled
    Xrm.Page.context.getOrgLcid
    Xrm.Page.context.getOrgUniqueName
    Xrm.Page.data.entity.save(string)
    Xrm.Page.data.entity.getDataXml
    GridRow.getData
    GridRowData.getEntity
    Xrm.Mobile.offline
    parent.Xrm
    addOnKeyPress
    removeOnKeyPress
    showAutoComplete
    hideAutoComplete
    Xrm.Utility.alertDialog
    Xrm.Utility.confirmDialog
    Xrm.Utility.isActivityType
    Xrm.Utility.openEntityForm
    Xrm.Utility.openQuickCreate
    Xrm.Utility.openWebResource

 

For full details about these deprecations and the official Microsoft announcement, please refer to the following Microsoft Documentation:

https://docs.microsoft.com/en-us/dynamics365/get-started/whats-new/customer-engagement/important-changes-coming

Please note that deprecations described in this post and in the original Microsoft Documentation announcement, apply to Dynamics 365 Customer Engagement as of the July 2017 Update. All Dynamics professionals should use this information to prepare for future releases of Dynamics 365.

Customer Engagement refers to the applications that make up the CRM portion of Dynamics 365, which includes the Sales, Customer Service, Field Service, and Project Service Automation applications.