---
title: Deprecation
description: The following features are deprecated and likely to be discontinued in a future release.
component: pingidm
version: 8.1
page_id: pingidm:release-notes:deprecated-functionality
canonical_url: https://docs.pingidentity.com/pingidm/8.1/release-notes/deprecated-functionality.html
keywords: ["Compatibility"]
section_ids:
  api-explorer-ui-deprecated: Legacy API Explorer
  legacy-admin-ui-deprecated: Legacy admin UI
  deprecation-managed-object-script-metrics: Managed object script metric names
  deprecation-router-filter-metrics: Router filter metrics
  deprecation-non-persisted-schedules: Non-persisted schedules
  deprecation-openidm-health-endpoint: openidm/health endpoint
  deprecation-ping-info-endpoint: openidm/info/ping endpoint
  deprecation-pax-web-properties: Pax Web properties
  deprecation-audit-event-handlers: Audit event handlers
  deprecation-read-query-audit-endpoint: Read and query the audit endpoint
  deprecation-proxy-properties-purpose: Proxy properties and password purpose
  deprecation-prometheus-properties-purpose: Prometheus properties and password purpose
  deprecation-java-util-logging: Java.util.logging
  deprecation-info-features-endpoint: info/features endpoint
  deprecation-jvm-mem-usage-metrics: Memory usage ratio metrics
  deprecation-secrets-in-config: Secrets and passwords stored in configuration
  deprecation-widgets: Widgets
  relationship_schema_query_filter: Relationship schema query filter
  secret_store_class_renamed: Secret store class renamed
  deprecated-access.js: Access configuration in access.js
  deprecated-scheduler-action: Actions on scheduler endpoint
  deprecated-health-endpoints: Health endpoints
  deprecated-conditional-queries: Conditional query filters
  deprecated-oauthReturn-endpoint: oauthReturn endpoint
  deprecated-timezone-schedules: timeZone in schedules
  deprecated-hash-algorithms: MD5 and SHA-1 hash algorithms
  deprecated-java-date: JAVA_TYPE_DATE attribute type
  deprecated-action-patch: POST request with ?_action=patch
  deprecated-minlength-patch: minLength property
  deprecated-top-level-read-on-config: Read requests at top of /config
  deprecated-array-of-types: Defining object schema type attribute in an array when it is a single type
---

# Deprecation

The following features are deprecated and likely to be discontinued in a future release.

## Legacy API Explorer

The legacy IDM API Explorer is deprecated and will be removed in a future release.

Starting with IDM 8.1, the API Explorer is no longer bundled with the IDM distribution. It's available as a separate downloadable artifact from the [Backstage download site](https://backstage.forgerock.com/downloads).

Learn more in [Install the legacy admin UI](../setup-guide/legacy-admin-ui.html).

## Legacy admin UI

The legacy IDM admin UI is deprecated and will be removed in a future release. Use the [Platform admin UI](../setup-guide/platform-admin-ui.html) instead.

Starting with IDM 8.1, the legacy admin UI is no longer bundled with the IDM distribution. It's available as a separate downloadable artifact from the [Backstage download site](https://backstage.forgerock.com/downloads).

|   |                                                                                                                                                                                                                                                                                                                                                                                   |
| - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   | The Platform admin UI and the legacy admin UI are independent artifacts. You can install one or both on different Nginx servers or different ports. New deployments should use the Platform admin UI.Learn more:- [Install the legacy admin UI](../setup-guide/legacy-admin-ui.html)

- [Install the Platform admin UI for standalone IDM](../setup-guide/platform-admin-ui.html) |

## Managed object script metric names

The following [API](../monitoring-guide/api-metrics.html#changed-managed-object-script-hook-metric) and [Prometheus](../monitoring-guide/prometheus-metrics.html#changed-managed-object-script-hook-metric-prom) metric names are deprecated:

* `managed.managed-object.script.script-name`

* `idm_managed_seconds{managed_object="managed_object",operation="operation_name",script="script_name"}`

Use the following replacement metric names:

* `managed-script-hook.object.script-hook`

* `idm_managed_script_hook_seconds{object="object",script_hook="script_hook"}`

All previous metric names will continue to function until removed. Learn more in [Deprecated metric collection](../monitoring-guide/monitoring.html#deprecated-metric-collection).

## Router filter metrics

The following [API](../monitoring-guide/api-metrics.html#changed-router-filter-metrics) and [Prometheus](../monitoring-guide/prometheus-metrics.html#changed-router-filter-metrics-prom) metric names are deprecated:

* `filter.filter-type.action.script-name`

* `idm_filter_seconds{action=action,filter_type=filter_type,script_name=script_name}`

Use the following replacement metric names:

* `router-filter.name.action.script-name.quantile.system`

* `idm_router_filter_seconds{action=action,name=name,script_name=script_name,quantile=quantile,system=system}`

All previous metric names will continue to function until removed. Learn more in [Deprecated metric collection](../monitoring-guide/monitoring.html#deprecated-metric-collection).

## Non-persisted schedules

Non-persisted (in memory) schedules are deprecated. Use the default, [persisted schedules](../schedules-guide/persistent-schedules.html).

## `openidm/health` endpoint

The `openidm/health` endpoint is deprecated. Use the [`openidm/health/live` and `openidm/health/ready` endpoints](../install-guide/system-healthcheck.html#audit-free-health-check) instead.

## `openidm/info/ping` endpoint

The `openidm/info/ping` endpoint is deprecated. Use the [`openidm/health/live` and `openidm/health/ready` endpoints](../install-guide/system-healthcheck.html#audit-free-health-check) instead.

## Pax Web properties

The following Pax Web properties are deprecated and will be removed in a future release of IDM:

* `org.ops4j.pax.web.server.maxThreads`

  Set the `maxThreads` field directly in the webserver config or use `openidm.webserver.max.threads`.

* `org.ops4j.pax.web.server.minThreads`

  There is no replacement for this setting and the minimum thread count is always set to `8`.

* `org.ops4j.pax.web.server.jetty.io.idleTimeout`

  There is no replacement for this setting and the thread idle timeout is always set to `60000` ms.

## Audit event handlers

The [JMS](../audit-guide/configuring-topic-handlers.html#audit-jms-handler), [Repository](../audit-guide/configuring-topic-handlers.html#audit-repo-handler), [Router](../audit-guide/configuring-topic-handlers.html#audit-router-handler), and [Syslog](../audit-guide/configuring-topic-handlers.html#audit-syslog-handler) audit event handlers are deprecated and will be removed in a future release of IDM. Use the [JSON audit event handler](../audit-guide/configuring-topic-handlers.html#audit-json-handler) or similar to export your data to a third-party audit framework, such as [Elastic Stack](https://www.elastic.co/elastic-stack).

## Read and query the audit endpoint

Query and read operations on the `/audit` API endpoint are deprecated and will be removed in a future release of IDM. Use the [JSON audit event handler](../audit-guide/configuring-topic-handlers.html#audit-json-handler) or similar to export your data to a third-party audit framework, such as [Elastic Stack](https://www.elastic.co/elastic-stack).

## Proxy properties and password purpose

The following proxy properties and purpose are deprecated and will be removed in a future release of IDM:

* `openidm.http.client.proxy.userName`

* `openidm.http.client.proxy.password`

* `idm.http.client.proxy.password`

Use the `idm.http.client.proxy.credentials` purpose to store the proxy username and password instead.

## Prometheus properties and password purpose

The following Prometheus properties and purpose are deprecated and will be removed in a future release of IDM:

* `openidm.prometheus.username`

* `openidm.prometheus.password`

* `idm.prometheus.password`

Use the `idm.prometheus.credentials` secret to store the Prometheus username and password instead.

## Java.util.logging

PingIDM now uses [Logback](../monitoring-guide/server-logs.html) to generate its logs. JUL logs are deprecated. You can generate logs in the old format by configuring Logback to use the [pattern layout encoder](../monitoring-guide/server-logs.html#pattern-layout-encoder).

## `info/features` endpoint

The `info/features` endpoint is deprecated and will be removed in a future release of IDM.

## Memory usage ratio metrics

Most of the existing [JVM metrics](../monitoring-guide/api-metrics.html#api-jvm-metric-names) have been deprecated and will be removed in a future release of IDM. All previous metrics will continue to function until their removal. The metrics are classified into these categories:

* The metric name has changed.

* The metric type has changed.

* The metric has no replacement, but you might be able to calculate the value on your own.

* Three metrics remain unchanged:

  * jvm.max-memory

  * jvm.available-cpus

  * jvm.used-memory

Use the following table to compare old and new metric names, removed metrics, and type changes:

| Deprecated Metric                                                 | New Metric                                                         | Notes                           |
| ----------------------------------------------------------------- | ------------------------------------------------------------------ | ------------------------------- |
| jvm.memory-usage.pools.G1-Old-Gen.committed                       | jvm.memory-usage.pools.committed\_G1-Old-Gen                       |                                 |
| jvm.memory-usage.pools.CodeHeap-'profiled-nmethods'.init          | jvm.memory-usage.pools.init\_CodeHeap-'profiled-nmethods'          |                                 |
| jvm.memory-usage.pools.G1-Old-Gen.init                            | jvm.memory-usage.pools.init\_G1-Old-Gen                            |                                 |
| jvm.memory-usage.total.max                                        | N/A                                                                | Removed                         |
| jvm.memory-usage.total.committed                                  | N/A                                                                | Removed                         |
| jvm.memory-usage.heap.init                                        | jvm.memory-usage.init\_heap                                        |                                 |
| jvm.memory-usage.pools.CodeHeap-'non-nmethods'.usage              | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.Metaspace.init                             | jvm.memory-usage.pools.init\_Metaspace                             |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.committed                | jvm.memory-usage.pools.committed\_G1-Survivor-Space                |                                 |
| jvm.memory-usage.heap.usage                                       | N/A                                                                | Removed                         |
| jvm.garbage-collector.G1-Old-Generation.count                     | jvm.garbage-collector.count.total\_G1-Old-Generation               | Type was "gauge", now "counter" |
| jvm.thread-state.waiting.count                                    | jvm.thread-state\_waiting                                          |                                 |
| jvm.class-loading.loaded                                          | jvm.class-loading.loaded.total                                     | Type was "gauge", now "counter" |
| jvm.memory-usage.pools.CodeHeap-'non-profiled-nmethods'.committed | jvm.memory-usage.pools.committed\_CodeHeap-'non-profiled-nmethods' |                                 |
| jvm.memory-usage.total.init                                       | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.CodeHeap-'non-nmethods'.used               | jvm.memory-usage.pools.used\_CodeHeap-'non-nmethods'               |                                 |
| jvm.memory-usage.pools.G1-Eden-Space.init                         | jvm.memory-usage.pools.init\_G1-Eden-Space                         |                                 |
| jvm.memory-usage.pools.Metaspace.usage                            | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.G1-Eden-Space.max                          | jvm.memory-usage.pools.max\_G1-Eden-Space                          |                                 |
| jvm.memory-usage.pools.G1-Old-Gen.max                             | jvm.memory-usage.pools.max\_G1-Old-Gen                             |                                 |
| jvm.memory-usage.total.used                                       | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.CodeHeap-'profiled-nmethods'.used          | jvm.memory-usage.pools.used\_CodeHeap-'profiled-nmethods'          |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.init                     | jvm.memory-usage.pools.init\_G1-Survivor-Space                     |                                 |
| jvm.memory-usage.non-heap.max                                     | jvm.memory-usage.max\_non-heap                                     |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.max                      | jvm.memory-usage.pools.max\_G1-Survivor-Space                      |                                 |
| jvm.memory-usage.pools.CodeHeap-'profiled-nmethods'.max           | jvm.memory-usage.pools.max\_CodeHeap-'profiled-nmethods'           |                                 |
| jvm.thread-state.daemon.count                                     | jvm.thread-state.daemon                                            |                                 |
| jvm.memory-usage.pools.G1-Eden-Space.used-after-gc                | jvm.memory-usage.pools.used-after-gc\_G1-Eden-Space                |                                 |
| jvm.thread-state.new\.count                                       | jvm.thread-state\_new                                              |                                 |
| jvm.memory-usage.pools.G1-Eden-Space.used                         | jvm.memory-usage.pools.used\_G1-Eden-Space                         |                                 |
| jvm.garbage-collector.G1-Young-Generation.time                    | jvm.garbage-collector.time.total\_G1-Young-Generation              | Type was "gauge", now "counter" |
| jvm.memory-usage.pools.CodeHeap-'non-profiled-nmethods'.max       | jvm.memory-usage.pools.max\_CodeHeap-'non-profiled-nmethods'       |                                 |
| jvm.memory-usage.heap.used                                        | jvm.memory-usage.used\_heap                                        |                                 |
| jvm.class-loading.unloaded                                        | jvm.class-loading.unloaded.total                                   | Type was "gauge", now "counter" |
| jvm.memory-usage.pools.G1-Eden-Space.committed                    | jvm.memory-usage.pools.committed\_G1-Eden-Space                    |                                 |
| jvm.memory-usage.heap.max                                         | jvm.memory-usage.max\_heap                                         |                                 |
| jvm.memory-usage.pools.Metaspace.used                             | jvm.memory-usage.pools.used\_Metaspace                             |                                 |
| jvm.memory-usage.non-heap.used                                    | jvm.memory-usage.used\_non-heap                                    |                                 |
| jvm.memory-usage.pools.Compressed-Class-Space.usage               | N/A                                                                | Removed                         |
| jvm.memory-usage.non-heap.usage                                   | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.CodeHeap-'non-profiled-nmethods'.init      | jvm.memory-usage.pools.init\_CodeHeap-'non-profiled-nmethods'      |                                 |
| jvm.memory-usage.pools.Compressed-Class-Space.init                | jvm.memory-usage.pools.init\_Compressed-Class-Space                |                                 |
| jvm.memory-usage.pools.G1-Old-Gen.used                            | jvm.memory-usage.pools.used\_G1-Old-Gen                            |                                 |
| jvm.thread-state.timed\_waiting.count                             | jvm.thread-state\_timed\_waiting                                   |                                 |
| jvm.memory-usage.pools.G1-Old-Gen.usage                           | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.CodeHeap-'non-profiled-nmethods'.usage     | N/A                                                                | Removed                         |
| jvm.garbage-collector.G1-Young-Generation.count                   | jvm.garbage-collector.count.total\_G1-Young-Generation             | Type was "gauge", now "counter" |
| jvm.thread-state.terminated.count                                 | jvm.thread-state\_terminated                                       |                                 |
| jvm.garbage-collector.G1-Old-Generation.time                      | jvm.garbage-collector.time.total\_G1-Old-Generation                | Type was "gauge", now "counter" |
| jvm.memory-usage.heap.committed                                   | jvm.memory-usage.committed\_heap                                   |                                 |
| jvm.memory-usage.pools.Metaspace.committed                        | jvm.memory-usage.pools.committed\_Metaspace                        |                                 |
| jvm.memory-usage.pools.CodeHeap-'non-nmethods'.committed          | jvm.memory-usage.pools.committed\_CodeHeap-'non-nmethods'          |                                 |
| jvm.memory-usage.non-heap.committed                               | jvm.memory-usage.committed\_non-heap                               |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.usage                    | N/A                                                                | Removed                         |
| jvm.thread-state.blocked.count                                    | jvm.thread-state\_blocked                                          |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.used-after-gc            | jvm.memory-usage.pools.used-after-gc\_G1-Survivor-Space            |                                 |
| jvm.memory-usage.pools.G1-Eden-Space.usage                        | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.CodeHeap-'non-profiled-nmethods'.used      | jvm.memory-usage.pools.used\_CodeHeap-'non-profiled-nmethods'      |                                 |
| jvm.memory-usage.pools.G1-Survivor-Space.used                     | jvm.memory-usage.pools.used\_G1-Survivor-Space                     |                                 |
| jvm.memory-usage.pools.Compressed-Class-Space.committed           | jvm.memory-usage.pools.committed\_Compressed-Class-Space           |                                 |
| jvm.memory-usage.pools.CodeHeap-'non-nmethods'.init               | jvm.memory-usage.pools.init\_CodeHeap-'non-nmethods'               |                                 |
| jvm.thread-state.count                                            | N/A                                                                | Removed                         |
| jvm.memory-usage.non-heap.init                                    | jvm.memory-usage.init\_non-heap                                    |                                 |
| jvm.thread-state.runnable.count                                   | jvm.thread-state\_runnable                                         |                                 |
| jvm.memory-usage.pools.CodeHeap-'profiled-nmethods'.committed     | jvm.memory-usage.pools.committed\_CodeHeap-'profiled-nmethods'     |                                 |
| jvm.memory-usage.pools.Metaspace.max                              | jvm.memory-usage.pools.max\_Metaspace                              |                                 |
| jvm.memory-usage.pools.G1-Old-Gen.used-after-gc                   | jvm.memory-usage.pools.used-after-gc\_G1-Old-Gen                   |                                 |
| jvm.memory-usage.pools.Compressed-Class-Space.max                 | jvm.memory-usage.pools.max\_Compressed-Class-Space                 |                                 |
| jvm.memory-usage.pools.CodeHeap-'non-nmethods'.max                | jvm.memory-usage.pools.max\_CodeHeap-'non-nmethods'                |                                 |
| jvm.memory-usage.pools.CodeHeap-'profiled-nmethods'.usage         | N/A                                                                | Removed                         |
| jvm.memory-usage.pools.Compressed-Class-Space.used                | jvm.memory-usage.pools.used\_Compressed-Class-Space                |                                 |
| jvm.free-used-memory                                              | jvm.free-memory                                                    |                                 |

## Secrets and passwords stored in configuration

Storing secrets and passwords directly in configuration and property files is deprecated and will be removed in a future release of IDM. Use [Secret stores](../security-guide/secret-stores.html) for secret resolution.

## Widgets

Widgets are deprecated and will be removed in a future release of IDM.

## Relationship schema query filter

The Query Filter field in the Edit Resource window of relationship schema properties has been deprecated.

Use cases requiring a delegated admin to see a subset of users or other objects can use a query filter on the role privilege to limit the users returned by the query.

## Secret store class renamed

The `org.forgerock.openidm.secrets.config.FileBasedStore` class has been deprecated and replaced by `org.forgerock.openidm.secrets.config.KeyStoreSecretStore`. The old class is currently an alias.

## Access configuration in access.js

In previous releases, access rules were configured in the `access.js` script. This script has been replaced by an `access.json` configuration file, that performs the same function. Existing deployments that use customized `access.js` files are still supported for backward compatibility. However, support for access rules defined in `access.js` is deprecated, and will be removed in a future release. You should move these access rules to a `conf/access.json` file. For more information, refer to [Authorization and roles](../auth-guide/authorization-and-roles.html).

## Actions on scheduler endpoint

The `action` parameter on the `scheduler` endpoint was deprecated in Version 1 of the endpoint and is not supported in Version 2.

To validate a cron expression, use the `validateQuartzCronExpression` action on the `scheduler/job` endpoint, as described in [Validate Cron Trigger Expressions](../schedules-guide/configure-schedules.html#validating-schedule-syntax).

## Health endpoints

The `health` endpoints, used to monitor system activity have been deprecated in this release, as their functionality was not considered to be of much use.

The information available on `health/recon` was node-specific. Instead, you can retrieve cluster-wide reconciliation details with a GET on the `recon` endpoint.

The information available on the `health/os` and `health/memory` endpoints can be retrieved by inspecting the [JVM metrics](../monitoring-guide/api-metrics.html#api-jvm-metric-names).

## Conditional query filters

The syntax of conditional query filters and scripts within notification filters has changed in this release. In previous IDM releases, request properties such as `content` in create and update requests or `patchOperations` in patch requests were referenced directly. For example, a previous configuration might have used the following query filter:

```json
"condition" : "content/manager pr"
```

In IDM 7 and later, query filters and scripts should reference the `request` object to obtain any request properties. Sample query filters have been changed accordingly. The previous example would be changed to the following:

```json
"condition" : "request/content/manager pr",
```

This syntax is more verbose, but it lets script implementations use request visitors logic based on the request type, and is more consistent with generic router filters.

The old request syntax will still work in IDM 7.0, but is considered deprecated. Support for the old syntax will be removed in a future release. Note that this change is limited to notification filters. Filters such as those used with scripted endpoints have never supported direct access to request properties, and are therefore not changing. For more information on notification filters, refer to [Configure notifications](../audit-guide/notification-config.html).

## oauthReturn endpoint

Support for `oauthReturn` as an endpoint for OAuth2 and OpenID Connect standards has been deprecated for interactions with AM and will be removed in a future release. Support for interactions with social identity providers was [removed in IDM 6.5.0](https://backstage.forgerock.com/docs/idm/6.5/release-notes/#removed-6.5.0).

Default versions of relevant configuration files no longer include `oauthReturn` in the `redirectUri` setting. However, for IDM 8.1, these configuration files should still work both with and without `oauthReturn` in the endpoint.

## `timeZone` in schedules

In [Configure schedules](../schedules-guide/configure-schedules.html), setting a time zone using the `timeZone` field is deprecated. To specify a time zone for schedules, use the `startTime` and `endTime` fields.

## MD5 and SHA-1 hash algorithms

Support for the `MD5` and `SHA-1` hash algorithms is deprecated and will be removed in a future release. You should use more secure algorithms in a production environment. For a list of supported hash algorithms, refer to [Salted Hash Algorithms](../security-guide/encoding-attribute-values.html#encoding-salted-hash).

## `JAVA_TYPE_DATE` attribute type

Support for the native attribute type, `JAVA_TYPE_DATE`, is deprecated and will be removed in a future release. This property-level extension is an alias for `string`. Any dates assigned to this extension should be formatted per ISO 8601.

## POST request with `?_action=patch`

Support for a POST request with `?_action=patch` is deprecated, when patching a specific resource. You can still use `?_action=patch` when patching by query on a collection.

Clients that do not support the regular PATCH verb should use the `X-HTTP-Method-Override` header instead.

For example, the following POST request uses the `X-HTTP-Method-Override` header to patch user jdoe's entry:

```
curl \
--header "X-OpenIDM-Username: openidm-admin" \
--header "X-OpenIDM-Password: openidm-admin" \
--header "Accept-API-Version: resource=1.0" \
--header "Content-Type: application/json" \
--request POST \
--header "X-HTTP-Method-Override: PATCH" \
--data '[
    {
        "operation":"replace",
        "field":"/description",
        "value":"The new description for Jdoe"
    }
]' \
"http://localhost:8080/openidm/managed/user/jdoe"
```

## `minLength` property

The managed object property `minLength` is deprecated. When you need to specify a minimum length for a property, use the `minimum-length` policy:

```json
{
    "policyId" : "minimum-length",
    "params" : {
        "minLength" : 8
    }
}
```

## Read requests at top of `/config`

Support for top-level read requests to the `/config` endpoint is deprecated. You can still retrieve a list of config IDs by querying the `/config` endpoint.

## Defining object schema `type` attribute in an array when it is a single type

Support for specifying an object's schema `type` attribute in an array when there is only a single type is deprecated and will be removed in a later release.

This affects schemas with `type` attribute definitions in the form:

```json
{
    "type" : ["string"]
}
```

`type` attribute definitions in this form should be updated to:

```json
{
    "type" : "string"
}
```

For additional information, refer to the [JSON schema `type` attribute definition](https://datatracker.ietf.org/doc/html/draft-zyp-json-schema-03#anchor9).
