Migrating Microsoft CRM 3.0 to Dynamics 4.0

First I created a test environment on a VPC, well, 3 VPC to be exact. Running Windows XP Pro and Virtual PC I created:

  1. a CRM 3 Server VPC
    1. Microsoft SQL Server 2005
    2. Microsoft SQL Server 2005 Reporting Services
    3. CRM Server
  2. a CRM 3 Client VPC
    1. Office Pro 2003 for Outlook
    2. CRM Desktop client for Outlook
  3. a Small Business Server VPC

The last one is used as my Primary Domain Controller and Exchange server, installed using the “Next, Next, Next” principle.

Then I tried to figure out how to import my database, workflow and custom reports. This led to my ‘discovery’ of the RedeploymentTool on the CRM 3 Server CD. After reading the PDF that comes with that, I uninstalled CRM Server again and ran the RedeploymentTool. I mapped only a few key users, since I only wanted to see if everything would work, but that was quite simple. The users I didn’t map remained in the CRM database, using the “old” domain and can be mapped later, if necessary, using the CRM Deployment Manager.
After this step I reinstalled the CRM Server and pointed it to my redeployed local database.

CRM 3 Tips
  • Don’t run Microsoft CRM Workflow Service (Services) as a user who has “Restricted access mode” enabled in the CRM User Settings, won’t work, make sure you set this to a user with the right permissions (System Administrator) and “Restricted access mode” off
  • Don’t run Microsoft CRM Workflow Monitor (Start Menu) as a user who has “Restricted access mode” enabled in the CRM User Settings, you’ll probably won’t see any details, you might see the summary.
  • Use the DownloadReports.exe that comes with CRM to export reports
  • Use the “Export Workflow Wizard” to ..ehm well… export the workflows
  • Don’t forget to transfer the workflow.config and callout.config.xml and all files in Program Files\Microsoft CRM\Server\bin\assembly
  • Use the “Import Workflow Wizard” to import the workflows
  • Use the PublishReports.exe to import the reports you exported using DownloadReports.exe

Installing Dynamics CRM 4

Data Migration Manager

First I installed the CRM Data Migration Manager. This doesn’t appear to work with the CRM 3 install.

CRM 4 Server

To install CRM 4, you must be running at least Windows 2003 SP2 and SQL 2005 SP2, so first upgrading my CRM server VPC using Windows Update.

Next step is installing the e-mail router on the CRM Server VPC. I downloaded the installation updates and followed the instructions, nothing special here. Until during the actual install:

image1

So I figured it would be better to first install the server.

This all went pretty smooth, Setup detected I have a 3.0 installation, so tries to upgrade, that’s all good. Then I get some warnings before the install:

image3

I choose to ignore these and proceed.

To make my VPC run smoother I restricted memory usage for SQL Server to 64Mb. Unfortunately this gave me some problems during the upgrade:

image6

This meant I had to restart the upgrade, after having increased the memory limit to 512Mb.
Setup detected CRM was already (partially) installed, so I selected Repair mode. This rendered my current installation FUBAR, so I went back to the last snapshot.

Next try:

image22

Retry?

image30

Nope…
Since my original CRM 3 is probably a Dutch version, I’m retrying using the Dutch CRM 4 DVD.

image26

Nope, that won’t work either.

Setting databases to simple recovery mode in SQL Server Management Studio (I found this in the CRM 4) and using the English SetupServer.exe again, run into the same problem as before. Looking at the logs (located at <systemdrive>:\Documents and Settings\<User>\Application Data\Microsoft\MSCRM\Logs\)

14:44:21|Verbose| Installing version: 4.0.7333.3
14:44:21|Verbose| Installing lcid: 1033
14:44:21|Verbose| Existing version: 3.0.5300.9
14:44:21|Verbose| Existing lcid: 1033

So that doesn’t make sense. Looking at the database now, because the error mentions “organization”:

select LanguageCode from OrganizationBase

Which is 1043 at the moment, so let’s change that:

update OrganizationBase set LanguageCode = 1033

And let’s reinstall again. A new error occurs during the verification step:

Error| Check ExportXmlValidator : Failure: Microsoft Dynamics CRM 3.0 database export failed.

According to http://support.microsoft.com/kb/946542/ this is because I’m using the wrong user. Probably has to do with changing the languagecode, because this wasn’t an issue before. So let’s try to change the language from within CRM.

The CRM 3 Implementation Guide says:

If you are installing the English version of Microsoft CRM on a computer using another language version of Microsoft Windows and Microsoft SQL Server, and if you are having Microsoft CRM install Reporting Services, before installing Microsoft CRM, you must temporarily change the language in Microsoft Windows to English. After installation of Microsoft CRM is complete, you can return it to the original setting.

Too bad this was already English – US, so nothing to be done here.

After checking with the system administrator of the original CRM 3, the one I got myself a backup of, I decided to try to reinstall the original data using the Dutch version of CRM 3.

This worked like a charm. Workflows and data where imported, the single sales proces we had was converted to a workflow (since CRM 4.0 only has workflows, which is a good thing).

CRM 3 to 4 tips
  • The upgrade of Microsoft Dynamics CRM 3.0 client for Outlook to Microsoft Dynamics CRM for Outlook enables you to take advantage of the new features available in Microsoft Dynamics CRM 4.0. For example, Microsoft Dynamics CRM for Outlook no longer requires a VPN solution to connect to Microsoft Dynamics CRM from an external resource.
  • Setup logs: <systemdrive>:\Documents and Settings\<User>\Application Data\Microsoft\MSCRM\Logs\
How to set add the CRM as a Intranet site (for auto-login)
  1. On the server, go to Start -> Programs -> Administrative Tools -> Group 
    Policy Management.
  2. Expand to Forest\Domains\Yourdomain.local\Group Policy Objects.
  3. Right click Group Policy Objects, select New to create a New GPO.
  4. Right click the new GPO and select Edit.
  5. In the Group Policy Object Editor window, expand to User 
    Configuration\Windows Settings\Internet Explorer Maintenance\Security.
  6. On the right pane, double click Security Zones and Content Ratings.
  7. Under the Security Zones and Privacy, select Import the current security
    zones and privacy settings. It will prompt you a window, click Continue.
  8. Click Modify Settings. In the Internet Properties page, you can modify 
    the Intranet Zone and add trusted sites.
  9. Click OK.
  10. Expand to User Configuration\Administrative Templates\Internet 
    Explorer.
  11. On the right pane, you can select any tab (IE -> Tools -> Internet 
    Options) to be Enabled. To do so, double click the tab you want to disable, 
    select Disable, and click Apply and OK.
  12. Close the Group Policy Object Editor window.
  13. In the console tree, right-click the domain, and then click Link an Existing GPO. In the Select GPO dialog box, click the new GPO you just created, and then click OK.
  14. Go to Start -> Run "gpupdate" (without quotation marks). 
  15. When the clients log on their workstations again, this group policy 
    will be applied. 

Conclusion

The error messages you see when using the wrong language are not very clear. Otherwise upgrading is quite straightforward, as long as you don’t have any complex processes or customizations.

Update

Parameter Filter

Editing some entities (it seemed quite random), gave me the following exception in the Event Log. The message that was shown in CRM was a generic error message.

CRM Parameter Filter - Invalid parameter 'NotesView=1' in Request.QueryString

After some searching I found a work-around. I’ll have a better look later, but this seems to fix the glitch:

Add a new key, using regedit, below HKEY_Local_Machine\Software\Microsoft\MSCRM of type DWORD named DisableParameterFilter with a value of 1.

Language setting

After saving a few contract lines, I noticed the prices were not saved correctly. A value of 1.00 was saved as 10,000. Because we use the Dutch version, I suspected this would have something to do with the language setting. To test this I changed the language to English: problem solved, in English. But we needed Dutch, so I changed it back to Dutch, expecting to have the problem I started with, but to my pleasant surprise it kept working with the Dutch language setting.

Script

Another problem we ran into during the UAT had to do with a custom script in the onLoad of the contract line entity. This was already fatally flawed to begin with, so I rewrote a big part of it to solve this problem. I just mentioned it here to point out that it’s important to verify all your customizations still work after upgrading.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Comments