On July 26th, we released the CRM 2011 Critical Update for Update Rollup 11 (build 5.0.9690.2903).  As this update was specifically designed to relieve memory pressure, improve overall stability, and eliminate memory-related errors within Microsoft Outlook when the CRM client is installed, it eschewed our typical Update Rollup release schedule.

Despite falling in between Update Rollup 14 and Update Rollup 15, this is a significant patch that introduces a new set of design tenets that will be utilized in future builds of the CRM client for Outlook.  Therefore, this blog entry is meant to provide a summary of these new design elements so that they can be better understood and taken advantage of going forward, and to cover some of the prerequisites to keep in mind prior to installing the patch.

There are four key areas to consider before installing the Critical Update:

 

- The Critical Update is based on the Update Rollup 11 codebase, which ensures that it is compatible with any organizations that haven’t yet upgraded to Update Rollup 12 and beyond.  If you already have Update Rollup 12, Update Rollup 13, or Update Rollup 14 installed in your current server implementation, then it is recommended to wait for the release of Update Rollup 15 rather than rolling back to the Critical Update.  If you already have Update Rollup 12, Update Rollup 13, or Update Rollup 14 installed on any clients, then it is recommended that each client be uninstalled completely and reinstalled before the Critical Update is deployed.

- The Critical Update addresses all major issues that were fixed in Update Rollup 12, Update Rollup 13, and Update Rollup 14, and were subsequently ported and delivered as hotfixes on top of Update Rollup 11.  Therefore, you will not be losing any standalone hotfixes that your organization may have installed after deploying the Critical Update.

- If your organization has employed the DisableMapiCaching and/or AddressBookMaterializedViewsEnabled registry keys, these should be added through the OrgDBOrgSettings Tool after the installation of the Critical Update as they are no longer recognized through the registry.

- During the client install, the workstation will also be updated to Microsoft SQL Compact 4.0 with Service Pack 1.  The CRM client for Outlook utilizes SQL CE 4.0 for storing synchronization data, and the newer version brings with it additional memory efficiencies.  In the event that you had installed and configured your workstation with SQL CE 4.0 prior to the install of the Critical Update, it’s worth noting that editing the CrmClient{14B13B7A-CA08-40bd-AC60-8C45367E807C}.config and Microsoft.Crm.Application.Outlook.ConfigWizard.exe.config files is no longer necessary.

 

When the CRM client is first opened with the Critical Update (or Update Rollup 15 and beyond) installed, it spins up two new Microsoft.Crm.Application.Outlook.WebFormsHost.exe processes that host all CRM forms that are opened from within Outlook. The client then begins monitoring these processes for two separate memory thresholds. If you are using the 32-bit client, then the initial threshold is set to 614MB remaining by default (or 70% used of the 2GB available) and the secondary threshold is set to 204MB remaining by default (or 90% used of the 2GB available).

Based on these two thresholds, the Critical Update monitors for two scenarios:

Grid-to-Form Navigation: When a user opens a form from the grid, the client initially handles it in the first WebFormsHost process. When this first process reaches the 70% memory utilization threshold, the client transparently switches new forms opened from the grid to the second WebFormsHost process. When the second process reaches the 70% memory utilization threshold as well, a "Sorry, the application is low on memory so the form can not be opened. If you have any Microsoft Dynamics CRM for Outlook forms open, save and close them, and try again." message is surfaced to the end user.  At this point, closing all of the currently opened forms is a requirement so that the client has the opportunity to terminate the current WebFormsHost processes and generate new ones in their place.

Form-to-Form Navigation: When a user opens a form from within another opened form (for example, through an Advanced Find or Duplicate Detection window), the client handles it in the same WebFormsHost process that is handling the form from which it was opened. In this scenario, the client is unable to switch over to the second process even if the original has already hit the 70% memory utilization threshold. The first process is then allowed to reach the 90% memory utilization threshold before the "Sorry, the application is low on memory so the form can not be opened. If you have any Microsoft Dynamics CRM for Outlook forms open, save and close them, and try again." message is surfaced to the end user. This message is raised to the end user even though the other process hasn’t even been used, and once again the user must close all currently opened forms to allow the client to spin up a new WebFormsHost process.

As mentioned in the scenarios above, once the forms being handled by an existing process are closed, that process is discarded and a new WebFormsHost process is spun up in its place. If users are receiving this message during a typical workday, then it is recommended to open forms from the grid (to achieve the grid-to-form navigation scenario) rather than through an existing form (form-to-form navigation scenario) and to close any open forms once they are no longer needed.

In CRM 2011 Update Rollup 15 and Update Rollup 16 (as well as CRM 2013), we will be introducing a number of additional enhancements that will help reduce memory pressure on client workstations even further.  These enhancements will make the memory thresholds more difficult to reach, therefore reducing any messages that the end users may be receiving in regard to low memory.