CRM 2011 Update Rollup 12 has been released. Polaris is here!


Microsoft has officially released Microsoft Dynamics CRM 2011 Update Rollup 12, formerly known as Polaris.

https://community.dynamics.com/product/crm/crmnontechnical/b/crmconnection/archive/2013/01/29/announcing-the-availability-of-microsoft-dynamics-crm-2011-update-rollup-12.aspx

Download it here !

http://www.microsoft.com/en-us/download/details.aspx?id=36229

And let’s not forget our best practices!

http://msdynamicsworld.com/story/listen-voice-experience-decisions-will-help-or-hinder-microsoft-dynamics-crm-2011-upgrade

 


CRM 2011: Could not find GUID for server – Update Rollup 11v2 Breaks ADFS


We ran into an authentication issue with Microsoft CRM 2011 using ADFS/IFD running Update Rollup 11v2. After being installed, the external endpoint would no longer display, providing the following error:

CRM2011_UnexpectedError

 

 

 

 

 

The error log from the event viewer showed the following error (Could not find GUID for Server)  immediately before even receiving the ADFS login prompt:

When Update Rollup 11v2 is removed and, CRM functions normally. No errors. Reinstall Update Rollup 11v2 and the same issue as above occurs. A workaround to this issue is changing the Anonymous Authentication identity from specific user (IUSR) to Application pool identity. Steps are below:

Step 1:

On the CRM server, open the Internet Information Services (IIS) Manager

Step 2:  

In IIS Manager, click the CRM site

Step 3:

In the Features View, double-click Authentication

Step 4:

Select Anonymous Authentication , and then click Edit in the Actions pane

Step 5:

In the Edit Anonymous Authentication Credentials dialog box, click the Application pool Identity , and then click Ok:

IISApplicationPoolIdentity

 Step 6.

Perform an IISRESET on CRM and ADFS servers. Now you can browse the ADFS endpoint for External!

Performing this change (recommended by Microsoft support) makes ADFS/IFD endpoint for Microsoft Dynamics CRM 2011 work with Update Rollup 11v2. Reverting this change breaks CRM when Update Rollup 11v2 is installed.

Special thanks to Gage Pennisi, my young apprentice, for identifying and resolving the issue.


CRM 2011: Removing or Reinstalling ADFS Gotchas


ADFS can be very unforgiving if you need to uninstall or reconfigure. The following steps should steer you clear of any issues that you might run into. (ACL List issues are covered on my blog as well).

Step 1:
Uninstall ADFS using the control panel, remove program
NOTE:- ADFS will be shown as an installed update not a program. System will require a reboot.

Step 2:
Open IIS, find the ADFS Website, now delete the folders
Delete LS Folder
Delete ADFS Folder

Step 3:
View ADFS Application Pool
Note: You should see that there no applications now assigned to.
Delete ADFS Application Pool

Step 4:
Delete Program Files\ADFS installation path

Step 5:
IIS Restart

Now you’re ready to reinstall ADFS. Please make sure you download the latest ADFS 2.0 from the Microsoft Download Center, and don’t install/add the ADFS role from the Windows Server.


CRM 2011: CRM Instance Adapter has been released!


Microsoft has just released the Microsoft Dynamics CRM 2011 Instance Adapter (also know as the multi-instance adapter). For those of you that wanted to sync your Production Dynamics CRM 2011 to other environments like DEV, QA this tool is what you have been waiting for! Additionally, Global Deployment options allowing you to sink individual organizations (instances) back into a single server (multi-instance) for reporting and consolidation. The instance adapter will also require the install of the Microsoft CRM Connector currently used to integrate CRM with with ERP systems.

One of MVPPeeps, JoeCRM wrote a great article and beat me to the bunch. Enjoy!

http://www.powerobjects.com/blog/2012/10/26/introduction-microsoft-dynamics-crm-2011-instance-adapter/

Download the CRM Instance Adapter here:
http://www.microsoft.com/en-us/download/details.aspx?id=35385


CRM 2011: 2007 Endpoint 404 error no longer working after Update Rollup 10/11 is applied


Several customers have reported the CRM 4.0 or 2007 endpoint is showing a 404 error is no longer working after applying update Rollup 10/11. A SQL script is required to fix the issue. Please note that since this is a direct-sql update to the MSCRM_CONFIG database, please contact your partner or Microsoft for assistance in updating your system.

Best practice would be to uninstall the Update Rollup 11 and to see if that fixes the endpoint issue (don’t forget to restart IIS) If not, then you might not have a choice to either wait for a fix or patch from Microsoft, or apply the SQL Statement at your own risk. The SQL script will update the FederationProviderProperties on the NVarCharColumn changing/updating the several paths associated to the MSCRMServices/2007/XXXXXXX.asmx.

Microsoft has scheduled Update Rollup 12 to resolve this error. Please talk to Microsoft or your partner for the script to temporarily resolve this issue until Rollup 12 is released late December.

 


CRM 2011: ADFS Error – Each identifier for a relying party trust must be unique


When deploying ADFS/IFD solution, you will most likely want to build a seperate ADFS server. Since ADFS is Microsoft’s STS (Security Token Service) many of their applications including Microsoft Dynamics CRM 2011 will be federating with it for single sign-on within your enterprise.

ADFS can be setup on a single server, and can work with multiple instances (Dev, Test, Production) or deployments of Microsoft Dynamics CRM 2011 as show below:

The gotcha is the names of the CRM Organizations across the multiple CRM deployments. You cannot have duplicate organization names between dev, test and production. So for example an organization named CRM, cannot be used in both DEV, TEST and PROD when using ADFS. This will give you the following error message:

An error occurred during an attempt to access to the AD FS configuration database (Write to). Each identifier for a replying party trust must be unique across all replying party trust. This error is because the indentifier in this case CRM is referenced by the identifier https://crm.domainname.com. Once you add in DEV, the duplication occurs when you then try to add TEST and PROD.

A CRM Organization name change is required to use one ADFS server for three seperate deployments, so CRM would become CRMDEV,CRMTEST & CRM, hence eliminating the duplication in identifiers, hence the error. Enjoy!

 


CRM 2011: Six jobs are setup when the application is installed or upgraded


When installing CRM 2011,  several jobs (six of them) are automatically being created but remain in a pending status.

 

 

 

The CRM 2011 job editor displays some of these jobs:

 

 

 

 

 

 

 

 

The following post provides more details of the jobs and working with them. I will update this post in the near future about why this jobs are not configured out of the box:

http://blogs.msdn.com/b/crminthefield/archive/2012/04/26/avoid-performance-issues-by-re-scheduling-crm-2011-maintenance-jobs.aspx


CRM 2011: Outlook Client UR 10 provides Drastic Search & SQL Performance Improvement


Microsoft has just released Update Rollup 10 for Microsoft Dynamics CRM 2011. One of the main areas we have been testing with is within quick finds (searching) using the Outlook Client. To further explain, please understand that the Microsoft Dynamics CRM 2011 Outlook Client uses a completely different SQL query than its Web client counterpart prior to Update Rollup 7. This is a reason to immediately move to at least Update Rollup 7. Please note that when downloading CRM 2011 Server, Update Rollup 6 is now built-in to base code revision.

In our test Scenario below, just updating from Update Rollup 5 to Update Rollup 8 provided immediate performance improvements right off the bat, and the query executing provided similar performance results in either the Outlook Client or the Web Client

Example 1 Results:
1.5 Million Rows, Quick Search Contact Name, Rollup 5, Outlook Client 37.6 seconds, Web Client 11.0 Sec
1.5 Million Rows, Quick Search Contact Name, Rollup 8, Outlook Client 8.6 seconds, Web Client  8.7 Sec
– This is a drastic improvement just applying the Update Rollup.
– Note: This customer also has another issue that I will address in this post, please continue on..

Unfortunately, due to the nature of how the scripts are dynamically created, there is still limited performance improvements with Update Rollup 8.  Update Rollup 10 is really where the magic takes place. Please note that we have tested ONLY an Outlook Client using Rollup 10 (this changes the query being sent by the client) and have noted significant improvements.

We do not recommend this approach for a production system as the server should ALWAYS be on a higher or equal update rollup then the client machines, and there could be harmful client issues.

Update Rollup 10 completely changes how the dynamic SQL scripts are created & executed. With the old query structure, all of the columns were executed together, hence SQL Server was unable to generate a good query execution plan because of all the join statements required.

Now, with Update Rollup 10, the dynamic SQL statements use separate SQL statements combined using SQL UNIONS. This change now allows for drastic performance improvements, taking advantage of SQL Server Native Execution Plans, giving us the ability to now further tune and build indexes for these additional unions avoiding complete SQL table scans.

Old SQL Query

where ((((“contact0”.StateCode = @StateCode0)) and ((
“contact0”.ParentCustomerIdName like @ParentCustomerIdName0 or
“contact0”.MiddleName like @MiddleName0 or
“contact0”.LastName like @LastName0 or
“contact0”.FullName like @FullName0 or
“contact0”.FirstName like @FirstName0 or
“contact0”.EMailAddress1 like @EMailAddress10 or
“contact0”.new_ContactIdentifier like @new_ContactIdentifier0 or
“contact0”.Address2_Line1 like @Address2_Line10 or
“contact0”.Address1_City like @Address1_City0

New SQL Query

where ((((“contact0”.StateCode = @StateCode0)) and ([contact0].[ContactId] in (
SELECT [ContactId] from [ContactBase] as “contact0” where
(“contact0”.ParentCustomerIdName like @ParentCustomerIdName0) OR
(“contact0”.MiddleName like @MiddleName0) OR
(“contact0”.LastName like @LastName0) OR
(“contact0”.FullName like @FullName0) OR
(“contact0”.FirstName like @FirstName0) OR
(“contact0”.EMailAddress1 like @EMailAddress10)
UNION SELECT [ContactId] from [ContactExtensionBase] as “contact0” where
(“contact0”.new_ContactIdentifier like @new_ContactIdentifier0)
UNION SELECT [ParentId] from [CustomerAddressBase] as “contact0” where
(“contact0”.Line1 like @Address2_Line10 and “contact0”.AddressNumber = 2 and “contact0”.ObjectTypeCode = 2) OR
(“contact0”.City like @Address1_City0 and “contact0”.AddressNumber = 1 and “contact0”.ObjectTypeCode = 2)))))

Example 2 Results:
1.5 Million Rows, Quick Search Contact Name, Rollup 8, Outlook Client 8.6 seconds, Web Client 8.7 Sec
1.5 Million Rows, Quick Search Contact Name, Rollup 10, Outlook Client 2.6 seconds, Web Client 2.6 Sec
– Again another Drastic search improvement across the board.

Finally, still believing we can get even more performance out of the system, we researched more into the specific fields in the customers quick find view. The quick find view was using a search (find) field that was in the Contact Extension Base. Upon removing this field from the quick find view, the results where even more impressive:

Example 3
1.5 Million Rows, Quick Search Contact Name, Rollup 10, Outlook Client 2.6 seconds, Web Client 2.6 Sec
1.5 Million Rows, Quick Search Contact Name, Rollup 10, Outlook Client 1.6 secs, Web Client 1.7 Secs The response is so fast I can barely hit my stop watch and enter key at the same time!

In closing, further tuning of this field, now that we can identify the union, should allow us to re-add the field and continue SQL performance tuning using the Database Tuning Advisor (future article on this). I would recommending reviewing any fields in the extension base and consider their value before adding them to the quick find, and at least trying to performance tune those results prior to release.

This is quick way to lose system performance by a user adding fields to the quick find (search) that are outside the main entity.

I’d like to thank Special thanks to Eric Hagen from Microsoft support, and my Tribridge team mate Mike Hauck & Wife for working many late evenings with me, researching and testing while putting his new born daughter to sleep on conference calls! Dedication 🙂