PingIDM 8.0.0

Release notes

PingIDM (IDM) software provides centralized, simple management and synchronization of identities for users, devices, and things. IDM software is highly flexible and therefore able to fit almost any use case and workflow.

These release notes are written for anyone using the IDM 8 release. Read these notes before you install or upgrade IDM software.

Name changes for ForgeRock products

Product names changed when ForgeRock became part of Ping Identity.

The following name changes have been in effect since early 2024:

Old name New name

ForgeRock Identity Cloud

PingOne Advanced Identity Cloud

ForgeRock Access Management

PingAM

ForgeRock Directory Services

PingDS

ForgeRock Identity Management

PingIDM

ForgeRock Identity Gateway

PingGateway

Learn more about the name changes in New names for ForgeRock products in the Knowledge Base.

New features

For previous releases, the information could be outdated or superseded.

IDM 8.0

Bouncy Castle FIPS 140-3 compliance

You can configure PingIDM to meet Federal Information Processing Standard (FIPS) 140-3 compliance standards. Learn more in FIPS 140-3 compliance.

Distributed tracing with OpenTelemetry

You can run a distributed trace in PingIDM using OpenTelemetry and export the data to an external trace collector for telemetry storage and visualization.

Learn more in Distributed tracing.

Jetty 12.0.16 support

The embedded Jetty web server supports Jetty 12.0.16. Instead of jetty.xml, the updated configuration uses a webserver.json for global settings and a webserver.listener-*.json to detect changes. Learn more in Embedded Jetty configuration.

When serving SSL requests, Jetty 12.0.16 checks that the incoming host header matches the server certificate’s subject and will return a 400 Bad Request error on a mismatch. If you’re upgrading to IDM 8.0, you must ensure your IDM server certificate subject matches the host name used by your deployment.

Array comparison

You can choose how synchronization detects managed object array changes using unordered or ordered comparison using the configuration property comparison in the schema. Unordered JSON array comparison ignores the order of elements and can negate the need for certain custom scripts within mappings.

Logback

IDM now uses Logback to generate server logs. Learn more in Server logs.

Java 21 support

You can run IDM with Java 21. Learn more in Java requirements.

Audit-free health check

To verify the current server state without generating audit logs, use the new openidm/health endpoint. Learn more in Audit-free health check.

Additional metrics

New metrics are available for ICF operations.

Filesystem secret store automatic encryption

You can configure automatic encryption of your filesystem secret store.

Store credentials as secrets

You can store credentials for many services as secrets. The list of supported services has been expanded to include:

Learn more in Secret stores.

IDM 7.5

Connectors

Connectors continue to be updated and released outside of IDM. To stay up-to-date with new features and versions, check out the ICF Release notes.

Although not bundled in this release of IDM, the two newest connectors are available to download from Backstage:

International email addresses

IDM now supports international email addresses. This feature is only available for supporting SMTP providers.

For more information, refer to International email addresses.

Custom relationship properties

You can create custom relationship properties in the admin UI or with the REST API.

Store credentials as secrets

You can store credentials for various services as secrets. The supported services include:

For more information, refer to Secret stores.

Version file system secrets

You can have multiple versions of secrets stored in a file system secret store.

For more information, refer to Filesystem secret stores.

Enhanced signal propagation

Managed objects can now receive relationship graph topology change signals through the SignalPropagationCalculator class that is active by default.

Workflow engine upgrade

The Flowable embedded workflow engine has been upgraded to version 6.8.0. If you are upgrading from a previous version of IDM and use workflow, this upgrade requires one or more incremental upgrade scripts. For more information, refer to Upgrade an existing repository.

Connect to DS with ScriptedREST sample supports client_credentials grant type

The customizer script for the Connect to DS with ScriptedREST sample now includes OAuth capabilities for the client_credentials grant type.

End User UI supports array properties

Array properties now display in the End User UI.

IDM 7.4.1

  • The Flowable embedded workflow engine has been upgraded to version 6.8.0.

  • End user UI supports array properties.

  • SalesForce connector supports client_credentials and refresh_token grant types.

IDM 7.4.0

Filesystem secret stores

You can now configure secret stores to use filesystem secret stores. Filesystem secret stores use a directory containing many files, each storing a single secret. For more information, refer to Filesystem secret stores.

Microsoft Graph API email client

In addition to the SMTP client, you can now configure the outbound email service to use the new MS Graph API Client.

Use of the new email client requires a properly configured Microsoft Azure tenant.

For more information, refer to Outbound email service.

Additional metrics

New metrics are available for livesync and scheduler functions. For example requests, refer to Scheduler metrics.

Script support for countOnly queries

Queries within scripts now support the _countOnly parameter.

mTLS for authentication to DS

If you are using IDM with a DS repository, ForgeRock recommends using mTLS to authenticate to DS to better facilitate credential rotation. Refer to Configure mTLS.

IDM 7.3.1

Workflow engine upgrade

The Flowable embedded workflow engine has been upgraded to version 6.8.0. If you are upgrading from a previous version of IDM and use workflow, this upgrade requires one or more incremental upgrade scripts. For more information, refer to Upgrade an existing repository.

End User UI supports array properties

Array properties now display in the End User UI.

IDM 7.3.0

Support for Bouncy Castle FIPS

IDM now supports the use of Bouncy Castle FIPS as a security provider. Bouncy Castle FIPS is useful when dealing with government data, where meeting the FIPS 140-2 security requirement is necessary for regulatory compliance.

For information on how to configure Bouncy Castle, refer to FIPS 140-3 compliance.

Support for UTF-8 email addresses

IDM now supports UTF-8 (non-ascii/international) characters in email addresses, such as zoë@example.com. When sending emails to these type of addresses, the configured SMTP server must also support UTF-8.

Disable delegated administrator sort and filter while searching

You can now disable delegated administrator sort and filter while searching resource collections in the End User UI. For more information, refer to Disable sort and filter for resource collections.

Workflows now support JavaScript

IDM workflows now support JavaScript in addition to Groovy. For more information about scripting workflows, refer to BPMN 2.0 and workflow tools.

Patch operation improvements

It is now possible to patch the root of an object. The only supported patch operations on the root of an object are remove and replace.

Improvements to the /system endpoint

/system endpoints now support specifying additional fields when also using *. This allows callers to get fields that are not returned by default.

New sync mapping configuration fields

New sync mapping configuration fields, defaultSourceFields and defaultTargetFields, allow specifying which fields to use for read and query requests made on source and target resource collections.

IDM 7.2.2

This release includes updates to ICF connectors, updates to dependency libraries, bug fixes, and the following new feature:

Support for upgrading DS to later version than IDM

Upgrading to DS 7.3 is now supported. For more information, refer to Supported repositories.

IDM 7.2.1

This release includes updates to ICF connectors, updates to dependency libraries, and bug fixes.

IDM 7.2.0

This release of PingIDM software includes the following new features:

Property-based secret stores

IDM now supports property-based secret stores and can read keys and trusted certificates from properties that contain keys in Privacy-Enhanced Mail (PEM) format.

For more information, see Property secret stores.

Scanning tasks to activate and deactivate accounts

The default IDM configuration now includes two scanning tasks that activate and deactivate a user’s accountStatus, based on their activeDate and inactiveDate. For more information, see Activate and deactivate accounts.

external/email endpoint improvements

You can now use cc and bcc parameters with the sendTemplate action. For more information, see:

Workflow improvements

The Flowable embedded workflow engine has been upgraded to version 6.6.0. This upgrade fixes the issue with native email tasks previously mentioned in the Workflow Guide.

Policy validation for field removal

You can now validate field removal using the policy action validateProperty.

Relationship-derived Virtual Properties (RDVP) improvements

Relationship-derived Virtual Properties now include reference fields with details of the referenced relationship.

AD Password Synchronization Plugin UTC timestamps

The latest version of the Active Directory password synchronization plugin (v1.7.0) uses UTC timestamps for logs.

Bootstrap IDM without stored configuration

Previously, the property openidm.fileinstall.enabled also controlled the configs being loaded on startup. Therefore, to disable file monitoring, you had to first start IDM with it enabled in order to load the configs into the repository, and then restart IDM with it disabled. The new setting openidm.config.bootstrap.enabled (which defaults to true), allows file monitoring to be disabled, and the bootstrap process will load the configuration into the repository.

For more information, see Disable automatic configuration updates.

API version header warnings

IDM can now log warnings when API version headers are not specified.

Reconciliation enhancements

Reconciliation has been enhanced in the following ways:

  • Previously, if one node in the cluster went down or offline during a clustered reconciliation run, the reconciliation was canceled. This limitation no longer exists. For more information, see Clustered reconciliation.

  • Addition of the properties:

    • reconTargetQueryPaging

    • reconTargetQueryPageSize

    Learn more in the Synchronization reference.

Assignment synchronization optimization

A new property has been added to synchronization mappings, optimizeAssignmentSync, which determines whether modifications to an assignment’s attributes or relationships should be treated as a synchronization event for members of that assignment or role, or if it should only be treated as a synchronization event for members if the modified assignment is directly relevant to that mapping, or if effectiveAssignments is included in triggerSyncProperties.

Learn more in the Synchronization reference.

Query filtering on arrays

For versions of IDM running DS or PostgreSQL as a repository, queryFilter now supports filtering on the contents of arrays. For more information, see Filter objects in arrays.

Additional metrics

New metrics are available for workflow and JVM.

IDM 7.1.6

This release includes updates to ICF connectors, updates to dependency libraries, bug fixes, and the following new feature:

  • The SalesForce connector template supports client_credentials grant type.

IDM 7.1.4

This release includes updates to ICF connectors, updates to dependency libraries, bug fixes, and the following new feature:

IDM 7.1.2

This release includes updates to ICF connectors, updates to dependency libraries, bug fixes, and the following new feature:

  • The Flowable embedded workflow engine has been upgraded to version 6.6.0. This upgrade fixes the issue with native email tasks previously mentioned in the Workflow Guide.

IDM 7.1

Sample connection to Azure AD with the MS Graph API connector

The Synchronize data between IDM and Azure Active Directory sample uses the MS Graph API connector to synchronize users between IDM and Azure AD.

Password sync plugins

Active Directory Password Synchronization Plugin UTC timestamps

The latest version of the Active Directory password synchronization plugin uses UTC timestamps for logs.

Active Directory Password Synchronization Plugin infinite loop prevention

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key that helps prevent infinite password update loops. Learn more about the registry key, pwdChangeInterval.

Active Directory Password Synchronization Plugin configurable max retries

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key to configure the maximum retry attempts for password changes. Learn more about the registry key, maxFileRetry.

Active Directory Password Synchronization Plugin search filter

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key to configure a search filter to omit users/groups from password syncing. Learn more about the registry key, userSearchFilterStrict.

Support for AM Bearer Tokens in the DS and Active Directory Password Synchronization Plugins

The latest versions of the DS and Active Directory password synchronization plugins now support the use of AM bearer tokens as an authentication method. Learn more:

Support for alternative KBA answer hashing

Previously, KBA answers were always hashed as SHA-256 upon save, which is still the default setting. However, you can now specify an alternative hashing algorithm.

Managed object default values

You can now specify default values for properties in the managed object configuration. For example, the default managed object configuration includes a default value that makes accountStatus:active, which effectively replaces the onCreate script that was previously used to achieve the same result.

IDM assumes all default values are valid for the schema. Although IDM skips policy validation for objects with default values, you can force validation on property values

Support for REST queries on array properties (JDBC)

You can now perform REST queries on properly configured array fields. Learn more:

waitForCompletion property added to the config endpoint

The optional waitForCompletion parameter is now available to the config endpoint for create, update, and patch requests. Learn more:

API endpoint requires admin authentication

To protect production servers from unauthorized API descriptor requests, IDM now requires admin authentication for the API endpoint. Learn more in Secure the API Explorer.

Additional query types in JDBC explicit tables

Queries on explicit tables in JDBC now support bool:, num:, and long: in addition to the previously supported query parameters (strings, list:, and int:).

IDM 7.0.4

This release includes updates to ICF connectors, updates to dependency libraries, and bug fixes.

IDM 7.0.3

This release includes bug fixes.

IDM 7.0.2

IDM 7.0.1

This release includes bug fixes.

IDM 7

Password sync plugins

Active Directory Password Synchronization Plugin UTC timestamps

The latest version of the Active Directory password synchronization plugin uses UTC timestamps for logs.

Active Directory Password Synchronization Plugin infinite loop prevention

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key that helps prevent infinite password update loops. Learn more about the registry key, pwdChangeInterval.

Active Directory Password Synchronization Plugin configurable max retries

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key to configure the maximum retry attempts for password changes. Learn more about the registry key, maxFileRetry.

Active Directory Password Synchronization Plugin search filter

The latest version of the Active Directory Password Synchronization Plugin supports a new registry key to configure a search filter to omit users/groups from password syncing. Learn more about the registry key, userSearchFilterStrict.

Support for AM Bearer Tokens in the DS and Active Directory Password Synchronization Plugins

The latest versions of the DS and Active Directory password synchronization plugins now support the use of AM bearer tokens as an authentication method. Learn more:

Access configuration over REST

You can now configure access rules over REST, at the openidm/config/access endpoint. In previous releases, access rules were configured in the access.js file. This script file has been replaced by an access.json configuration file, that performs the same function. Learn more in Authorization and roles.

Privilege dynamic filters

You can now create privilege dynamic filters for delegated administrators.

Configurable HTTP I/O request buffer

You can now configure the temporary storage file size for HTTP I/O requests.

Filter expanded relationships

You can use _queryFilter to directly filter expanded relationships from a collection, such as authzRoles. Learn more in Filter expanded relationships.

Deterministic ECDSA signatures for JWT

By default, JWTs are now signed with deterministic Elliptic Curve Digital Signature Algorithm (ECDSA). In order to use this more secure signing method, Bouncy Castle, which is included in the default IDM installation, must be installed. If Bouncy Castle is unavailable or the key is incompatible, IDM falls back to normal ECDSA.

If you need to turn off the use of deterministic ECDSA, add the following line to conf/system.properties:

org.forgerock.secrets.preferDeterministicEcdsa=false

Debugging information for Groovy scripts

In previous releases, setting javascript.exception.debug.info=true in the boot.properties file enabled additional debug information, including line numbers and file names for JavaScript exceptions. In this release, setting groovy.exception.debug.info=true lets you gather comparable debug information for Groovy scripts.

REST API Versioning

IDM now supports the ability to specify the REST API version in HTTP calls and scripts. For more information, see REST API Versioning.

The following APIs have been updated in this release:

openidm/scheduler

Version 2 of this endpoint adds a previousRunDate property to the output of REST calls on specific scheduled tasks.

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

Support for AM bearer tokens

IDM now supports using AM bearer tokens for authentication, with the rsFilter authentication module. Going forward, this is the only supported method for integrating AM and IDM. Learn more in Authenticate through AM.

Notification property now configurable

Notifications of changes to managed objects are injected into a property in that object type. Previously, the name of this property was always _notifications. In this IDM release, you can customize the name of the notifications property. Learn more in Configure notifications.

Reconciliation Association Information

The new recon/assoc endpoint can be used to gather detailed information about the associations created between a source and a target object during a reconciliation. This endpoint requires the following tables and views to be added to your repository: reconassoc, reconassocentry, and reconassocentryview. Learn more about reconciliation association details.

For instructions on updating your existing repositories to enable this feature, refer to Upgrade an Existing Repository in the IDM 7.0 documentation.

Profile completeness endpoint

A new endpoint has been added to self-service, which lets you get a percentage value regarding the completeness of a specified user’s profile.

Audit logging safelist

By default, IDM now safelists fields that are safe to log. Learn more in Use policies to filter audit data.

in clause for queries

The in expression clause provides limited support for queries on singleton string properties.

Disposal of idle poolable connector instances (ICF)

In version 1.5.20.11 of the ICF framework, the framework disposes of idle connector instances in the connection pool (for poolable connectors such as the LDAP connector and the Database Table connector).

A connection pool cleaner thread now runs every minute and removes connections whose lastUsed time is larger than the minEvictableIdleTimeMillis.

This behavior is an improvement on previous releases, where a connection that had been used then returned to the connection pool remained there until the next connector operation. The previous behavior could result in several connections in the pool, that were idle but still connected to the target resource.

Separate mapping configuration files

This release lets you configure mappings in separate mapping files, instead of, or in addition to one sync.json file. You cannot manage separate mapping configurations through the Admin UI. Learn more in Resource mapping.

Queued sync retry

This release provides the ability to configure an infinite number of queued synchronization retries. Learn more in Configure queued synchronization.

Material Design Icon added to managed object configuration

mat-icon has been added to the schema property of the managed object configuration.

Additional query types in JDBC explicit tables

Queries on explicit tables in JDBC now support bool:, num:, and long: in addition to the previously supported query parameters (strings, list:, and int:).

config.properties additions

The following content was added to the default config.properties file:

# The name of the PersistenceManager to be used by the framework
# when persisting component configurations.
felix.cm.pm=repo

Archive

For documentation and release information prior to IDM 7.0, check out the Documentation Archive.

Security advisories

Ping issues security advisories in collaboration with our customers and the open source community to address any security vulnerabilities transparently and rapidly. Ping’s security advisory policy governs the process on how security issues are submitted, received, and evaluated as well as the timeline for the issuance of security advisories and patches.

For details of all the security advisories across Ping products, refer to Security Advisories in the Knowledge Base library.

Before you install

This topic covers requirements before you run PingIDM software.

Hardware and memory requirements

Due to the underlying Java platform, IDM software runs well on a variety of processor architectures.

To run IDM for evaluation, you need at least:

  • 256 MB memory (32-bit) or 1 GB memory (64-bit) available.

  • 10 GB free disk space for the software and sample data.

A DS repository requires free disk space of 5% of the filesystem size, plus 1 GB by default. To change this requirement, set the disk-full-threshold in the DS configuration. Learn more about Disk Space Thresholds in the DS documentation.

In production, disk space and memory requirements depend on the size of your external repository, as well as the size of the audit and service log files that IDM creates.

The amount of memory that IDM consumes is highly dependent on the data that it holds. Queries that return large data sets will have a significant impact on heap requirements, particularly if they are run in parallel with other large data requests. To avoid out-of-memory errors, analyze your data requirements, set the heap configuration appropriately, and modify access controls to restrict requests on large data sets.

IDM exposes many JVM metrics to help you analyze the amount of memory that it is consuming. For more information on analyzing hardware and memory performance, see Load testing.

Change the JVM heap size

Changing the JVM heap size can improve performance and reduce the time it takes to run reconciliations.

You can set the JVM heap size via the OPENIDM_OPTS environment variable. If OPENIDM_OPTS is undefined, the JVM maximum heap size defaults to 2GB. For example, to set the minimum and maximum heap sizes to 4GB, enter the following before starting IDM:

  • Unix/Linux

  • Windows

cd /path/to/openidm/
export OPENIDM_OPTS="-Xms4096m -Xmx4096m"
./startup.sh
Using OPENIDM_HOME:   /path/to/openidm
Using PROJECT_HOME:   /path/to/openidm
Using OPENIDM_OPTS:   -Xms4096m -Xmx4096m
...
OpenIDM ready
cd \path\to\openidm
set OPENIDM_OPTS=-Xms4096m -Xmx4096m
startup.bat
"Using OPENIDM_HOME:   \path\to\openidm"
"Using PROJECT_HOME:   \path\to\openidm"
"Using OPENIDM_OPTS:   -Xms4096m -Xmx4096m -Dfile.encoding=UTF-8"
...
OpenIDM ready

You can also edit the OPENIDM_OPTS values in startup.sh or startup.bat.

For more information about tuning and load testing, refer to Load testing

Operating System requirements

IDM 8 software is supported on actively maintained versions of the following operating systems:

  • Amazon Linux

  • Debian

  • Red Hat Enterprise Linux

  • Rocky Linux

  • SUSE Linux Enterprise

  • Ubuntu Linux

  • Windows Server 2019 and 2022

Java requirements

IDM software supports the following Java environments:

Supported Java Versions
Vendor Versions

OpenJDK, including OpenJDK-based distributions:

  • AdoptOpenJDK/Eclipse Temurin

  • Amazon Corretto

  • Azul Zulu

  • Red Hat OpenJDK

Ping tests most extensively with AdoptOpenJDK/Eclipse Temurin. Ping recommends using the HotSpot JVM.

17**, 21

Oracle Java

17**, 21

** For JDK 17, you must use version 17.0.3 or higher.

Ping recommends you keep your Java installation up-to-date with the latest security fixes.

Supported web application containers

You must install IDM as a standalone service, using the bundled Apache Felix framework and Jetty web application container. Alternate containers are not supported. IDM bundles Jetty version 12.0.16.

Supported repositories

The following repositories are supported for use in production:

  • PingDS (DS) 7.5 and 8.

  • MySQL version 8.0 and 9.0 with MySQL JDBC Driver Connector/J 8.0.

    Do not use Connector/J versions 8.0.23 through 8.0.25. Why?
  • MariaDB version 10.10.2 and 11.7 with MySQL JDBC Driver Connector/J 8.0.

    Do not use Connector/J versions 8.0.23 through 8.0.25. Why?
  • Microsoft SQL Server 2019 and 2022.

  • Oracle Database 21c and 23ai.

  • PostgreSQL 16 and 17.

  • IBM DB2 11.5.

Ping supports repositories in cloud-hosted environments, such as AWS and GKE Cloud, as long as the underlying repository is supported. In other words, the repositories listed above are supported, regardless of how they are hosted.

These repositories might not be supported on all operating system platforms. Refer to the specific repository documentation for more information.

Do not mix and match versions. For example, if you are running Oracle Database 21c, and want to take advantage of the support for Oracle UCP, download driver and companion JARs for Oracle version 21c.

Supported browsers

The IDM UI has been tested with the latest, stable versions of the following browsers:

  • Chrome and Chromium

  • Edge

  • Firefox

  • Safari

Supported connectors

For a complete list of IDM bundled connectors, check out Available connectors.

The Java RCS is supported on any platform on which Java runs and requires the following Java version(s):

  • For Java RCS version 1.5.20.22 and earlier, Java 11 or 17.

  • For Java RCS version 1.5.20.23 and later, Java 17.

Although the scripted connector toolkits are supported, connectors that you build with these toolkits are not supported. You can find examples of how to build connectors with these toolkits in Samples.

Check out the ICF release notes for the latest connector and RCS updates.

IDM / ICF Compatibility Matrix
IDM Version RCS Version Java Connectors Scripted Groovy Connectors .NET Connectors

7.x

1.5.x

Java connectors version 1.5.x

Scripted REST, Scripted SQL, SSH, Kerberos connectors version 1.5.x.

PowerShell Connector 1.5.x

8.x

1.5.x

Java connectors version 1.5.x

Scripted REST, Scripted SQL, SSH, Kerberos connectors version 1.5.x.

PowerShell Connector 1.5.x

Ping recommends you keep your RCS installation and connectors up-to-date with the latest versions.

Supported password synchronization plugins

The following table lists the supported password synchronization plugins:

Plugin Supported Version

DS Password Synchronization Plugin

8.0.x, supported with DS 8.0.x and IDM 8.0.x

Active Directory Password Synchronization Plugin

1.7.0 and 1.5.0 supported on Windows Server

Third-Party software

Ping provides support for using the following third-party software when logging Ping Common Audit events:

Software Version

Java Message Service (JMS)

2.0 API

MySQL JDBC Driver Connector/J

8 (at least 8.0.19)

Do not use Connector/J versions 8.0.23 through 8.0.25. Why?

Splunk

8.0 (at least 8.0.2)

Elasticsearch and Splunk have native or third-party tools to collect, transform, and route logs. Examples include Logstash and Fluentd.

Ping recommends that you consider these alternatives. These tools have advanced, specialized features focused on getting log data into the target system. They decouple the solution from the Ping Identity Platform systems and version, and provide inherent persistence and reliability. You can configure the tools to avoid losing audit messages if a Ping Identity Platform service goes offline, or delivery issues occur.

These tools can work with common audit logging:

  • Configure the server to log messages to standard output, and route from there.

  • Configure the server to log to files, and use log collection and routing for the log files.

Although Ping does not provide support for these tools, you can any use of the following third-party software to monitor Ping servers:

Software Version

Grafana

7 (at least 7.4.3)

Graphite

1

Prometheus

2.36

For Hardware Security Module (HSM) support, Ping software requires a client library that conforms to the PKCS#11 standard v2.20 or later.

Incompatible changes

When you update to IDM 8.0.0 from the last major version, the following changes could impact existing deployments. Adjust existing scripts, files, clients, and so on, as necessary. You should also review Deprecation notices.

If you are upgrading from an older release, review the changed functionality from all releases after your current version of IDM.

For previous releases, the information could be outdated or superseded.

Changes between IDM 7.5.x and 8.0.0

Embedded Jetty web server upgrade

The embedded Jetty web server has been upgraded to Jetty 12.0.16, and jetty.xml is no longer supported in this IDM release. Learn more in Embedded Jetty configuration.

When serving SSL requests, Jetty 12.0.16 checks that the incoming host header matches the server certificate’s subject and will return a 400 Bad Request error on a mismatch. If you’re upgrading to IDM 8.0, you must ensure your IDM server certificate subject matches the host name used by your deployment.

Felix HTTP Jetty upgrade

Felix HTTP Jetty has been upgraded to Jetty 12.1.0.

Servlet Specification upgrade

Servlet Specification has been upgraded to 6.0.

Jetty thread pool settings

You can now configure Jetty thread pool settings in conf/webserver.json.

Gzip compression settings

You can now configure Gzip compression for HTTP responses in conf/webserver.json.

Secure protocol configuration

You can now configure Secure protocol settings in conf/webserver.listener-*json.

Embedded DS repository

The embedded DS repository is no longer included with IDM. Before you can use IDM, you must select and configure a repository.

Logback

PingIDM now uses Logback to generate its server logs. You will need to add logback.xml to your configuration when updating. Learn more in Server logs.

Standalone end-user UI not bundled with PingIDM

The end-user UI is no longer bundled with PingIDM. You can download and install the end-user UI separately from the GitHub repository: ForgeRock/end-user-ui. Learn more in the End-user UI.

Array comparison

Starting with IDM 7.3, unordered array comparison became the default behavior. For this release of IDM, ordered array comparison is the default behavior, restoring the default behavior prior to IDM 7.3.

You can now use the comparison managed object schema configuration property to choose how JSON array comparisons are made with regard to array order.

Java 21 support

Previously, running IDM required Java 17. You can now use Java 17 or Java 21. Learn more in Java requirements.

Changes between IDM 7.4.x and 7.5.0

Workflow engine upgrade

The Flowable embedded workflow engine has been upgraded to version 6.8.0. If you are upgrading from a previous version of IDM and use workflow, this upgrade requires one or more incremental upgrade scripts. For more information, refer to Upgrade an existing repository.

Array schema fields default to item type string

Schema fields defined as type array are required to have an item type defined as of IDM 7.4.0. IDM 7.5.0 defaults the item type to string to avoid startup issues if the type is not defined.

populateDefaults flag removed from secrets configuration

The sample secrets configuration (secrets.json) no longer includes the populateDefaults flag. It is safe to remove this from your secrets configuration.

Java 17 required

Running IDM requires Java 17. Learn more in Java requirements.

Legacy hashing algorithms removed from the Admin UI

MD5 and SHA-1 are supported for legacy reasons, but should not be used in production environments and have been removed from the Admin UI. Learn more in Salted hash algorithms.

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.

Changes between IDM 7.4.0 and 7.4.1

Workflow engine upgrade

The Flowable embedded workflow engine has been upgraded to version 6.8.0. If you are upgrading from a previous version of IDM and use workflow, this upgrade requires one or more incremental upgrade scripts. For more information, refer to Upgrade an existing repository.

Changes between IDM 7.3.x and 7.4.0

IDM requires JDK 11.0.20 or higher

If you try to run this version of IDM using an older release of JDK, the following error displays:

SEVERE: Error loading keystore
java.io.IOException: Invalid keystore format
at java.base/sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:667)
at java.base/sun.security.util.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:222)
at java.base/java.security.KeyStore.load(KeyStore.java:1479)
at org.forgerock.security.keystore.KeyStoreBuilder.build(KeyStoreBuilder.java:228)
at org.forgerock.openidm.secrets.keystore.KeyStoreRepository.load(KeyStoreRepository.java:59)
at org.forgerock.openidm.secrets.config.ConfigSupport.asKeyStoreHolder(ConfigSupport.java:95)
at org.forgerock.openidm.secrets.config.StoreSupport.asKeyStoreHolder(StoreSupport.java:61)
at org.forgerock.openidm.secrets.config.FileBasedStore.asKeyStoreHolder(FileBasedStore.java:18)
...

For a complete list of supported Java versions, refer to Java requirements.

The DB2 driver is now OSGi-compliant

When using IDM with a DB2 database, you previously had to create an OSGi-compliant driver. The driver included with DB2 is now compliant.

For more information, refer to:

Changes between IDM 7.3.0 and 7.3.1

Workflow engine upgrade

The Flowable embedded workflow engine has been upgraded to version 6.8.0. If you are upgrading from a previous version of IDM and use workflow, this upgrade requires one or more incremental upgrade scripts. For more information, refer to Upgrade an existing repository.

Changes between IDM 7.2.x and 7.3.0

Synchronization JSON array comparison is order-agnostic

JSON array comparison during sync is now order-agnostic. This change could negate the need for certain custom scripts within mappings. For example, scripts that were previously required to sort ldapGroups values to avoid unnecessary target object updates.

Attribute encryption on assignments

Assignment attributes are now encrypted if the corresponding connector attribute indicates confidentiality, based on the attribute’s nativeType (such as JAVA_TYPE_GUARDEDSTRING or JAVA_TYPE_GUARDED_BYTE_ARRAY). As part of this change, the managed assignment object now includes the following property:

"attributeEncryption" : { }

If attributeEncryption is not present, the assignment attributes are not encrypted. If the property is present but empty, it will default to IDM’s default encryption cipher. To specify a different cipher, add the cipher property. For example:

"attributeEncryption" : {
  "cipher" : "AES/CBC/PKCS5Padding"
}

Additionally, secrets.json has a new secret: idm.assignment.attribute.encryption.

Changes between IDM 7.1.x and IDM 7.2.0

Default onDelete behavior

The default onDelete behavior previously called a file-based script, onDelete-roles.js. This has been removed from the managed object configuration.

Felix and OSGi upgrades

IDM has upgraded to OSGi Core 8.0 and Felix Framework 7.0.0.

JMS 2.0 upgrade

The samples that use the Java Message Service (JMS) have been upgraded to use the 2.0 API and Apache ActiveMQ Artemis:

PATCH request exceptions

Previously, illegal PATCH requests could return a 400 or 500 exception. In such cases, IDM now returns a 400 status.

Policy enforcement on role name

The name property of a managed role is now subject to the uniqueness policy by default. This means that you cannot create multiple roles with the same name. To change this behavior, adjust the policy validation on the role property in your managed object configuration.

Precedence in locales in the self-registration email template

Previously, the defaultLocale specified in the Self-Registration Email Template configuration took precedence. As of IDM 7.2, locales specified as preferredLocales in the Accept-Language header take precedence over the defaultLocale.

Paused queued synchronization for unavailable routes

Synchronization queue processing for a mapping is now paused if either the source or target system route are unregistered. For more information, see Configure queued synchronization.

Embedded workflow database

Previously, you could use the Flowable workflow engine’s embedded H2 database for demo and testing purposes. IDM no longer includes this database. Before you use workflow, you must install a JDBC repository.

Learn more in Enable workflows.

Default MySQL connection driver

The default JDBC Connection Configuration now uses the connection driver from MySQL 8.1 (com.mysql.cj.jdbc.Driver).

Changes between IDM 7.1.4 and 7.1.6

No additional incompatible changes were made between 7.1.4 and 7.1.6.

Changes between IDM 7.1.2 and 7.1.4

No additional incompatible changes were made between 7.1.2 and 7.1.4.

Changes between IDM 7.1.0 and 7.1.2

Embedded workflow database

Previously, you could use the Flowable workflow engine’s embedded H2 database for demo and testing purposes. IDM no longer includes this database. Before you use workflow, you must install a JDBC repository.

Learn more in Enable workflows.

Workflow version update

Previously, workflows would break when upgrading from version 7.0.2 to 7.1.0 of IDM, because of out-of-sync versions of the Flowable workflow engine. This is fixed in version 7.1.2 of IDM. If you are upgrading IDM from version 7.0, please use IDM version 7.1.2 or higher.

Changes between IDM 7.0.x and 7.1.0

Data format change for external DS repositories

For external DS repositories with explicitly mapped managed objects, the stored data format has changed for certain data types.

In IDM versions prior to 7.1, certain property values were always considered as strings, so the returned JSON format of a managed object would look something like this:

{
  "boolean": "true",
  "integer": "12345",
  "timestamp": "20210315010101Z",
  "json": "{\"key\":\"value\"}"
}

In IDM 7.1, these properties are returned with the correct data type, so a similar object in IDM 7.1 looks something like this:

{
  "boolean": true,
  "integer": 12345,
  "timestamp": "2021-03-15T01:01:01Z",
  "json": { "key": "value" }
}

This change doesn’t affect new deployments. If you are upgrading an existing deployment with an external DS repository with explicit object mappings, you should test this change and adapt your scripts and REST API calls, as necessary.

This change affects the following data types:

  • Booleans: from string to JSON boolean

    Affected OIDs: 1.3.6.1.4.1.1466.115.121.1.7 and 1.3.6.1.4.1.36733.2.1.3.3.7

  • Integers: from string to JSON integer

    Affected OIDs: 1.3.6.1.4.1.1466.115.121.1.27 and 1.3.6.1.4.1.36733.2.1.3.3.27

  • Generalized time: from string in LDAP generalized time format, to string in ISO 8601 format

    Affected OIDs: 1.3.6.1.4.1.1466.115.121.1.24 and 1.3.6.1.4.1.36733.2.1.3.3.24

  • JSON: from JSON embedded in a string to structured JSON

    Affected OIDs: 1.3.6.1.4.1.36733.2.1.3.1

If you want to retain the legacy behavior, set the following property in conf/system.properties:

openidm.ds.rest2ldap.ignoreSchema.enabled=true

This is not recommended in a production deployment and should be used only temporarily, as part of a plan to adapt to these changes.

Audit handler changes

The JsonStdoutAuditEventHandler is now pre-configured in the standard audit configuration, but is disabled by default.

Previously, to enable or disable audit handlers, you needed to modify conf/audit.json directly. Now, you can set the following properties in the resolver/boot.properties file to true or false:

  • openidm.audit.handler.json.enabled

  • openidm.audit.handler.stdout.enabled

  • openidm.audit.handler.repo.enabled

Learn more in:

Parameterized HTTP and HTTPS enablement

Previously, to enable or disable HTTP or HTTPS, you could modify conf/config.properties directly. Now, you can set the following properties in the resolver/boot.properties file to true or false:

  • openidm.https.enabled

  • openidm.http.enabled

Parameterized Felix web console credentials

Previously, to change the Felix web console credentials, you could modify the conf/felix.webconsole.json file directly. Now, you can set the following properties in the resolver/boot.properties file:

  • openidm.felix.webconsole.username

  • openidm.felix.webconsole.password

Notification changes

Notifications are now disabled by default. Previously, to enable or disable notifications, you could modify the applicable conf/notificationType.json file directly. Now, you can set the following properties in the resolver/boot.properties file to true or false:

  • openidm.notifications.passwordUpdate

  • openidm.notifications.profileUpdate

  • openidm.notifications

Learn more in Configure notifications.

Moved configuration files

The following files have been moved from the /path/to/openidm/conf/ directory:

  • auth.profile.json moved to /path/to/openidm/samples/example-configurations/self-service/.

  • jsonstore.json moved to /path/to/openidm/samples/example-configurations/self-service/.

  • identityProviders.json moved to /path/to/openidm/samples/example-configurations/self-service/.

Improved validateProperty error handling

Previously, API requests containing the validateProperty action to unknown resources or those with invalid POST body content could result in an invalid true response, or a generic 500 Internal Server Error. Both of these situations now return a 400 Bad Request Error with an explanation.

Error comparison
  • BEFORE

  • AFTER

{
  "code": 500,
  "reason": "Internal Server Error",
  "message": "TypeError: Cannot call method "hasOwnProperty" of null",
  "detail": {}
}
{
  "code": 400,
  "reason": "Bad Request",
  "message": "object and properties were not provided in request content, and they are unable to be retrieved.",
  "detail": {}
}

Changes to router.json

The default router.json file no longer includes system in the matching pattern.

Changes between IDM 6.5.x and 7.0.0

Embedded workflow database

Previously, you could use the Flowable workflow engine’s embedded H2 database for demo and testing purposes. IDM no longer includes this database. Before you use workflow, you must install a JDBC repository.

Learn more in Enable workflows.

New workflow engine

The Activiti workflow engine has been replaced with Flowable. Current workflow definitions will continue to work with the new engine in compatibility mode, but all new workflow definitions must be written for Flowable. Learn more in Workflow definition comparison.

If you are using MySQL for the workflow database, the following apply:

  • You must use MySQL version 5.6.4 or later. If you are using an older version, perform the MySQL upgrade before upgrading to IDM 7 or later. For additional information, see the Flowable Note for MySQL users.

  • Flowable automatically upgrades the database schema and can encounter non-recoverable errors related to date settings. Before you start IDM 7 or later for the first time, remove the SQL_MODE settings NO_ZERO_IN_DATE and NO_ZERO_DATE. Example SQL command:

    mysql -uroot -ppassword
    
    set GLOBAL SQL_MODE='';
    
    use openidm;
    set SQL_MODE='';

    After you complete the upgrade process, you can restart MySQL and your original settings should be restored.

Changes to boot.properties

Prometheus monitoring

Monitoring using Prometheus is no longer achieved with a specific access role. The openidm/metrics/prometheus endpoint is now protected by a basic authentication filter, using credentials set in the resolver/boot.properties file. Learn more in Prometheus endpoint.

Debugging information for Groovy scripts

In previous releases, setting javascript.exception.debug.info=true in the boot.properties file enabled additional debug information, including line numbers and file names for JavaScript exceptions. In this release, setting groovy.exception.debug.info=true lets you gather comparable debug information for Groovy scripts.

Added properties

These properties have been added to resolver/boot.properties:

  • openidm.servlet.upload.alias=/upload and openidm.servlet.export.alias=/export: Sets the REST endpoints for the bulk import feature.

  • openidm.admin.password=openidm-admin: Lets you change the password of the administrative user before startup.

Removed properties

These properties have been removed from resolver/boot.properties:

  • openidm.script.javascript.debug

  • openidm.script.javascript.sources

  • openidm.ssl.host.aliases

  • com.iplanet.am.cookie.name

  • com.sun.identity.auth.cookieName

Changes to logging.properties

The default log message formatter has changed from ThreadIdLogFormatter to SanitizedThreadIdLogFormatter. The new default encodes control characters (such as newline characters) using URL-encoding, to protect against log forgery. Control characters in stack traces are not encoded. Learn more in Log message format.

Change to how authorization roles are assigned

In previous IDM releases, managed users were granted the openidm-authorized role as a relationship during user creation as part of the onCreateUser.js script. In IDM 7, users are granted the openidm-authorized role statically when they authenticate. Learn more in Authentication and roles.

This way of granting internal authentication roles is considered a best practice and is recommended for performance reasons. However, if your deployment relies on the old way of granting the openidm-authorized role, that configuration is still supported, and you can use your existing onCreateUser.js script to grant the role on creation.

Schema change to authzRoles

The default relationship model for authzRoles and authzMembers has changed in this release. In the default configuration, a user’s authzRoles now references only the internal/role resource collection and not the managed/role. Conversely, an internal role’s authzMembers property now references only the managed/user resource collection.

The default schema configuration files have been amended to support this change. The managed/role collection has been removed from the authzRoles property on a managed user object and the internal/user collection has been removed from the authzMembers property on an internal role object.

Multiple resource collections for a single relationship field are not currently supported with a DS repository. For legacy reasons, Multiple resource collections will still work with a JDBC repository.

Change to the INTERNAL_USER authentication module

The INTERNAL_USER authentication module is no longer provided in the default authentication configuration.

This change means that any scripts you used previously to update internal user passwords in the IDM repository will need to be modified.

Change to Prometheus monitoring

Monitoring using Prometheus is no longer achieved with a specific access role. The openidm/metrics/prometheus endpoint is now protected by a basic authentication filter, using credentials set in the resolver/boot.properties file. Learn more in Prometheus endpoint.

Change in how boolean values are assessed

Properties stored in the repository with boolean (true/false) values are processed differently from this release. A property value is now considered false if its value is false or null. The value is considered true only if it is true, not if it is null. If you are migrating from a previous IDM release, you might need to adjust your scripts to take this change into account.

Queued sync changes

Processing order of queued synchronization mappings

In previous IDM releases, mappings for which queued synchronization was enabled were processed first. The synchronization engine would then process the non-queued mappings in order. In IDM 7, all mappings are processed in the order in which they are listed, regardless of whether queued synchronization is enabled.

If you want to retain the pre-7.0 behavior, place your queued synchronization mappings first in your list of mappings.

Removal of remainingRetries from queued synchronization

This release lets you configure an infinite number of queued synchronization retries. As part of this change, the remainingRetries property has been removed from the queued synchronization object.

Virtual property calculation for effectiveRoles and effectiveAssignments

effectiveRoles and effectiveAssignments are now calculated in IDM by default, using the new queryConfig property. The old method of using onRetrieve scripts will still work. The new queryConfig property is also available for use with other virtual properties. Learn more in Effective roles and effective assignments and Virtual properties.

Gzip compression for HTTP responses

You can now configure Gzip compression for HTTP responses in conf/jetty.xml. In previous IDM releases, compression was configured in conf/servletfilter-gzip.json. This file has been removed.

Configurable hashing

Temporal constraint enforcement on roles

Enforcing temporal constraints on roles is now achieved through Java, rather than through the onSync-roles.js and postOperation-roles.js scripts. These scripts are still provided in openidm/bin/defaults/script/roles for backward compatibility.

To use the new Java-based functionality in existing deployments, change the role object in your managed object schema (conf/managed.json) by adding "isTemporalConstraint" : true to the "temporalConstraints" object. For example:

"temporalConstraints" : {
    "description" : "An array of temporal constraints for a role",
    "title" : "Temporal Constraints",
    "viewable" : false,
    "returnByDefault" : true,
    "isTemporalConstraint" : true,
    "type" : "array",
    ...
}

Change to JMS audit handler

The batch configuration for the JMS common audit handler for access logs has changed to support reconnection if the broker becomes unavailable.

This change adds a batch.writeInterval setting. It removes the following settings:

  • batch.batchEnabled

  • batch.insertTimeoutSec

  • batch.pollTimeoutSec

  • batch.shutdownTimeoutSec

  • batch.threadCount

Change to default audit configuration

The default audit configuration no longer includes the recon audit topic. You can enable it by adding the recon audit topic to the topics list in conf/audit.json for the event handlers you choose.

This change does not affect how auditing reconciliations works, just what the default configuration includes. No action is necessary unless you wish to have auditing on reconciliations enabled on a new installation. Learn more in Query the reconciliation audit log.

Datatype of userPassword property in provisioner files

As a security precaution, the nativeType for userPassword properties has been changed to JAVA_TYPE_GUARDEDSTRING in all sample provisioner files for the LDAP connector. If you have customized provisioner files, you should change this property. For example, change:

Example provisioner update
  • BEFORE

  • AFTER

"userPassword" : {
    "type" : "string",
    "nativeName" : "userPassword",
    "nativeType" : "string",
    ...
"userPassword" : {
    "type" : "string",
    "nativeName" : "__PASSWORD__",
    "nativeType" : "JAVA_TYPE_GUARDEDSTRING",
    ...

Previous IDM versions included a global consent setting in conf/consent.json. This file included a single configuration property, enabled, which determined whether IDM should check any mappings where consent was enabled and prompt end users for consent.

This global consent setting and the corresponding consent.json file have been removed. If you have an existing consent.json file in your configuration, it will be ignored.

Consent is now assessed only on a per-mapping, per-object basis.

Support for MySQL Connector/J version 8.0

IDM 7 adds support for the latest version of MySQL Connector/J. If you are using MySQL Connector/J version 8.0 or later, make sure your datasource.jdbc-default.json file includes a setting for the time zone in your jdbcUrl property:

"jdbcUrl" : "jdbc:mysql://&{openidm.repo.host}:&{openidm.repo.port}/openidm?allowMultiQueries=true&characterEncoding=utf8&serverTimezone=UTC",

Also, note the driverClass changed in MySQL Connector/J version 8.0, from com.mysql.jdbc.Driver to com.mysql.cj.jdbc.Driver. The previous driverClass name will still work for now, but should be updated to avoid it displaying a warning when starting up IDM.

Default security protocols for inbound connections

The default security protocols for inbound connections to IDM are TLSv1.2 and TLSv1.3. Learn more in Jetty property reference.

Support for the TLSv1.1 protocol has been removed by default.

Removal of address2 from the managed object schema

The address2 attribute has been removed from the managed object schema (conf/managed.json).

ICF and connector changes

The following ICF and connector changes will have an impact on existing IDM deployments that use those connectors:

Workday connector

The Workday connector is no longer bundled with IDM. Download the connector and its dependencies from the Backstage download site.

Database Table connector

The configuration requirements for the Database Table connector have changed:

  • The jdbcDriver and jdbcUrlTemplate properties have been removed. Use driverClassName and url instead.

  • The database property has been removed. The database should now be specified in the JDBC address in url.

  • Additional (optional) configuration properties are now available. For a full list, refer to Database table connector.

Additionally, the Database Table connector example configurations have changed:

samples/example-configurations/provisioners/provisioner.openicf-contractordb.json
  • Removed required : true from the __NAME__ property.

  • Added required : true to the EMAIL property.

  • Removed "keyColumn" : "UNIQUE_ID".

samples/example-configurations/provisioners/provisioner.openicf-contractordb.sql

Set EMAIL as the PRIMARY KEY.

Archive

For documentation and release information prior to IDM 7.0, check out the Documentation Archive.

Deprecation

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

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.

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 or similar to export your data to a third-party audit framework, such as 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 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.

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 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 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.

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.

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.

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:

"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:

"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.

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.

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

timeZone in schedules

In Configure schedules, 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.

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:

{
    "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:

{
    "type" : ["string"]
}

type attribute definitions in this form should be updated to:

{
    "type" : "string"
}

For additional information, refer to the JSON schema type attribute definition.

Discontinued

We’ve removed the following functionality. For previous releases, the information could be outdated or superseded.

IDM 8.0

Jetty configuration

We’ve removed jetty.xml configuration in this release of IDM. The updated Jetty 12.0.16 configuration is replaced with a webserver.json file for global settings and a webserver.listener-*.json file to detect changes. Learn more in Embedded Jetty configuration.

Custom servlet filters

Custom servlet filters are not supported in IDM 8.0. The only servletfilter-* configurations you can continue to use are CrossOriginFilter and LargePayloadServletFilter.

Embedded DS repository

The embedded DS repository is no longer included with IDM. Before you can use IDM, you must select and configure a repository.

Apache Felix web console

We’ve removed the Apache Felix web console in this release of IDM.

Tamper protection for CSV audit logs

We’ve removed tamper protection for CSV audit logs in this release of IDM.

Integrated Windows Authentication (IWA)

We’ve removed the IWA authentication module in this release of IDM. This feature is a function of PingAM.

Standalone self-service

We’ve removed IDM standalone self-service and all self-service stages in this release. From IDM 7 onwards, this functionality is replaced by AM Authentication Trees.

The admin UI link to self-service resulting in a 404 error is a known issue.

Social authentication

We’ve removed social authentication in this release of IDM. The feature is a function of AM. Once a user has logged in through AM (using a social provider or some other way), they can obtain an access token with that session and use the access token to interact with IDM through the rsFilter configuration.

Additionally, Microsoft has deprecated the "Sign In with LinkedIn" functionality as of August 1, 2023. Refer to Sign In with LinkedIn.

Progressive profile

We’ve removed progressive profile data collection in this release of IDM. This functionality is already supported by PingOne Advanced Identity Cloud and AM in a platform deployment. Learn more in:

Samples

We’ve removed the following samples and example configurations in this release.

Getting started sample

The getting-started sample is no longer included with IDM. Use Synchronize data from a CSV file to IDM instead.

Synchronize data between IDM and DocuSign sample

The sync-with-docusign sample is no longer included with IDM. You can find more information in the ICF documentation.

Example configurations
  • provisioner.openicf-engineering.json

IDM 7.5

Java 11 support

Running IDM requires Java 17. Learn more in Java requirements.

IDM 7.4

Sample notification configuration files

We’ve removed the following sample notification configuration files from the /path/to/openidm/samples/example-configurations/conf directory:

  • notification-newReport.json

  • notification-termsUpdate.json

Splunk and Elasticsearch audit handlers

We’ve removed the Splunk and Elasticsearch audit event handlers in this release.

IDM 7.4 supports file-based audit handlers and logging to standard output, both of which Elasticsearch and Splunk can consume.

IDM 7.3

No features or functionality were removed in this release.

IDM 7.2

OAUTH_CLIENT authentication module

The OAUTH_CLIENT authentication module has been removed. Using OAuth2 for authentication through AM is available with the resource server filter (rsFilter).

CLI update command

The cli.sh update command (used in older releases to apply maintenance updates) has been removed in this release. Learn more about upgrading to the latest IDM release in the Upgrade Guide. The ability to place a server in maintenance mode has also been removed.

IDM 7.1

No features or functionality were removed in this release.

IDM 7.0

Native queries using _queryExpression

Native query expressions using the _queryExpression keyword are no longer supported on managed objects. You must rewrite any custom queries that use _queryExpression as regular filtered queries or as parameterized queries. Native query expressions are still supported for system objects.

reloadScriptOnExecution for Scripted Groovy connectors

For scripted Groovy connectors, the reloadScriptOnExecution property has been removed from all sample provisioner files, as the property is not used by the connectors. To learn more about how scripts are loaded, refer to Script compilation and caching.

Scripted PowerShell connectors still use the ReloadScriptOnExecution property to determine when a script is reloaded from disk.

Properties from boot.properties

The following properties have been removed from <filename>resolver/boot.properties</filename>:

  • openidm.script.javascript.debug

  • openidm.script.javascript.sources

  • openidm.ssl.host.aliases

  • com.iplanet.am.cookie.name

  • com.sun.identity.auth.cookieName

Custom aliases for default keys

You can no longer specify custom aliases for the default keys that IDM generates on startup. Learn more in The IDM keystore.

Communication protocol for connector servers

In previous IDM releases, the protocol property of a connector server configuration specified the communication protocol to the remote connector server. This property existed for legacy purposes and was set to websocket by default. The property has now been removed and connections to the remote connector server always use the websocket protocol.

Full Stack sample

The "full stack sample" (Integrating IDM With the ForgeRock Identity Platform) has been removed. The only supported method of authentication through AM is by using AM bearer tokens and the rsFilter authentication module. Learn more in the Platform Setup Guide.

Obfuscating and encrypting property values

The ability to generate obfuscated and encrypted property values by using the crypto bundle has been removed. The secrets service replaces this functionality. Learn more in Secret stores.

Self-service registration with the legacy UI

When configuring self-service registration, the idmUserDetails stage had previously used the identityResourceUrl property instead of identityServiceUrl. This stage now correctly uses the identityServiceUrl property. identityResourceUrl has been removed.

ScriptedCREST Connector and Sample

The ScriptedCREST connector and the corresponding sample have been removed in this release. Migrate any deployments that use this connector to the Scripted REST connector.

Office 365 Connector

Support for the Office 365 connector has been removed in this release. Instead of the Office 365 connector, use the Microsoft Graph API connector.

Active Directory Connector

Support for the Active Directory (AD) .NET Connector has been removed.

Archive

For documentation and release information prior to IDM 7.0, check out the Documentation Archive.

Fixed issues

The following highlighted bugs were fixed in this release:

  • OPENIDM-18495: Connector Data tab is sending a queryFilter with bad sortKeys

  • OPENIDM-19829: Time spent in authentication service is not included in access audit elapsed time

  • OPENIDM-19918: Order-agnostic comparison of array fields in sync must be optional

  • OPENIDM-20063: Syncing ldap object containing // does not work

  • OPENIDM-20142: Permanent failure caused by transient connector validation failure during provisioner service activation

  • OPENIDM-20238: Clustered reconciliation may fail with Expecting a Map or List under certain circumstances

  • OPENIDM-20337: Provisioner createCoreConfig action should omit poolConfigOption properties for non-poolable connectors

Limitations

PingIDM 8.0 has the following known limitations:

Bouncy Castle FIPS with custom JVM

You can’t use the Bouncy Castle FIPS provider with a custom JVM.

End-user UI installation

The end-user UI is no longer bundled with PingIDM. You can download and install the end-user UI separately from the ForgeRock/end-user-ui GitHub repository. Learn more in the End-user UI.

Workflow limitations

  • Workflows are not supported with a DS repository. If you are using a DS repository for IDM data, you must configure a separate JDBC repository as the workflow datasource.

  • The embedded workflow and business process engine is based on Flowable and the Business Process and Notation (BPMN) 2.0 standard. As an embedded system, local integration is supported. Remote integration is not currently supported.

Queries with a DS repository

For DS repositories, relationships must be defined in the repository configuration (repo.ds.json). If you do not explicitly define relationships in the repository configuration, you will be able to query those relationships, but filtering and sorting on those queries will not work. For more information, refer to Relationship Properties in a DS Repository.

Queries with an OracleDB repository

For OracleDB repositories, queries that use the queryFilter syntax do not work on CLOB columns in explicit tables.

Queries with privileges

Query filters used for privileges can only reference direct attributes of the object. For example, relationship fields cannot be referenced in a privilege filter.

Connector limitations

When you add or edit a connector through the admin UI, the list of required Base Connector Details is not necessarily accurate for your deployment. Some of these details might be required for specific deployment scenarios only. If you need a connector configuration where not all the Base Connector Details are required, you must create your connector configuration file over REST or by editing the provisioner file. For more information, refer to Configure connectors.

If-Match requests

A conditional GET request, with the If-Match request header, is not supported.

Known issues

This topic lists important issues that remain open at the time of release.

  • OPENIDM-848: Conflicting behavior may be observed between the default fields set by the onCreate script and policy enforcement

  • OPENIDM-10490: admin UI doesn’t allow multiple values for the objectClassesToSynchronize LDAP connector property

  • OPENIDM-12540: Unable to change openidm-admin password via self service UI

  • OPENIDM-13198: PATCH requests are transformed to UPDATE requests internally, affecting more attributes than they should

  • OPENIDM-13592: optimize javascript context caching to reduce transient memory allocation

  • OPENIDM-14828: updateLastSync sets returnByDefault relationship to empty array

  • OPENIDM-15376: Sorting on retries for workflow deadletter jobs causes 500 error

  • OPENIDM-15614: large group membership UPDATE/GET operations is slow against AD

  • OPENIDM-15729: LastSync functionality is tightly coupled to the managed/user resource path

  • OPENIDM-15810: CSV Bulk Upload intermittently fails to import users with Oracle explicit table

  • OPENIDM-16224: Delegated admin doesn’t work for user who registers and logs in with Google idP

  • OPENIDM-16228: Temporal Roles not showing in admin UI w/DS as ID Repo

  • OPENIDM-16250: Rhino scripts resourceName.leaf() should be a string

  • OPENIDM-16269: Rhino lodash isEqual() always returns false for objects

  • OPENIDM-16349: adpowershell provisioner account schema causes query with sortKey=distinguishedName to fail

  • OPENIDM-16491: connection between agent and IDM/RCS breaks after IDM pod relocated from one node to another

  • OPENIDM-16516: Incoherent script hooks bindings when PATCH a relationship collection containing relationship properties

  • OPENIDM-16697: Using Postgres and CITEXT, a user is unable to log in due to case sensitivity

  • OPENIDM-16843: Relationships, having returnByDefault=true flag set, are not being included in oldObject/newObject values at onUpdate() trigger level when "_fields" is specified

  • OPENIDM-17190: PBKDF2 pre-hashed passwords from IDM not working on DS

  • OPENIDM-17327: Property Value Substitution failing for LoginURL in Salesforce Connector

  • OPENIDM-17347: 500 RuntimeException when parsing some date formats in audit query

  • OPENIDM-17443: Clean-up and remove obsolete nodes that appear "running" on the Cluster Node Status WIDGET

  • OPENIDM-17448: Incorrect Year Display with different timezone on Audit Events Dashboard

  • OPENIDM-17466: Unit tests in ManagedObjectSetTest make false assumptions

  • OPENIDM-17476: Missing matchAttribute property when using /openidm/config/fieldPolicy/ to configure password validator results in unexpected behaviour

  • OPENIDM-17478: RDVP calculation does not respect the 'validate' config that can be disabled in managed.json

  • OPENIDM-17488: Removing a parent relationship from a child org as owner/admin of that parent org returns a 404 instead of a 200 on JDBC/MySQL as repo

  • OPENIDM-17516: Pattern policy ignored when doing operation replace with empty values

  • OPENIDM-17630: A value set to the List of Names to Filter setting of a Provisioner via the UI disappears when saved and the provisioner is accessed again

  • OPENIDM-17631: Overriding the key “aliases” in conf/secrets.json using $array and $list coercion type to support multiple key aliases is not working

  • OPENIDM-17671: Request for postSync script hook

  • OPENIDM-17760: "In" clause can not be called from javascript with openidm.query()

  • OPENIDM-17813: File content incorrect on read

  • OPENIDM-17815: Saving invalid script in managed.json causes managed object to return 404

  • OPENIDM-17922: Sample scripted powershell with ad is missing ResolveUsername script

  • OPENIDM-17983: Workflow process definition diagram is not displayed in the Admin UI

  • OPENIDM-17997: Array virtual properties fail to update during a compound replace operation when revision data is included.

  • OPENIDM-18039: Modify GroovyScript to utilize similar logic that RhinoScript is using in ScriptableWithDeferredBinding

  • OPENIDM-18074: End-User UI Preferences property to READ-ONLY (Non-editable) not working

  • OPENIDM-18132: Upgrade Rhino to resolve Issue #1232

  • OPENIDM-18154: Mapping will restore itself after being deleted when moving position in grid holder view

  • OPENIDM-18162: Transformation script for relationship attributes does not run in IDM 7.2.0

  • OPENIDM-18196: Assignments with multivalued attributes triggers unnecessary updates on target objects

  • OPENIDM-18218: RDVP and conditional grantee 'merry-go-round' causing superfluous relationship field reads

  • OPENIDM-18231: Disabling and enabling livesync schedule changes value of source

  • OPENIDM-18271: Adding Policy via UI doesn’t always work

  • OPENIDM-18277: Task Scanner fails on erroneous conditional policy validation failure

  • OPENIDM-18290: Dependant conditional policy not run when patching a property

  • OPENIDM-18333: Policy validation does not work fine if values are provided to all fields together which are being used in policy validation

  • OPENIDM-18340: Multi-language support for platform deployment is missing

  • OPENIDM-18412: Value for boolean property in Linked Systems tab appears to be hidden

  • OPENIDM-18493: Response from csv/template endpoint is different in IDM CDK

  • OPENIDM-18496: Missing UI templates for Groovy scripted connectors 1.5

  • OPENIDM-18643: Sporadic NPE upon Activation of the OpenICF Provisioner Service

  • OPENIDM-18698: QueryFilter with invalid pageSize doesn’t throw an error

  • OPENIDM-18738: Field Policy Service exception handler hides DS exceptions that are not policy failure exceptions

  • OPENIDM-18760: Delegated admin can’t see authzMembers for internal role

  • OPENIDM-18780: IDM Native console should not query audit log

  • OPENIDM-18826: Out of memory in IDM platform groups read/delete members

  • OPENIDM-18846: Investigate order agnostic JsonValue comparisons

  • OPENIDM-18885: referencedRelationshipFields in queryConfig does not keep original data structure

  • OPENIDM-18891: IDM console cli.sh throws a java.lang.NoSuchFieldError

  • OPENIDM-18941: Salesforce provisioner file is overwritten when connector is enabled

  • OPENIDM-19056: DS index required on reconprogressstate recon_id

  • OPENIDM-19061: "Persists association" option when not selected throws "Not found error"

  • OPENIDM-19084: Pyforge: Changing SOURCE_TARGET_CONFLICT default action to EXCEPTION caused a regression on Oracle repo

  • OPENIDM-19181: Merry-go-round will cause duplicate RDVP calculation for signals received across conditional relationship fields

  • OPENIDM-19217: Make non-returnByDefault relationship attributes available in onUpdate

  • OPENIDM-19232: When adding additional property in new managed object the save button became unclickable

  • OPENIDM-19306: JDBC explicit table managed user PATCH with _fields=*_ref caused 400 error

  • OPENIDM-19392: IDM with set up RCS with SSL with empty or null connectorServerList is causing NullPointerException

  • OPENIDM-19424: _countOnly query parameter lost when used with proxied IDM

  • OPENIDM-19435: Docs: Link historical accounts sample docs page instructions cause errors

  • OPENIDM-19492: Query for clustered recon target ids should be paged with a very small page size (e.g. 2)

  • OPENIDM-19493: Conditional grantee processing speciously triggering processing of relationship fields in MOS#update

  • OPENIDM-19494: Editing "has one" relationship results in bad request error

  • OPENIDM-19555: Track: vulnerable to CVE-2023-43643 IDM 7.4.0 (RFE)

  • OPENIDM-19573: Invalid and non existing cookie should return Bad Request error with OpenDJ repo

  • OPENIDM-19745: Component and bundle activation exceptions not printed to log files

  • OPENIDM-19801: Boolean attribute shows incorrect value in IDM Admin UI Level in Forgeops based deployments

  • OPENIDM-19946: Update README file in sample provisioner directory

  • OPENIDM-19968: Enable and investigate unstable groovy tests

  • OPENIDM-20041: Align order of P1 Connector Config properties within the UI template to that of the PingOne OIDC Application

  • OPENIDM-20300: Managed Object schema editor scripts tab not showing scripts on relationship type properties

  • OPENIDM-20469: QA: use promtool check to test compatibility of our prometheus output

  • OPENIDM-20525: Alpha_user schema - cn is private and not searchable

  • OPENIDM-20793: validateProperty appears to validate against the spelling of the properties itself

With the removal of the IDM standalone self-service feature, the admin UI link to self-service results in a 404 error.

admin UI screenshot showing the self-service link

Appendix A: Release levels and interface stability

Ping product release levels

Ping defines Major, Minor, Maintenance, and Patch product release levels. The release level is reflected in the version number. The release level tells you what sort of compatibility changes to expect.

Release Level Definitions
Release Label Version Numbers Characteristics

Major

Version: x[.0.0] (trailing 0s are optional)

  • Bring major new features, minor features, and bug fixes

  • Can include changes even to Stable interfaces

  • Can remove previously Deprecated functionality, and in rare cases remove Evolving functionality that has not been explicitly Deprecated

  • Include changes present in previous Minor and Maintenance releases

Minor

Version: x.y[.0] (trailing 0s are optional)

  • Bring minor features, and bug fixes

  • Can include backwards-compatible changes to Stable interfaces in the same Major release, and incompatible changes to Evolving interfaces

  • Can remove previously Deprecated functionality

  • Include changes present in previous Minor and Maintenance releases

Maintenance, Patch

Version: x.y.z[.p]

The optional .p reflects a Patch version.

  • Bring bug fixes

  • Are intended to be fully compatible with previous versions from the same Minor release

Ping product stability labels

Ping products support many features, protocols, APIs, GUIs, and command-line interfaces. Some of these are standard and very stable. Others offer new functionality that is continuing to evolve.

Ping acknowledges you invest in these features and interfaces, and therefore must know when and how Ping expects them to change. For that reason, Ping defines stability labels and uses these definitions in Ping products.

Ping Stability Label Definitions
Stability Label Definition

Stable

This documented feature or interface is expected to undergo backwards-compatible changes only for major releases. Changes may be announced at least one minor release before they take effect.

Evolving

This documented feature or interface is continuing to evolve and so is expected to change, potentially in backwards-incompatible ways even in a minor release. Changes are documented at the time of product release.

While new protocols and APIs are still in the process of standardization, they are Evolving. This applies for example to recent Internet-Draft implementations, and also to newly developed functionality.

Legacy

This feature or interface has been replaced with an improved version, and is no longer receiving development effort from Ping.

You should migrate to the newer version, however the existing functionality will remain.

Legacy features or interfaces will be marked as Deprecated if they are scheduled to be removed from the product.

Deprecated

This feature or interface is deprecated and likely to be removed in a future release. For previously stable features or interfaces, the change was likely announced in a previous release. Deprecated features or interfaces will be removed from Ping products.

Removed

This feature or interface was deprecated in a previous release and has now been removed from the product.

Technology Preview

Technology previews provide access to new features that are considered as new technology that is not yet supported. Technology preview features may be functionally incomplete and the function as implemented is subject to change without notice. DO NOT DEPLOY A TECHNOLOGY PREVIEW INTO A PRODUCTION ENVIRONMENT.

Customers are encouraged to test drive the technology preview features in a non-production environment and are welcome to make comments and suggestions about the features in the associated forums.

Ping does not guarantee that a technology preview feature will be present in future releases, the final complete version of the feature is liable to change between preview and the final version. Once a technology preview moves into the completed version, said feature will become part of the Ping platform. Technology previews are provided on an “AS-IS” basis for evaluation purposes only and Ping accepts no liability or obligations for the use thereof.

Internal/Undocumented

Internal and undocumented features or interfaces can change without notice. If you depend on one of these features or interfaces, contact Ping support.