Monday, August 26, 2019

RetrieveMultiple plugins for both Unified Interface and classic UI in D365


I hope you have experience with writing plugins on RetrieveMultiple message. Even though you do not have experience with writing plugins on RetrieveMultiple message, this will help you when you write a new plugin.

Before the Unified Interface for Dynamics 365 comes in to play, it used the QueryExpression in RetrieveMultiple. But the Unified Interface Dynamics 365 uses FetchExpression. Meanwhile classic UI  uses the QueryExpression as usual.
So if your system already have plugins for RetrieveMultiple message, it won't work for UCI. Hence you may need to modify those to work for both UCI and classic UI.

Following sample code snippet will help you to write/update your plugins on RetrieveMultiple message.

if (context.MessageName == "RetrieveMultiple" && context.Stage == 20 context.Mode == 0 && context.InputParameters.Contains("Query") && ((context.InputParameters["Query"] is QueryExpression) || (context.InputParameters["Query"] is FetchExpression)))
{
 // For QueryExpression (For Classic UI)
 if (context.InputParameters["Query"] is QueryExpression)
 {
  var  queryExpression = context.InputParameters["Query"] as QueryExpression;
  var queryExpressionToFetchXmlRequest = new QueryExpressionToFetchXmlRequest()
  {
   Query = queryExpression
  };
  var queryExpressionToFetchXmlResponse = (QueryExpressionToFetchXmlResponse)service.Execute(queryExpressionToFetchXmlRequest);
 }
 // For FetchExpression (For UCI)
 else if(context.InputParameters["Query"] is FetchExpression)
 {
  var  fetchExpression = context.InputParameters["Query"] as FetchExpression;
  var fetchXmlToQueryExpressionRequest = new FetchXmlToQueryExpressionRequest()
  {
   FetchXml = fetchExpression.Query
  };
  var fetchXmlToQueryExpressionResponse = (FetchXmlToQueryExpressionResponse)service.Execute(fetchXmlToQueryExpressionRequest);
 }
}

You can change the code inside the block as you wish to implement your logic and enjoy 👍


Thursday, June 6, 2019

Voice of the Customer : Script Error in UCI

If you use Voice of the Customer app, you may have experienced following script error, when you edit and save the colors of a theme in UCI.
If you use Dynamics 365 — custom application. You won't get this error. But it is not the fix for this 😏

If you have this issue, when you open the theme in UCI, you may see the them as below.


Then after you edit the colors of the theme and save, it will give you a script error as below.


Since editing a themes is core function of the Voice of the Customer app you need to have the correct privilege in order to change the proprieties of the themes.

So in order to correct this please follow below steps. 
  1. Go to Settings-> Security -> Users
  2. Select the user
  3. Click Manage Roles button in the ribbon.
  4. Add the following security role:

After this your issue should be fixed and you will see the survey template as below.



UCI is not a daemon, enjoy it 😎

Tuesday, May 14, 2019

Microsoft Dynamics CRM Reporting Authoring Extension Setup - Error

If you get the following error(Setup cannot continue because there is a pending restart required) while you installing Microsoft Dynamics 365 Report Authoring Extension, you can follow below steps to overcome the issue. (Please do not forget to restart and see will the issue be fixed, if not try this  😏)

  1. Open the log file in the error message.
    (Eg : C:\Users\Thusitha\AppData\Roaming\Microsoft\MSCRM\Logs\BIDSExtensionsSetup.log)
  2. Check for the registry path and delete it.
     (Eg : Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce)

Tip: To open registry editor follow below steps.
  1. Open the Run box with the keyboard combination Windows key + r.
  2. In the Run line, enter “regedit” (without quotes)
  3. Click “OK”

This will fix your problem and will allow you to install Microsoft Dynamics 365 Report Authoring Extension.

Thursday, February 7, 2019

Refresh your Freshsales data from Dynamics CRM using Microsoft Flow

Freshsales is another popular CRM and you may need to update existing Freshsales data when customers are migrating to Dynamics CRM or using both CRMs. 
You can integrate MS CRM and Freshsales CRM easily using Microsoft Flow and Freshsales REST API.

Following image is a sample of lead creation in Freshsales when a lead is created in Dynamics CRM.
You can create a flow to send a HTTP request to Freshsales API from  Microsoft Flow. 


With this approach, you may able to refresh your Freshsales data from Dynamics CRM using Microsoft Flow with less effort.

Tuesday, January 29, 2019

Plugin Registration Tool : Not working properly


I believe you may use following options to download the Plugin Registration Tool.
  1. Download the Dynamics 365 SDK Tool Set as a single Zip file from https://xrm.tools/SDK
  2. Download using PowerShell
    https://docs.microsoft.com/en-us/dynamics365/customer-engagement/developer/download-tools-nuget#download-tools-using-powershell
  3. Download using nuget package manager or nuget package manager console
    https://www.nuget.org/packages/Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool
  4. Install tools via npm
    https://xrm.tools/SDK
  5. Use the plugin registration tool in XRM toolbox.
    https://www.xrmtoolbox.com/plugins/Xrm.Sdk.PluginRegistration/
If you download the Zip file and use it, sometimes you may experience that the popups are not working when you try to preform the operations(Register/Unregister/Update plugins, Debug, etc.).
But the most confusing thing is the plugin registration tool is connecting and you can preform other operations as usual.


As well as you may have experienced an issue with the plugin registration tool in XRM toolbox. Sometimes it gives the message that the dll is updated even though it is not actually updated the dll in CRM. 

So my recommendation is to use other options without downloading the zip file or using the plugin registration tool in XRM toolbox. When the plugin registration tool is download using other three options(2,3,4), it works properly.