You are currently browsing the tag archive for the ‘CRM 2011’ tag.

While browsing for infrastructure related information, I found this white paper on TechNet. I like how it’s structured together:

Thumbs up to the authors!


After a few long months, my book project is finally coming close to it’s end. After a relatively long break from blogging, I should have more spare time now to get involved in some new projects and community events.

It’s been quite an experience writing a book. I was able to pull my thought together like never before, and also to organize my notes. I loved it.

Anyway, long story short, it’s officially announced, and you can pre-order at the following URL:

Thanks go to the PAKT team for guiding me through the whole process, to the editors and technical reviewers, you know who you are, hopefully one day we’ll meet at a conference somewhere.


Enjoy the read!

I’ve run into this situation recently, and I would think this is a bug.

Let’s say you are a System Customizer, and you have a read-only form and an edit form for an entity, say Account. Now you try to create a Workflow for Accounts, and when you get to add an Update Record step, and click on the Set Properties button, you are presented with the read-only form. Annoying  enough.

The reason for this behavior is because Dynamics CRM remembers the last form type you have used. If the last time you accessed an Account you’ve used the read-only form, you are presented in the Workflow with that same form.

To avoid that, go into an Account, and change the form to the edit form. Save and go back to your Workflow. Now you should be getting the proper edit form.

Hopefully we see a fix for this soon.


Every now and then, if your scripts are performing form changes, and you try to navigate without saving, you will be prompted to save. But what if you want to see exactly what was changed on a large form?

The following function can show you the modified fields:

function checkIsDirty()
    var _mesage = "";
        function(attribute, index)
            if(attribute.getIsDirty() == true)
                message += attribute.getName() + "\n";
    alert("These fields have been modified: \n" + message);

You could put this on a ribbon button, and allow the form user to check at any time what was changed since the last save. Alternatively, you could highlight the fields with a different background color rather than bring up an alert message.


The following form types are available in Dynamics CRM 2011:

Value Form Type
0 Undefined
1 Create
2 Update
3 Read Only
4 Disabled
5 Quick Create (Deprecated)
6 Bulk Edit
11 Read Optimized


To get the Form Type in JScript, use the following syntax:

var _formType = Xrm.Page.ui.getFormType();

I’ve been doing this for so many times, I thought I’d share it with the new CRM customizers out there, as it’s a neat way of getting something done without delving too deep into development and plugins.

This approach uses JScript to capture the Save event on a form, and to divert it on a different course of action.

First off, let’s begin with the basics. A condition on the form will triggers this action. In most cases I want to allows the form save, but in special circumstances I want to block it and perform a different action. We’ll be doing this on the Contact form.

So let’s go ahead and add a Two Options field on the form. I named it “new_isspecialcustomer”.

The following function, associated with the OnSave event, checks for the value on my newly created field, and decides on the action.

function StopSave(context)


var _isSpecialSelection = null;

var _isSpecial = Xrm.Page.getAttribute("new_isspecialcustomer");

if(_isSpecial != null)


_isSpecialSelection = _isSpecial.getValue();


if(_isSpecialSelection == false)


alert("You cannot save your record while the Customer is not a friend!");




Good. I assume you know by now how to create a web resource, add the JScript function to it, etc…

So, the preventDefault() stops the Save. What the user sees is an alert like this:


and the form remains opened and unsaved.

As presented previously in another blog post (this one to be more precise), you can write a function as such to start a workflow:

function launchWorkflow(dialogID, typeName, recordId)
  var serverUri = Mscrm.CrmUri.create(‘/cs/dialog/rundialog.aspx’);

  window.showModalDialog(serverUri + ‘?DialogId=’ + dialogID + ‘&EntityName=’ + typeName +
    ‘&ObjectId=’ + recordId, null, ‘width=615,height=480,resizable=1,status=1,scrollbars=1);

  // Reload form

Now it’s starting to take shape. Now all we have to do is call this function from our previous one. Where you prevent the save, add a call to launchWorkflow. The parameters are as follows:

· GUID of the Workflow or Dialog

· The type name of the entity

· The ID of the record

And voila! Now you hijacked the save, performed your own actions, and didn’t have to fire up Visual Studio to write a plugin.

Just as a note, it’s probably more efficient to do this in a plugin, but I use this approach for a lot of quick demos I put together in a relatively short time. Gives a new meaning to the “Quick and Dirty” phrase.


One interesting case I had just the other day made me look like a fool. Just like in many cases, when you have issues connecting your Outlook to a CRM instance, there are a few basic steps you follow in trying to debug the issue. There is available a troubleshooting wizard at the following URL:

While this is helpful, one other place to go look at is the folder holding the logs on the client machine. these logs are located at various locations, depending on the version of Windows you are running and type of log you are searching. These are:

Configuration log files

Windows Path
XP C:\Document and Settings\user\Local Settings\Application Data\Microsoft\MSCRM\Logs
Vista & 7 C:\Users\user\AppData\Local\Microsoft\MSCRM\Logs

Setup log files

Windows Path
XP C:\Document and Settings\user\Application Data\Microsoft\MSCRM\Logs
Vista & 7 C:\Users\user\AppData\Roaming\Microsoft\MSCRM\Logs


All fine by me, but the situation I had had to do with the fact that the Outlook client was refusing to connect to my CRM instance while using IE it worked just fine. The Sync to Outlook was enable in the security role, and all looked just fine.

Finally, one of my colleagues stumbled upon an interesting piece of information. In the security role the users that could not connect had assigned, on the Business Management tab, under User Settings, we only had Read across the Organization enabled. Changing the Write setting to User allowed now all Outlook clients for the users of this group to connect.



After a successful install of Activity Feeds in an On-Premise, everything seemed to work fine. Except, browsing to the Workplace > What’s New keeps throwing the following error:


After a little bit of digging around, I’ve realized that it expects you to access the CRM instance by the properly configured URL. Hopping across from one network to another I was just using the IP address of the CRM server because I was too lazy to modify the network settings or the host file.

Quickly adding a line in the host file, mapping the IP with the proper target destination made this go away.

Lesson learned: don’t cut corners, the solution might not know how to handle your shortcuts!


The following table gives details on the update rollups available to date for CRM 2011, as well as version numbers. This previous post only links to the rollups up to version 5, so this is meant as an update to that, as well as a reference back to build numbers of each rollup.


Version Build #
RTM 5.0.9688.583
Update Rollup 1 5.0.9688.1045
Update Rollup 2 5.0.9688.1155
Update Rollup 3 5.0.9688.1244
Update Rollup 4 5.0.9688.1450
Update Rollup 5 5.0.9688.1533
Update Rollup 6 * 5.0.9690.1992
Update Rollup 7 5.0.9690.2165
Update Rollup 8 5.0.9690.2243


Note that rollups after UR6 require UR6 to be installed prior.

To determine the current build # of the instances, open the Deployment Manager and look at the organization version. Also, the update column will tell you if there updates available, if automatic updates is enabled on the server (in production scenarios it’s probably not, so don’t count on this value).


So we all know about the standard options for hosting Dynamics CRM 2011: Cloud and On-Premise. Some of us might have also heard of 3rd party hosting, based on the cloud model. But there are also other alternatives.

On-Premise Partner Hosted

Otherwise known as colocation, in this model the environment is hosted by a 3rd party hosting provider. On the partner’s end, it will look very much like an On-Premise deployment, most likely a multi-tenant one. Possible models are determine by individual SLA’s. We could have some choice over items like uptime (choosing one of the available options offered), authentication model used, as well as integrations options. Do not assume that a 3rd party hosting company will not be willing to go over and beyond to offer something you can’t get with the standard Cloud offering from Microsoft. Some of the providers actually offer additional services to differentiate themselves. This could include include anything from integration alternatives, additional customization packages, as well as public portal templates.

One of the more complex scenarios, including redundancy and allowing both internal and external access to the environment (including mobile access) can be described by the following diagram. Note that the SharePoint environment can be located in either the hosting partner’s environment or on site.


A less complex model, non-redundant system, is depicted by the next diagram. Just as before, the SharePoint environment can be located either On-Premise or with the 3rd party hosting provider.


Alternatively, if only internal access is required, the environment can look as follows




Hybrid Hosted Model

Alternatively, with less separation, we can look at a hybrid hosting model. In such scenario, part of the environment is hosted by a 3rd party hosting provider, while still integrating and allowing certain components to function from within the internal network.

While this approach could be more cost-efficient, a good relation with the hosting provider is essential in such scenario. The following diagram depicts a possible scenario with redundancy


or with no redundancy


Any of these models can also be configured with no external access. One simple scenario can be depicted as


I hope this helps some of you looking for alternatives.




The following error is encountered while running reports from the Reports section in CRM


“Error occurred while fetching the list of data extensions installed on the report server.”


This issue is caused by the following configuration: the current CRM instance is not pointing to the correct Reporting Server URL.

In order to correct this, from the CRM server, launch Deployment Manager:


Go to Organizations. Select the Organization that relates to the instance where the issue is encountered.


After selecting the Organization, click on Disable


Confirm selection


Confirm that the Organization has a Status of Disabled

Select the Organization and click on Edit Organization…


Update the SQL Server Reporting Services URL with the correct URL. Click Next


Click Next to validate configuration


Click Apply to confirm changes


Re-enable the Organization by selecting it and clicking on Enable


Confirm selection


Validate the changes by logging in to the CRM instance, and running a report.


As it turns out, database performance issues can easily be created by overdoing the forms. As such, I was just reviewing the SQL Server recommendations, and I found the following interesting fact: with CRM you have roughly 8060 bytes available to store custom fields before theoretically degrading performance.

The following list of data types and size should help in determining if you go over or not. As a note, usually SQL will handle gracefully the overflow.

Data Type Size (bytes)
Lookup 16 bytes
Single Line Text (x length) 2x bytes
Multi Line Text (x length) 2x bytes
Date and Time 8 bytes
Decimal Number 13 bytes
Floating Point Number 8 bytes
Currency 8 bytes
Option Set 4 bytes
Whole Number 4 bytes
Two Options (T/F) 1 byte


As you can see from the table above, the most taxing fields are indeed the Single Line Text and Multi Line Text.

There was an issue with field lengths over 4000 characters sync-ing to Outlook (due to SQL Express limitations, as described in the KB938065), but it’s supposed to be fixed now.


MVP Reconnect

Check out my course [Video]

Dynamics 365 Customer Engagement Administration

Dynamics 365 Customer Engagement Administration

Check out my course [Video]

Configuring and Extending Dynamics 365 Customer Engagement

Configuring and Extending Dynamics 365 Customer Engagement

Check out my course [Video]

Getting Started with Dynamics 365 Customer Engagement

Reviewed Book

Implementing Microsoft Dynamics 365 for Finance and Operations

Implementing Microsoft Dynamics 365 for Finance and Operations

Reviewed Book

Microsoft Dynamics 365 Extensions Cookbook

Microsoft Dynamics 365 Extensions Cookbook

Check out my Book

Microsoft Dynamics CRM 2016 Customization - Second Edition

Microsoft Dynamics CRM 2016 Customization - Second Edition

Check out my Book

Microsoft Dynamics CRM Customization Essentials

Microsoft Dynamics CRM Customization Essentials

Check out my Book

Reviewed Book

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 609 other followers

Follow Dynamics 365 Wizardry on