I tried to use some of the OOTB conditional rendering rules for personalization I had running in a Sitecore 8 instance, after upgrade/migrate to Sitecore 9 and ran into the fact that some of them no longer work.

I first noticed this with the rule: where the referrer [operatorid,StringOperator,,compares to] [Referrer,,,specific value]

which is defined in item: /sitecore/system/Settings/Rules/Definitions/Elements/Visit/Referrer

For some reason, this rule is not working in Sitecore 9

1 Answer 1


[Answering my own question here]

After some digging I found that this rule, which has as 'Type' definition: Sitecore.ExperienceAnalytics.Aggregation.Rules.Conditions.ReferrerCondition,Sitecore.ExperienceAnalytics

Actually is nowhere to be found in the Sitecore 9 Sitecore.ExperienceAnalytics assemblies. So I decided to file a Sitecore support ticket.

The conversation I had was the following:

Hello Joost,

The issue here is that "The rules items were supposed to be removed". Starting from 9.0 Experience Analytics stopped using these rules and they were replaced by the new segmentation rules, So all the rule items and the related types were removed from Experience Analytics libraries but rule items under /sitecore/system/Settings/Rules/Definitions/Elements/Visit/* were not removed.

This has been registered as a bug.

To track the future status of this bug report, please use the reference number 198463. More information about public reference numbers can be found here: https://kb.sitecore.net/articles/853187

The whole architecture was replaced with the new segmentation rules, So there are no rule items anymore (i.e., items inheriting from rule template defined in /sitecore/templates/System/Rules) instead we created our own rules using our own template which is /sitecore/templates/System/Experience Analytics/Segment. E.g., the rule ‘/sitecore/system/Settings/Rules/Definitions/Elements/Visit/Visit language’ was replaced by the segment ‘/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Visits/By language/All visits by language’

Please refer to the below link for creating a new segment and a custom filter which could help you if you are attempting to use those rules in Experience Analytics (e.g., creating a custom filter that filter customers with the age > 20, Adding this filter to a custom segment which is a child to a dimension ‘/sitecore/system/Marketing Control Panel/Experience Analytics/Dimensions/Visits/By language’ would result in having this segment showing customers with the age > 20 by language.


Kind regards,

Hi ***,

thanks that explains that. But it doesn’t explain why all these rules are still available for personalization but don’t seem to work. What should we do to use them in personalization?


Edited by *** on Monday, May 21, 2018 at 2:50 PM (UTC)

Hi Joost,

Thank you for the update.

What should we do to use them in personalization? As far as the implementation of those conditions was removed from the code of the Sitecore 9 release and the corresponding condition items will be removed in the next releases, the way you should follow if you want to use the same conditions in personalization rule is to implement your own custom conditions:

To create a custom rule (condition) for personalization and learn about rule engine you can refer to the following posts: https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/rules-engine-implementations-with-the-sitecore-asp-net-cms

Please do not hesitate to contact us in case you need any additional assistance regarding this issue.

So this means that actually to have these kind of rules, used by for example conditional renderings, we need to implement them ourselves. It is quiet tricky as these item definitions still exist and show up in your conditions/rule book when creating personalization conditions, but they don't actually work in Sitecore 9.

So far I see that a lot of items under: /sitecore/system/Settings/Rules/Definitions/Elements/Visit

Seem to be defined in the Sitecore.ExperienceAnalytics.Aggregation.Rules.Conditions namespace which no longer exist. There may be more, so if you want to be sure, or if you run into such rules no longer working, make sure to do a quick check on this item/type definition and whether or not it still exists to prevent you from breaking your head on what you are doing wrong in your code/setup.

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.