---
title: Update from older versions of the Java SDK
slug: feature-experimentation/docs/migrate-from-older-versions-java
docTags: 
createdAt: 2026-08-05T20:40:01.000Z
---

This section provides code examples for how You should leveraging the new [Decision](docId:6ZSh7uRg7JxlrHwft2Ogf) and [Event Tracking](docId\:siDJxMQqZQdP3-_90yI3o) APIs. All existing [Full Stack (Legacy)](docId:6_ik6SSz-WyJLWuCQw7BT) methods and implementation are still supported. See [Optimizely Feature Experimentation - application & migration](docId\:bykQnE4aGRkC5WXhU6Yi5) documentation for the latest updates.

You should adopting the new `Decide`, `Decide All`, and `Track Event` methods as a more flexible and easier-to-use replacement where you currently use `isFeatureEnabled`, `getFeatureVariable`, `getAllFeatures`, or `Track` calls within your implementation.

The following are examples of how to migrate the Full Stack (Legacy) methods to Feature Experimentation methods:

```java
// -------------------------------
// Prereq for new methods: create a user
// ------------------------------
Map<String, Object> attributes = new HashMap<>();
attributes.put("is_logged_in", true);
OptimizelyUserContext user = optimizely.createUserContext("user_123", attributes);


// -------------------------------
// Is Feature Enabled
// ------------------------------
// old, Full Stack  method

Boolean enabled = optimizely.isFeatureEnabled("flag_1", "user_123", attributes);

// new, Feature Experimentation method
OptimizelyDecision decision = user.decide("flag_1");
boolean enabled = decision.getEnabled();


// -------------------------------
// Activate & Get Variation
// ------------------------------
// old, Full Stack method
Variation variation = optimizely.activate("experiment_1", "user_123", attributes);

// new, Feature Experimentation method
String variationKey = decision.getVariationKey();


// -------------------------------
// Get All Feature Variables
// ------------------------------
// old, Full Stack method
OptimizelyJSON json = optimizely.getAllFeatureVariables("flag_1","user_123", attributes);
 
// new, Feature Experimentation method
OptimizelyJSON json = decision.getVariables();


// -------------------------------
// Get Enabled Features
// ------------------------------
// old, Full Stack method
List<String> enabledFlags = optimizely.getEnabledFeatures("user_123", attributes);

// new, Feature Experimentation method
List<OptimizelyDecideOption> options = Arrays.asList(OptimizelyDecideOption.ENABLED_FLAGS_ONLY);
Map<String, OptimizelyDecision> decisions = user.decideAll(options);
Set<String> enabledFlags = decisions.keySet();


// -------------------------------
// Track
// ------------------------------
// old, Full Stack method
Map<String, Object> tags = new HashMap<>();
tags.put("purchase_count", 2);
optimizely.track("my_purchase_event_key", "user_123", attributes, tags);

// new, Feature Experimentation method
user.trackEvent("my_purchase_event_key", tags);
```
