Ineligible for migrating to Full Stack Flags version
If your Full Stack Legacy project contains the following scenario, your project is ineligible to migrate to Full Stack Flags version. There are several solutions, but you must decide how you would like to rectify the issue for your project.
Your project is ineligible to migrate to Flags version 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
- Select the Features tab.
- Select one of the features you want to check.
- 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 1 or 100, your project is ineligible to upgrade.
- Repeat steps 2-3 for all features.
Example of ineligible setup
In Legacy, the default Everyone Rule is always evaluated last and has an adjustable traffic allocation. Flags have 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 Flags to all remaining traffic:
That difference in behavior means we cannot migrate Feature Flags in this state while maintaining backward compatibility.
The crux of the issue is that Optimizely went from
N rules in targeted rollouts to
N+1 in Full stack flags version. This is currently needed because Full Stack flags version does not let you control the traffic allocation on the last "Everyone else” rule, so Opitimizely cannot always map an “Everyone” targeted rollout rule to the “Everyone else” flags rule. Any targeted rollout feature that has a traffic value besides 0% or 100% for the Everyone rule faces this issue.
- 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."