Added Contact Is Not Shown in List Manager in a Scaled Sitecore XP 9


There was a time when I needed to help someone from finding what’s wrong with List Manager in a scaled SXP 9 (the exact version was Sitecore Experience Platform 9.0 rev. 180604 (9.0 Update-2)).
New contacts added into List Manager does not appear even though the blue color message box around the top area says:
The contact has been added to the list, and will be available after indexing.

Looking at the Sitecore logs, there are errors such as:
4244 17:14:27 ERROR [ListManagement]: Failed to get count of contacts for 86c048c4-761d-47c8-814f-30344a5dcac8 contact list. The error has been occurred: The HTTP response was not successful: InternalServerError
Exception: Sitecore.XConnect.XdbSearchUnavailableException
Message: The HTTP response was not successful: InternalServerError
Source: Sitecore.Xdb.Common.Web
   at Sitecore.Xdb.Common.Web.Synchronous.SynchronousExtensions.SuspendContextLock[TResult](Func`1 taskFactory)
   at Sitecore.XConnect.Client.XConnectSynchronousExtensions.SuspendContextLock[TResult](Func`1 taskFactory)
   at Sitecore.XConnect.Client.XConnectSynchronousExtensions.GetBatchEnumeratorSync[TEntity](IAsyncQueryable`1 asyncQueryable, Int32 defaultBatchSize)
   at Sitecore.XConnect.Segmentation.SegmentationEngine.<>c.<CountContacts>b__24_0(IAsyncQueryable`1 contacts)
   at Sitecore.XConnect.Segmentation.SegmentationEngine.PerformSearch[T](IContactSearchQueryFactory queryFactory, Func`2 searchWork, Byte[] syncToken, ContactExpandOptions expandOptions)
   at Sitecore.XConnect.Segmentation.SegmentationEngine.CountContacts(IContactSearchQueryFactory queryFactory)
   at Sitecore.ListManagement.Services.Repositories.ListRepositoryBase`1.<>c__DisplayClass51_0.<GetRecipientCount>b__0()

7860 17:14:27 ERROR [ListManagement]: Failed to get count of contacts for 86c048c4-761d-47c8-814f-30344a5dcac8 contact list. The error has been occurred: The HTTP response was not successful: InternalServerError
Exception: Sitecore.XConnect.XdbSearchUnavailableException
Message: The HTTP response was not successful: InternalServerError
Source: Sitecore.Xdb.Common.Web
   at Sitecore.Xdb.Common.Web.Synchronous.SynchronousExtensions.SuspendContextLock[TResult](Func`1 taskFactory)
   at Sitecore.XConnect.Client.XConnectSynchronousExtensions.SuspendContextLock[TResult](Func`1 taskFactory)
   at System.Linq.Buffer`1..ctor(IEnumerable`1 source)
   at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
   at Sitecore.XConnect.Segmentation.SegmentationEngine.PerformSearch[T](IContactSearchQueryFactory queryFactory, Func`2 searchWork, Byte[] syncToken, ContactExpandOptions expandOptions)
   at Sitecore.XConnect.Segmentation.SegmentationEngine.FindContacts(IContactSearchQueryFactory queryFactory, Int32 skip, Int32 take, ContactExpandOptions expandOptions)
   at Sitecore.ListManagement.XConnect.ContactProvider.GetFilteredContacts(ContactList contactList, String searchFilter, Int32 pageIndex, Int32 pageSize)
   at Sitecore.ListManagement.Services.Repositories.ListSubscriptionsStore.GetSubscribers(Guid listId, String searchFilter, Int32 pageIndex, Int32 pageSize)
   at Sitecore.ListManagement.Services.Controllers.ContactsController.GetEntities(Guid listId, String filter, Int32 pageIndex, Int32 pageSize)


Both calls from ListRepositoryBase and ContactsController lead to [Sitecore.XConnect.XdbSearchUnavailableException], therefore, I decided to check what error I could find in the xConnect.

The xConnect connected by the CM is shown in the ConnectionStrings.config with the name “xconnect.collection”. I checked the connected xConnect server and I could find several error logs such as:
2018-11-22 17:13:44.095 +00:00 [Error] Sitecore.XConnect.Operations.XdbSearchOperation`1[Sitecore.XConnect.Contact]: System.NotSupportedException: Specified method is not supported.
   at Sitecore.Xdb.Collection.Indexing.IndexReaderDisabled.SearchContacts(SearchQuery searchQuery)
   at Sitecore.Xdb.Collection.Repository.<SearchContacts>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sitecore.Xdb.Collection.RepositoryCountersDecorator.<SearchContacts>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sitecore.XConnect.Service.RepositorySearchInvoker.<Execute>d__7.MoveNext()
2018-11-22 17:13:44.095 +00:00 [Error] ["XdbContextLoggingPlugin"] XdbContext Batch Execution Exception
System.NotSupportedException: Specified method is not supported.
   at Sitecore.Xdb.Collection.Indexing.IndexReaderDisabled.SearchContacts(SearchQuery searchQuery)
   at Sitecore.Xdb.Collection.Repository.<SearchContacts>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sitecore.Xdb.Collection.RepositoryCountersDecorator.<SearchContacts>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Sitecore.XConnect.Service.RepositorySearchInvoker.<Execute>d__7.MoveNext()

At first I wasn’t able to reproduce the above issue as I hadn’t identified what could be the issue. After some long investigation, I decided to take some break, and tried it out in a clean instance of Sitecore.

Eventually, I found that the problematic Sitecore instance (CM server) had its setting “xconnect.collection” connected to a different xConnect than the one in a clean Sitecore instance. When I first finished installing my Sitecore in Azure (via Sitecore Experience Cloud), I found that the value in the setting “xconnect.collection” (in CM’s ConnectionStrings.config) was the server “xxx-xc-search” by default, however the problematic Sitecore connected that setting to the server “xxx-xc-collect”.

I then tried to change my default setting “xconnect.collection” to use the one used by the problematic Sitecore, which was “xxx-xc-collect”. I was then able to reproduce the issue (the contact in List Manager doesn’t appear).

I would conclude that the issue above was caused by the CM’s "xconnect.collection" setting connecting to a different server than“xxx-xc-search”. There must be certain operations available in "xxx-xc-search" which server "xxx-xc-collect" could not do.

Comments