I am trying to utilize the built-in Device Detection that is provided out-of-the-box with Sitecore 9.0.1. Reading all of the documentation on this, it appears that this is enabled automatically without any configuration needed.
However, I am running into issues on a basically vanilla implementation of Sitecore. Here is my setup:
I'm using Sitecore 9.0.1 on Azure PaaS in xP1 topology. I have a Web Service for each Sitecore role (CM, CD, Processing, and Reporting) as well as all of the xConnect stuff. I have a simple Sitecore site with zero customizations other than light configurations (SiteDefinition.config, SMTP config). Otherwise, completely vanilla.
No Device Detection or GeoIP is being logged into Sitecore analytics, even though I have a bunch of visits.
An examination of my logs highlight the following error message from the CM Server:
Application: 2018-04-11T15:41:22 PID[6932] Warning ManagedPoolThread #6 15:41:22 WARN Authentication on CES Discovery service failed.
Application: Exception: System.Net.WebException
Application: Message: The remote server returned an error: (403) Forbidden.
Application: Source: System
Application: at System.Net.HttpWebRequest.GetResponse()
Application: at Sitecore.CES.Client.WebClient.<>c__DisplayClass6_0.<ExecuteRequest>b__0()
Application: at Sitecore.CES.Client.WebClient.Execute[T](Func`1 action, String requestUri)
Application: at Sitecore.CES.Client.ResourceConnector`1.Request(String endpoint, Object[] parameters)
Application: at Sitecore.CES.Discovery.EndpointSource.GetEndpoint(String serviceName)
Application:
Application:
Application: 2018-04-11T15:41:22 PID[6932] Error ManagedPoolThread #6 15:41:22 ERROR Could not update device detection database
Application: Exception: System.ArgumentNullException
Application: Message: Null ids are not allowed.
Application: Parameter name: endpointUri
Application: Source: Sitecore.Kernel
Application: at Sitecore.Diagnostics.Assert.ArgumentNotNullOrEmpty(String argument, String argumentName)
Application: at Sitecore.CES.Client.WebClient.DownloadBinaryContent(String endpointUri, String resourcePath, DownladBinaryContentParameters parameters)
Application: at Sitecore.CES.DeviceDetection.Providers.FiftyOneDegrees.FiftyOneDeviceDetectionClient.GetNewerVersion()
Application: at Sitecore.CES.DeviceDetection.Providers.FiftyOneDegrees.FiftyOneDeviceDetectionClient.DoUpdate(String serviceName, String& newDatabasePath, String& newDatabaseVersion)
Application: at Sitecore.CES.DeviceDetection.Providers.DeviceDetectionClient.Update()
Anyone have any pointers?