Connect to Dynamics 365 through Script Component – SSIS


For complex data migration requirements, usually we’d be using 3rd party tools like KingswaySoft or Scribe, or Informatica as they already have components (connection, transformation, source, destination etc.) built for Dynamics 365 instead of building our own.

Check other posts on data migration https://nishantrana.me/2020/10/16/ssis-kingswaysoft-and-dynamics-365/

https://nishantrana.me/2020/05/19/data-migration-in-dynamics-365-key-considerations/

For some simple / basic requirements instead of using 3rd party tools, we can write our own packages – script components that consumes Dynamics 365 service.

In this post, we’d see how can we consume Organization Service inside the Script Component.

We are taking a very simple example, where our source is a text file having contact records with just 2 columns’ first name and last name.

Let us create a new package, add a data flow task and drag Flat File Source and Script Component to it.

Specify the connection for the Flat File that points to the Contact.txt file.

Specify 3 Variables that we would be using inside the Script Component.

Double click the Script Component, and select the variables defined

Select the input columns that we are getting from the source text files

Click on Edit Script which opens the Visual Studio

Add references to

  • Microsoft.Xrm.Sdk
  • System.ServiceModel

Also, add the Microsoft.Xrm.Sdk.dll to the GAC.

Specify the connection using the variable as shown below in the PreExecute method

Process each row in the ProcessInputRow method and create the contact record.

Build and close the VSTA (Visuals Studio Tools for Application) project and run the package.

After successful execution, we can see the records created inside Dynamics 365

Hope it helps..

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..