# Deprecations

This page lists all the managed Google Play features which are in a
deprecation period. This includes features and methods under the Google Play EMM
API and features in the managed Google Play store.

## Reason for deprecating the features

The reasons for deprecating a legacy feature or method may include:

- Improve product quality: Some legacy features are complex and error prone, and it's not rare for developers to make mistakes when integrating with these features, which then results in bugs visible to customers and end-users. By migrating to modern replacements, an EMM improves the quality of its EMM product.
- Reduce product maintenance: It can take a lot of effort for both EMMs and Google to maintain some legacy features, typically because of bug investigation or extensive regression testing before each new release. Migrating to modern replacements or deprecating features with low usage allows both EMMs and Google to spend more time building the new features that users need.
- Enable future developments: Some legacy features are incompatible with new features that Google would like to release. Deprecations unlock these new features and add value for users.

## How deprecation works

The deprecation period for a feature or method begins on the announcement date.
The feature or method will continue to be available throughout the deprecation
period (typically 12 months if no turn off date is indicated). However, once the
deprecation period has elapsed, the feature or method is expected to be
decommissioned and will no longer be available.

For most deprecations, Google recommends an alternative approach to provide the
same functionality, often with no visible change for customers and end-users.
When available, the alternative approach is described in the deprecation
announcement in the following list.

Instead of migrating to the proposed alternatives within the
Google Play EMM API, you can also migrate to the modern
[Android Management API](https://developers.google.com/android/management), which is simpler to integrate
and maintain.

If you have questions or feedback, you can contact Google through the [Android
Enterprise EMM Provider community](https://developers.google.com/android/management/join).

> [!WARNING]
> **Warning:** **September 30, 2025 turn off event.** Most of the deprecated API will be permanently turned off on September 30, 2025. These APIs will no longer be accessible by anyone after this date.

## Active deprecations

This section lists all features and methods which are in a deprecation period.

### App approval (Announce: September 1, 2021 - Turn off: September 30, 2025)

The app approval in managed Google Play is deprecated as of September 1, 2021,
and will be turned off on September 1, 2025. This includes:

- the following methods of the Google Play EMM API:
  - [`products.approve`](https://developers.google.com/android/work/play/emm-api/v1/products/approve)
  - [`products.generateApprovalUrl`](https://developers.google.com/android/work/play/emm-api/v1/products/generateApprovalUrl)
  - [`products.list`](https://developers.google.com/android/work/play/emm-api/v1/products/list)
  - [`products.unapprove`](https://developers.google.com/android/work/play/emm-api/v1/products/unapprove)
- the following [EMM notifications](https://developers.google.com/android/work/play/emm-api/about-notifications):
  - [`AppRestrictionsSchemaChangeEvent`](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)
  - [`AppUpdateEvent`](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)
  - [`NewPermissionsEvent`](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)
  - [`ProductApprovalEvent`](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)
  - [`ProductAvailabilityChangeEvent`](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)
- the APPROVE mode of the [managed Google Play iframe](https://developers.google.com/android/work/play/emm-api/managed-play-iframe).
- the **Approve** button on an app's page in the managed Google Play store.
- the **My managed apps** pages and **Updates** pages in the managed Google Play store.

#### Recommended alternative

Instead of using app approval to control available apps, you can set the
[Devices policy](https://developers.google.com/android/work/play/emm-api/v1/devices) for each device. If you want to allow IT admins to preselect
a list of apps for the whole enterprise, you can store that list in your EMM
server, and you don't need to pass it to Google using the Play EMM API.

If you use the EMM notification `AppUpdateEvent`, you can instead use the
[high-priority update mode](https://developers.google.com/android/work/play/emm-api/update) (documentation coming soon) to automatically
update an app on a device when the developer releases a new app version.

For adding apps to collections in the managed Google Play iframe, EMM's should
be invoking the [`SELECT mode`](https://developers.google.com/android/work/play/emm-api/managed-play-iframe#url_parameters) in the iframe's URL parameters.

#### Lost capabilities

There is no replacement for the EMM notifications
`AppRestrictionsSchemaChangeEvent` and `ProductAvailabilityChangeEvent`. If you
expose a feature in your EMM console based on these notifications, you will need
to deprecate this feature.

### Entitlements and available product set (Announce: September 1, 2021 - Turn off: September 30, 2025)

The following methods of the Google Play EMM API are deprecated as of September
1, 2021, and will be turned off on September 1, 2025:

- [`entitlements.delete`](https://developers.google.com/android/work/play/emm-api/v1/entitlements/delete)
- [`entitlements.get`](https://developers.google.com/android/work/play/emm-api/v1/entitlements/get)
- [`entitlements.list`](https://developers.google.com/android/work/play/emm-api/v1/entitlements/list)
- [`entitlements.update`](https://developers.google.com/android/work/play/emm-api/v1/entitlements/update)
- [`grouplicenses.get`](https://developers.google.com/android/work/play/emm-api/v1/grouplicenses/get)
- [`grouplicenses.list`](https://developers.google.com/android/work/play/emm-api/v1/grouplicenses/list)
- [`grouplicenseusers.list`](https://developers.google.com/android/work/play/emm-api/v1/grouplicenseusers/list)
- [`users.getAvailableProductSet`](https://developers.google.com/android/work/play/emm-api/v1/users/getAvailableProductSet)
- [`users.setAvailableProductSet`](https://developers.google.com/android/work/play/emm-api/v1/users/setAvailableProductSet)

#### Recommended alternative

To control the available apps that users can install from the managed Google
Play store, you can set a [Devices policy](https://developers.google.com/android/work/play/emm-api/v1/devices).

You can define the managed Google Play Store behavior by setting the field
`policy.productAvailabilityPolicy`, and select available apps by adding them to
`policy.productPolicy`. See how to [distribute apps](https://developers.google.com/android/work/play/emm-api/distribute).

### Installs API (Announce: September 1, 2021 - Turn off: September 30, 2025)

The following methods of the Google Play EMM API are deprecated as of September
1, 2021, and will be turned off on September 1, 2025:

- [`installs.get`](https://developers.google.com/android/work/play/emm-api/v1/installs/get)
- [`installs.list`](https://developers.google.com/android/work/play/emm-api/v1/installs/list)
- [`installs.update`](https://developers.google.com/android/work/play/emm-api/v1/installs/update)
- [EMM notification for InstallFailureEvent](https://developers.google.com/android/work/play/emm-api/about-notifications#examples_of_emm_notifications)

#### Recommended alternative

To install apps on devices, you can instead set
`policy.productPolicy.autoInstallPolicy` in the [Devices policy](https://developers.google.com/android/work/play/emm-api/v1/devices).

To force-update an app, you can instead use the [high-priority mode](https://developers.google.com/android/work/play/emm-api/update#high_priority_mode).

If the app cannot be installed on the device, the method [installs.update](https://developers.google.com/android/work/play/emm-api/v1/installs/update)
returns the reason for the failure
(`productNotAvailableInCountry`, `productNotCompatibleWithDevice`, etc.).

When `policy` is used and the app cannot be installed on the device, the managed
Google Play Store returns [app feedback](https://developers.google.com/android/work/play/emm-api/distribute#app_auto-install_error_feedback) to your DPC containing the error
details for the installation failure.

The [`installs.delete`](https://developers.google.com/android/work/play/emm-api/v1/installs/delete) will no longer be deprecated and be kept as it is.
You can also remove apps from devices for custom DPCs using
[`PackageInstaller.uninstall()`](https://developer.android.com/reference/android/content/pm/PackageInstaller#uninstall(java.lang.String,%20android.content.IntentSender)).

### Product methods: getAppRestrictionsSchema and getPermissions (Announce: September 1, 2021 - Turn off: September 30, 2025)

The following methods of the Google Play EMM API are deprecated as of September
1, 2021, and will be turned off on September 1, 2025:

- [`products.getAppRestrictionsSchema`](https://developers.google.com/android/work/play/emm-api/v1/products/getAppRestrictionsSchema)
- [`products.getPermissions`](https://developers.google.com/android/work/play/emm-api/v1/products/getPermissions)

#### Recommended alternative

To get the permissions of an app, you can instead call the method
[products.get](https://developers.google.com/android/work/play/emm-api/v1/products/get).

The method [products.get](https://developers.google.com/android/work/play/emm-api/v1/products/get) will also soon return the app restriction schema
of the app with the same format as returned by
`products.getAppRestrictionsSchema`. This change will be rolled out on or before
June 30, 2022.

### Managed configurations methods (Announce: September 1, 2021 - Turn off: September 30, 2025)

The following methods of the Google Play EMM API are deprecated as of September
1, 2021, and will be turned off on September 1, 2025:

- [`managedconfigurationsfordevice.delete`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsfordevice/delete)
- [`managedconfigurationsfordevice.get`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsfordevice/get)
- [`managedconfigurationsfordevice.list`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsfordevice/list)
- [`managedconfigurationsfordevice.update`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsfordevice/update)
- [`managedconfigurationsforuser.delete`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsforuser/delete)
- [`managedconfigurationsforuser.get`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsforuser/get)
- [`managedconfigurationsforuser.list`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsforuser/list)
- [`managedconfigurationsforuser.update`](https://developers.google.com/android/work/play/emm-api/v1/managedconfigurationsforuser/update)

#### Recommended alternative

To set managed configurations for an app and for a device, you can set
`policy.productPolicy.managedConfiguration` in the [Devices policy](https://developers.google.com/android/work/play/emm-api/v1/devices).

### Service account key service (Announce: September 1, 2021 - Turn off: September 30, 2025)

The following methods of the Google Play EMM API are deprecated as of September
1, 2021, and will be turned off on September 1, 2025:

- [`serviceaccountkeysservice.delete`](https://developers.google.com/android/work/play/emm-api/v1/serviceaccountkeys/delete)
- [`serviceaccountkeysservice.insert`](https://developers.google.com/android/work/play/emm-api/v1/serviceaccountkeys/insert)
- [`serviceaccountkeysservice.list`](https://developers.google.com/android/work/play/emm-api/v1/serviceaccountkeys/list)

#### Recommended alternative

If you're using programmatically created ESAs, we recommend that you [switch to
using a service account configured using Cloud IAM](https://developers.google.com/android/management/existing-emms#migrate_from_programmatically_created_esas_to_cloud_iam) to call the Play
EMM API. From Cloud IAM, you can [create and delete keys](https://cloud.google.com/iam/docs/creating-managing-service-account-keys) for service
account keys.

You can choose to continue using programmatically created ESAs for now, but you
will no longer be able to rotate the ESA keys.

### Closed track field (Announce: September 1, 2021 - Turn off: September 30, 2025)

The field `policy.productPolicy[].tracks[]` in the request of the method
[devices.update](https://developers.google.com/android/work/play/emm-api/v1/devices/update) is deprecated as of September 1, 2021, and will be turned
off on September 1, 2025.

#### Recommended alternative

You can retrieve the list of tracks available to an enterprise for a specific
app using [`products.get`](https://developers.google.com/android/work/play/emm-api/v1/products/get).
You can then distribute a track to a device by setting
`policy.productPolicy[].trackIds[]` in the [Devices policy](https://developers.google.com/android/work/play/emm-api/v1/devices). See how to
[distribute closed tracks to users](https://developers.google.com/android/work/play/emm-api/distribute#distribute_closed_tracks_to_users).