Related sites:

Newsletter: Perspectives on Power Platform

Company: Niiranen Advisory Oy

Dynamics CRM 2011 on Windows Server 2012

In addition to the shared development and test CRM servers at the office, I like to run my own personal CRM sandbox that allows me to test any applications, configurations and updates without having to worry about affecting any of my colleagues’ work. I’ve been running a VirtualBox server image on my desktop PC and standard hard drives, but even in a single user test environment, you can never have too much performance for your own needs.

SanDisk_ExtremeAfter reading this blog post from Jeff Atwood, I couldn’t help but to shop around for an “SSD in your pocket”, meaning a super fast USB flash drive that would have sufficient storage space for hosting a CRM 2011 development server image. I decided to grab the SanDisk SDCZ80-064G-X46 64GB Extreme USB 3.0 Flash Drive from Amazon.co.uk for €60 and test it out as a portable CRM sandbox. 190 MB/s read and 170 MB/s write should provide a nice performance boost compared to my old spinning HDD’s.

Since shrinking my existing VirtualBox image down to the 60Gb available on the flash drive would have meant giving up on a lot of things I had installed there, I decided this was a good moment for building a brand new virtual server. During the fall I had already attempted a few times to deploy CRM 2011 on Windows Server 2012, even though it has been unsupported. Unfortunately none of the workarounds published by Daniel Cai had done the trick for me, so I decided to wait for the official support.

With Update Rollup 13 Microsoft Dynamics CRM 2011 Server finally became officially supported to be run on Windows Server 2012. However, there was one catch: you could only upgrade an existing Windows Server 2008 deployment with CRM 2011 onto Windows Server 2012. For a brand new deployment there was a disclaimer included with UR13 release notes:

The Self-Healing Setup (SHS) that is required to install Update Rollup 13 for Microsoft Dynamics CRM 2011 on Windows Server 2012 will be published on Microsoft Update alongside the update rollup in mid-to-late April, 2013.

Ok, it’s 1st of May now, so where are these SHS files? Well, they are available, but not quite in the kind of format you would expect. You can’t simply download an updated version of the Dynamics CRM Server installer, as the one available on Microsoft Download is still the old version with Update Rollup 6 that was released in January 2012.

There’s a thread over at Dynamics Community CRM Forum that discusses the Windows Server 2012 installation procedure, but I’ll summarize how I managed to get CRM installed on such an environment. There were a few puzzling gotchas that no one else should spend their time on pondering.

Get the update files

The KB article 2434455, “How to obtain the setup updates for Microsoft Dynamics CRM 2011”, gives you the steps you need to follow. Instead of heading to Microsoft Download, you’ll need to visit the Microsoft Update catalog website (which only supports IE, by the way, so don’t click the link on Chrome or anything). From there you’ll be able to obtain a file called Setup Update for Microsoft Dynamics CRM Server 2011. The fun part about this is that the size of the file is 1.5 GB.

Setup_update_for_CRM_2011_server

Why is the file so huge, with the actual CRM 2011 Server installer being only 120 MB? The reason is that this file contains all 25 language versions for the update file. If you’re installing the English version, you’ll only need the en-server_kb2434455_amd64_1033 cab file. Oh well, the Internet is fast nowadays and hard drives are infinite, so let’s get on with it.

Prepare for installation

The cab file won’t be the installer itself, rather it’s a collection of updates that needs to be references while running the actual server installer. How do you do that then? By creating a config.xml file following the example given in the KB article above and dropping it into the same folder as installer and the cab file.

Then we can proceed with starting the installation. Only there’s one more catch which isn’t included in the KB article: you’ll need to start the installation process from the command line in order to be able to tell that there’s a config file pointing to a cab file that contains the updates necessary for CRM 2011 to run on Windows Server 2012. You can read through the TechNet article “Use the Command Prompt to Install Microsoft Dynamics CRM 2011” if you’re interested in the finer details of parameterizing your CRM server deployments, but if you’re like me, you’ll just want to copy-paste the required bits onto the prompt to move on with the process.

  1. Put the cab and config.xml in C:\Temp
  2. Download the UR6 version of CRM 2011 Server installer and put the CRM2011-Server-ENU-amd64.exe file in the same folder
  3. Run the file, point it to extract the files onto the very same C:\Temp directory
  4. Cancel any further setup screens that may be launched, as you’ll still need to provide the pointer to the cab file
  5. Open the command prompt, go to C:\Temp directory and type: setupserver.exe /config C:\Temp\config.xml

This process will make the installer skip the question of “do you want to download updates from Microsoft Update” and use the SHS cab file directly. This is the whole point of our exercise, as Microsoft Update for one reason or another cannot provide the necessary updates for Windows Server 2012 compatibility for the CRM 2011 Server installer.

After this part, you can follow the standard steps for installing CRM. You may get an error screen saying “Action Microsoft.Crm.Setup.Common.InstallWindowsSearchAction failed. Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))”, but just click Ignore on it as that issue is most likely just about the indexing service for the CRM help files.

Validate and update once more

Once you’re done and have rebooted the server, you’ll be able to launch CRM. From those oldskool icons in the Wunderbar area you’ll quickly notice that this deployment is still running a pre-cross-browser era version of Dynamics CRM. The build numbers 5.0.9690.2015 and 5.0.9690.1992 indicate that it is in fact a UR6 organization still. (Hmm, was there ever any need for UR13 to support installation on Windows Server 2012 then?) Before you start working on your environment, download and install Update Rollup 13 to make CRM support the IE10 running on your Windows Server 2012, unless you enjoy using the IE7 Compatibility View.

Windows_Server_2012_CRM_2011_small

There we have it. A nice and fast CRM 2011 sandbox image running Windows Server 2012 and SQL Server 2012 in a 36 GB image stored on a very fast thumb drive. I’m sure I’ll be struggling with keeping the image small enough with all the updates, service packs, Office, Visual Studio and other bloat that’s bound to end up there. On the plus side I’ll be able to carry the sandbox on my keychain and plug it into any PC with sufficient memory to run the environment (3.5 GB & 2 CPU reserved for it currently) and enjoy SSD level disk I/O performance. We’ll see if it was worth all the trouble at the end, but hey – don’t we all just enjoy fiddling with the latest software and fastest hardware?

Edit 2013-05-04: For anyone looking to move completely towards developing for Dynamics CRM on top of Windows Server 2012, please note that the Dynamics CRM Outlook client does not support Windows Server 2012 yet. If you try to run the setup, all you will get is the following message: “Cannot install Microsoft Dynamics CRM for Outlook. Install Windows Server 2008 Service Pack 2, and then try again.”

Edit 2013-05-04, Part 2: If you’re interested in the detailed steps for building a Dynamics CRM sandbox, please refer to articles like Creating a MS CRM 2011 VM by Mark Kovalcson or Setting up a CRM demo environment in Windows Azure Virtual Machines by Shan McArthur (unfortunately the images on this post no longer work). It doesn’t really matter on which virtualization platform you’re building your sandbox on. I’m using VirtualBox simply because I have other existing virtual machines on it, but with Windows 8 built-in Hyper-V support you don’t necessarily need any additional software. Also, as you can see from Shan’s post, running these environments in Azure is also a perfectly viable option.

21 Comments

  1. Hi Jukka. Good read as always. Please keep us updated on the performance of this solution.

    • Thanks, Anders. So far the performance of running the virtual server from the USB3 flash drive feels much better than keeping the image on my HDD.

  2. Hi Jukka.

    Nice article, thanks for sharing.
    May I ask you if you have installed domain controller role ?

    thanks

    • Andrea, this sandbox server image contains everything that CRM needs to run, so it’s got a domain controller, IIS web server and SQL Server 2012 all on the same server. I haven’t ever run into any issues with the DC being a local one, but as mentioned, I only use these sandboxes for personal test cases.

  3. Thanks Jukka for wrap up! I might not hit my head to wall with same issues with Windows Server 2012 installation. But still wonder why this is done so hard way altough Windows Server 2012 is now supported.

  4. Hi Jukka,
    Thanks for the article. We use CRM system but it’s in the cloud and we’ve deployed CRM outlook client on some of the users PC and WSUS server has detected 3 updates for the client PC ( No onsite CRM server).
    Setup update for Microsoft Dynamics CRM 2011 E-mail Router
    Setup update for Microsoft Dynamics CRM Server 2011
    Setup update for Microsoft Dynamics CRM 2011 Reporting Extensions.

    My question is:
    Why the client PCs need server updates?
    Do I need these updates?

    I’ll be grateful for your help. All the articles which I’ve looked are irrelevant they only cover server side but not the client side.

    Many thanks,

    • Niall, I can’t think of a reason why these three updates would be relevant for the client machine. The only scenario might for the email router if this was a service you were running on one of the client PC’s (as CRM Online doesn’t offer that service in the cloud), but if that is not the case, then I would simply blame it on a WSUS glitch. Installing the Update Rollups for the Outlook client (and possible language pack updates if in use) should be all you need for your user’s PCs.

  5. Hi Jukka, thanks for your comment. I also thought that it’s irrelevant in our environment….

  6. Hi Jukka,

    I have been trying to solve this from many day and following various blog. I tried your method. I am retured with this error.
    Could you please help on this.

    12:24:05| Info| File = Scripts\NotificationIndex.sql, Message = Update Notification table with CreatedOn index, Target = All
    12:24:05| Info| Installing Sql Jobs …
    12:24:05| Info| Name = .SiteWideCleanup, Description = Add site-wide cleanup job, Target = OnPremise, SPLA
    12:24:07| Info| CrmAction execution time; InstallConfigDatabaseAction; 00:00:10.4231477
    12:24:07| Error| Installer Complete: ConfigDBInstaller – Error encountered
    12:24:07|Warning| Error reported while configuring _Deployment. Attempting rollback
    12:24:07| Info| ConfigDBInstaller: Beginning uninstall operation
    12:24:07| Info| Executing Uninstall action: Microsoft.Crm.Setup.Server.UnregisterRoleAction
    12:24:07| Info| UnregisterRoleAction does not apply since _Deployment is not a explicit server role.
    12:24:07| Info| CrmAction execution time; UnregisterRoleAction; 00:00:00.0039980
    12:24:07| Info| ConfigDBInstaller: Uninstall completed
    12:24:07| Error| Install exception.System.Exception: Action Microsoft.Crm.Setup.Server.InstallConfigDatabaseAction failed. —> System.ArgumentNullException: Value cannot be null.
    Parameter name: input
    at System.Text.RegularExpressions.Regex.Replace(String input, String replacement)
    at System.Text.RegularExpressions.Regex.Replace(String input, String pattern, String replacement, RegexOptions options)
    at Microsoft.Crm.SharedDatabase.DatabaseMetadata.LoadMetadataXmlFromDatabase(CrmDBConnectionType connectionType, String connectionString, Int32& maxBlobSize)
    at Microsoft.Crm.ConfigurationDatabase.ConfigurationMetadata.LoadCache(String connectionString)
    at Microsoft.Crm.ConfigurationDatabase.ConfigurationMetadata.get_Cache()
    at Microsoft.Crm.SharedDatabase.DatabaseService.Initialize(String tableName)
    at Microsoft.Crm.SharedDatabase.DatabaseService.Retrieve(String tableName, String[] columns, PropertyBag[] conditions, Nullable`1 top, IList`1 orderBy, IDictionary collectionToFill)
    at Microsoft.Crm.SharedDatabase.DatabaseService.Retrieve(String tableName, String[] columns, PropertyBag[] conditions)
    at Microsoft.Crm.Admin.AdminService.ConfigDBSecurity.SystemUserService.Create(String name, Guid defaultOrganizationId)
    at Microsoft.Crm.Setup.Database.StandardConfigSqlStrategy.AddInitialUser()
    at Microsoft.Crm.Setup.Database.DatabaseInstallerBase.Install()
    at Microsoft.Crm.Setup.Server.InstallConfigDatabaseAction.Do(IDictionary parameters)
    at Microsoft.Crm.Setup.Common.CrmAction.ExecuteAction(CrmAction action, IDictionary parameters, Boolean undo)
    — End of inner exception stack trace —
    at Microsoft.Crm.Setup.Common.CrmAction.ExecuteAction(CrmAction action, IDictionary parameters, Boolean undo)
    at Microsoft.Crm.Setup.Common.Installer.Install(IDictionary stateSaver)
    at Microsoft.Crm.Setup.Server.ServerRoleInstaller.Install(IDictionary stateSaver)
    at Microsoft.Crm.Setup.Common.ComposedInstaller.InvokeInstall(Installer installer, IDictionary stateSaver)
    at Microsoft.Crm.Setup.Common.ComposedInstaller.InternalInstall(IDictionary stateSaver)
    at Microsoft.Crm.Setup.Common.ComposedInstaller.Install(IDictionary stateSaver)
    at Microsoft.Crm.Setup.Server.ServerSetup.Install(IDictionary data)
    at Microsoft.Crm.Setup.Common.SetupBase.ExecuteOperation()
    12:24:07|Verbose| Method exit: Microsoft.Crm.Setup.Server.ServerSetup.ExecuteOperation
    12:24:07| Info| ActivatePage(ServerSetupFinishPage)

  7. Hi Jukka,

    Wanted to update, How I fixed my issue…

    1. Deleted all the CRM Log files from %appdata%
    2. Deleted the registry entry. Local Machine and Current User also from Control Set 01 tags.
    3. Deleted the Database MSCRM_Config and restarted the SQL services. (Don’t know why this was created since the logs mentioned everything was rolled back)
    Note if you are not MSCRM_Config not present then just restart the SQL service.

    “If you tried that and it didn’t work then you will need to uninstall CRM (sorry I should have told you earlier but it might have worked and installing practice is always good).” – Hosk 🙂

    Regards,
    Shivam Dixit

  8. This article was instrumental to the successful on-prem deployment of CRM 2011 on UR14 to a Windows 2012 Server environment at one of our client sites; kudos and props to a quiet professional as yourself, Jukka. Excellent post mate! Thank you!
    Following your steps got us there successfully most of the way through. Certainly some eye openers with how things have changed when installing to Windows Server 2012 and SQL 2012.

    Cheers!

  9. Hi,

    Congrats! the post is very interesting. Until now I was able to install CRM 2011 in Win 2012, however I’m having some issues with MUI package… after installed Spanish package for example, a new organization is created with Spanish as base language, everything went ok however when I tried to update organization settings the ok bottom is not working… Any suggestion?

  10. Many thanks Jukka.
    I have installed the CRM on Windows 2012 but I am having a problem. Sample Data is not loading due to some mismatch in fields. Can you through some light?

    • Have you changed the full-name format setting before importing sample data? The records can only be linked to one another if the default “First Name Last Name” setting is used. I haven’t personally ran into any new issues with installing sample data in WS2012 based CRM organizations.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.