4

We use Sitecore 9 update 1 and we utilize the out of the box Email Experience Manager (EXM) of it. But we encountered an issue with regards to personalization of an email campaign. It seems the personalization using rules/condition is not working.

Anybody from this community experienced and solve this?

Thanks in advance

5
  • We are also experiencing this on our Sitecore 9 Update 1 Environment. Personalization in the EXM is not working.
    – Jovit Mayo
    Mar 15, 2018 at 7:07
  • You should create ticket to Sitecore Support Mar 15, 2018 at 7:34
  • There is already Cumulative hotfix for EXM 9.0 Update-1 -> kb.sitecore.net/articles/467253 <- but it is not solving this particular issue as far as I can see in release notes Mar 15, 2018 at 7:35
  • All rules don't work? Or some particular?
    – Anton
    Mar 15, 2018 at 14:04
  • Hi Anton, we've tried most of the available conditions in there and any of them don't work. Mar 16, 2018 at 2:36

1 Answer 1

5

This has been fixed in the cumulative hotfix for EXM 9.0 Update-1

The problem is that the contact is never being identified during dispatch. This needs to happen in the ensureSessionContext pipeline.

Add the following pipeline processor

public class LoadEmailRenderSessionContact
{
    public ContactRepositoryBase ContactRepository { get; set; }

    public void Process(InitializeTrackerArgs args)
    {
        if (!ExmContext.IsRenderRequest || ExmContext.ContactIdentifier == null || ContactRepository == null)
        {
            return;
        }

        Contact contact = ContactRepository.LoadContact(ExmContext.ContactIdentifier.Source, ExmContext.ContactIdentifier.Identifier);

        if (contact == null)
        {
            return;
        }

        args.Session.Contact = contact;
    }
}

and add it to the ensureSessionContext pipeline:

<ensureSessionContext role:require="Standalone or ContentManagement or DedicatedDispatch or ContentDelivery">
    <processor type="FooBar.LoadEmailRenderSessionContact, FooBar" x:before="processor[@type='Sitecore.Analytics.Pipelines.EnsureSessionContext.LoadContact, Sitecore.Analytics']" resolve="true">
        <ContactRepository ref="contactRepository" />
    </processor>
</ensureSessionContext>

Additionally, you should make sure that the tracker is enabled for the site as MVC personalization will otherwise not work i.e. set enableTracking="true" on the exm site e.g..

<site name="exm" enableTracking="true" inherits="shell" virtualFolder="/" physicalFolder="/" startItem="/none" cacheHtml="true" htmlCacheSize="50MB" />

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.