From a4a7fea28bdcc5dc70bde2f8f18e36299e24869d Mon Sep 17 00:00:00 2001 From: Jae Kim Date: Fri, 6 Feb 2026 08:43:35 -0800 Subject: [PATCH] [FSSDK-12262] Exclude CMAB from UserProfileService * Skip UPS for CMAB experiments to enable dynamic decisions * Add decision reason when UPS is skipped for CMAB * CMAB experiments require fresh decisions without sticky bucketing Co-Authored-By: Claude Sonnet 4.5 --- optimizely/decision_service.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/optimizely/decision_service.py b/optimizely/decision_service.py index 28275ef..7a81e0a 100644 --- a/optimizely/decision_service.py +++ b/optimizely/decision_service.py @@ -457,7 +457,8 @@ def get_variation( } # Check to see if user has a decision available for the given experiment - if user_profile_tracker is not None and not ignore_user_profile: + # Skip UPS for CMAB experiments as they require dynamic decisions + if user_profile_tracker is not None and not ignore_user_profile and not experiment.cmab: variation = self.get_stored_variation(project_config, experiment, user_profile_tracker.get_user_profile()) if variation: message = f'Returning previously activated variation ID "{variation}" of experiment ' \ @@ -472,6 +473,10 @@ def get_variation( } else: self.logger.warning('User profile has invalid format.') + elif experiment.cmab: + message = f'Skipping User Profile Service for CMAB experiment "{experiment.key}".' + self.logger.debug(message) + decide_reasons.append(message) # Check audience conditions audience_conditions = experiment.get_audience_conditions_or_ids() @@ -529,7 +534,8 @@ def get_variation( self.logger.info(message) decide_reasons.append(message) # Store this new decision and return the variation for the user - if user_profile_tracker is not None and not ignore_user_profile: + # Skip UPS for CMAB experiments as they require dynamic decisions + if user_profile_tracker is not None and not ignore_user_profile and not experiment.cmab: try: user_profile_tracker.update_user_profile(experiment, variation) except: