Gotcha! Does Library name really matter while registering event handler in Dynamics 365

Debajit's Dynamic CRM Blog

Registering an event handler for your form events or field events – Probably the most mundane stuffs that you would perform everyday if you a CRM consultant. But sometimes the simplest things have the greatest mysteries to unfold.

Now here I was in a training session emphasizing the importance of namespaces while you write your JavaScript files. And I was explaining how can putting the same method name in multiple files can actually lead to different event handler being called for your event instead of the desired event handler registered.

And then I get this question – “How is that possible? After all we specify the library name while specifying the event handler. Isn’t it?” Well the participants were pretty experienced in CRM and honestly I was also into split thought after I heard.

image

After all from the basic concept of the Javascript I know, the first function which matches…

View original post 311 more words

Advertisements

Scribe Online – XML to Dynamics 365 CE

Follow the earlier posts to create the Scribe Online trial and steps to create an integration solution.

Below is our sample XML file that holds the contact information that we want to create inside Dynamics 365 CE

For creating XML connection, we need the XSD file.

So let us generate the XSD file using the below tool

https://www.freeformatter.com/xsd-generator.html

The generated XSD –

Now install the XML Connector from the Marketplace.

Then create a new connection specifying the XML File and the XSD File.

Let us create the integration solution, go to Solution and click on create a new integration solution

Create a new integration map for the solution as shown below

Add the XML connection and the CRM Connection to the map and drag the Query block (XML Connection)

For Query Block select the contact entity.

The add the For Each Result block and insert the Create block (CRM) within it

For Create block, the select entity as Contact.

For the Fields tab, map the source fields to the target.

Click on ok to close the map editor and back in Solution, click on RUN to execute the solution.

After successful completion,

The success.xml created in the same folder where we had XML source file.

And also, we can see the records created in CRM.

In the next post, we will see how we can consume hierarchical XML data to create parent-child records in CRM.

Hope it helps..

Scribe Online: Working with Lookup block – Dynamics 365 CE

Let us continue with our previous post in which we created a solution to pull data from SQL On-Premise and create lead records in Dynamics 365.

Let us create a new table which will be our source here.

Table Name – Transaction

2 columns – ID and Brand.

Transaction and Brand have n -1 relationship i.e. Transaction record have a Brand lookup field in it.

The brand value will be used for two things here.

  • We’d set the Brand lookup field based on its text.
  • The brand record has another lookup field for the team, whose value we will pick and set it as owner for the current transaction record.

Login to https://app.scribesoft.com Scribe Online

Create a new solution and add a new integration map to it and add the SQL On-Premise Connection and CRM Connection to it and add the Query Block (SQL), For Each Result, Lookup and Create (CRM) to it as shown below.

Now let us set the properties for each of the blocks.

For Query Block, we have selected Transaction Table as Entity

For Lookup Block,

First, we have selected our custom entity Brand.

We want Brand Id and Fashion Team Brand lookup’s GUID from the Brand entity based on Brand name from our source transaction table.

For lookup criteria of Lookup Block select the Brand value of the Transaction source à

For Field List, we have selected Team GUID field and Brand GUID which will be used for creating the transaction record.

Now for the Create block.

We have selected the custom transaction header entity

For Fields, we have mapped Brand Id lookup field of Transaction Header with Brand GUID retrieved from Lookup.

And Owner Id field with Brand Team’s GUID and for OwnerIdType we have passed “Team” as a string value.

Now on running the integration, we can see 2 rows of the table processed.

Within CRM

We can see the Brand lookup set and also owner set to the team of the particular brand.

To see how to implement the same using KingswaySoft Dynamics 365 Integration Toolkit refer the below post

https://nishantrana.me/2018/05/22/using-lookup-transformation-and-cache-transformation-in-ssis-for-dynamics-365-using-kingswaysoft/

Hope it helps..

Working with OptionSet \ Picklist in Scribe Online

Scribe Online makes it very easy to work with OptionSets while writing Integration and Replication solutions.

While creating the Dynamics 365 CE connection we can check the Include Picklist Display Names checkbox.

Scribe generates a corresponding field schemaname_displayname that holds the label for the corresponding option set.

Within our Query Block inside an integration type solution, we can see the display name fields added for each corresponding option set field.

Go to the Preview tab

Here we can see leadqualitycode_displayname, leadsourcecode_displayname etc. field added.

Within our Filter criteria, we can directly refer the label as shown below.

We can get the label from the Preview tab itself by clicking on the information icon next to the field as shown below instead of opening CRM.

Hope it helps..

Using Scribe Online Replication Services (RS) to replicate Dynamics CE Data

Scribe Online provides Replication Services that makes it extremely easy to replicate the data, schedule it and also includes auto-detection of changes.

Follow previous posts to create a free trial of scribe online and create a connection for SQL Server On-Premise and Dynamics 365.

Here we will be creating a Solution of type Replication.

Login to Scribe Online

https://app.scribesoft.com

In the Dashboard, select create new Replication option for the Solution.

Here for simplicity, we will be replicating Lead data to our SQL On-Premise database.

Specify CRM Connection for Source Connection and SQL On-Premise Database for the Target Connection

In Select Entities dialog box, we will be selecting the Lead entity.

This is how our replication solution looks like

Click on RUN to start the execution

Once it completes successfully, we can see the records processed, the duration it took and records inserted per seconds in the execution history.

Back in our Database, we can see the table created and all the leads record inserted

Here for option set and status fields we can see the _displayname field added that holds the corresponding display name for the option set’s value. This is governed through the connection properties.

Now let us run the solution again immediately.

We’d see no records processed.

Now let us create a new lead inside CRM and run the solution again.

We can see that record processed.

Now let us delete records from CRM and run it again. Here we have deleted 250 records.

We will see the 250 records processed and deleted from our table in the database as well.

Now let us update one of the lead records and run the solution again. On successful completion we can see 1 record updated by the solution.

Thus the replication services makes very efficiently manages the replication of the data considering all the scenario like create, update, delete.

Hope it helps..

Scribe Online – Create Integration Solution from SQL On-Premise to Dynamics 365 CE Online

In the previous posts, we saw how to create a connection for Dynamics 365 and then how to use the connection to create an integration solution for deleting Dynamics 365 records.

In the post, we’d see how we can connect to SQL On-Premise and create records in Dynamics 365 CE

Sign in to Scribe Online

https://app.scribesoft.com/

For connecting to On-Premise SQL Server we would need to first configure the On-Premise Agent.

Go to Dashboard à Add a new Agent

Click on + install On-Premise Agent

Copy the Agent key presented in the next screen this will used while running the setup for the Scribe On-Premise agent.

After successful installation, we can see the agent running within the Dashboard.

From the Marketplace Install the SQL Server connector.

Now let us create a new SQL connection, to connect to our SQL Express database.

Make sure we have selected the On-Premise Agent. Click on TEST to test the connection.

Next, we will create/ use the existing Dynamics 365 CE connection that reads data from the SQL On-Premise database and creates contact records in Dynamics 365 CE.

Go to the Dashboard and click on + to add a new solution in the Solutions section.

Create a new integration map

Add the SQL Connection and CRM Connection created.

We have dragged the Query block from SQL Connection and selected the Contact table as the entity. Next, we add the For Each Result block and added the Create block from CRM Connection and selected the Contact entity for which we want to create records.

Double click on the Create Contact block for mapping.

In the fields tab, drag the fields of the table to the corresponding fields in the Target CRM Connection.

Let us close the map and the solution and click on RUN to run the solution.

We have the following 2 records in our source SQL On-Premise table.

We can see the details in the Execution History on successful completion.

Back in our Dynamics 365 CE, we can see the contact records created.

In the next posts of the series, we’d explore some more features of the Scribe Online.

Hope it helps..

Scribe Online – Creating your first integration solution for Dynamics 365 CE

In the last post, we created the connection for Dynamics 365 CE

https://nishantrana.me/2019/01/08/getting-started-with-scribe-online-connecting-to-dynamics-365-ce/

Here we will create the integration solution that would consume that connection.

We will take the following simple scenario to understand the basics.

“Delete all the leads with Status = Disqualified”

Let us get started à

Login to Scribe Online

https://app.scribesoft.com

Go to Solution Tab and click on + to create a new solution of type Integration

The solution screen provides the option to define the trigger for the Solution, it could be either on demand or can be scheduled to run once or on recurring basis.

The interface for defining the recurrence

For our example, we are keeping it as on demand.

Next, we need to define the MAPS that holds the processing logic of our Solution. Click on the Create Integration Map option to create the map.

Inside the Map designer, click on Add Connection to add the connection that we created earlier to connect to our Dynamics 365 CE.

Here we have added our CRM Connection created earlier.

This adds the block for our CRM Connection for various operations that can be performed.

Here we will first add the Query block to retrieve all the leads in the state disqualified, followed by For Each Result block to loop through all the records and Delete block to delete those records.

Drag the Query Block, double click on it

Select Lead as Entity and click on Filter to define the filter condition i.e. statecode equals “Disqualified'”

Next drag For Each Result block below the Query lead block.

Followed by dragging the Delete block inside the For Each Result and double click it.

Specify lead as the entity and click on Matching Criteria tab

Specify leadid as the field to be used for delete and for Value click on the formula icon

Select the lead as the source and leadid as the field that we would be using from the source Query Block and click on Validate to verify the condition.

Close the Map dialog boxes back in our home pages’ Solutions tab, we will see the status as preparing.

Once prepared we can click on RUN to execute the solution. The execution history will show the details of the run.

After successful completion à

Back in CRM, we can see all the disqualified lead records deleted.

In the next posts, we will try covering other features of the Scribe Online with regards to Dynamics 365 CE

https://nishantrana.me/2019/01/09/scribe-online-create-integration-solution-from-sql-on-premise-to-dynamics-365-ce-online/

Hope it helps..

Getting started with Scribe Online – Connecting to Dynamics 365 CE

In the series of posts – we would see how to quickly get started with Scribe Online and Dynamics 365 integration.

Sign up for the free trial for Scribe Online

https://info.scribesoft.com/trl_scribe-online.html#trial-form

Login with the shared details that we’d receive in our registered email address.

With the Scribe Online Dashboard, Go to the Marketplace and add the Dynamics 365/ CRM connector

With the connector added, now let us create a new connection.

Go to More à Connections

Click on plus sign to add a new connection

Select the connector type as Microsoft Dynamics 365/CRM and add the required details and click on Ok to create the connection.

Deployment – Online, On-Premise, IFD, Azure AD.

For Organization – we need to use the unique name from Customizations à Developer Resources or click on Browse and select the organization.

For Maximum Batch Size and Maximum Batch Threads refer

https://success.scribesoft.com/s/article/Dynamics-365-performance-optimization

Also check the below post for SSIS Integration toolkit of KingswaySoft

https://nishantrana.me/2018/06/04/optimum-batch-size-while-using-ssis-integration-toolkit-for-microsoft-dynamics-365/

https://nishantrana.me/2018/12/19/optimum-batch-size-and-thread-while-deleting-records-using-ssis-integration-toolkit-for-microsoft-dynamics-365/

Click on Test to check the connection, on the successful connection, we get the Connection Test Completed message.

This adds the connection

Here we are done with the connection creation. In the next post, we will see how to create solutions for various data integration scenarios that uses this connection.

Hope it helps..

Dynamics 365 CE Update changed the form’s layout

Yesterday one of our users reported that they are getting JavaScript error and the Marketing List’s form was looking a bit different.

On analysis, we found that the field that was moved to a different tab resulting in JavaScript error and also the Member sub grid (unique to Marketing List) was moved to the bottom of the form in the new tab.

We check the version of the product

So, looks like it was updated that resulted in this issue. And this had affected all our other sandboxes instances. We then manually updated the form in all our instances to fix this. And also it impacted the default OOB form of the Marketing List and the other new custom forms were untouched.

Has anyone else also faced the same recently?

Could not load file or assembly ‘Microsoft.Xrm.Sdk.Deployment, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ or one of its dependencies. The located assembly’s manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

We might get above error while using CRMSdk assemblies inside a console application.

Just make sure there is no mismatch among the assembly’s version being used in the project to fix this issue.