Friday, August 13, 2010

CRM 2011 New Features And The Wait or Build Decision

Some interesting thoughts on whats new in CRM 2011 and how it affects applications we build today.
http://www.dynamicscrmtrickbag.com/2010/08/06/crm2011-waitorbuild/
http://www.dynamicscrmtrickbag.com/2010/07/25/taking-the-covers-off-crm-2011/

In my opinion, if time permits, I would always try opt for the wait; at least until the beta releases of the product come out.
From my past experiences early adoption has worked out pretty good for us. It gives us the opportunity to offer the customer so much more value in their solution.

The development cycle may not be the smoothest, but at the end of the day the rewards are worth it.

Thursday, August 12, 2010

URL Addressable Forms and Views

The list of addressable Forms and Views in CRM. This came pretty handy recently when setting up a customized navigation for a client.

http://msdn.microsoft.com/en-us/library/cc150850.aspx

Tuesday, August 10, 2010

CRM 4.0 Sitemap Group with id has an empty title Warning

I've been doing some extensive changes to the SiteMap.xml recently. Everything went well and the site loads except that CRM started throwing warnings in the trace log everytime I visited the site.

...
at CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
at ApplicationStepManager.ResumeSteps(Exception error)
at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr)
at HttpRuntime.ProcessRequestNoDemand(HttpWorkerRequest wr)
at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType)
>Sitemap Group with id "grp_Programs" has an empty title (groups have to have titles if their parent area has ShowGroups attribute set to true).
# CRM Tracing Version 2.0
# LocalTime: 2010-08-10 09:21:40.8
# Categories:
# CallStackOn: Yes
...
I did validate the sitemap against the schema while editing the xml, so I'm sure that its well formed and valid. Also, the import process did not complain during the upload either.
(more info on the schema I used at the end of the post)

A little investigating and trial and error I found that the problem lay with the deprecated "Title" attribute in the Group node. (http://msdn.microsoft.com/en-us/library/cc150880.aspx)

Even though the documentation states that attribute is deprecated, it appears that CRM uses it internally. So adding this attribute produces the following site map:
<group id="grp_Programs" title="Programs">
<titles>
<title lcid="1033" title="Programs">
<title lcid="1036" title="[Fr]Programs[/Fr]">
</titles>
...
</group>

I tested this with Rollup update 10 and I'm not sure if that has been fixed with a newer rollup. I might try this again with the latest rollup to see if its still reproducible.

References:
The schema I used to validate contains the customizations.xsd, the SiteMapType.xsd and the Isv.config.xsd files into one file. Download it here:

http://rc.crm.dynamics.com/rc/regcont/en_us/op/articles/sitemap.aspx
http://rc.crm.dynamics.com/rc/downloads/ISVConfigAndSiteMap.zip

Wednesday, August 04, 2010

CRM Update Rollup 12

The CRM team releases a new Update Rollup:
Build number and file names for this update rollup
The build number of the update rollup packages for the Microsoft Dynamics CRM 4.0 server, for the Microsoft Dynamics CRM 4.0 client for Microsoft Office Outlook, and for the Microsoft Dynamics CRM 4.0 E-mail Router is 4.0.7333.2935.
You can download it here. And find the Associated KB article here.

Sunday, August 01, 2010

Assigning Roles to a deactivated Users in CRM

This cannot be done. I found out the hard way when trying to write a user syncing service. It makes sense if you really think about it; why would you want to assign a role to a deactivated user anyway?

If you still want to do this the work around is to temporarily activate the user, assign the roles and deactivate him again.

Hope this helps someone out there.

Sunday, July 11, 2010

Sorting Dynamics CRM Left Navigation

In CRM 4, when you enable a custom entity to be displayed in a navigation area, they are displayed in the order they were added. We had a requirement to sort the entities so that they can be found easily. The way to achieve this is to edit the SiteMap.xml and re-upload back into the site. This can be very tedious if you have a considerable amount of custom entities.

I wrote an XSLT file which automates the sorting process. Hey, if you gotta do something more than two times, might as well automate it.

A few things to note when using this approach:
  • The sort can only be performed against the internal names of the entities as the SiteMap.xml does not contain the display names.
  • As new entities are added to areas, this script will have to be re-run.
  • This solution does not sort the left navigation within the Forms.


Please let me know your thoughts in the comments.

Sources

Configure the Site Map to Customize Application Navigation in Microsoft Dynamics CRM 4.0
http://msdn.microsoft.com/en-us/library/dd393294.aspx

SiteMap XML Reference
http://msdn.microsoft.com/en-us/library/cc150883.aspx

Friday, July 09, 2010

Clear SQL Server Cache and Stored Procedure Cache

To clear SQL Server’s cache, run DBCC DROPCLEANBUFFERS, which clears all data from the cache. Then run DBCC FREEPROCCACHE, which clears the stored procedure cache.

I never seem to have this info handy when I actually need to use it. Posting here for easy reference.

Source:
http://www.devx.com/tips/Tip/14401

Monday, June 14, 2010

Visually Differentiate Your CRM Environments

Found this nice tip a few weeks back, been using it ever since. I think its a great idea and one that can be adopted to other framework solutions as well.

http://feedproxy.google.com/~r/typepad/sonoma/~3/z7jsCUcqn_0/visually-differentiate-your-crm-environments.html

Virtual Box Inverted Mouse Scroll

I've experienced this annoying bug in virtual box a few times now. VB randomly (?) decides to invert your mouse scroll direction. Its not really a big deal, just that it zaps your concentration. Hitting the LCtrl, LShift, LAlt, Win, RCtrl, RShift, RAlt in an random order seems to fix it. That seems to be the best solution out there at the moment.

Source:
http://forums.virtualbox.org/viewtopic.php?f=6&t=29957

Sunday, June 06, 2010

Update Rollup 11 Released

http://blogs.msdn.com/b/crm/archive/2010/06/04/update-rollup-11-for-microsoft-dynamics-crm-4-0.aspx
Update Rollup 11 is cumulative. However, the Update Rollup 11 CRM Client and Data Migration Client packages require Update Rollup 7 to be installed. For all other CRM components you do not need to install any previous Update Rollups prior to Update Rollup 11

Get it here:
http://support.microsoft.com/kb/981328

Monday, May 24, 2010

Wednesday, May 12, 2010

CRM 4.0 Customizations Comparison Tool

The Customization Comparison Tool


"...tools that help you analyze the impact of customizations on the system and maintain consistent configuration data across multiple Microsoft Dynamics CRM systems."


The Data Migration Tool


...lets you export custom configuration data from a source Microsoft Dynamics CRM system and import it to a target Microsoft Dynamics CRM system.


http://blogs.msdn.com/crm/archive/2010/01/14/isv-utilities-for-comparing-customizations-and-transferring-configuration-data.aspx

Another tool to go into my tool belt.

Wednesday, May 05, 2010

Best Practices on Building Sharepoint 2010 Web Parts

http://channel9.msdn.com/posts/funkyonex/Best-Practices-on-Building-SharePoint-2010-Web-Parts-with-Visual-Studio-2010/
....

Death Metal Rooster!

Oh man!

http://www.thechickentest.com/2010/05/how-could-i-not-repost-this-death-metal-rooster/

CRM 4.0 Plug-in Filtering Attributes Limitation

I ran across this error while setting up the Filtering Attributes for a custom plug-in today :
Error Code: 0x80044331
A validation error occurred. The length of the 'filteringattributes' attribute of the 'sdkmessageprocessingstep' entity exceeded the maximum allowed length of '100'.
The the Filtering Attributes property basically tells the plug-in which specific field changes it should respond to.

Investigating the issue it looks like its a limitation in the CRM web service. The web service limits the length of the field to 100 characters. Its strange that its not even the number of attributes that is the limitation but rather the concatenated length all the attribute names!

Interestingly enough the creation of Image Attributes support a total of 4615 characters: http://technet.microsoft.com/en-us/library/dd904023.aspx

Hopefully with CRM 5.0 around the corner this will all be addressed.

Sunday, May 02, 2010

CRM 4.0 Plug-in Development Best Practices

I found this excellent post on best practices for CRM Plug-In development. Its a must read for anyone considering plug-in development.

http://blogs.inetium.com/blogs/azimmer/archive/2010/01/25/plugin-best-practices-in-crm-4-0.aspx

Monday, April 19, 2010

CRM 4.0 Customized Webservice For A Specific Organization

I recently been working on customizing CRM plug-in deployment tool to add some additional functionality. The source for the tool is available with the CRM 4.0 SDK.

To successfully build the source we need to add a web reference back to the CRM web service. The problem I ran into was that the default url (http://<server:port>/mscrmservices/2007/CrmServiceWsdl.aspx) returns a wsdl scheme with all its customizations. If you just need a clean proxy like I did then you need to create a new organization and then provide its name in the uniquename query string variable:

http://<server:port>/MSCrmServices/2007/CrmServiceWsdl.aspx?uniquename=OrganizationName