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.
What's New
New features and improvements.
Prepare for Deployment
The requirements for running IDM software in production.
Compatibility
Key changes and compatibility with previous deployments.
Bug Fixes
Bug fixes, limitations, and open issues.
Deprecation
Functionality marked for future removal.
Discontinued
Removed functionality.
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 |
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.
Learn more about managed object schema properties and array comparison.
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.
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.
Learn more in Enhanced signal propagation.
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.
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
andrefresh_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.
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.
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
.
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.
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:
-
Upgrading to DS 7.3 is now supported. For more information, refer to Supported repositories.
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 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.
IDM 7.0.4
This release includes updates to ICF connectors, updates to dependency libraries, and bug fixes.
IDM 7.0.2
-
You can now validate field removal using the policy action
validateProperty
. -
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
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.
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
|
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.Version 2 also lets you trigger a scheduled task manually and pause and resume a scheduled task.
The action
parameter on thescheduler
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.
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 |
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:
Vendor | Versions | ||
---|---|---|---|
OpenJDK, including OpenJDK-based distributions:
|
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 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)
|
||
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:
|
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 |
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.
Learn more about managed object schema properties and array comparison.
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.
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.
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.
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.
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
and1.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
and1.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
and1.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
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
Learn more in Property value substitution.
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.
-
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 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
settingsNO_ZERO_IN_DATE
andNO_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 theresolver/boot.properties
file. Learn more in Prometheus endpoint. - Debugging information for Groovy scripts
-
In previous releases, setting
javascript.exception.debug.info=true
in theboot.properties
file enabled additional debug information, including line numbers and file names for JavaScript exceptions. In this release, settinggroovy.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
andopenidm.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.Learn more in Configure queued synchronization.
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
IDM 7 supports configurable hashing algorithms.
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",
...
}
Learn more in Use temporal constraints to restrict effective roles.
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
Learn more in Configure the JMS audit event handler.
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:
-
BEFORE
-
AFTER
"userPassword" : {
"type" : "string",
"nativeName" : "userPassword",
"nativeType" : "string",
...
"userPassword" : {
"type" : "string",
"nativeName" : "__PASSWORD__",
"nativeType" : "JAVA_TYPE_GUARDEDSTRING",
...
Removal of the global consent setting
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
andjdbcUrlTemplate
properties have been removed. UsedriverClassName
andurl
instead. -
The
database
property has been removed. The database should now be specified in the JDBC address inurl
. -
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 theEMAIL
property. -
Removed
"keyColumn" : "UNIQUE_ID"
.
-
- samples/example-configurations/provisioners/provisioner.openicf-contractordb.sql
-
Set
EMAIL
as thePRIMARY 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 useopenidm.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.
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.
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:
-
Progressive profile in the Ping Identity Platform documentation.
-
Progressive profile in the PingOne Advanced Identity Cloud documentation.
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.
IDM 7.5
Java 11 support
Running IDM requires Java 17. Learn more in Java requirements.
IDM 7.4
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.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.
-
For simple Active Directory and Active Directory LDS deployments, use the LDAP connector.
-
For more complex Active Directory deployments, use the PowerShell connector toolkit.
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 omitpoolConfigOption
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.
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
setsreturnByDefault
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
Admin UI self-service link
With the removal of the IDM standalone self-service feature, the admin UI link to self-service results in a 404 error.

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 Label | Version Numbers | Characteristics |
---|---|---|
Major |
Version: x[.0.0] (trailing 0s are optional) |
|
Minor |
Version: x.y[.0] (trailing 0s are optional) |
|
Maintenance, Patch |
Version: x.y.z[.p] The optional |
|
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.
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. |