CRM Migration Assistant 1.3.1 Released

We’ve made a couple of changes to the CRM Migration Assistant this week.

You may download the trial version here.

 

Navigation Element Conversion

The conversion of navigation elements ( navActivities, navActivityHistory, etc. ) was initially added to convert code like this:

var myvar = document.all.navOpps.style.display;

 

into this:

var myvar = Xrm.Page.ui.navigation.items.get("navOpps").getVisible();

 

An issue was discovered where we were improperly converting in certain cases. Take this example:

var navContracts = document.all.navContracts;
var navCases = document.all.navService;
var navInvoices = document.all.navInvoices;
if (navCases != null) { navCases.style.display = "none"; }
if (navContracts != null) { navContracts.style.display = "none"; }
if (navInvoices != null) { navInvoices.style.display = "none"; }

will now convert into this:

var navContracts = Xrm.Page.ui.navigation.items.get("navContracts");
var navCases = Xrm.Page.ui.navigation.items.get("navService");
var navInvoices = Xrm.Page.ui.navigation.items.get("navInvoices");
if (navCases != null) { Xrm.Page.ui.navigation.items.get("navCases").setVisible(false); }
if (navContracts != null) { Xrm.Page.ui.navigation.items.get("navContracts").setVisible(false); }
if (navInvoices != null) { Xrm.Page.ui.navigation.items.get("navInvoices").setVisible(false); }

 

The issue revolves around the fact that the developer used the name of the navigation element as the variable name to hold a reference to the DOM element.  In the case above, the code is correct and will function correctly, but a redundancy was created.  And unfortunately, there is no really good way around this – besides not naming your variable names the same as pre-defined DOM objects – because this:

navCases.style.display = "none";

 

Is a perfectly legal JavaScript statement for hiding a form navigation element and the conversion process has no clear way to determine if you are using a variable or an object reference name

 

Navigation Group Identifier Alerts

Occasionally you will find CRM JavaScript where someone is manipulating the group headers of the form navigation area. In CRM 2011, they look like this:

image

CRM 4.0 has similar groupings, but with a different style of triangle. They have IDs like:

  • _NA_SFA ( for Sales )
  • _NA_CS ( for Service )
  • _NA_MA ( for Marketing )

 

A conversion alert is created if any identifier that begins with "_NA_" is found.  While this type of code may still work in CRM 2011, you may wish to seek alternatives.

Leave a Reply