Tag Archives: 2011

Upgrading Microsoft CRM 3.0 to CRM 2011

I am currently working on a CRM 3.0 to CRM 2011 upgrade.  Here are some thoughts on the process that have surfaced as we enter the planning phase…

  • An upgrade to CRM 2011 requires, in addition to the CRM software upgrade, a platform upgrade.  You should expect to be procuring new hardware to run the 64 bit Windows and SQL 2008 platforms.
  • The upgrade process requires you to upgrade ‘through’ CRM 4.0.  You don’t have to use CRM 4.0 but you will need to run the CRM 3.0 to CRM 4.0 upgrade and then upgrade to CRM 2011.
  • You will need to install CRM 4.0 over your CRM 3.0 instance to upgrade it, that is the only upgrade approach available between those versions.  If ‘losing’ your 3.0 environments is unacceptable then you will need additional environments.
  • Your upgrade platform needs to support both 3.0 and 4.0.  Windows 2003 SP2 and SQL 2005 SP3 is the level you need to be at.
  • CRM 2011 will be installed fresh on the new hardware platform.  The CRM database, once upgrade to 4.0, can be imported into the CRM 2011 instance to upgrade it to 2011.
  • Because of the ‘in-place upgrade’ approach required to upgrade from 3.0 to 4.0 it is worth considering whether you can image or snapshot the server prior to the upgrade so that the process is more easily repeatable.
  • You must utilise at least 1 (preferably 2 or more) non-production environments to work through the upgrade process.
  • You are upgrading both the data and the customisations to the system.  The upgrade ‘wizard’ provided by Microsoft takes care of the data but the customisations require refactoring and a bunch of testing.
  • Once you have completed the upgrade process a couple of times you should be confident with the process for upgrading the data.  You can now focus on the customisations.
  • Customisation changes back in the production 3.0 system must be put on strict hold for the duration of the project.  You don’t want to be upgrading in parallel with on going production changes.  And once you start doing an in-place upgrade in your dev and test environments you lose access to those environments for testing on going production changes.
  • Customisations should be re-factored and re-tested in your dev/test/uat environments.

The CRM 2011 production environment can be built in advance.  Once your refactored customisations are production ready and you are confident in the upgrade process you can execute the production deployment process:

      • Refresh the production database to a test environment (you will need a clean CRM 3.0 environment ready for this)
      • Run the in-place upgrade over that database on the test environment (we are deliberately avoiding changes to the production server so we can roll back to it if things go pear shaped)
      • Take the upgraded 4.0 version of your production database and import it into the new CRM 2011 production platform.
      • Deploy your re-factored customisations
      • Test
      • Resume production access

      Note: I’m avoiding steps here regarding the Outlook Client and Email Router etc. as they are not relevant on my project.

    That’s my plan at this stage.  I will come back and edit this blog as the project progresses.  If you have any experiences to share please post comments.

How to view Ribbon Definitions in CRM 2011

Previously the SDK contained ribbon definition XML files in a folder at the following location:


The latest SDK seems to no longer include these files.  So, now you need to generate these yourself using the utility provided.  It’s not hard to do, here’s the steps:

Go to this location:


Double-click the solution file (exportribbonxml.sln) to open this solution in Visual Studio.

Right-click on the Solution in Visual Studio and select Build:


Wait for that process to complete and make sure Visual Studio doesn’t report any errors.  If that all went ok you will now have an exe you can run, at the following location:


Double click on the exe (ExportRibbonXml.exe) and then provide the details asked of you:


And that should generate the ribbon definition files that you need:


Activity Feeds in Microsoft CRM 2011

My first impression of Activity Feeds was “why is my Wall full of events that I triggered – i.e. things that I already know about – what’s the point of that?”  And the post content didn’t read very well either.  Together this equated to lots of noise that deterred me from wanting to look at the wall.  Damn, I was hoping this would be a nice feature!

Since that first impression I’ve spent a bit more time with the feature and thanks to helpful posts like Richard’s one here I have a better understanding of how we can make it work for us.  I’ve ended up reaching the same conclusion as Richard: 

Activity Feeds can be of value, so long as you create your own posting rules via workflow and turn off the ones that are included out-of-the-box


Let me take you through it…

I created the following workflow to post to the Account wall every time a new Opportunity is created under the Account:



I then logged in as Gareth Tucker, went to the Account “Recreation Supplies (sample)” and clicked the Follow button on the Account’s Record Wall:


I then logged in as Rambo George and created an Opportunity under that Account:


I wait a few minutes for the workflow to run and then check the Account’s Record Wall and can see the Post:


Note: the post reads a lot better than those created by the out of the box rules supplied by Microsoft

Now, when I check Rambo George’s “What’s New” Wall I don’t see any Post:


This is correct, Rambo is not following the Account.  And this is GOOD Rambo does not need to be notified of something he has just done.

Now, I log back in as Gareth Tucker and remember Gareth is following this Account so he wants to know about this Opportunity.  The post appears there on Gareth’s “What’s New” wall:


So that’s activity feeds, a potentially useful self service feature for subscribing to CRM event notifications.

The one limitation I am still uncomfortable with though is the business benefit of Activity Feeds is reliant on end user’s choosing to view their wall.  Some people prefer email.  It’s a shame that when you follow you can’t chose to receive an email notification.  I think there’s an ISV opportunity here to develop maybe an email digest solution so that each day users receive an email from CRM with a consolidated post list.  Another nice solution would be to incorporate the Wall on a Dashboard to combine the news feed with rich data visualisations.  Then I think you have a compelling home page for end users too land on when they launch CRM.

Update 1: check out this post to see how you can easily embed the Activity Feed wall on a Dashboard.


Update 2: here’s an improved approach for writing your workflows that will add hyperlinks into your posts…

Instead of inserting primary attribute fields like Opportunity.Topic insert the new special Post URL(Dynamic) fields now available since Rollup 5.   These will give you the same text value but displayed as a hyperlink. 

Here’s how it looks in the Workflow designer:


And here’s how the resulting post looks:


Installing a 2-server CRM 2011 with Service Accounts and Minimum Permissions

Recently for a proof of concept I needed to supply a CRM installation installed to Microsoft’s best practices – i.e. a 2 server environment, SSL (HTTPS) and each service running under a separate service account.   Here are some notes on what was required to make this work.

If you miss some of these steps the common symptoms are:

  • Can only access CRM directly on the CRM server
  • CRM Reports don’t work
  • Outlook Client does not Configure
  • Authentication prompts appear as you try and access CRM

Environment: VirtualBox

  • Machine 1 = Domain Controller and SQL Server,
  • Machine 2 = CRM Server


  1. Install Windows Server 2008 R2 64-bit on both Machines, create C and D drive partitions (install all application software on the D drive)
  2. Promote Machine 1 to be a Domain Controller
  3. Create service accounts for SQL Server and SSRS
  4. Install SQL and SSRS on Machine 1
  5. Add Machine 2 to the domain
  6. Create an installer account:  crmadmin
  7. Create service accounts:  crmservice, crmdeploy, crmemail, crmasync, crmsandbox
  8. Grant minimum permissions per the CRM Implementation Guide’s instructions
  9. Logon as the installer account and install CRM Server on Machine 2
  10.   Test CRM access over HTTP via Internet Explorer on Machine 2
  11.   Install CRM SSRS Data Connector on Machine 1
  12.   Install latest rollup packs for CRM Server and SSRS Data Connector
  13.   Create a self signed certificate on Machine 2 (in IIS)
  14.   Go into CRM Deployment Manager, go to Servers, disable the CRM Server
  15.   Go to IIS and edit the Bindings for the CRM Web Site, enable HTTPS, disable HTTP
  16.   Back in CRM Deployment Manager, right-click on “Microsoft Dynamics CRM” and select Properties, then on the Web Address tab select HTTPS and enter the URLs
  17.   Re-enable the CRM server in Deployment Manager
  18.   Test CRM access over HTTPS via Internet Explorer on Machine 2
  19.   Create an SPN for the CRM service account (the identity running the CRM app pool)     (e.g. setspn –A HTTP/VBOXCRM gtdomain\crmservice) (command should always be HTTP even when HTTPS is enabled)
  20.   In Active Directory Users & Computer grant the Trust for Delegation permission to the CRM service account and the CRM server Computer Name (you need to do a Run As Administrator in order for the Delegation tab to appear when editing the properties of the Computer account)
  21.   Shutdown Machine 2, reboot Machine 1, restart Machine 2
  22.   Test CRM access over HTTPS via Internet Explorer on Machines 1 and 2
  23.   Test CRM Reports on Machines 1 and 2
  24.   Test the CRM Async Service by creating and triggering a simple workflow
  25.   Test the Deployment Service by creating a second CRM Organisation
  26.   Install the CRM Email Router and its Rollup Pack, configure and test
  27.   Machine 1, install Outlook, configure an email profile (perhaps connect to a Hotmail account) and then install the CRM Outlook Client and its Rollup Pack, configure and test

Done Smile


UPDATE 1: The configuration of the Outlook Client in the above HTTPS environment failed for us (“Could not establish trust relationship for the SSL/TLS secure channel“)  we think due to the use of the Self Signed Certificate.  Installing an Enterprise Certificate Authority and creating both a Root Certificate and a Certificate for the CRM Web site along with an additional SPN solved that problem for us (setspn –A HOST/VBOXCRM gtdomain\crmservice)

UPDATE 2: If you are not able to run Fetch XML reports or Report Wizard reports (which are Fetch XML reports) then you are likely suffering a firewall issue as described here.  Thanks to my colleague Farooq for finding this post and thanks Jim for writing it!

CRM 2011 Duplicate Checking Enhancements in Rollup 5

Microsoft CRM’s duplicate checking feature has always had a ‘quirk’ that bugged me.  Good news though, rollup 5 introduces a solution.   I’m not seeing this enhancement getting much mention so thought I would explain the enhancement and why you need to make use of it.

I talk about the limitation in this older post.  In a nutshell pre-rollup 5 any duplicate detection rules you defined would match blank fields to blank fields.  For example if you defined a rule that matched on first name + email address and you had a record with a first name of “Adrian” that had a blank email address then any future “Adrian” records who also had a blank email address would be considered a potential duplicate:

Existing record:


New record being entered:


Potential duplicate detected:


What Rollup 5 gives us is nice little check box that addresses this issue:


If you’re making use of CRM’s duplicate detection features you will definitely want to revisit your rules and consider checking this option.   Do remember as you test this that anytime you re-publish your rules CRM has to rebuild its match codes, so the change is not immediate.  There is a system job you can see attached to the Duplicate rule, that might be the one to monitor.

Now, if Microsoft would just tidy up the Duplicate Detection window and make that a bit more user friendly (or give us the ability to customise it) we would have a really nice solution.


VirtualBox Network Configuration for Microsoft CRM 2011

I tend to live inside VirtualBox VM’s whenever I’m working on CRM presales or projects.  For the most part I work inside a single box solution where I have 1 VM running as Domain Controller, SQL Server and CRM Server.  I also tend to have the CRM Outlook Client installed, hooked up to a Hotmail account.  My host machine has 8GB RAM and 4 cores, I allocate the VM 4.3GB and 2 cores.  This generally works well. 

Every now again though I want to add a second VM to this environment, either to isolate a CRM Server component like the Asynchronous Service or to add a Windows client machine to the environment.  

Now things get tricky as we have to start understanding VirtualBox networking.   Well that doesn’t appeal to me, so instead here’s a cheat sheet you can follow to network your 2 VMs together and retain internet connectivity. 

Thanks to my Avanade colleague Safiulla MohamedAli for helping me out with this…

On your CRM server you need to have 2 network adaptors defined.   Adaptor 1 should be defined as per below:


(this gives us internet connectivity by piggy backing off of the host machine)

And Adaptor 2 should look like this:


(this adaptor connects the VM to an internal network called “intnet”)

If you already have 2 adaptors defined you can edit these whilst the VM is running via the Devices menu option.  Otherwise you will need to shutdown your VM and then set from the Oracle VM VirtualBox Manager:


Inside the VM we need to do a couple of things. 

  1. Open the Network and Sharing Centre
  2. Click change adaptor settings
  3. Right-click on the second adaptor and select Properties
  4. Set the IP addresses as per below:


What we are doing here is assigning the CRM Server a fixed IP address and telling it to use the locally installed DNS server.

Ok, good, we’re done with the CRM Server. 

Switch over to your second machine.  In my case, my second machine is a Windows XP SP3 VM (assigned 1GB RAM and 1 core).

Here again we need to have 2 adaptors.  The first should look like this:


(this gives us internet connectivity by piggy backing off of the host machine)

And the second adaptor should look like this:


(here we are connecting this VM to our “intnet” internal network, where the CRM Server is also connected).

Again, we need to go and tweak the adaptors…

  1. Open the Network and Sharing Centre
  2. Click change adaptor settings
  3. Right-click on the second adaptor and select Properties
  4. Set the IP addresses as per below:


What we are doing here is giving this machine a fixed IP address and then telling it to refer to the CRM Server for it’s default gateway and DNS server.

And we’re done.  We should now have both VMs sitting on the same network and both enabled for internet access.

There may well be other ways to do this and this might not be the best way.  But it works for me!  Hope this helps someone.


Working with Display Rules in CRM 2011–Ribbon Customisation

In this post I provide a quick guide on how to apply Display Rules to your custom ribbon buttons in Microsoft CRM 2011.

Firstly, here’s a quick run through on how to apply a Display Rule.

I have added a custom button to the Campaign form’s ribbon, as per below:


To add a display rule to limit when the button should appear I need to do 2 things:

1. Define the Display Rule

2. Assign the Display Rule to the button

To define the Display Rule we need to add the following to our customization.xml file:


This can be read as: 

“I want to define a new display rule called "GT.campaign.Form.Star.FormStateNotCreate.DisplayRule".  The rule is the button should only show if the form is not the Create form”.

And then to assign this rule to our button we simply reference the above ID in the Command Definition of our button:


Here’s a few more common Display Rule examples:

Display only on Create form:

            <DisplayRule Id="GT.campaign.Form.Star.FormStateCreate.DisplayRule">
              <FormStateRule State="Create" />

Display only on Update or Create form:

            <DisplayRule Id="GT.campaign.Form.Star.FormStateCreateOrUpdate.DisplayRule">
                  <FormStateRule State="Existing"/>
                  <FormStateRule State="Create"/>

Do NOT display when Offline:

            <DisplayRule Id="GT.campaign.Form.Star.IsOffLine.DisplayRule">
               State="Online"  />