Category: Dynamics 365

No – I’m not referring to the current craze – Fortnite by Epic Games – I’m referring to Microsoft Dynamics 365 Fortnight Fridays.

A very interesting Microsoft webinar takes place every 2 weeks is called Dynamics 365 Fortnight Fridays. The webinar is presented by members of the Microsoft Dynamics 365 Product Group and it covers all the latest and greatest about Dynamics 365 features and capabilities. In my humble opinion, I think it is a must watch webinar for 1 hour on a Friday every fortnight.

Like this:

I have been asked by several Dynamics 365 consultants and customers about which test frameworks or Dynamics 365 Testing tools that are available. Hence, I thought I create this post to list all Microsoft Dynamics CRM Customer Engagement testing tools I trust. I will continue to update this post with more tools and if you have a tool that I missed which is worth checking, please let me know and I’ll try it out then add it to the list if I found it useful to the Power Platform community.

First on my list is EasyRepro by Microsoft. EasyRepro is an automated UI testing API for Dynamics 365. This is a Dynamics 365 Testing library that aims to help teams of consultants and developers with UI Testing of Dynamics 365 solutions. EasyRepor API’s provide an easy to use set of commands that make setting up UI testing quick and easy. The functionality Microsoft provided covers core CRM commands that end users would perform on a typical workday and which can be extended to cover more functionality.

Next on the list is Fake XRM easy by my friend and fellow Microsoft MVP Jordi Montana. Fake XRM easy provides developers and consultants with a framework to run tests on an in-Memory context and allows you to do mocks or fakes for testing you Dynamics 365 components.

There is also Wael Hamze’s xRM CI Framework which provides tools to automate the build and deployment of Dynamics 365 Customer Engagement CRM Solution. Using the framework to implement a fully automated DevOps pipeline will allow developers to deploy more frequently with added consistency and quality. It is also important here to mention that continuous deployment and a fully automated DevOps processes, provides a robust approach for development, testing and deployment and will deliver tangible savings to projects and programmes via efficiencies in development, testing and deployment

Share this:

Like this:

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.

Like this:

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:

Consent Management

The Right to be Forgotten (anonymising contacts information)

Personal Identifiable Information (PII) Management

The solution includes the following components:

“Consent” Custom entity with relationship to Contact entity

New form for Contact entity called GDPR and few additional fields on Contact

“Configuration Settings” entity for capturing config information

A Plugin Assembley for the Anonmisation function

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:

Create a Queue called “GDPR” so that tasks for consent renewal created by the workflow can be added to this queue.

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.

Like this:

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:

Like this:

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:

Like this:

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.

Like this:

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!

Share this:

Like this:

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:

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.

Like this:

Does this blog post title sound confusing? If yes, then I have to admit it is intentionally written to sound confusing. I made it confusing because this is how I felt after reading about the so many names and naming combinations I heard about Dynamics Porals, ADX Studio portal recently acquired by Microsoft, Dynamics Portals by Microsoft and Microsoft Portals SaaS module.

To clear this confusion, I found this comparison on Adoxio website to be helpful to clarify the confusion:

For those who don’t know, Adoxio is the consultancy part of ADX Studio that Microsoft didn’t acquire.

So to clarify, Adxstudio portal were up to versions 7 before Microsoft acquired them.

Once Adx code was acquired, Microsoft rebranded it to Portal, from Microsoft. This is the new SaaS Dynamics Portal from Microsoft which is normally included in your Dynamics 365 Enterprise subscription. This is also known and referred to as: Microsoft Dynamics Portals, Microsoft Portals for Dynamics 365 and few other permutations. This dynamics portal is only available in the cloud (SaaS) and is not available for on-premise

Microsoft has then decided to release the source code as a one-off release to the Dynamics community. This is the release of the Microsoft SaaS portal source code at a specific point this year but as mentioned, it is a one-off, as is with no support or bug fixing. You can understand more from the comparison in the image above.

Finally, Adoxio has taken the Microsoft Open Source Portals code and made it freely available on GitHub as XRM Portal community edition so that it can easily be downloaded, updated, and maintained by itself and anyone else, including other Microsoft Partners. This represents the definitive edition of Microsoft Open Source Portals for Dynamics 365 brought to you by the same team behind ADXStudio. xRM Portal community edition is available to be used both on-premise and cloud.

Hope this post has clarified the confusion between the various versions and the new promising XRM Portal community edition.