The number of blogs, forums and news sites revolving around Microsoft Dynamics CRM can feel somewhat overwhelming, especially when you’ve spent some time being “unplugged” from the constant feed of information that surrounds our everyday lives. During my four week summer vacation I did managed to keep my hands off CRM most of the time, but the news and posts accumulating on my Google Reader still kept me quite firmly in the loop. Here’s a summary of a few Dynamics CRM related topics that caught my attention this summer.
Refreshed Virtual PC image with Portal Accelerators
Microsoft released an updated version of the VPC image that comes with Dynamics CRM 4.0 preconfigured, available for download on CustomerSource or PartnerSource. There’s more on it than just CRM, check out the following list for all the goodies:
- CRM 4.0 with Update Rollup 11
- Windows Server 2003 R2 SP2
- SQL Server 2008 SP1 – SSRS, SSAS
- SQL Server 2005 Express Edition
- Office SharePoint Server 2007
- Office Communications Server 2007
- Office PerformancePoint Server 2007
- POP3 Server
- Visual Studio 2008
- Office 2010 SP1
- Windows Mobile 6 SDK and Activesync
The image has been tweaked to include two virtual hard drives (VHD), allowing the swap file to be physically located on a USB drive, which is promised to improve performance by ~30%. How that figure has been determined is beyond me, but the environment works quite well on my Core i3 2.26GHz, 4GB, Win7 x64 setup. It would of course have been super nice to get your hands on a SharePoint 2010 environment, but the hassle of x64 environment virtualization with Hyper-V instead of Virtual PC would have not been worth all the trouble (although I’ve heard VirtualBox should be able to run also 64-bit images without Windows 2008 hosts). Let’s just settle for MOSS 2007 with Office 2010 client components.
What made this VPC image especially interesting to me was the latest versions of the Portal Accelerators. Now, I never really had hands-on experience with the first wave of Portal Accelerators released for CRM 4.0, but from what I’ve heard the results delivered didn’t quite live up to people’s expectations. This new breed of accelerators, on the other hand, is based on the technology found in the commercial products of Adxstudio, who have built a full blown content management system on top of Dynamics CRM. I simply had to test drive the Customer Portal and Partner Relationship Management Portal, after seeing them promoted in Convergence 2010 Atlanta. (more…)
One of the integrations implemented for our CRM environment includes a feature that writes entries to a dedicated Error Log entity. This can be a convenient way to provide the end users access to error notifications, when the process itself is asynchronous and does not provide a way to prompt the user.
During the development project of this integration, frequent updates were made to this callout dll file and I received new versions to be deployed from the developers almost on a daily basis. After one particular update, we were surprised to notice that the callout was still writing an error messge into the custom entity, which was not supposed to be there. In fact, the whole message string no longer existed in the dll file. Where did his ghost messages appear from?
It turned out that merely stopping and starting IIS does not guarantee that the previous version of a callout would not remain in the cache. If there are any workflows associated with the entities that the callout references, these can keep the old version of the dll loaded up in memory, thus creating the “haunting” effect described.
As a lesson learned, whenever I need to update a callout dll file, I now go through the following steps:
- Stop the CRM Workflow Service (net stop mscrmworkflowservice)
- Stop IIS (iisreset /stop)
- Replace the callout dll
- Start IIS (iisreset /start)
- Start the CRM Workflow Service (net start mscrmworkflowservice)
If you ever need to access the MS CRM server from a remote office with not such a speedy connection, you will notice that CRM is not a particularly light weight application. In a WAN environment where the server is located in a different country or even on a different continent as the users, this can cause some serious issues. Slow performance is a very real threat for CRM user adoption.
In an attempt to respond to the complaints of branch office users about the system usability issues caused by network latency, we have started investigating what really goes on between the CRM server and the CRM client in some of the basic use cases, such as opening CRM default front page (my activities) and opening an account form.
Loading the CRM front page without cahced data can include close to 300 different HTTP requests. To me, that sounds like an insane amount for any web page! Sure, there are various little icons on the screen and many controls to load, but still that is way over what I would expect. My personal installation of SugarCRM only takes 65 HTTP requests to give me a nice dashboard of accounts and activities. Where do all these requests originate from?
Let’s look at the individual requests that take place during a normal CRM page loading:
First you see the request for the 16_print.gif, then a while later you see the same request again. What’s up with that? Going through the list, you will notice that in practice all the items are requested twice from the application server. The first one has a result code 401, the other 200.
Welcome to the world of IIS, or more precisely version 6.0 of it. This is how content protected by integrated Windows Authentication is handled by the server. You can read some discussion on the subject from this thread: “Integrated Windows Authentication – Double Hits“. Brian Reid from C7 Solutions also covered this subject in his blog post “Improving the Performance of IIS 6.0 Applications”, where he also suggests quite an elegant solution of modifying the AuthPersistSingleRequest setting in IIS metabase. However, this being not just any in-house developed site but Microsoft CRM, a business critical application, I’m hesitant to try anything that has not been officially promoted by MS as a performance tweak. Therefore I decided to have a look at what this article had to say about IIS: Optimizing the Performance of Microsoft Dynamics CRM 3.0 White Paper. I’ll share my findings in part 2 of this post.