Artificial Intelligence (AI) – Microsoft Dynamics 365

April 2019, Dynamics 365 AI was made available to General Public.

Overall AI is one of the most talked about topic and all the major companies are investing Time, Effort & money ($) to revamp, rebuild and innovating their processes, software’s.

With Dynamics 365 AI, the Dynamics 365 Customer Service Virtual Agent in my view will be the next best and big thing for the platform.

Here’s the list of functions which I think, companies wanting to implement AI along in Dynamics can kickstart with.

How to Manage Queue Items (Delete Queue Items)?

Option 1: Managing of queue items looks a very easy job. Users can click on the “Remove” button on the Queue grid. This would unlink the reference of the queue item from the queue (which functionally delete the queue item) but not the actual record itself.

Option 2: The other option, users can use Navigate to a specific Queue and view the Queue items Sub grid or use Advanced Find and find the queue items (using one of many filter criteria’s). Using this, when the users delete (Bulk Delete) the queue items, the actual record itself also gets deleted.

Now, both the above options can be used based on the Organization’s requirements.

Option 1 is quite simple and works Out Of The Box for all users and mostly all scenarios and organization. Now consider, you need to provide the Option 2 for your users. Is that simple enough? Yeah looks simple, it’s just delete privilege which I need to give to specific user role. Right? Nah. Its not that simple.

Why its not simple:

  1. Do you see Queue Item as an entity in the security role?
  2. How the Security works for Queue Item?
  3. How to make sure that users can “delete” the queue item for specific queues only?

Let’s answer the above topics of discussion:

  1. Do you see Queue Item as an entity in the security role?

No, Queue Item is not available anywhere in the security role. Neither its available in “Core Records” tab or “customization” or “Service management”.

  • How the Security works for Queue Item?

Queue item is tightly coupled with the Queue Entity and as Queue Item entity is not available in the security role, thus there are no separate privileges which can be given to the security roles for this. So, the “Delete” button is also based on privilege of the Queue Entity itself.

This would mean, user who are given this access will be able to “Delete” the Queue itself, which we may never want.

Note: We can’t define which users (User roles) can pick or release or remove the queue items. For which there shouldn’t be much of a challenge as these are required functionalities (in most cases).

  • How to make sure that users can “delete” the queue item for specific queues only?

There is no such option available Out of the box.

So how to make Option 2 works?

A simple solution: Add a custom button using Ribbon Editor (Thanks to XRMToolBox and Ribbon Workbench) and once the users add the emails (records/queue items) to the specific Queue for which the queue items are to be deleted or if the button is visible across all queues, then users will be able to use the custom delete button.

Like this :

And how do you specify which role can view and action on the delete button – Refer to my blog article below and follow similar steps: “Restrict Advanced Find Functionality for End Business Users

Quick Tip – A parent Case can have maximum of 100 child cases

A review of some basics always help.

Do you know a parent case (Parent – Child case relationship – OOTB) can have maximum of 100 child cases

1. If you try to create the 101st case from CRM front end, you will get an error

2. If you try to import the cases, you will get error

3. If you try to create using plugin / Custom code, you will get error

SLA – Change SLA due time as End of day (or End of Business Hours)

In general, when the SLA is defined and incorporated in CRM, we take care of working business hours and holiday calendar and define the Failure and the warning duration for the SLA KPI instance. Let’s assume the SLA is based on the Resolve by KPI instance.

The timer / clock will start and will be adjusted based on the Failure time of the related SLA KPI instance (calculated automatically). Based on this the SLA Due date can be set, programmatically.

Because the system calculates the failure due date and time, at times it maybe be the close to start of business hours and so is the SLA Due time.  

This is common scenarios, but it may lead to working issues for the team on the floor.

To avoid this, we can write a plugin on the SLA KPI instance entity, which will be executed on create or updates (if there is SLA updates on the parent record), and the failure time can be set as 11:59 PM of that day.

Changing the failure time would mean the timer/ clock will show the extended days and hours (as compared to original) and the SLA due date can be extended.

Setup / Refreshing CRM Sandbox Environment

Setup / Refreshing CRM Sandbox Environment is pretty easy enough. Often at time, we miss out basic steps.

Below article will show how to setup or refresh CRM Sandbox Environment.

1. Log into with a CRM system administrator account.












2. Go to “Admin Centers” and click on Dynamics 365, this would open the Administration











3. Once logged into Administration Center, you will see the instances which are under the logged in user. The Sandbox environment state would be “Instance to configure”.














4. Click on “Configure” and this will open page where users can enter information to configure the sandbox. Users can select the correct Target version.












Note: The target version should ideally be same as the target version of the Production.

Note: Microsoft allows you to select the target version and does not freeze it same as the production environment, as there can be multiple Sandbox environment. This is also required, if the users are upgrading their CRM version and want to test the solution with the CRM version, it is easy to do in the same box.

5. Once the user enters the Information and click on “Configure” button, the configuration will be initiated.






















6. The next step is to copy the existing environment solution and add to the sandbox. For the same, users can select the main environment (or this can be any environment) which need to be copied over and click on











7. Select the target instance and provide the details.











That’s it! It’s easy to configure sandbox environment, however, for safer side this is recommended to be done by System Admin and it’s always good to take backup.



Which Platform to choose ?

Microsoft CRM has the ability to run on various platforms, be in Windows, iOS, Android, etc. At times, it becomes little difficult and technical to understand what is the right platform for a particular business function.

We need a matrix and a decision tree to understand and take a call.

Below is the list of functions (not limited) to help understand which platform can be used.

Function Matrix

Restrict Advanced Find functionality for End Business Users

Issue: Product Owners often highlight that they would want the restrict the Advanced Find Functionality to all business end users. While we can control which fields can be allowed as filter criteria for search and which not, but the users can add any field as column and view the data as desired. Although the Print and Export privileges are often not provided, but Data Leakage is often an underlying statement.

Solution: Hide Advanced Based on the User access. Unfortunately, this solution is not available as standard feature in system.

Workaround: Everyone loves workaround and we have a workaround for Advanced Find too!!
Now because it is workaround, it has some limitation. The limitation is that the Advanced Find button cannot be hidden, however, the users will not be able to get the search result. The “Result” button (the find button) can be hidden, thus restricting not be able to fire the search result.

Steps for Workaround:

1. Create a new Solution or to an existing solution add “Application Ribbons”

2. Use Ribbon Workbench to open the solution

3. Navigate to “Advanced Find”, in the Home and click on “Results” button.

Now here we have 2 major options available to restrict Advanced Find
3.1. Hide Results button in Advanced Find. This would hide the button for all users including Admin and no one will be able to use this functionality. Probably this may not be requirement for all. If this functionality is required, users can click on hide and publish the Ribbon Workbench and it will done.
3.2. Customize the button command to restrict only for specific user roles. Now to do this you may want it to be easily configurable and not hard coded, thus at this stage, you can create a new entity “Hide Advanced Find”. Using this entity, we would write the command on this button as below and publish the Ribbon Workbench.

4. Navigate to Security roles and assign or remove the “Read” permission of the custom entity created.

5. Result

When the user with role of Sales Person login to CRM, while they can view and click on the Advanced Find button, however, the “Results” button is no longer visible, hence they cannot execute or run the command.

Users with privilege to the Advanced Find Entity, can view the “Results” button.