---
title: Configure placeholders to use with ESVs
description: PingOne Advanced Identity Cloud lets you reference ESVs from configuration placeholders. This lets you use different configuration values for the development, staging, and production environments at runtime.
component: pingoneaic
page_id: pingoneaic:tenants:configuration-placeholders
canonical_url: https://docs.pingidentity.com/pingoneaic/tenants/configuration-placeholders.html
page_aliases: ["tenants:esvs-configuration-placeholders.adoc"]
section_ids:
  set_up_configuration_placeholders_to_reference_an_esv: Set up configuration placeholders to reference an ESV
  update_an_esv_referenced_by_a_configuration_placeholder: Update an ESV referenced by a configuration placeholder
  restart-identity-cloud-services: Restart Advanced Identity Cloud services
  delete-esv-referenced-by-configuration-placeholder: Delete an ESV referenced by a configuration placeholder
  define-and-promote-an-esv: Define and promote an ESV
---

# Configure placeholders to use with ESVs

PingOne Advanced Identity Cloud lets you reference ESVs from configuration placeholders. This lets you use different configuration values for the development, staging, and production environments at runtime.

For example, suppose you wanted to set a different email sender for each environment. You would set the configuration value of the email sender to an ESV with different values in each environment; for example, `dev-mycompany@example.com` (development), `staging-mycompany@example.com` (staging), and `mycompany@example.com` (production). Then, you would insert the ESV configuration placeholder into your configuration instead of a literal value.

|   |                                                                                                                                                                                                   |
| - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   | Configuration placeholders that reference an undefined ESV cause promotions to fail. Learn more in [Configuration integrity checks](self-service-promotions.html#configuration-integrity-checks). |

## Set up configuration placeholders to reference an ESV

1. In your development environment:

   1. Create the ESV using one of the following:

      * [Create a variable](esvs-manage-ui.html#create-variables) or [create a secret](esvs-manage-ui.html#create-secrets) using the Advanced Identity Cloud admin console.

      * [Create a variable](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/createVariables) or [create a secret](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/createSecret) using the API (learn more in [Manage ESVs using the API](esvs-manage-api.html)).

   2. [Restart Advanced Identity Cloud services](#restart-identity-cloud-services).

   3. Insert the ESV configuration placeholder into your configuration. Learn more in:

      * [Manage configuration placeholders using the API](configuration-placeholders-api.html)

      * [Manage configuration placeholders using the admin console](configuration-placeholders-ui.html).

2. In your staging environment:

   1. Repeat step 1a for your staging environment. Ensure the ESV name is the same as you set up in the development environment.

   2. Run a promotion to move the configuration change from your development environment to your staging environment. Learn more in:

      * [Manage self-service promotions using the API](self-service-promotions-api.html)

      * [Manage self-service promotions using the admin console](self-service-promotions-ui.html)

3. In your production environment:

   1. Repeat step 1a for your production environment. Ensure the ESV name is the same as you set up in the development environment.

   2. Run a further promotion to move the configuration change from your staging environment to your production environment.

If you want to add more ESVs later, repeat the steps above and use a further series of promotions.

|   |                                                                                                                                                                                                                                                                |
| - | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   | Configuration placeholders can only be inserted into static configuration. You can find more information on what static configuration is and which areas of configuration are classified as static in the [promotion FAQs](self-service-promotions-faqs.html). |

## Update an ESV referenced by a configuration placeholder

1. Update the ESV using one of the following:

   * [Update a variable](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/createVariables) or [add a new secret version](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/createSecretVersion) to a secret using the API (learn more in [Manage ESVs using the API](esvs-manage-api.html)).

   * [Update a variable](esvs-manage-ui.html#update-variables) or [add a new secret version](esvs-manage-ui.html#update-secrets) to a secret using the Advanced Identity Cloud admin console.

2. Next, [Restart Advanced Identity Cloud services](#restart-identity-cloud-services).

## Restart Advanced Identity Cloud services

If you update an ESV referenced by a configuration placeholder, you also need to restart Advanced Identity Cloud services. This substitutes the updated secret or variable into the corresponding configuration placeholder.

1. Restart Advanced Identity Cloud services using one of the following:

   * [Restart](https://docs.pingidentity.com/pingoneaic/_attachments/api/#tag/Restart) using the API (learn more in [Manage ESVs using the API](esvs-manage-api.html)).

   * [Apply updates](esvs-manage-ui.html#apply-updates) using the Advanced Identity Cloud admin console.

## Delete an ESV referenced by a configuration placeholder

1. Remove the ESV configuration placeholder from your configuration in the development environment. Refer to:

   * [Manage configuration placeholders using the API](configuration-placeholders-api.html).

   * [Manage configuration placeholders using the admin console](configuration-placeholders-ui.html).

2. Run a promotion to move the configuration change from the development environment to the staging environment. Refer to:

   * [Manage self-service promotions using the API](self-service-promotions-api.html)

   * [Manage self-service promotions using the admin console](self-service-promotions-ui.html)

3. Run a further promotion to move the configuration change from the staging environment to the production environment.

4. Delete the ESV in each of the development, staging, and production environments using one of the following:

   * [Delete a variable](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/deleteVariable) or [delete a secret](https://docs.pingidentity.com/pingoneaic/_attachments/api/#operation/deleteSecret) using the Advanced Identity Cloud API (learn more in [Manage ESVs using the API](esvs-manage-api.html)).

   * [Delete a variable](esvs-manage-ui.html#delete-variables) or [delete a secret](esvs-manage-ui.html#delete-secrets) using the Advanced Identity Cloud admin console.

## Define and promote an ESV

An example of using a variable would be to define a URL that a user is redirected to after logging in. In each environment, the URL would need a different value; for example, `dev-www.example.com` (development), `staging-www.example.com` (staging), and `www.example.com` (production).

To define and promote the variable:

1. Decide on a variable name; for example, `esv-myurl`. Learn more in [ESV naming](esvs.html#esv-naming).

2. Set an ESV variable in each of the development, staging, and production environments. To do this, choose one of the following options:

   * Use the Advanced Identity Cloud admin console to [create the variable](esvs-manage-ui.html#create-variables), then [apply the update](esvs-manage-ui.html#apply-updates).

   * Use the [variables](https://docs.pingidentity.com/pingoneaic/_attachments/api/#tag/Variables) API endpoint to create the variable, then use the [restart](https://docs.pingidentity.com/pingoneaic/_attachments/api/#tag/Restart) API endpoint to restart Identity Cloud services.

3. Insert the ESV configuration placeholder into your configuration in the development environment. For the example variable `esv-myurl` from step 1, the placeholder would be called `&{esv.myurl}`. Refer to:

   * [Manage configuration placeholders using the API](configuration-placeholders-api.html).

   * [Manage configuration placeholders using the admin console](configuration-placeholders-ui.html).

   |   |                                                                                                                                               |
   | - | --------------------------------------------------------------------------------------------------------------------------------------------- |
   |   | Configuration placeholders can only be inserted into static configuration. Learn more in [promotion FAQs](self-service-promotions-faqs.html). |

4. Run a promotion to move the configuration change from the development environment to the staging environment. Refer to:

   * [Manage self-service promotions using the API](self-service-promotions-api.html)

   * [Manage self-service promotions using the admin console](self-service-promotions-ui.html)

5. Run a promotion to move the configuration change from the staging environment to the production environment.

The following illustration demonstrates the process:

![image$esv set variable](_images/esv-set-variable.png)
