5 Ways to Make Digital Transformation with Microsoft Dynamics 365 Actually Work (PART II)

By Bas Bergstra

In my previous blog about Digital Transformation (‘DT’) with Dynamics 365 initially the concept of DT was briefly explained by stating that it serves strategic objectives of our customers, which can be realized with support of Dynamics 365. Next, I emphasized that DT can be applied in a variety of ways. After this introduction my blog then zoomed into two ways of making DT with Dynamics 365 work. As the title suggests, it is now time to bring in three additional best practices.

The earlier discussed way number 2 for DT with Dynamics 365 regarded the importance having strong awareness of out-of-the-box features. On the other hand, it is crucial to have your semantics in place. Besides the point of that each industry or even organization is likely to have its own jargon; once having deciphered that, you may experience another haze. Often departments, teams or groups people commonly have different interpretations for the same concept. Another challenge is that you may assume familiarity of your counterpart with concepts such as Artificial Intelligence (‘AI’) and Robotic Process Automation (or ‘RPA’), but these are still not so mainstream as you might assume. Just imagine how long it took before the term ‘Internet’ was starting to resonate with your grandparents. So before introducing more advanced Dynamics 365 functionality such as Customer Insights and Lead Scoring Models, make sure to get your audience acquainted with the underlying concepts.

Finding out the DT maturity level of your customer is an effective route to determine appropriate timing of introducing Dynamics 365 features to them. This fourth way of making DT with Dynamics 365 work also relates back to the second challenge previously mentioned in this blog. The reason is that interpretation and timing often go hand in hand. Consider an example regarding a customer service manager who currently receives a weekly report on customer complaints expecting the same from the new Dynamics 365 solution.  After finding what he perceives as a ‘report’, you realize that his requirement could be met by simply providing access to of view of cases in Dynamics 365 Service. Do this instead of overwhelming him right away with Dynamics AI for Customer Service, thus time the pace of digitally transforming their processes to support customers. Remember, Rome was not built in a day either.

The last success factor for a Dynamics 365 implementation that I would like to share here regards user adoption. DT implies change and the willingness to adopt varies per user. Roughly spoken users can be grouped into three categories, i.e. 10% very open to change (referred to as pro-change opinion leader), 10% resistant to change (alias ‘con-change opinion leader’) and the opinion of the rest (80%) is likely to be affected by the opinion leaders. With tactical involvement of the group who is in favor, you are likely to win the majority also with your demonstration of added value with Dynamics 365. So, make sure to first focus on the pro-change opinion leaders and convert them into ambassadors or advocates inspiring the 80% group.

With these 5 ways you have a head start to leverage Dynamics 365 and transform your customer’s business. Please feel free to share your experiences, so I can start improving and or extend these ways in new posts.

Link to part I of this blog.

5 Ways to Make Digital Transformation with Microsoft Dynamics 365 Actually Work – Part I

By Bas Bergstra

Experienced with Microsoft Dynamics 365 implementations for some time now? Then you are probably also familiar with the term Digital Transformation. Even more so, chances are that if you have been working with Dynamics 365 for more than a few years, you probably already were helping transform the business of your customer before Digital Transformation became a buzz word.

Still, even though Dynamics 365 each year is well positioned in Gartner its Magic Quadrant for CRM and enjoying a steady growth of its user base, there are still many challenges to overcome when transforming organizations with that platform.

As a Consultant having worked with Dynamics 365 Customer Engagement (previously known as ‘CRM’) for many years now, I can totally relate to the challenges that we can run into.

Before zooming into the confrontations that might arise during your projects, let us break down the term Digital Transformation (‘DT’). The reason is that DT actually serves a goal, while technology such as Dynamics 365 is merely a mean to achieve the strategic objectives of our customers.

DT as a concept can be widely interpreted. Some organizations consider having a chatbot added to their website as a transformation in the way they provide service to customers, while others apply innovative technology to completely revolutionize business models in industries. Typical examples of disruptors such as Tesla, AirBNB and Uber have by now actually become a bit stale but are useful to illustrate the other side of the spectrum.

When looking at your typical project involving Dynamics 365 let us assume there is some degree of DT that your client is aiming for. Regardless to which extent ambitions are set, expectations regarding the level Dynamics 365 can meet then will be high. Especially when clients have completed a laborious RFI- and RFP process. The first challenge is then to manage their assumptions regarding the platform; this requires broad and detailed knowledge of the (latest) features.

Having completed the appropriate Microsoft certifications will certainly help a lot, even for the more seasoned consultants. This is contrary to a surprisingly common belief that learning theory only serves to successfully complete the exams. The actual benefit of certification is that it will trigger you to familiarize extensively with Out-of-the-Box features. For those of you who are still skeptical, the key is that preparing for an exam pushes you further and thereby encourages true commitment. Obvious reasons are the fact that you will then have a deadline to have completed your studying and the fact that Microsoft Learn is covering topics more extensively and effectively than ever before. In addition, checking YouTube offers tons of material, also listen to the relevant Pod casts to keep up.

With thorough knowledge of the Dynamics 365 features you might expect to be on pretty solid ground, when starting to engage with customers to determine a fit or gap for their requirements. And yes, as a starting point you are correct with that, but there is off course a ‘but’ leading to the second challenge. 

Customers typically do not express requirements for easy mapping to Dynamics 365. More often than not, specifications seem to demand for something different than what you learned when preparing for the Microsoft certifications. A common example is whether to map requirement for prospect management to the Out-of-the-Box entity Lead, Account or even Contact (in a Business-to-Consumer context).

Still, when having successfully completed the Dynamics 365 Sales exam you probably are able to effectively explain each feature and then together decide the adequateness accordingly. The key here is to consider standard functionality before entering the world of reinventing the wheel, by e.g. creating your own custom entity to manage a Prospect. A major drawback is that such entity will not leverage neat features such as seamless conversion of customer touch-points (i.e. activities such as e-mail or a web site visit) into a Lead for follow-up.

This concludes the first two ways to make DT with Dynamics 365 successful. Make sure to check my next blog with the more best-practices. Naturally I also highly value your feedback.

Link to part II of this blog.

Dynamics 365 – Security role Flow / Power Automate

By Ritchey Hazeu

You’ve build a Flow as an admin, deployed this flow to the next environment but none of your users are seeing this Flow.

Sound familiar? Read the following:

Besides activating Power Automate in your system settings (Settings -> Administration -> System Settings -> Customization -> Enable Microsoft Flow) there is also a privilege in the Security roles:

Navigate to one of your security roles and go to the Customization tab.

Below you will find “Run Flows”.

Dynamics 365 – Transition to Unified Interface

By Robin Schaareman

Earlier Microsoft announced that in October this year (2020) cloud organizations need to be on the newest Unified Interface. Via the website https://runone.powerappsportals.com you can check what date is set for your own environments. You can postpone this date to a date which suit you and/or your organization more. Be aware that 1st of October is the deadline, after this all environments should be on the Unified Interface.

On the Microsoft website you can find a lot of information how to check whether your solution is ready for the Unified Interface. Most of the information will be about if the technical parts in your solution will still function after you transition to the Unified Interface. However this is really important it is just as important that all the end users will benefit/work with the new interface as well.

Since it has been changed a lot it is good to discuss a suitable approach to implement this feature. Via this blog I will share my approach in how I implement the new Unified Interface at a customer. It might be a standard approach but in my experience this was effective enough to bring the new feature in the organization.

  • Prepare with your team

Before you inform the users about this new feature it is important to check if your solution is applicable. If this is the case you can create a new App within Dynamics 365. This app can be used for testing all the forms etc and see how it looks. If it all looks good you can strip this new app to make the sitemap just with the minimal entities needed for sales to do their work. For example, accounts, contacts, activities and opportunities. This will be the app that will be used during a pilot period with the users. Create a separate security role so the users that will attend the pilot can access the new app.

  • Inform important stakeholders/champions

Most of the time at a customer there are some enthusiastic users which are happy to hear about new features or changes. These users can help you get a platform to all other users and make them enthusiastic as well! Get those people in a room and inform them about the new Unified Interface. Show them the benefits of the new interface (its faster than the “old” version 😉) and discuss your plan in how to implement this new feature. Important outcome in this meeting is a date and a list of users that can attend the demo/pilot.

  • Give a demo to the users + surprise pilot!

After you have set a date with the stakeholders you can give a demo to a group of users that will attend a pilot (which they don’t know yet!). During this presentation you can show the new Unified Interface and all the benefits that comes with it (tablet/mobile version etc). At the end you have a small surprise, users that want to attend a pilot can start with that right after the meeting. Show the users that they can access the new features via the new app and at all times can switch back to the more familiar interface (if they get stuck or something). Also try to explain that they work within the same database.

  • Discuss the outcome and way forward

During the pilot you need to be pro active and ask pilot users how it is going. If they found any issues or have recommendations just write them down and discuss them with your team and the other stakeholders. In the end you can facilitate a meeting with all the pilot users to discuss the outcome and which of the feedback will be implemented before the release. After that you can propose a date to go live 😊 at the beginning you can still make an app which contains the old version of the UI. For some users this can be helpful in the transition to the new UI. Like I said, pretty straight forward but in my opinion an effective way to implement the new UI. Hope this helps

Dynamics 365 – Javascript – formContext – Lock form & fields after subgrid is loaded

By Ritchey Hazeu

Hi! In some scenario’s you would like to know if there are any related records and based on this condition, lock a form or any fields (or do any other action!).

First you would like to count the related records which are present in a subgrid:

var gridContext = formContext.getControl("Gridname");// get the grid context

var count = formContext.getControl("Gridname").getGrid().getTotalRecordCount();

And you would like to run this code after the Subgrid is loaded. So you will use the gridContext and let it run on load (apart from the form).

gridContext.addOnLoad(GridOnloadFunction);

How does this code look when you would like to lock fields?

function lockFieldsOnCount(executionContext) {

var formContext = executionContext.getFormContext(); // get the form context
var gridContext = formContext.getControl("Gridname");// get the grid context
    
var GridOnloadFunction = function () { 
var count = formContext.getControl("Gridname").getGrid().getTotalRecordCount();

if (count > 0){
                
var lockAccount = formContext.getControl("field1").setDisabled(true);

var lockContact = formContext.getControl("field2").setDisabled(true);

}

else {
                
var lockAccount = formContext.getControl("field1").setDisabled(false);

var lockContact = formContext.getControl("field2").setDisabled(false);
}
	
};
    gridContext.addOnLoad(GridOnloadFunction); //run onload of subgrid
}

How does this code look when you would like to lock a form?

function lockFieldsOnCount(executionContext) {

var formContext = executionContext.getFormContext(); // get the form context
var gridContext = formContext.getControl("Gridname");// get the grid context
    
var GridOnloadFunction = function () { 
var count = formContext.getControl("Gridname").getGrid().getTotalRecordCount();

if (count > 0){
                
formContext.data.entity.attributes.forEach(function (attribute, index) {    
var control = Xrm.Page.getControl(attribute.getName());
if (control) {
control.setDisabled(true)
	
}
});
	
else {
formContext.data.entity.attributes.forEach(function (attribute, index) {    
var control = Xrm.Page.getControl(attribute.getName());
if (control) {
control.setDisabled(false)
	
}
});
}
	
};
   gridContext.addOnLoad(GridOnloadFunction); //run onload of subgrid
}

Javascript in the Business Process Flow: header_process_ and postfixes

By Robin Pietens

Some things you run into make you go: ‘Oh yeah, totally forgot about that’. I hope most of you don’t have this happen all that often. I ran into one of them a few days ago and thought I’d share.

I was adding a custom filter to a lookup-view in the business process flow, as you can’t change the view in version 8.2 of Dynamics 365 via normal configuration. I ran into a problem where the filter worked on some fields in the flow, but not all. After spending quite some time on this I came to the below conclusions.

When customizing the business process flow via Javascript, you have to take into account that Dynamics adds ‘header_process_’ as a prefix to your fieldname. In addition, there is something else Dynamics does that is less obvious, and maybe less known as it won’t occur all the time. Dynamics adds a postfix of _X to each field that’s repeated in the same business process flow. X here is the next occurrence, starting with 1. The reason this is hard to spot is that it happens all the way at the end of the schema name of a field. Even if you use a tool like the Power Pane (which I would recommend), you probably won’t see the postfix in the schame name unless you hover over it to appear in full.

In my specific case, I work with a branched business process flow in which two similar stages exist, but you only ever see one of them. The invisible stages of the business process flow are also taken into account when the postfixes are appended. I didn’t know about this, and didn’t look closely enough at the exact schema names!

Another reason the search can take so long is that your code doesn’t actually give any errors. It simply doesn’t execute!

Hope this helps some of you out.

Dynamics 365 – How to reset the SharePoint integration button?

By Ritchey Hazeu

When you’ve got a server-based Sharepoint integration with Dynamics 365 you only see the “Enable Server-Based SharePoint Integration” button at the first time you are setting up the integration.

This looks like you can only set-up the integration only once, but in a rare situation you have to set it up again because of:

  1. You’ve got a new SharePoint environment;
  2. Your SharePoint Realm ID has changed.

You can return the integration button by deactivating your active SharePoint Sites by clicking on the below button and select your sites and deactivate them.

This will return your integration button and you can fill in a new SharePoint Realm ID.

Dynamics CRM/365 – Technical things you need to know as a functional consultant

By Ritchey Hazeu (Dynamics 365 Consultant @ Capgemini)

This time: Tools!

When you’re surrounded by developers, you hear a lot of tools which they use to manage their code. They are talking about Visual Studio, Plugin registration tool, SDK, Azure DevOps Server (before TFS), etc. In this blog we will tell you more about those tools and how they are being used.

 

Visual Studio

VS is being used by developers to develop new functionality. VS supports 36 different program languages, has a built-in debugger (a tool to write good code) and a code profiler (measures the functions which are created by the developers).

 

Azure DevOps Server (before TFS)

When you’re working in a team with multiple developers and they are all creating code in Visual Studio you need a place to store this code. You also need to make sure there is a version control. When developer A is working on a piece of code, developer B needs to be aware of this. Azure DevOps Server (before TFS) is providing this so called ‘source code management’. The most powerful thing Azure DevOps Server (before TFS) provides is that it covers the application lifecycle. When you want the store the code in the cloud the name is Azure DevOps (before it was called VSTS), and the code is stored in Azure.

 

SDK (Software Development Kit)

When developers first start working with Dynamics CRM they will download the SDK because it contains the following:

‘The SDK includes an architectural overview of Dynamics 365, the entity model, security model, and web services. Sample code and walkthroughs are provided to guide you through the new features. It also contains information for developers who customize the web client or Dynamics 365 for Microsoft Office Outlook, including scripting, integration of custom webpages, and sample code’ (quoted from https://www.microsoft.com/en-us/download/details.aspx?id=50032)

If will give the developers a bunch of insights in the code which they can use to start off with their own developments.

 

Plugin Registration Tool

Before we will explain this tool, we need to know what plugins are. A plug-in is a custom made (C# or .net) function that is used to extend the standard functionality Dynamics CRM offers. They can run synchronous & asynchronous, when you execute something synchronously, you wait for it to finish before moving on to another task. When you execute something asynchronously, you can move on to another task before it finishes. Plugin act on a certain event in CRM.

An example: You want to automatically send out an e-mail to your customer when the SLA of the case is breached.

The plugin is being created in Visual Studio, with the use of the SDK (you need to include references to Microsoft.Xrm.Sdk) and stored in Azure DevOps Server (before TFS). The plugin is registered in the Plugin registration tool, with the tool you can connect your plugin to different instances in CRM.

 

Custom Workflow

Plugins can be executed on a wide range of events on a CRM entity. Custom workflows are bound to the events which you can see in the CRM application (Create, Update, Status Change, Delete and On assign). Workflows are instead giving (non-technical) users more insight in the process because it’s visible in CRM, unlike the plugin process.

Another difference between workflows and plugin is that workflows are running async and plugins are running sync (read a little bit back for the explanation).

When you create a Custom workflow you also create an assembly and register this just like a Plugin.

 

 

Next article will be about the Architecture of a CRM (on-premise) environment!

Dynamics CRM/365 – Support lifecycle

By Ritchey Hazeu (Dynamics 365 Consultant @ Capgemini)

 

When you’re working for a customer which is using Dynamics CRM it’s always good to know if Microsoft still supports the current version. It depends on the Service Pack which ‘Support end date’ Microsoft applies.

For the older versions Microsoft applies 5 year Mainstream support and 5 year Extended support. Unfortunately this does not count for every Service pack. For Dynamics 365 it’s 5 year Mainstream support and 2 year Extended support.

An example: A customer is using Dynamics CRM 2016 Service Pack 1. This Service Pack has 23-05-2016 as start date and 08-01-2018 as end date. This means that, before the end date, an upgrade needs to be executed to Dynamics CRM 2016 Service Pack for Dynamics 365 (Service Pack 2).

If you want to know which End date is applied to your, or your customer’s Dynamics CRM solution, you can navigate to https://support.microsoft.com/en-us/lifecycle/search and type in the version.