---
title: Upgrader class
description: The upgrader class defines the upgrade logic to update the node's configuration from one version to the next.
component: pingam
version: 8.1
page_id: pingam:auth-nodes:upgrader-class
canonical_url: https://docs.pingidentity.com/pingam/8.1/auth-nodes/upgrader-class.html
keywords: ["Extensibility", "Nodes &amp; Trees", "Scripts"]
section_ids:
  preview_configuration_updates: Preview configuration updates
---

# Upgrader class

The `upgrader` class defines the upgrade logic to update the node's configuration from one version to the next.

The `upgrader` class must implement the [NodeVersionUpgrader](../_attachments/apidocs/org/forgerock/openam/auth/node/api/upgrade/NodeVersionUpgrader.html) interface.

The `upgrader` class provides the `upgrade` method, which takes the configuration to upgrade and returns the updated configuration as JSON.

For example, the following is an `upgrader` class for a Custom node called `CustomAuthNodeV2Upgrader`:

```java
public static class CustomAuthNodeV2Upgrader implements NodeVersionUpgrader {
  @Override
  public JsonValue upgrade(JsonValue config) throws NodeUpgradeException {
    if (!config.isDefined("secretValue") || !config.isDefined("secretHeader")) {
      throw new InvalidUpgradeConfigException();
    }
    config.remove("secretValue");
    config.put("secretLabelIdentifier", "");
    return config;
  }
}
```

This class removes the `secretValue` attribute from the configuration and replaces it with the `secretLabelIdentifier` attribute. If configuration values are missing, the upgrader throws an exception.

## Preview configuration updates

To verify the configuration will update as expected, send a `POST` request to the `realm-config/authentication/authenticationtrees/nodes/node-name/n.0?_action=getUpgradedConfig&targetVersion=n` endpoint with the current node configuration in the request body. The `targetVersion` must be greater than the current version.

This request returns a preview of the updated configuration but doesn't change the node configuration.

> **Collapse: Example**
>
> To preview the updated configuration for version 1 of the Custom node going to version 2 (using the example `CustomAuthNodeV2Upgrader` class), send the following `POST` request:
>
> ```bash
> $ curl \
> --request POST \
> --header "iPlanetDirectoryPro: AQIC5wM…​TU3OQ*" \
> --header "Content-Type: application/json" \
> --header "Accept-API-Version: protocol=2.1,resource=3.0" \
> --data '{
>    "secretHeader":"X-Secret-Header",
>    "secretValue":"test"
> }' \
> "https://am.example.com:8443/am/json/realms/root/realms/alpha/realm-config/authentication/authenticationtrees/nodes/CustomAuthNode/1.0?_action=getUpgradedConfig&targetVersion=2"
> {
>   "secretHeader":"X-Secret-Header",
>   "secretLabelIdentifier":""
> }
> ```
