Back to old times

Today I got involved in a project I havn’t been working in for about 2 years, a CRM 3 project that now was upgraded and there were some issues with callouts not executing properly on the production system but there were no problems on the test system. So, there probably wasn’t a code error.

After activating the crm tracing (alway a good thing to do when CRM is missbehavn’) it was quite clear that it couldn’t find the dll Microsoft.Crm.Platform.Callout.dll which of course is required by CRM 4 if you want to execute workflows since this assembly contains the classes that are inherited from in the callouts. It is a bit strange that this dll isn’t included in CRM 4 since callout are supposed to be seemlessly upgradable to CRM 4 and this is the one little stich that is missing. So, just had to dig it up and deploy it to the GAC and the callouts started working as they should.

During this I also thought there might be errors in with the assembly being unsigned and after some looking around, I found that in Visual Studio 2003 it isn’t found in the project settings so you have to fix it manually in the assemblyinfo.dll. However, this doesn’t seem necessary event though it doesn’t hurt.

So, what did I learn?
1. When in doubt, switch on CRM tracing.
2. Make sure you have a good store of all dll:s that CRM uses so that you quickly can find them. How many of you have the Microsoft.Crm.Platform.dll in the CRM 3 hosted version? It is quite rare and can be found on the installation disks but not anywhere on MSDN. If you need it, drop a comment. I approve all comments due to all the #¤#¤¤# comment spammers so you can enter your email and ask me not to publish the comment, and it wont be subject to email harvesters, if you want me to email you the file.
3. Don’t take promises of seemless upgradablity too serious. MSFT have done a great job with CRM, you don’t even have to recompile (and consider that CRM 3 uses .NET 1.1 and CRM 4 .NET 2.0 from an IIS perspective) so always do a test upgrade a couple of times before you do it live and make sure to write down all the steps you are taking. Let’s hope the upgrade from CRM 4 to CRM 5 will be truly seemless!

Gustaf Westerlund
Microsoft Dynamics CRM Chief Architect

Logica
www.logica.com

Quick create

As many of you know, in CRM 3 there is a special view of an entity form called quickcreate. This is used when you press “New” in a lookup window. For instance, on an account you can press: select primary contact, when the search dialog shows you can instead of selecting an existing contact press the new button and a “slimline” version of the contact form show with just the must-have and should-have fields available.

In CRM 4 this feature is not used any more and the complete form will always be shown in this case, however, the functionality hasn’t been removed. I tried to find some kind of reference to it in the SDK but couldn’t so I had a look in the original CRM code in CRM 3 and found how to do it.

To open a form as quick create, find the object type code (1 = account etc) and go to the URL:
http://[server:port]/[organisation]/_forms/QuickCreateReturn/quickcreate.aspx?crmFormSubmitObjectType=[objecttypecode].

For example, for account on the local machine when CRM is installed on port 5555 and the company is named “company”:
http://localhost:5555/company/_forms/QuickCreateReturn/quickcreate.aspx?crmFormSubmitObjectType=1

Since I couldn’t find any official reference to this in the SDK it is very possibly unsupported to do this but it works for now. Any hotfixes or similar might, but are not very likely to change this functionality, new versions of CRM like v.next are more likely to change/remove this functionality.

Gustaf Westerlund
Microsoft Dynamics CRM Architect

Logica
www.logica.com

SQL error when importing customization.xml

Today I was deploying from a development environment to a test environment and part of this is moving the customizations made within the CRM GUI. I simply exported the customizations.xml and tried to import it to the test system. Only to get a very angry “SQL Error”. Hmm… not very nice to see those, that usually means that somethings gone really bad, and you usually wish you hade just taken a complete backup of CRM.

Well, things only got worse when I tried to access CRM with the common url, I got a really nasty error saying that some custom attribute wasn’t at all like some other custom attribute. No dah, my worst fears just got real and I could only face the fact that the CRM meta database had somehow become corrupt. Really bad, testing was supposed to begin today, so really bad timing (and timeplan).

So, what to do? Since I couldn’t access CRM I couldn’t get to the import cusomtizations page, so I had a look in the SDK for the direct URL to the import customizations page (it is under sitemap customizations). I tried to reimport the customizations file from my development server, only to find that CRM now found the xml “malformed” in this file. After some testing, I found that it acctually found all customizations files to be malformed, not only the first one. So, something really sinister is at hand. Time to log into the SQL-Server.

The first message that faced me was that one of the drives had to litte disk space… I had a look and found that the main data disk had only 2 MB free. So, this was probably it. First, there probably hadn’t been space enough for commiting all the changes that were in the new customization file and then there hadn’t been space enough to upload the new customizations file. The error message of mal-formed xml had just been an erroneous error message.

So, I freed some space on the disk and just to be sure, I re-installed CRM entirely (it was just a test environment after all) and imported the customization file, and all went well!

Well, there was acctually one thing, when I imported the customization file I got an error saying that at some row XXX in the file there was something wrong. At the specific row, was a tag for setting “displayInApplication” or something like that for the entity “Bulk Operation”. I tried to remove the tag and import it, which worked. I later remembered that I hadn’t installed Update Rollup 2, which I later confirmed was the cause of this error. I had exported from a CRM 3 UR2 system and imported into a standard CRM 3, hence the error. So, I would suggest not removing the tag but instead updateing your CRM :).

Gustaf Westerlund
Microsoft Dynamics CRM Consultant

WM-Data/Logica CMG
www.logicacmg.com

Problems with Aug 07 VPC

Menno, the VPC god of Dynamics CRM land has created the very nice Aug 07 VPC of CRM 3. Sadly, a common error in it has to do with some new blocking of hacker attacks. It results in an error, that after a while of running it, you get a login-prompt and CRM stops working. The temporary solution is to restart IE.

Menno has written some about this on his blog, please read it. http://blogs.msdn.com/mscrmfreak/archive/2007/11/02/august-2007-vpc-fix.aspx

I personally liked “Method 1” described in the references KB-article. The details are described bellow. I have tested it for 5 minutes and it seems to be working. Here is a copy of the text:

Method 1: Disable the loopback check

Follow these steps:
1.
Click Start, click Run, type regedit, and then click OK.
2.
In Registry Editor, locate and then click the following registry key:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa
3.
Right-click Lsa, point to New, and then click DWORD Value.
4.
Type DisableLoopbackCheck, and then press ENTER.
5.
Right-click DisableLoopbackCheck, and then click Modify.
6.
In the Value data box, type 1, and then click OK.
7.
Quit Registry Editor, and then restart your computer.

Gustaf Westerlund
Microsoft Dynamics CRM Consultant

Logica CMG
www.logicacmg.com