There must be one and only one site map in the system

While working on adding an additional Dynamics CRM Web Server to an existing installation, I came across an interesting error that I spent a lot of time troubleshooting. I hope this blog post will help others solve this problem or a similar problem in the future in much less time. The installation for the additional server completed without any issues, however when attempting to browse the web server locally using https://localhost , I was redirected to the ADFS login page but then received a generic CRM exception page.
The full error message from the ADFS Admin Event Log is shown below.

>Crm Exception: Message: There must be one and only one site map in the system, ErrorCode: -2147220970
[2018-03-29 02:19:46.894] Process: w3wp |Organization:00000000-0000-0000-0000-000000000000 |Thread:   64 |Category: Application |User: 00000000-0000-0000-0000-000000000000 |Level: Error |ReqId: 92375383-1fe1-4cd7-8a26-58c673398b55 | HttpApplication.RaiseOnError  ilOffset = 0x0
>Request https://localhost/Staging/main.aspx failed with exception Microsoft.Crm.CrmException: There must be one and only one site map in the system
   at Microsoft.Crm.CrmException.Assert(Boolean condition, String message)
   at Microsoft.Crm.Application.MasterSiteMap.RetrieveSiteMap(Boolean useReferenceXml, Boolean retrieveLatest, IOrganizationContext context)
   at Microsoft.Crm.Application.MasterSiteMap.LoadMasterSiteMapInternal(DynamicMetadataCache metadataCache, Boolean useReferenceXml, Boolean retrieveLatest, IOrganizationContext context)
   at Microsoft.Crm.Application.MasterSiteMap.LoadMasterSiteMap(DynamicMetadataCache metadataCache, Boolean retrieveLatest, IOrganizationContext context)
   at Microsoft.Crm.Caching.MasterSiteMapCacheLoader.LoadCacheData(Int32 key, IOrganizationContext context)
   at Microsoft.Crm.Caching.CrmMultiOrgCacheBase`2.LookupEntry(TKey key, IOrganizationContext context)
   at Microsoft.Crm.Application.SiteMap.GetSiteMapForUser(IUser user, Client client, Boolean isOffline, String forceGroupProfiles)
   at Microsoft.Crm.Application.SiteMap.GetSiteMapForUser(IUser user)
   at Microsoft.Crm.Application.Controls.AppNavBar..ctor()
   at ASP.staging_main_aspx.__BuildControlcrmAppNav()
   at ASP.staging_main_aspx.__BuildControlTree(staging_main_aspx __ctrl)
   at ASP.staging_main_aspx.FrameworkInitialize()
   at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
   at System.Web.UI.Page.ProcessRequest()
   at System.Web.UI.Page.ProcessRequest(HttpContext context)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Additionally, there were occasional messages in the ADFS Admin Event Log with the message “Microsoft.IdentityServer.Service.Policy.PolicyServer.Engine.InvalidAuthenticationTypePolicyException: MSIS7102: Requested Authentication Method is not supported on the STS.”

I spent quite a bit of time trying to figure out what was going on before this article on the Dynamics CRM Community Forums triggered something in my brain that maybe there was a versioning problem of some kind.
Deployment Manager showed that my existing servers were version 8.2.0000.0479 while my new server was version 8.0.0000.1088 .
A quick search on Google revealed that I was missing Update 2 from the new server. After applying Update 2 (which took about 45 minutes) and restarting the server, browsing the web server locally worked as well as accessing the web server through its associated Load Balancer.

Let's talk

If you want to get a free consultation without any obligations, fill in the form below and we'll get in touch with you.