---
type: api
title: Start the feature migration
description: Version upgrades sometimes require changes to how features store configuration information and data in system indices.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v9/operation/operation-migration-post-feature-upgrade
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v9/operation/operation-migration-post-feature-upgrade
products:
  - Elasticsearch
---

# Start the feature migration

Availability: 7.16+

## Paths

- `POST` `/_migration/system_features`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v9/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v9/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v9/authentication#bearerauth)

## Description

Version upgrades sometimes require changes to how features store configuration information and data in system indices.
This API starts the automatic migration process.

Some functionality might be temporarily unavailable during the migration process.

TIP: The API is designed for indirect use by the Upgrade Assistant. We strongly recommend you use the Upgrade Assistant.

## Required authorization

* Index privileges: `manage`
* Cluster privileges: `manage`

## Response

`application/json`

- `accepted` (boolean)
- `features` ([] MigrationFeature)
  - `feature_name` (string)
- `reason` (string)
## Code Examples

#### Console

```console
POST /_migration/system_features
```

#### JavaScript

```javascript
const response = await client.migration.postFeatureUpgrade();
```

#### Python

```python
resp = client.migration.post_feature_upgrade()
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/_migration/system_features" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY"
```

#### Java

```java
client.migration().postFeatureUpgrade();
```

#### PHP

```php
$resp = $client->migration()->postFeatureUpgrade();
```

#### Ruby

```ruby
response = client.migration.post_feature_upgrade
```

## Response Examples

#### Post feature upgrade response example1

When you run `POST /_migration/system_features` to start the migration process, the response lists the features that will be migrated.

```json
{
  "accepted" : true,
  "features" : [
    {
      "feature_name" : "security"
    }
  ]
}
```

