Fixed – Unable to Login to Dynamics CRM or An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail


We might get below error while trying to consume Organization Service through the client application

  • Unable to Login to Dynamics CRM

  • An unsecured or incorrectly secured fault was received from the other party. See the inner FaultException for the fault code and detail.

Chances are the Security Defaults are enabled on the account you are using.

https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/concept-fundamentals-security-defaults

If not required, login to

https://portal.azure.com/

Select Azure Active Directory > Properties > Manage Security Roles

And disable it

This time the connection will be successful.

Try below as well –

SecurityProtocolType.TLS12 –

https://nishantrana.me/2018/10/20/unable-to-login-to-dynamics-crmorganizationwebproxyclient-is-nullorganizationwebproxyclient-is-null-error-while-using-crmserviceclient/

https://nishantrana.me/2018/04/24/unable-to-login-to-dynamics-crmorganizationserviceproxy-is-null-error-while-using-crmserviceclient/

Server Clock out of sync –

https://nishantrana.me/2011/12/13/an-unsecured-or-incorrectly-secured-fault-was-received-from-the-other-party-see-the-inner-faultexception-for-the-fault-code-and-detail/

MFA –

https://nishantrana.me/2020/05/07/an-unsecured-or-incorrectly-secured-fault-was-received-from-the-other-party-see-the-inner-faultexception-for-the-fault-code-and-detail-while-trying-to-connect-using-xrmtoolbox/

Hope it helps..

Fixed – There was an error calculating dependency for this component. Missing component id error while trying to import a solution in Dynamics 365


We got the below error while trying to import the solution.

The error indicates that either the component with the specified GUID in the error message is either missing in the solution or is missing in the target environment.

Search for the GUID either in the customization.xml or solutions.xml to find the component.

Add the missing component in the solution and try the import again.

Or remove the dependency to that component from the source solution.

In our case, it was the Quick View Form referred to in one of the entity’s form but not included in the solution. We added the Quick View Form in our solution and tried the import which worked.

We could have also removed the quick view form from the entity’s form (if the component was not needed) and tried the import.

Hope it helps..

Object reference not set to an instance of an object error while calling an Action in Dynamics 365


Recently in one of our JavaScripts which was calling an action (with a plugin registered to it) was giving us the below error.

We had a plugin registered on the call of that action, which in turn was calling an external service.

We figured out the probable cause of this error (related to certificates) and updated the plugin code accordingly on the server.

Unfortunately, this didn’t fix the issue for us, we also tried different possible solutions but to no avail.

As a last resort, we thought of giving this a try – deactivate and activate the Action, and to our surprise that did the trick.

Our thought is maybe Action was somehow still referring to the old plugin code, and the step of deactivating/activating the Action kind of cleared the cache or something, making action to refer to the latest plugin code deployed.

Hope it helps..

Fixed – Column names in each table must be unique. Column name ‘x’ in table ‘y’ is specified more than once while importing solution in Dynamics 365


Recently while trying to import the solution we got the below error.

Below was the outcome of our analysis

  • The column or the field referred to in the error message was not available in the CRM application i.e. customizations – default solution was not having this attribute.
  • The column was only available in the base table of the entity.
  • The column was not available in the filtered view of that entity.
  • The column was not available in the MetadataSchema.Attribute table.
  • We had around 50 such columns in the base table of the entity.

In short, the field was only available in the base table and wasn’t available anywhere else, which could have been the result of the solution being deleted at some point in time, followed by the wrong restoration of the table (i.e. unsupported change to the database).

We raised the Microsoft Support for the same, and the way we resolved the issue was by dropping/deleting those columns from the base table, followed by running the solution import which went successful this time. (fortunately the fields were all blank – null or default value)

ALTER TABLE “table_name” DROP “column_name”;

We can also get this error if we have a field with same schema name as source field created in the target environment (created manually / directly there). In this case also either we can remove the field from the source environment’s solution file or we can delete the field from the target environment.

Hope it helps..

 

Pause and resume enhancements in SLA in Dynamics 365 – 2020 Release Wave 2


The way we currently configure Pause and Resume for an SLA is by setting the Allow Pause and Resume field to Allow.

And within the Service Tab of System Settings, we can define the status values on which the SLA calculation should get paused at the entity level.

So basically, the SLA will be paused for the case record with status as either On Hold and Waiting for Details as we have defined below.

As soon as we change the status to Researching, the timer resumes

With 2020 Release Wave 2, we can now configure Pause Criteria at the SLA Item level, which overrides the criteria defined at the SLA / Entity level as defined above.

Toggle Override Criteria field

We can define the criteria as shown below using the condition builder.

Here we have defined the condition for SLA to be paused in case of case type Request.

Save and activate the SLA.

Let us now create a new case to see it in action.

We can see the SLA timer running.

Update the case type to Request and save.

As expected, we can see the SLA paused

Check other blog posts on Release 2020 Wave 2

Hope it helps..

Use custom browser protocol to launch desktop applications from Dynamics 365


Recently we had a requirement to launch a .NET desktop application installed in the user’s machine from within Dynamics 365 and also pass parameters to it.

One of the ways of implementing is by using the Custom URL Protocol.

Modern browsers and operating systems allow us to implement a custom URL protocol and register an external application to handle it. So when a user clicks  on the link that uses that custom URL Protocol, the browser will open the application that is registered.

Check a few examples here

https://docs.microsoft.com/en-us/windows/uwp/launch-resume/launch-app-with-uri

So, let us start and register our Custom URL Protocol.

Below is the source code for creating a new key


var applicationPath = @"C:\MyParamApp\MyApp\bin\Debug\MyApp.exe";
var KeyTest = Registry.CurrentUser.OpenSubKey("Software", true).OpenSubKey("Classes", true);
RegistryKey key = KeyTest.CreateSubKey("OpenAppP");
key.SetValue("URL Protocol", "OpenAppP");
key.CreateSubKey(@"shell\open\command").SetValue("", "\"" + applicationPath + "\" \"%1\"");

Here OpenAppP is the protocol name and the application path that holds the path of application that we want to execute.

For key.CreateSubKey we have specified %1 for passing the parameter.

If we do not want to pass the parameter then we do not need to append it.

On running the above code, we can see the key added with the value specified

Below is the source code of our console application, basically it reads and writes the parameter in the output window.

Below is our Html page that we will call from within a button on a form from Dynamics 365 and which will open the MyApp.exe in turn.

Here we have published the page in Azure.

The html page on onload will retrieve the id query parameter and append it to the link for the custom protocol

OpenAppP:id

Back in CRM, we have a custom ribbon button named Open Console App added with the following definition.

Url Command Action and Crm Parameter in it to pass the id.

Clicking on the button

as expected, opens the alert along with opening the console app with the parameter passed to it.

Get more details

https://www.vdoo.com/blog/exploiting-custom-protocol-handlers-in-windows

Hope it helps..