I'm looking at an XP implementation that uses personalization rules to hide/show renderings based on a set of custom defined rules (sources 1, 2). For example:
- Rule: Is user of X type?
- Action: Run code to inspect user cookie and return true/false
- Outcome: Hide or show the component based on result of above rule
Our custom rules aren't doing anything fancy; they are independent of xConnect/xDB.
The problem is that when xConnect is unavailable or experiences errors (ex. certificate issues), or when tracking is disabled, the personalization rules appear to stop working, and renderings fall back to their default display settings. I can reliably replicate this by disabling xDB on my local.
The best documentation I found is here (9.3) (10.3). Notably, it breaks down which rules are available to XM vs XP. It also shows all of the personalization conditions.
This topic describes the personalization conditions that are available by default in the Sitecore Experience Platform (XP) and indicates which conditions are available in Sitecore Experience Manager (XM or XP with the xDB disabled).
This seems to imply that as far as personalization conditions are concerned, if xDB is disabled, an XP implementation essentially becomes an XM implementation.
Further,
While you can use many conditions from the Rule Set Editor to personalize content when using XM, there are some conditions that are only available when you run xDB and the full XP.
This makes sense. And the doc breaks that down very well. It also specifically mentions 2 rules that are relevant to this question:
- xDB is enabled
- Tracking is enabled
Both XM and XP can use the conditions above for personalization, which implies that xDB and tracking are not required to be enabled for component personalization to work, but that's not the behavior I am seeing.
What the documents don't specifically call out is custom code-driven conditions, although it could be this:
Is the behavior I'm seeing normal? Beyond having an XM/XP license, what prerequisites are required to personalize the presentation of a component with custom conditions / rules?