I was trying to create custom facets in Sitecore 9.0 Update 1. I was able to create one and add a custom tab in experience profile. I fill the custom facet data with the help of a WFFM form. I see the data is being saved to _Shard DB. I get an error while data retrieval.
The error occurs only on a scaled Sitecore Azure environment and the error is visible in logs generated within the reporting web server. On an on-premise environment everything works fine. Also on Azure, if I force CM to also do processing and reporting, everything works fine.
The solution works fine on On-Premise Standalone environment.
I have added the necessary patch files to the include folder. I see the files are patched fine in the show.config. I have the pipeline patch as required.
The error details are as shown below:
Exception: Sitecore.XConnect.XdbCollectionUnavailableException
Message: An error occurred while sending the request.
Source: Sitecore.Xdb.Common.Web
at Sitecore.Xdb.Common.Web.Synchronous.SynchronousExtensions.SuspendContextLock[TResult](Func`1 taskFactory)
at Sitecore.XConnect.Client.XConnectSynchronousExtensions.SuspendContextLock(Func`1 taskFactory)
at sSupport.Controllers.ContactQueryPipelineProcessor.GetContact(Guid contactId, String[] facets)
at sSupport.Controllers.ContactQueryPipelineProcessor.GetTableFromContact(DataTable rawTable, Guid contactId)
at sSupport.Controllers.ContactQueryPipelineProcessor.Process(ReportProcessorArgs args)
at (Object , Object[] )
at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
at Sitecore.Cintel.Reporting.ReportingServerDatasource.QueryPipelineDataSource.GetData(ReportDataQuery query)
Nested Exception
Exception: System.InvalidOperationException
Message: The certificate was not found.
Source: Sitecore.Xdb.Common.Web
at Sitecore.Xdb.Common.Web.CertificateWebRequestHandlerModifier.Process(HttpClientHandler handler)
at Sitecore.Xdb.Common.Web.CommonWebApiClient`1.CreateRequestHandler()
at Sitecore.Xdb.Common.Web.CommonWebApiClient`1.CreateClient()
at System.Lazy`1.CreateValue()
at System.Lazy`1.LazyInitValue()
at Sitecore.Xdb.Common.Web.CommonWebApiClient`1.d__37.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.Common.Web.CommonWebApiClient`1.d__32.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.Client.WebApi.ConfigurationWebApiClient.d__4.MoveNext()
The "sSupport.Controllers.ContactQueryPipelineProcessor" is the custom project which is used to get the data from xConnect.
Also, i have the xconnect.collection.certificate value in my reporting server ConnectionString.config with thumbprint and AllowInvalidClientCertificates=true.
The same is true for CM server (which is able to get the custom facet data).
Any help is much appreciated.