> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/feature-flags/new-to-feature-flags/migrate-to-fme.md).

# Migrate to FME

Migrate from Harness Feature Flags (FF) to Feature Management and Experimentation (FME), including the migration script, SDK changes, and rollout steps

{% hint style="danger" %}
**Feature Flags is deprecated**

Free plan customers must migrate to Harness Feature Management and Experimentation (FME) by **December 31, 2026**. Paid plan customers must migrate by **April 30, 2027**, unless they secure an exception. Contact your Customer Success Manager (CSM) to discuss an exception.
{% endhint %}

Harness Feature Management and Experimentation (FME) is the next-generation feature flagging platform and replaces the legacy Feature Flags (FF) module. FME is built on the Split platform and offers a more mature, reliable, and capable experience.

This guide walks you through the migration from FF to FME. To explore FME before you start, go to [Get started with FME](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/README.md) or [Start FME in Harness](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/split-and-harness/README.md). The guide covers understanding the differences, running the migration script, and validating your integration.

## Why move from FF to FME

* FF SDKs are no longer actively updated or maintained.
* FME SDKs receive regular releases with new features, bug fixes, and expanded language support.
* FF has experienced recurring incidents and degradations.
* FME unlocks advanced experimentation capabilities: [A/B testing](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/experimentation/overview/README.md), [metric tracking](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/metrics/index/README.md), and [release monitoring](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/overview/README.md).
* FME is fully integrated into Harness [pipelines](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/pipelines/README.md), [OPA policies](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/policies/README.md), and [RBAC](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/permissions/rbac/README.md).
* FME includes Harness University self-paced training and certifications.

## Key differences between FF and FME

| Dimension         | FF (Feature Flags)                                          | FME (Feature Management and Experimentation)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| ----------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| SDK maintenance   | No longer updated                                           | Actively maintained, regular releases. Go to the [SDK versioning policy](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/versioning-policy/README.md).                                                                                                                                                                                                                                                                                                                         |
| SDK syntax        | Uses targets with attributes inline                         | Uses the Split namespace. [Attributes](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/targeting/target-with-custom-attributes/README.md) are separate from targets.                                                                                                                                                                                                                                                                                                                                 |
| Targeting model   | Target groups                                               | [Segments](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/targeting/segments/README.md) (Standard, Rule-Based, Large). Top-down evaluation. Go to [Define feature flag treatments and targeting](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/define-feature-flag-treatments-and-targeting/README.md).                                                                                                            |
| Flag evaluation   | Remote API calls                                            | Local in-memory evaluation, with rules served by a dual-layer CDN (Fastly). Under 200 ms globally.                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| Streaming         | Known issues with mobile and app suspend/resume             | Streaming with automatic fallback to polling, fully managed by the SDK                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| Experimentation   | Not available                                               | Full [A/B testing](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/experimentation/overview/README.md), [metric tracking](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/metrics/index/README.md), and [release monitoring](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/overview/README.md)                                                                      |
| Personas and RBAC | Full RBAC. Product teams can be granted appropriate access. | Full [RBAC](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/permissions/rbac/README.md). Product teams can be granted appropriate access.                                                                                                                                                                                                                                                                                                                                                         |
| Pipelines         | Yes                                                         | Full FME [pipeline integration](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/pipelines/README.md). Also integrates with Harness CD pipelines.                                                                                                                                                                                                                                                                                                                                                  |
| OPA support       | Yes                                                         | Yes. Go to [Policies](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/policies/README.md).                                                                                                                                                                                                                                                                                                                                                                                                        |
| Proxy required    | Yes, for HA and global use                                  | No. Rules are served through the Fastly CDN. The [Split Proxy](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/customer-deployed-components/split-proxy/README.md) and [Synchronizer](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/customer-deployed-components/split-synchronizer/README.md) are optional infrastructure for private-network or single-egress-point setups. |
| Flag types        | Boolean, Multivariate, JSON, and more                       | Treatments are string-based. JSON payloads are supported through [dynamic configuration](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/dynamic-configurations/README.md).                                                                                                                                                                                                                                                                                                                    |

## How the FME SDK works

Understanding the FME SDK architecture helps you plan your integration. Go to [SDKs and customer-deployed components](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/README.md) for details, and [Remote vs local evaluation](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/client-side-sdks/evaluation-modes/README.md) to choose the right client-side SDK.

* **Local evaluation:** The SDK downloads the full flag rule set at startup and evaluates flags in memory. There is no API round trip per flag evaluation.
* **CDN-served rules:** Flag definitions are served from a dual-layer CDN (Fastly) with global points of presence, delivering flags in under 200 ms worldwide. No proxy is needed in standard deployments.
* **Streaming updates:** The SDK opens a streaming connection to receive real-time flag changes. It falls back to polling automatically if streaming is unavailable.
* **Polling fallback:** Managed by the SDK with exponential back-off, and no code changes are required. Polling frequency is configurable.

## Common questions

<details>

<summary>Can FF and FME run at the same time?</summary>

Yes. Both modules are fully independent within the same Harness account, so your teams can run both during migration.

</details>

<details>

<summary>Do we need a new SDK?</summary>

Yes. FME uses a different SDK (Split namespace). Go to [Install the FME SDK](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/install-the-sdk/README.md). Use the migration script together with a wrapper that preserves the same API surface in your application.

</details>

<details>

<summary>What about archived flags in FF?</summary>

Archived FF flags do not migrate automatically. You decide whether to bring them over or leave them archived. Common guidance is to migrate only long-term or permanent flags and let deprecated flags retire in FF.

</details>

<details>

<summary>What languages does FME support?</summary>

FME supports Java, .NET, Go, JavaScript, Python, Ruby, iOS, Android, React, Node.js, PHP, Flutter, Erlang, and more. Go to [SDKs and customer-deployed components](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/README.md) for the full list, including [client-side SDKs](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/client-side-sdks/README.md) and [server-side SDKs](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/README.md).

</details>

<details>

<summary>Will streaming break through a proxy?</summary>

Streaming connections are more brittle than HTTP polling when traffic is proxied. If your environment proxies traffic, use polling-only mode. Go to [Build a resilient integration](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/build-a-resilient-integration/README.md) and [Troubleshooting](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/troubleshooting/README.md).

</details>

<details>

<summary>What is an acceptable SDK startup time?</summary>

The FME CDN delivers flag definitions in under 200 ms globally. The SDK exposes a ready timeout event you can use to configure thresholds for your application.

</details>

## Choose a migration approach

Choose the approach that best fits your organization's risk tolerance and flag inventory.

{% tabs %}
{% tab title="Parallel running (recommended)" %}
Run FF and FME simultaneously and migrate flags incrementally. Typically you start with long-term or permanent flags and let short-lived flags retire on FF.

* **Pros:** Lower risk, gradual validation, and support for app versions still on FF.
* **Cons:** Dual-SDK overhead during the transition.
* **Best for:** Organizations with multiple platforms, or mobile apps with staggered version rollouts.

For example, new architecture moves to FME while older app versions remain on FF until they are force-upgraded.
{% endtab %}

{% tab title="Big bang" %}
Migrate all flags at once using the migration script.

* **Pros:** Clean cutover, no dual-SDK overhead.
* **Cons:** Higher risk, and extensive testing is required upfront.
* **Best for:** Organizations with smaller flag counts and good flag hygiene.
  {% endtab %}

{% tab title="Selective" %}
Migrate only the flags you still need. Dormant and archived flags stay on FF.

* **Best for:** Organizations that want a cleaner flag inventory after migration.
  {% endtab %}
  {% endtabs %}

## Migration steps

### Step 0: Gather requirements

Before you start, document the following for your environment.

| Area                       | Questions to answer                                                                                                                                                                                                                                                                                                                                                      |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SDK languages              | Which languages and platforms are in use? Backend or client-side? Any mobile (iOS or Android)?                                                                                                                                                                                                                                                                           |
| Flag inventory             | How many flags? Any archived? Are you cleaning up before migration? Boolean only or other types?                                                                                                                                                                                                                                                                         |
| Streaming                  | Is streaming required? Do you have proxy infrastructure? Any history of streaming issues with FF?                                                                                                                                                                                                                                                                        |
| Target groups and segments | How many target groups? Rule-based or static? How are users identified (user ID, attributes)?                                                                                                                                                                                                                                                                            |
| Personas and RBAC          | Who needs [access](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/permissions/rbac/README.md), engineers only or product teams as well? What granularity is needed (create, update, delete)?                                                                                                |
| Environments               | How many [environments](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/environments/README.md)? What naming conventions? Do you use local dev flag overrides?                                                                                                                               |
| Pipelines                  | Are you using Harness CD [pipelines](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/pipelines/README.md)? Do you want to gate deployments on flag changes?                                                                                                                                  |
| Experimentation            | Are [A/B testing](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/experimentation/overview/README.md) or [metrics](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/metrics/index/README.md) of interest? Who in the org would drive this? |
| Performance SLA            | What is an acceptable SDK init time? Are you monitoring it today?                                                                                                                                                                                                                                                                                                        |
| App versions on FF         | Do you have older app versions that cannot be force-upgraded? Is parallel running needed?                                                                                                                                                                                                                                                                                |

### Step 1: Obtain the migration script

Harness maintains a migration script that creates FME copies of your FF flags and preserves targeting rules.

To obtain the script, contact your Customer Success Manager. The script is distributed as a secure download and is not publicly available. Your CSM coordinates delivery through the support team.

Before you run the script, you need a Harness Service Account API key or token. Harness is moving Admin API key management from the legacy Split Admin API to Harness Service Accounts, so use a Service Account token to authenticate the migration script. Go to [API keys](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/api-keys/README.md) for setup steps.

### Step 2: Set up your FME account

Before you run the script or integrate the SDK, confirm the following:

1. FME account access is provisioned in your Harness organization. Go to [Start FME in Harness](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/split-and-harness/README.md).
2. [RBAC](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/permissions/rbac/README.md) groups and permissions are configured for your team structure. Go to [Groups](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/groups/README.md), [Permissions](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/permissions/README.md), and [Projects](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/projects/README.md).

### Step 3: Integrate the FME SDK

Replace your FF SDK with the FME SDK. The FME SDK uses the Split namespace. The versions below were current when this guide was written, so check the SDK guide for your language for the latest version.

{% tabs %}
{% tab title="Java" %}

```xml
<dependency>
  <groupId>io.split.client</groupId>
  <artifactId>java-client</artifactId>
  <version>4.19.0</version>
</dependency>
```

{% endtab %}

{% tab title="JavaScript / Node.js" %}

```bash
npm install @splitsoftware/splitio
```

{% endtab %}

{% tab title="Python" %}

```bash
pip install splitio_client
```

{% endtab %}

{% tab title="Go" %}

```bash
go get github.com/splitio/go-client/v6@v6.9.0
```

{% endtab %}

{% tab title="iOS (Swift)" %}

```ruby
pod 'Split', '~> 3.7.1'
```

{% endtab %}

{% tab title="Android" %}

```groovy
implementation 'io.split.client:android-client:5.4.2'
```

{% endtab %}

{% tab title=".NET" %}

```bash
dotnet add package Splitio
```

{% endtab %}
{% endtabs %}

For the full list of supported SDKs and installation instructions, go to [SDKs and customer-deployed components](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/README.md). Language guides include [Java](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/java-sdk/README.md), [Node.js](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/nodejs-sdk/README.md), [Python](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/python-sdk/README.md), [Go](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/go-sdk/README.md), [.NET](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/server-side-sdks/net-sdk/README.md), [iOS](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/client-side-sdks/client-side-standard-sdks/ios-sdk/README.md), [Android](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/client-side-sdks/client-side-standard-sdks/android-sdk/README.md), [JavaScript](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/client-side-sdks/client-side-standard-sdks/javascript-sdk/README.md). Go to [Validate your SDK setup](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/sdks-and-customer-deployed-components/validate-sdk-setup/README.md) to confirm the install.

Initialize the FME SDK with your API key from the FME workspace:

```javascript
const { SplitFactory } = require('@splitsoftware/splitio');

const factory = SplitFactory({
  core: {
    authorizationKey: 'YOUR_API_KEY'
  }
});
const client = factory.client();

client.on(client.Event.SDK_READY, function() {
  // The SDK is ready, so it is safe to call getTreatment
  const treatment = client.getTreatment('USER_ID', 'FLAG_NAME');
});
```

Key differences from FF:

* Attributes are passed separately at evaluation time, not stored on the target object.
* Flag evaluation is synchronous after the `SDK_READY` event fires.

**Run FF and FME side by side**

If you use the parallel running approach, both SDKs can coexist in the same application. Initialize each independently with its own API key, and route flag evaluations to FF or FME based on which system owns each flag during the transition.

This is the recommended approach for teams with mobile apps or multiple platforms where you cannot update all surfaces at once.

### Step 4: Map target groups to segments

FF uses target groups and FME uses segments. The concepts are similar but the implementation differs.

FME segment types (go to [Create a segment](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/targeting/segments/README.md) and [Target segments](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/targeting/target-segments/README.md)):

* **Standard segments:** A static list of user IDs, or attribute-matched rules.
* **Rule-Based segments:** Dynamic membership based on attribute conditions, equivalent to rule-based target groups in FF.
* **Large segments:** Designed for very large static lists (millions of members).

{% hint style="warning" %}
FME segment names are case-sensitive and must start with a letter. Allowed characters are letters, numbers, hyphens, and underscores. A mismatch between FF target group names and FME segment names causes targeting failures. Verify exact name matches after you run the migration script.
{% endhint %}

FME evaluates targeting rules in this order: individual targets, then attribute-based rules (top to bottom), then percentage rollout rules, then the default rule. Review the order of your targeting rules after migration to confirm priority is correct. Go to [Targeting](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/targeting/README.md).

### Step 5: Validate with a no-op flag

Before you migrate production traffic, validate your FME integration with a dedicated test flag.

{% stepper %}
{% step %}
Create a flag in FME with two treatments: `on` and `off`. Go to [Create a feature flag](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/create-a-feature-flag/README.md).
{% endstep %}

{% step %}
Set the default rule to serve `off` to 100% of traffic.
{% endstep %}

{% step %}
Integrate the FME SDK in your application and call `getTreatment` for this flag.
{% endstep %}

{% step %}
Confirm the SDK initializes correctly and returns the expected treatment.
{% endstep %}
{% endstepper %}

This validates SDK connectivity, API key configuration, and your targeting setup without any user-facing impact.

### Step 6: Migrate flags using the script

With your FME account set up and the SDK validated, run the migration script to create FME copies of your FF flags.

Before you run the script:

* Confirm segment names are ready in FME.
* Decide which flags to migrate (all active flags, or a selection).
* Identify flags to exclude, such as archived or deprecated flags.

After you run the script:

* Verify all migrated flags appear correctly in the FME UI.
* Check that targeting rules are preserved accurately.
* Verify segment assignments are correct and case-matched.

The script migrates flag definitions and basic targeting rules. RBAC and SDK integration must be handled separately.

### Step 7: Roll out progressively

Once flags are migrated and your SDK is integrated, begin routing traffic to FME. For a percentage-based rollout in the FME UI:

{% stepper %}
{% step %}
Navigate to your flag in FME.
{% endstep %}

{% step %}
Select the environment you are rolling out to.
{% endstep %}

{% step %}
Under the default rule, set the percentage allocation across treatments. Go to [Create a rollout plan](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/create-a-rollout-plan/README.md). For example, `on: 10%` and `off: 90%` starts a 10% rollout.
{% endstep %}

{% step %}
Click **Save changes**. The change takes effect within seconds through the CDN push.
{% endstep %}

{% step %}
Increase the percentage incrementally as you gain confidence.
{% endstep %}
{% endstepper %}

FME also supports percentage rollouts through Harness pipelines, so you can automate progressive rollouts with wait steps, approvals, and metric checks. Go to [Pipelines](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/pipelines/README.md) and [Approval flows](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/approval-flows/README.md).

### Step 8: Monitor and validate

Monitor the following during rollout:

* **SDK initialization time:** The FME CDN targets under 200 ms globally. Use the SDK ready timeout event to alert if your application sees materially slower startup.
* **Streaming versus polling:** If your environment proxies traffic, confirm polling-only mode is active. Streaming is more brittle through proxies.
* **Flag evaluation correctness:** Spot-check that targeting rules return the expected treatments for known test users. Go to [Viewing user treatments](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/manage-feature-flags/viewing-user-treatments/README.md), [Impressions](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/monitoring-and-analysis/impressions/README.md), and [Live tail](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/monitoring-and-analysis/live-tail/README.md).
* **`getTreatmentWithConfig` responses:** If you use JSON [dynamic configs](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/setup/dynamic-configurations/README.md), validate that the config payload is returned correctly on every platform you support.

{% hint style="success" %}
Instrument the `SDK_READY` event to track initialization time. You can log it to your existing observability platform, such as Datadog, Dynatrace, or New Relic.
{% endhint %}

### Step 9: Retire FF flags

Once a platform or application version is fully validated on FME:

1. Stop calling the FF SDK for flags that have been migrated.
2. Archive the corresponding flags in FF.
3. Remove the FF SDK dependency once all flags are retired.
4. Track removal of FME flags once the underlying feature is permanently on. Use Harness pipelines or Jira to track flag cleanup. Go to [Manage the feature flag lifecycle](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/manage-the-feature-flag-lifecycle/README.md), [Automated feature flag cleanup](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/automated-feature-flag-cleanup/README.md), [Archive a feature flag](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/manage-feature-flags/archive-a-feature-flag/README.md), and [Jira Cloud](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/integrations/jira-cloud/README.md).

Migrate long-term flags, such as [kill switches](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/feature-management/manage-feature-flags/use-the-kill-switch/README.md) and permanent toggles, early. Short-lived flags in active development can often retire on FF without migration.

## Known technical considerations

| Issue                         | Detail                                                                                                                                                   |
| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Segment name case sensitivity | FME segment names are case-sensitive and must start with a letter. A mismatch silently causes targeting rules not to match, so verify all names exactly. |
| Streaming through proxies     | Use polling-only mode if your network proxies traffic.                                                                                                   |

## Experimentation and measurement

Once your team runs flags on FME, you can enable experimentation to measure the impact of your features.

1. Define [metrics](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/create-a-metric/README.md) in FME that correspond to outcomes you care about, such as conversion rates, error rates, and latency. You also need to [send event data](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/send-event-data/README.md).
2. Attach metrics to your flags as [guardrail metrics](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/metrics/categories/guardrail-metrics/README.md) or primary metrics.
3. [Run an A/B test](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/create-an-experiment/README.md) by setting your flag to a 50/50 split between two treatments.
4. FME calculates [statistical significance](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/experimentation/key-concepts/statistical-significance/README.md) and shows results in the [Metrics Impact view](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/experimentation/experiment-results/viewing-experiment-results/metrics-impact-cards/README.md).

Native [significance alerting](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/use-fme/release-monitoring/alerts/README.md) must be enabled at the account level. Ask your CSM if you don't see **Alerts setup** under a flag's gear icon. Alerts fire only in production environments and require a minimum sample size per treatment (200 enforced minimum, 355 recommended). Alert recipients are limited to the flag owner and can't currently be customized. Use a [metric alert policy](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/new-to-fme/get-started/create-a-metric-alert-policy/README.md) or [webhook integration](https://github.com/harness/harness-developer-hub/tree/main/feature-management-experimentation/management-and-administration/api-best-practices/webhooks/metric-alerts/README.md) if you need broader routing.

[Harness University](https://developer.harness.io/university/feature-management-experimentation) offers free self-paced training and certifications for FME.

{% hint style="info" icon="diploma" %}
For an interactive onboarding experience including further use cases and features like **cloud experimentation**, go to the [**Harness Feature Management & Experimentation Cloud Experimentation for Product Managers certification**](https://university-registration.harness.io/fme-level-1-cloud-experimentation-for-product-managers).
{% endhint %}

## FAQ

<details>

<summary>Does the migration script handle everything?</summary>

No. The script migrates flag definitions and basic targeting rules. RBAC and SDK integration must be handled separately.

</details>

<details>

<summary>How long does a migration typically take?</summary>

It depends on your environment's complexity: the number of SDK languages, platforms, and environments, and whether you run FF and FME in parallel. Use the Step 0 checklist to scope your timeline, and work with your CSM to plan a schedule for your organization.

</details>

<details>

<summary>Is OPA supported in FME?</summary>

Yes.

</details>

<details>

<summary>How do I get the migration script?</summary>

Contact your Customer Success Manager or Customer Architect. The script is provided as a secure download.

</details>
