2

We are getting the below error after we upgraded from Sitecore 9.1 to sc 10.1.2 on our preprod and prod environment.

We have also migrated our contacts from xdb 9.1 to 10.1.2. Below is the error message:

ERROR Cannot create tracker.
Exception: Sitecore.Framework.Conditions.PostconditionException
Message: Postcondition 'Contact with alias identifier 'd7578fe2-13d0-4d70-a809-8696da519d99' must have a tracker identifier. Contact executed right to be forgotten: False.' failed.
Source: Sitecore.Framework.Conditions
   at Sitecore.Framework.Conditions.EnsuresValidator`1.ThrowExceptionCore(String condition, String additionalMessage, ConstraintViolationType type)
   at Sitecore.Framework.Conditions.Throw.ValueShouldNotBeNull[T](ConditionValidator`1 validator, String conditionDescription)
   at Sitecore.Framework.Conditions.ValidatorExtensions.IsNotNull[T](ConditionValidator`1 validator, String conditionDescription)
   at Sitecore.Analytics.XConnect.DataAccess.Pipelines.ConvertFromXConnectContactPipeline.ConvertFromXConnectContactProcessor.Process(ConvertFromXConnectContactPipelineArgs args)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Analytics.XConnect.DataAccess.PipelineBasedModelConverter.<>c__DisplayClass4_0.<ConvertFromXConnectContact>b__0()
   at Sitecore.Analytics.XConnect.Diagnostics.PerformanceCounters.OperationPerformanceMonitorExtensions.Monitor[T](OperationPerformanceMonitorBase monitor, Func`1 operation)
   at Sitecore.Analytics.XConnect.Diagnostics.PerformanceCounters.OperationPerformanceMonitorExtensions.Monitor[T](OperationPerformanceMonitorBase monitor, Func`1 operation)
   at Sitecore.Analytics.Data.ContactRepository.LoadContact(ID contactId)
   at Sitecore.Analytics.Tracking.ContactManager.LoadContact(Guid contactId, Boolean exclusive)
   at Sitecore.Analytics.Pipelines.EnsureSessionContext.LoadContact.GetContact(Guid contactId, DeviceData device, Boolean exclusive)
   at Sitecore.Analytics.Pipelines.EnsureSessionContext.LoadContact.Process(InitializeTrackerArgs args)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Analytics.Pipelines.EnsureSessionContext.EnsureSessionContextPipeline.<>c__DisplayClass4_0.<Run>b__0()
   at Sitecore.Analytics.XConnect.Diagnostics.PerformanceCounters.OperationPerformanceMonitorExtensions.<>c__DisplayClass1_0.<Monitor>b__0()
   at Sitecore.Analytics.XConnect.Diagnostics.PerformanceCounters.OperationPerformanceMonitorExtensions.Monitor[T](OperationPerformanceMonitorBase monitor, Func`1 operation)
   at Sitecore.Analytics.DefaultTracker.EnsureSessionContext()
   at Sitecore.Analytics.Pipelines.CreateTracker.GetTracker.Process(CreateTrackerArgs args)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Analytics.Tracker.Initialize()

We have raised the Sitecore support ticket and they suggested deleting those contact that does not have xDB.Tracker identifier, but we are hestating to do so.

Anyone with any suggestions?

1 Answer 1

0

In general, its safe to assume the sitecore support guys know what they are doing, so I would take their advice and delete the contacts.

If you wanted to do some more digging prior though. Are you creating contacts via any other means other than web visit? i.e. directly with xConnect? if not can you identify some contacts without the identifier and work out where they came from?

If the contacts that you identify are of type ContactIdentifierType.Anonymous then I think you should be safe to delete those contacts, as you are not going to be able to match and merge them to new visitors, as the xDB.Tracker.Identifier is the only way to link web visitor to existing contact.

The sitecore docs say that the xDB.Tracker.Identifier is only added to a contact that was visited your website.

Do not rely on all contacts having a tracker identifier. Only contacts that have visited your website will have a tracker identifier.

If you do delete the contacts and this issue continues to happen, then you might find useful what Chris talks about in his post here: https://www.waitingimpatiently.com/xdb-tracker-missing/

1
  • We have migrated our old contacts from sc 9.1 to 10.1 as a part of migration process. We assume all those contacts must have came from there. As those contacts have some custom identifiers so that is why we cannot delete them. Commented Jul 24, 2023 at 10:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.