Dynamics CRM - Replacing old CRM 4 API references with regular expressions

When upgrading Dynamics CRM 2011 to the most recent set of updates, it turns out that CRM 4 API stuff was no longer supported, even though the Microsoft code validation tool said that it should all work in IE! >:-[

So I needed to quickly replace loads of old CRM 4 API references, such as

crmForm.all.some_field.DataValue = 1;

with the newer CRM 2011 API, which in this example would look like:

Xrm.Page.getAttribute(“some_field”).setValue(1);

We had thousands of these scattered all throughout about over 50 javascript files from long ago, back when we were running CRM 4, and many of them hadn’t been updated with the new API. This would have been extremely laborious if it were not for a couple of pretty handy regular expressions I came up with (plus a bit of help from my colleague to perfect the first):

Find:

crmForm.(?:all.|\w*?)(\w*).DataValue

And replace with:

Xrm.Page.getAttribute(“$1”).Value

After that, it’s still necessary to replace “Value” with either of the getValue or setValue functions depending on usage, since making a regex that could match all possible usage patterns was way too difficult, and this would have certainly been quicker in the end. It’s pretty simple, but it saved a heck of a lot of fiddly copy/pasting work!