Setting up a local Experience Profile in Sitecore 9

The Sitecore Experience Profile is a useful tool for viewing the contacts that have visited your app and the paths they followed during their visit. Therefore it's important for developers to have the Experience Profile working in your local development environment.

Without taking these steps, my Experience Profile was completely empty, even though Experience Analytics was showing multiple visits over the course of a few months of local development.

  • To start the investigation, I viewed the logs for my xConnect instance: C:\inetpub\wwwroot\{sitename}.xconnect\App_data\Logs
    And I saw a lot of this error:
2018-07-25 10:17:31.905 -05:00 [Error] Access to the registry key 'Global' is denied.System.UnauthorizedAccessException: Access to the registry key 'Global' is denied.   at Microsoft.Win32.RegistryKey.Win32Error(Int32 errorCode, String str)   at Microsoft.Win32.RegistryKey.InternalGetValue(String name, Object defaultValue, Boolean doNotExpand, Boolean checkSecurity)   at Microsoft.Win32.RegistryKey.GetValue(String name)   at System.Diagnostics.PerformanceMonitor.GetData(String item)   at System.Diagnostics.PerformanceCounterLib.GetPerformanceData(String item)   at System.Diagnostics.PerformanceCounterLib.get_CategoryTable()   at System.Diagnostics.PerformanceCounterLib.CategoryExists(String machine, String category)   at System.Diagnostics.PerformanceCounterCategory.Exists(String categoryName, String machineName)   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)   at Sitecore.XConnect.Diagnostics.PerformanceCounters.SystemPerformanceCounters.Initialize(String counterFilePattern)

It turns out that xConnect needs the ApplicationPoolIdentity added to the "Performance Monitor Users" group locally. I added the user "IIS APPPOOL\{sitename}.xconnect" to this group. You can do this by adding the Local Users and Groups snap-in to MMC.

It took a few minutes after this was done, but the indexer ran again and now I have results showing up in my xProfile.