Archive for July 2012

CRM Tool of the Week – CRM Option Set Utility and Community Library

Last month the Solution Extender from TanGuy was featured. It looks like TanGuy has been busy making CRM tools and has released another great tool. This time he has released a tool for creating Option Sets in CRM 2011.

Improvements in CRM 2011

One of the most time consuming CRM configuration tasks in CRM 4.0 was to setup a Picklist. The process was slow and if you had a picklist you used through out your CRM, you would have to keep creating the same list over and over again.

With CRM 2011 the process for creating picklists was streamlined. They made it much quicker to add an item to a picklist and you can now create option sets that can be used globably for multiple picklists.

While the time it takes to setup a large picklist in CRM was greatly reduced in CRM 2011 over the pain staking process in CRM 4.0, it still can take a long time. The CRM Option Set Utility lets you easily and quickly create option sets.

CRM Option Set Utility

The CRM Option Set Utility is an easy to use utility that will let you create or edit an existing picklist more effeciently. This tool lets you load an optionset from directly from a csv file.

Download the CRM Option Set Utility

You can download the CRM Option Set Utility from

The Community Library

My favorite thing about this tool is that it also has a Community Library for shared option sets. You can share option sets you have created or you can download optionsets others have made available through the Community Library site.

The CRM MVP’s have already started to contribute some great optionsets and hopefully there will be more added by the community. Some of the Option Sets that are already available are:

  • US State Option Sets from Donna Edwards
  • University and Colleges from Jerry Weinstock
  • ISO Countries from Neil Benson

There is even a list from Jerry Weinstock of the Contries Competing in the 2012 Olympics.

To view and download Option Sets you can visit the Comminity Library. If you would like to contribute an option set of your own there is a form at the top of the page for submitting an option set to the library.


Q2 Service Update (R8) Delayed

If you aren’t ready for the new features in R8 you are in luck. Microsoft has recently announced that they will be pushing many of the features for the Q2 Service update to Q4. So you will not be seeing Cross Browser support for a couple more months.

As a best practice CRM Developers should still be keeping cross browser support in mind when creating any new form scripts.

For many CRM developers this is a relief, as it buys them some more time to get ready. But if you have been working hard to get all of your form scripts ready it has not been in vain. Those who have started updating their JavaScript libraries certainly will be ahead of the game.

For more on the changes to the Q2 release please see the notes from the CRM Field Technicians Blog Post.

What is CRM 2011 R8?

The CRM 2011 Q2 Service Update known as R8 has been getting a lot of attention recently and for good reason. R8 has many exciting new features and enhancements to CRM 2011 including:

New Mobile Client

Microsoft will be offering a new Mobile Client from CRMMobility for CRM Online Customers. Unlike the old CRM Mobile which was very limited, Mobility is a truely feature rich client for mobile devices. The Mobility client brings a first class experience to your Phone or Tablet. The new client offers tight integrations with the iPad, iPhone, Blackberry, Android, and Windows Phones.

Cross Browser Support

The MSCRM web client will no longer be locked into just Internet Explorer. In addition to IE on Windows Machines you will be able to access CRM from the following web browsers and Operating Systems.

  Internet Explorer Firefox Google Chrome Safari
Windows Version 7+ Version 6+ Version 13+ Not Supported
Mac OS-X Not Supported Version 6+ Not Supported Version 5.1.1+
iPad 2 (iOS 5.x) Not Supported Not Supported Not Supported Version 5.1.1+


Activity Feed Enhancements

A number of enhancements have been made to the Activity Feeds to make them more engaging and foster a Social CRM experience.

You will now be able to “Like” and “Unlike” Activity Feed posts.

There are also a number of new filtering options, such as filtering by Record Type and based off of Data Views. A timeline wall can be used to view all posts that mention a user by using the @me filter. 

Industry Specific Solutions

Microsoft will also be releasing a number of solutions for specific industries including:

  • Life Annuity Insurance Sales
  • Non-Profit
  • Health Plan Sales
  • Wealth Management

These templates will give users an out of the box CRM tailored for their unique industry.

Support for SQL 2012

R8 will allow On Premise customers to harness the many performance improvements from SQL Server 2012. Girish Raja has a great post on the benefits of using CRM 2011 with SQL Server 2012.

There are very exciting Business Intelligence (BI) features in SQL Server 2012 like Power Pivot and Power Views. I’ve been looking forward to these new report visualizations since I first saw Hans Rosling’s Ted.

For more details on the features of R8 check out the R8 Release Preview Guide.

CRM Tool of the Week – CrmFetchKit.js

Last weeks Tool was the Custom Code Validation Tool which helps you identify unsupported code in your form scripts.  Keeping with the theme of preparing for Q2 2012 service update for Microsoft Dynamics CRM 2011 (R8) and cross browser support this weeks Tool of the Week is the CrmFetchKit.js . This JavaScript library will help you fix some of your unsupported code you may have found.

FetchXML and Cross Browser Support

One of the many differences between the different browsers is how they handle parsing through xml nodes or xml-traversing. A method that was used in some old form scripts for fetching data from CRM was the selectSingleNode. However, selectSingleNode is only supported in IE.

There is a good chance that any of your old FetchXML form scripts are not cross-browser compatible. If so you will want to update these scripts to use a javascript library like JQuery, which has great cross-browser support, to handle the XML traversing. That’s where the CRMFetchKit.js comes in.

The CRMFetchKit.js is built on top of JQuery and lets you easily get the results from a FetchXML query in your form scripts.


The following shows a Basic Fetch using the CrmFetchkit.js

var fetchxml = ['<fetch version="1.0" output-format="xml-platform" mapping="logical">',
                ' <entity name="account">',
                ' <attribute name="name" />',
                ' <attribute name="accountid" />',
                ' <filter type="and">',
                ' <condition attribute="name" operator="eq" value="test" />',
                ' </filter>',
                ' </entity>',

// Action: load the account with a certain name
CrmFetchKit.Fetch(fetchxml).then(function (results) {
    /* success handler */

}, onFetchError);



The Fetch More method can be used for retrieving datasets. It includes a flag for more records.

The following shows a FetchMore using the CrmFetchkit.js. If there are more than 10 contacts with a last name like test% than response.moreRecords will be true.

var fetchxml = ['<fetch version="1.0" output-format="xml-platform" ',
                        'mapping="logical" ',
                        'returntotalrecordcount="true" ',
                ' <entity name="contact">',
                ' <attribute name="lastname" />',
                ' <attribute name="contactid" />',
                ' <filter type="and">',
                ' <condition attribute="lastname" operator="like" value="test%" />',
                ' </filter>',
                ' </entity>',

CrmFetchKit.FetchMore(fetchxml).then(function (response) {

    // get the logic-entity name
    var entityname = response.entityName;

    // the requires 'returntotalrecordcount="true" ' to be defined in the fetchxml
    var total = response.moreRecords;

    // get the entities as array
    var set = response.entities;

    // the page-cookie is required for paging
    var pageCookie = response.pagingCookie;

}, onFetchError);


The FetchAll method can be used for retrieving results from large datasets that exceed 5,000 records.

The following shows Fetch All using the CrmFetchkit.js

var fetchxml = ['<fetch version="1.0" output-format="xml-platform" ',
                        'mapping="logical" ',
                ' <entity name="contact">',
                ' <attribute name="lastname" />',
                ' <attribute name="contactid" />',
                ' <filter type="and">',
                ' <condition attribute="lastname" operator="like" value="test%" />',
                ' </filter>',
                ' </entity>',

CrmFetchKit.FetchAll(fetchxml).then(function (entities) {

    /* success-handler */

}, onFetchError);

What Else Can it Do?

In addition to Fetching results the CrmFetchKit.js can also assign records!

CrmFetchKit.Assign(recordid, 'entity', userid)


You can download the CrmFetchKit.js from CodePlex


To use the CrmFetchKit.js you will need to create a new web resource and upload the CrmFetchKit.js file to it. You will also need to Download JQuery and create a web resource for JQuery. Make sure that you add both of these web resources to any forms you will be setting up FetchXML form scripts on.

You can then create form scripts based off of the sample code to Fetch data from CRM.

The following shows a basic fetch using the CrmFetchkit.js