Friday, February 22, 2019

CRM Configuration Migration not migrating all the records in Dynamics 365


Trust me the utility work pretty well.

In case if you are facing any failure while doing migration, then following approach may help you overcome the migration problem.

Here are some tips, which I really found worthy.


  • Migrate ONLY Primary Key and then migrate rest of the data for an entity.
           Refer my blog for detailed explanation http://vjcity.blogspot.com/2019/02/effectively-using-crm.html 
  • Check for possible duplicate detection rules.
  • Do not club all entities and do migrations, instead do migration entity by entity having parent entity migrated first and then its child entity. Example migrate account first and then its contact.
  • Avoid user mapping when doing imports, owner can later be updated via Data import of dynamic CRM.
  • Products, Price-list, Price-list Items, Unit and Unit Group entities can be clubbed together and imported from tools. But there is a catch here and if you face an error something like - "The unit id is missing" Refer here https://vjcity.blogspot.com/2019/01/the-unit-id-is-missing-for-product-in.html

Point to note
  • Some entities which gets locked cannot have some attributes copied. 
An example is Quote entity which have quote ID or Quote number which remains same between various revision made to a particular quote. Now when you try to migrate such quotes you will face a duplicate quote Id already exists kind of error.
For this I have written a custom application to migrate quote and its related quote products.


IF you came across more useful tips related to CRM Configuration Migration, please put up in comments.

Regards,
Vipin Jaiswal

Vipinjaiswal12@gmail.com

Effectively using CRM Configuration Migration for Dynamic 365 CRM


I came to know about CRM Configuration Migration utility by Dynamic 365 CRM. When creating a schema it literary allowed me to select any entity for data migration. I started feeling delighted.

Without wasting a single second, I gave it a try. I tested data migration from one CRM instance to other. The records were failing to get imported. There were n number of reasons for this and step by step I figure out how to correctly use the tool for effective data migration.

Here are some tips, which I found truly effective. You can check my another blogs for tips - https://vjcity.blogspot.com/2019/02/crm-configuration-migration-not.html


Migrate ONLY Primary Key and then migrate rest of the data for an entity.

Let’s say, we want to migrate Account data from one CRM instance to another.
The key is to first select only Primary Key (Accountid) when creating a schema.


Save the Schema and data file as show below.



Now Import the data with only Account Id (Guid), you will notice there is no failure and count of Target and Source gets matched.


Now, the next step is to export schema again for the same entity but with all of its attributes.


Save the Schema and data file as show below.



Now run the import and this time instead of creating fresh record, Utility will noticed Guid already exists and it automatically try to run the UPDATE command. 


This time, I see no error and all my data copied like an exact copy :)

Regards,
Vipin Jaiswal
Vipinjaiswal12@gmail.com

Wednesday, February 20, 2019

Dynamic 365 CRM : The private key does not support the exchange KeySpec.

This error occurs when we provide incompatible certificate to dynamic CRM when installing IFD. This error is reported by Dynamic CRM Server application server. We can find the detail exception in event viewer.



Here, I would be presenting the steps where we can generate a certificate which is compatible for Dynamic 365 CRM from scratch. 

If you already know the process of generating the certificate then you just have to select the correct type of Key Type as depicted in below image.



We need to generate certificate from CRM Application Server.

  • Open Microsoft Management Console (MMC) on CRM Application server. 
  • Click File -> Add/Remove Snap In...
  • Add Certificates (Computer Account)
  • Navigate to Console Root -> Certificates (Local Computer) -> Personal -> Certificates.
  • Create Custom Request


Now follow the wizards as depicted in below screenshots







You can Add following Type Subjects name in Certificates properties based on your organization information
  • Common Name
  • Organization
  • State
  • Street Address
  • Locality
  • Country


Note: You can also provide an alternative name (Domain Name). Choose Type DNS and provide value and click Add button.

After providing all values Subject Tab in certificate properties should look like above image





Save your certificate and proceed further to install it in Dynamic 365 CRM Server. This certificate is used for Non-Commercial & Development purpose.

You can buy the wildcard certificate online from various stores such as - gogetssl.com




Regards,
Vipin Jaiswal
vipinjaiswal12@gmail.com

Saturday, February 16, 2019

TypeError: $v_0.trim is not a function at Mscrm.NotificationList.$9_3


Form Level Notification in Dynamic 365 CRM


Dynamics 365 provides different ways to implement client side notifications. 
Syntax to display form level notifications is

Xrm.Page.ui.setFormNotification(message, type, unique_id);

NOTE: All three parameter are of string data type.
           We get an error, when we provide unique_id as an integer.


Example - Jscript Code

function vj_show_Form_Notification()
{
Xrm.Page.ui.setFormNotification("ERROR message at Form Level", "ERROR", "1001");
Xrm.Page.ui.setFormNotification("WARNING message at Form Level", "WARNING", "1002");
Xrm.Page.ui.setFormNotification("INFO message at Form Level", "INFO", "1003");
} 


function vj_hide_Form_Notification()
{
Xrm.Page.ui.clearFormNotification("1001");
Xrm.Page.ui.clearFormNotification("1002");
Xrm.Page.ui.clearFormNotification("1003");
}




Here is Syntax for Field Level Notifications

Xrm.Page.getControl("fieldname").setNotification("message");
Xrm.Page.getControl("fieldname").clearNotification();


Regards,
Vipin Jaiswal
vipinjaiswal12@gmail.com