Ineligible to migrate to Optimizely Feature Experimentation from Optimizely Full Stack Experimentation due to "Everyone" rules set greater than 0 and less than 100

  • Updated

If your Optimizely Full Stack Experimentation project contains the following scenario, your project is ineligible to migrate to Optimizely Feature Experimentation. There are several solutions, but you must decide how you would like to rectify the issue for your project.

Scenario

Your project is ineligible to migrate to Optimizely Feature Experimentation if you have multiple rules per feature and the Everyone rule has its traffic allocation percentage set at any value except 0 or 100.

How to check

  1. Select the Features tab.
  2. Select one of the features you want to check.
  3. View the feature's audience rules.
    • If you have multiple rules, check if the last rule's traffic allocation is a percentage other than 0 or 100. If it is any number other than 0 or 100, your project is ineligible to upgrade.
    • For example, if your rule's traffic allocation is set to 50, your project is ineligible to upgrade.
  4. Repeat steps 2-3 for all features.

Example of ineligible setup

multiple-rules-per-flag-audience.png

Technical reasoning

In Optimizely Full Stack Experimentation, the default Everyone rule is always evaluated last and has an adjustable traffic allocation.

Optimizely Feature Experimentation has a similar default rule that is evaluated last, but you only select a variation and do not set the traffic allocation. All remaining traffic is automatically delivered to the selected variation.  

Delivering Off variation in Feature Experimentation to all remaining traffic:

mceclip1.png

That difference in behavior means we cannot migrate feature flags in this state while maintaining backward compatibility. 

The core of the issue is that Optimizely went from N rules in Full Stack Experimentation to N+1 in Feature Experimentation. This is currently needed because Feature Experimentation does not let you control the traffic allocation on the last "Everyone else” rule, so Optimizely cannot always map an "Everyone" targeted rollout rule to the "Everyone else" flags rule. Any targeted rollout features with a traffic value besides 0% or 100% for the Everyone rule will confront this issue.

Possible solutions:

  • Set the last rule's Rollout Traffic allocation to 0 
    • After the migration, your feature flag will be set to "off."
  • Set the last rule's Rollout Traffic allocation to 100
    • After the migration, your feature flag will be set to "on."