CRM Migration Assistant

[ updated information may be found here ]

If you will be upgrading your Microsoft Dynamics CRM 4.0 system to CRM 2011, and would like to upgrade the JavaScript within your system, a CRM 4 to CRM 2011 JavaScript conversion tool such as the CRM Migration Assistant will be of tremendous assistance.

Why is it needed?

Well, for some organizations, it may not be.  If the JavaScript you wrote for CRM 4.0 was using supported methods, it will continue to function just fine in CRM 2011.

But, if you used unsupported methods, like hiding and showing fields, sections, tabs, navigation elements, etc., you’ll need to manually refactor that code to make it work properly within CRM 2011.

Also, the JavaScript object model for CRM 2011 has been totally restructured to provide a more robust platform for XRM development.  That restructuring required a totally different and separate object model which gives the JavaScript developer additional functionality.  It also adds support for development practices which were widely used in CRM 4.0, but totally unsupported ( as mentioned above ).

What does it do?

The CRM Migration Assistant can connect directly to a CRM 4.0 instance or read from an exported customization file.  It then traverses each Entity it finds, extracts the JavaScript from the OnLoad, OnSave, and OnChange events, then converts the JavaScript to the CRM 2011 object model.

When the conversion is finished, you are presented with an interface that looks much like this:

image

As you can see, you have a side-by-side comparison of your CRM 4.0 code and the converted CRM 2011 code.

Here is what happened during the conversion process:

  • JavaScript was converted from the CRM 4.0 object model to that of CRM 2011.  Basically, we convert crmForm to Xrm.Page and align the various 4.0 properties and method to their 2011 counterparts.
  • Unsupported JavaScript is converted into supported JavaScript where ever it is possible.  Things like:
    • Showing and hiding fields
    • Showing and tabs
    • Showing and hiding navigation elements
    • Setting a field’s required attribute
    • … just to name a few
  • Any code or practice that may cause issues later is noted not only in the conversion report, but also in the code itself.

How does it work?

This is not a search and replace ( or destroy ) scenario.  We created a JavaScript parser and programmatically convert known code and examine defined problem areas in order to generate the cleanest possible conversion.  Is it perfect?  Probably not – since JavaScript can be written in an unlimited number of ways, and you can’t account for all of the scenarios you might find.  But, we come really close and if you run into a conversion issue, we have a feedback form for you to share your problem with us so that we can get it corrected distribute the update to everyone else.

Can you show me an example?

You bet.  Here is a simple function that takes the first name and last name of a Contact and places them into a custom field called new_salutation.

CRM 4.0

BuildEnvelopeSalutation = function()
{
    var firstname = crmForm.all.firstname.DataValue;
    var lastname = crmForm.all.lastname.DataValue;

    var newSalutation = firstname + " " + lastname;

    crmForm.all.new_salutation.DataValue = newSalutation;
}

CRM 2011

BuildEnvelopeSalutation = function()
{
    var firstname = Xrm.Page.getAttribute("firstname").getValue();
    var lastname = Xrm.Page.getAttribute("lastname").getValue();

    var newSalutation = firstname + " " + lastname;

    Xrm.Page.getAttribute("new_salutation").setValue(newSalutation);
}

How about another example?  Maybe something from the not-supported side of the house?  Try this:

CRM 4.0

crmForm.all.totalcampaignactivityactualcost_c.style.display = "";
crmForm.all.totalcampaignactivityactualcost_d.style.display = "";
crmForm.all.budgetedcost_c.style.display = "";
crmForm.all.budgetedcost_d.style.display = "";

CRM 2011

/* CONVERSION ALERT */Xrm.Page.getControl("totalcampaignactivityactualcost_c").setVisible(true);
/* CONVERSION ALERT */Xrm.Page.getControl("totalcampaignactivityactualcost_d").setVisible(true);
/* CONVERSION ALERT */Xrm.Page.getControl("budgetedcost_c").setVisible(true);
/* CONVERSION ALERT */Xrm.Page.getControl("budgetedcost_d").setVisible(true);

As you can see, we’re converting the setting of a style which will show a hidden field in CRM 4.0 to the a fully-support method to set the visibility in CRM 2011.  You’ll also notice the Conversion Alert comments.  Those were inserted because the developer is using partial field names which are not needed in CRM 2011 ( they are also listed on the conversion report, don’t forget ).

Additional Functionality

The end-product of the conversion process is a Visual Studio 2010 solution that contains both the CRM 4.0 JavaScript and the CRM 2011 JavaScript.  You can review the converted code using the Migration Assistant interface or open the project in Visual Studio.

During the conversion process, we also extract relevant information that may help you during the conversion process:

  • List of all attributes found in use during the conversion
  • List of all user-defined functions
  • List of instances where ActiveX controls are used
  • Any conversion issues
  • The location where the object was found
    • Entity
    • Attribute
    • Event
    • Tab
    • Section

Here’s a screen shot of a sample conversion report:

image

Purchase

The CRM Migration Assistant retails for $495.00US for each person needing to perform a conversion.

Note: Typically, that’s just one person per organization since you’re only going to be performing the conversion once.

If you are a CRM consulting company and have multiple consultants, contact me to discuss discounts.

You may purchased the CRM Migration Assistant using the following button:

Add to Cart View Cart

Note: Are you a member of the xRM Virtual user's group or the CRMUG?  If so, please email me and I'll give you the discount code available to members of those groups.

Demonstration Version

Not ready to make the jump into a new product just yet?  Then why don’t you download the demonstration version.

It is fully functional but is limited to converting only the Account and Contact entities.

Once you’ve made up your mind, and made your purchase, the demonstration-version can be converted to a full-version by installing a valid license key.

 

Documentation

You may download the documentation here.

If you have any questions, comments, or issues, please don’t hesitate to contact me:

First Name (required)

Last Name (required)

Your Email (required)

Your question or comment (required)

Comments are closed.