We are running a Sitecore 8.2.0 instance with EXM 3.4 In logs there are bunch of exceptions like:

9200 04:19:17 ERROR Failed to process an email opened task
Exception: Sitecore.Modules.EmailCampaign.Exceptions.MessageEventPipelineException
Message: Custom values not found for Message id: {098F3624-A046-4D57-841D-B973316AB55C}, Instance id: {098F3624-A046-4D57-841D-B973316AB55C}, Contact id: {36DE6791-2BA1-4F4B-A05E-B9E7A3304F93}
Source: Sitecore.EmailCampaign
   at Sitecore.Modules.EmailCampaign.Core.Pipelines.HandleMessageEventBase.SetCustomValues.Process(HandleMessageEventPipelineArgs args)
   at (Object , Object[] )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.Modules.EmailCampaign.Core.PipelineHelper.RunPipeline(String pipelineName, PipelineArgs args, String pipelineDomain)
   at Sitecore.EmailCampaign.Cd.Tasks.EmailOpenedTaskProcessor.OnProcess(ShortRunningTask task, CancellationToken cancellationToken)

What are those custom values? what could be wrong with it?

1 Answer 1



Up until, and including, EXM 3.4, EXM creates an associated engagement plan for each email campaign.

Once a contact interacts with an email campaign (e.g. click or open a link), EXM will move the contact to the appropiate state in the engagement plan.

On a side note, before EXM 3.3, the EXM reporting was based on the engagement plan. In EXM 3.3+ the reporting is now based on xDB data.


For every contact in the engagement plan, EXM stores custom values e.g. which email address was used, which test variant (if any) and the target language.

When a contact interacts with an email campaign (e.g. by openining the email or clicking a link), the custom values for that contact will be looked up in the engagement plan. Unfortunately, this lookup is unreliable as the engagement plans are not always in sync, and this will cause the lookup to sometimes fail - as in your case. This is, most of the time, a temporary error though and the lookup will be retried. It's not immediately obvious in your case though, as we don't have the entire stacktrace.

This problem was address in EXM 3.5+, which no longer relies on engagement plans to store the custom values.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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