PingDirectory

Release Notes

Unless otherwise noted, all of the following enhancements, known issues, and resolved issues apply to the PingDirectory server, the PingDirectoryProxy server, and the PingDataSync server.

Subscribe to get automatic updates: PingDirectory Release Notes RSS feed

PingDirectory suite of products 10.3.0.0 (July 2025)

Removed support for Java 11

Info DS-49541 PingDirectory, PingDirectoryProxy, PingDataSync

Support for Java 11 has been removed. You must be running Java 17 or a later supported version, as detailed in the System requirements. Learn more about upgrading a PingDirectory server running Java 11 in Considerations when upgrading to version 10.3.

Support for Internet Explorer 11 has been deprecated

Info PingDirectory, PingDirectoryProxy, PingDataSync

Support for Internet Explorer 11 has been deprecated and will be removed in a future release.

Support for the sync-pipe-view tool has been deprecated

Info PingDataSync

Support for the sync-pipe-view tool has been deprecated, and the tool will be removed in a future release.

Added user entry forwarding for easier request authorization

New DS-49681 PingDirectory, PingDirectoryProxy

We added a mechanism to forward the authenticated user’s entry to backend servers in an entry-balanced proxy configuration. This change makes it easier to authorize requests in backend sets that don’t contain the user’s entry.

You can use this mechanism instead of the authz-dn property in the entry-balancing request processor configuration or the ds-authz-map-to-dn operational attribute in user entries, which are both used to map requests as the authenticated user to a different surrogate user in the other backend sets.

Added REST API request controls for soft and hard deletes

New DS-49530 PingDirectory

We added support for the following HTTP request controls in the Directory REST API:

Soft delete

Used to soft-delete entries

Hard delete

Overrides automatic soft-delete policies and performs a full hard delete

Soft-deleted entry access

Used to read or search soft-deleted entries

Undelete

Restores soft-deleted entries to their normal state

Added support for the HAProxy PROXY protocol

New DS-43335 PingDirectory, PingDirectoryProxy

We added support for LDAP and LDAPS clients accessing the server through a software load balancer using the PROXY protocol, which allows the server to see the actual address and port of the end client system rather than just the address of the load balancer.

The server supports LDAP clients using TCP over IPv4 or IPv6 with header versions 1 and 2. It also accepts valid PROXY protocol headers with other protocols and address families, but it only updates the client address and port for TCP-based clients.

Added support for a Thales HSM plugin

New DS-48531 PingDirectory

We added support for a Thales HSM plugin, which is available as a separate download. To get the plugin, contact your Ping Identity account representative.

More efficient server handling of failed authentication attempts

Improved DS-49418 PingDirectory

We changed the default server behavior for failed authentication attempts to unavailable user accounts. If a user’s account becomes unavailable (for example, because the account is locked, disabled, or the password has expired), the server won’t update the user’s recent login history for failed authentication attempts.

This change can prevent excessive write operations to a user entry in cases where the user can’t possibly authenticate, including when accounts could be subject to password guessing or denial-of-service attacks.

Encoded password caching improved for frequently used passwords

Improved DS-49516 PingDirectory

We improved the eviction logic for encoded password caches to help ensure that frequently used passwords remain cached. When a cache becomes full and needs to add a record, the server evicts the least-recently-used record to make room. Previously, the server evicted the oldest record from the cache.

Smarter dsreplication initialize failure behavior

Improved DS-48158 PingDirectory

We improved the dsreplication initialize failure behavior for source backends supplied in a JSON topology file. A backend must be enabled before it can be initialized. If dsreplication initialize doesn’t successfully initialize the target backend from one source, the command re-enables the target backend before attempting to initialize it from the next source in the JSON file.

Exclude virtual attributes to streamline reversible delete audit logging

Improved DS-49377 PingDirectory

We added a configuration property for the file-based audit log publisher that can exclude virtual attributes from delete audit log records that use the reversible form of logging.

Excluding virtual attributes reduces the size of these log messages and can eliminate the potential performance impact of computing their values. Virtual attributes are still included by default in delete audit log messages generated by the regular file-based audit logger, but they are now suppressed by default in the data recovery log.

Made it easier to update FIPS compliance levels

Improved DS-49550 PingDirectory, PingDirectoryProxy, PingDataSync

We updated manage-profile replace-profile to allow changing the value of the --fips-provider argument in setup-arguments.txt from BCFIPS to BCFIPS2. This makes it possible to update an existing instance running in FIPS 140-2 compliance mode to use FIPS 140-3 compliance mode.

Added FIPS-compliance information to monitor entries

Improved DS-49731 PingDirectory, PingDirectoryProxy, PingDataSync

We updated the Version and SSL Context monitor entries to always include the fips-compliant-mode, fips-140-2-compliant-mode, and fips-140-3-compliant-mode attributes, even when the server is running in non-FIPS-compliant mode. We also exposed those attributes in the Version monitor entry in the admin console’s Status section.

Added on-demand LDAP connection pool creation

Improved DS-49944 PingDirectory, PingDirectoryProxy, PingDataSync

We added an option to allow LDAP external servers to create connection pools without any initial connections so that all connections for use in the pool are created on demand. This can help make it faster to initialize components that use one or more LDAP external servers, but initial attempts to communicate with those servers could take longer as a result of needing to establish new connections.

Clearer attribute parsing for the Processing Time Histogram plugin

Improved DS-49558 PingDirectory, PingDirectoryProxy

We added the include-parseable-attribute-names option to the Processing Time Histogram plugin to output entries in a format that’s easier to parse. These reformatted entries are duplicates and still exist in their original format. Changing this option requires a server restart to take effect.

Improved server setup when using a profile

Improved DS-50069 PingDirectory

We added the --skipImportLdif argument to manage-profile setup. You can supply this argument to set up a server without importing any LDIF files contained in the profile directory structure.

Fixed a server installation issue with Java 17 and Red Hat

Fixed DS-49716 PingDirectory, PingDirectoryProxy, PingDataSync

We fixed an issue that could prevent installing or running servers using Java 17 or later on Red Hat Enterprise Linux (RHEL) systems when the operating system itself is configured to run in FIPS-compliant mode.

This operating system setting is unrelated to whether the PingDirectory server has been set up to run in FIPS-compliant mode.

Fixed replication behavior for listen-on-all-addresses

Fixed DS-49547 PingDirectory

We fixed the replication server configuration property listen-on-all-addresses so that when the property is set to false, replication servers only listen to the replication port on the interface that corresponds to the hostname of the server instance for that replication server.

Fixed an issue with replication assurance for some password updates

Fixed DS-49851 PingDirectory

We fixed an issue where replication assurance wasn’t applied to the internal operation performed by the password modify extended operation.

Fixed an issue with dsreplication enable

Fixed DS-35915 PingDirectory

We fixed a bug where dsreplication enable ignored the --noPropertiesFile option and incorrectly applied options from the tools.property file.

Fixed the failure behavior for dsreplication initialize

Fixed DS-49890 PingDirectory

We fixed an issue where a PingDirectory server would continue sending binary data to the destination server after a failed attempt to initialize using dsreplication initialize. This behavior interfered with further initialization attempts from any other server.

Fixed a replace-certificate trust store issue

Fixed DS-44645 PingDirectory, PingDirectoryProxy, PingDataSync

We fixed an issue that prevented the replace-certificate tool from using the JVM-default trust store when replacing the listener certificate in interactive mode.

Fixed a replace-certificate argument issue

Fixed DS-49769 PingDirectory, PingDirectoryProxy, PingDataSync

We fixed an issue where replace-certificate replace-listener-certificate didn’t obey the --trust-store-update-type argument.

Fixed an issue with some password resets

Fixed DS-50108 PingDirectory, PingDirectoryProxy

We fixed an issue where password resets done with the bypass-pw-policy privilege would circumvent the force-change-on-reset property of password policies.

Fixed an issue with the Modifiable Password Policy State plugin

Fixed DS-49878 PingDirectory

We fixed an issue where the Modifiable Password Policy State plugin didn’t obey the value of the filter property.

Fixed an issue with the Entry Counter plugin

Fixed DS-49872 PingDirectory

We fixed an issue where the Entry Counter plugin couldn’t evaluate criteria filters against virtual attributes with require-explicit-request-by-name set to true.

Restored the ability to modify an enabled Entry Counter plugin

Fixed DS-49816 PingDirectory

We fixed an issue with the Entry Counter plugin where an enabled plugin couldn’t be modified.

Fixed an issue with the Monitor History plugin preserving files

Fixed DS-46253 PingDirectory, PingDirectoryProxy, PingDataSync

We fixed an issue where the Monitor History plugin wouldn’t preserve files for longer than 14 days when retain-files-sparsely-by-age was set to true.

Fixed a SCIM issue with modifying ds-pwp-modifiable-state-json

Fixed DS-49781 PingDirectory

We fixed an issue where SCIM requests that attempted to modify the ds-pwp-modifiable-state-json attribute would fail.

Fixed SCIM response errors

Fixed DS-48511 PingDirectory, PingDirectoryProxy

We fixed an issue with inconsistencies in id-attribute values returned in SCIM operation responses. We also fixed an issue with SCIM GET operations where a filter used to search for an entry would result in a 404 error.

Fixed a SCIM 2.0 PUT issue with attribute values

Fixed DS-49619 PingDirectory

We fixed an issue where SCIM 2.0 PUT operations involving multivalued complex attributes would incorrectly remove some of the values.

Fixed a REST API issue with failed PUT requests

Fixed DS-49912 PingDirectory

We fixed an issue in the REST API where PUT requests would return a 500 response when attempting to replace the value of a virtual attribute.

Fixed an issue with allowed REST API syntax violations

Fixed DS-46314 PingDirectory

We fixed an issue where REST API calls failed due to attribute syntax violations, even though the server had been configured to allow syntax violations for those attributes.

Added a missing debug type to LDAP SDK logging

Fixed DS-43814 PingDirectory, PingDirectoryProxy

We added the missing connection-pool debug type to the server’s support for LDAP SDK debug logging.

Suppressed inaccurate server startup warnings

Fixed DS-49991 PingDirectory

We suppressed inaccurate server startup warning messages about some Apache commons-logging classes being scanned from multiple locations. The scan detected older versions of those classes packaged inside a Spring JCL .jar file needed by the admin console, but the older versions aren’t loaded at runtime.

Fixed an internal error logged at server restart

Fixed DS-49551 PingDirectory

We fixed a null pointer exception error logged when restarting a PingDirectory server configured with Delegated Admin.

Fixed a Delegated Admin memory leak

Fixed DS-49409 PingDirectory

We fixed an issue where Delegated Admin could leak memory due to unfinalized memory consumers.

Fixed DS-49700 PingDataSync

We fixed an issue where the remove-defunct-server tool could leave a PingDataSync topology in a state where new servers couldn’t be added.

Fixed an issue with password sync from Active Directory

Fixed DS-50043 PingDataSync

We fixed an issue where password synchronization from multiple Active Directory subdomains through multiple sync pipes could fail abruptly.

Excluded some password attributes from sync sources

Fixed DS-49212 PingDataSync

We changed the resync tool to exclude unicodePwd automatically from AD sync sources and password from PingOne sync sources.

By design, the resync tool updates the existing values for included attributes at the destination to match what’s found at the source. If resync can’t retrieve an attribute value at the source, it removes any existing values at the destination. Because resync can’t retrieve these password attributes from their sources, we’ve excluded them from the attributes for resync consideration to avoid disrupting the values at the destination.

You can still include these attributes manually in a resync operation by providing the --includeSourceAttr argument.

Fixed an issue with logging changes to some attributes

Fixed DS-49917 PingDataSync

We fixed an issue where PingDataSync would log an operation as not applied if the only changes applied were to password policy state attributes.

Fixed an issue with third-party change detectors

Fixed DS-49035 PingDataSync

We fixed an issue where third-party change detectors didn’t properly persist the state of processing at the sync source. This could’ve caused change detector malfunctions with the set-startpoint task, with saving the change detector’s state upon server shutdown, or with communicating that state to failover instances.

Fixed an issue with the SDK LDAP sync destination plugins

Fixed DS-49854 PingDataSync

We fixed an issue in the server SDK’s example LDAP sync destination plugins, where the plugins dropped modify DN operations that didn’t affect the RDN.

Communication error during replication prevents initialization

Issue DS-50171 PingDirectory

If dsreplication initialize fails because of a communication error between the source PingDirectory server and the remote destination server, the source server continues attempts to send binary data. This causes new initialization attempts on the destination server from any other server to fail until the source server has finished sending all data.

To work around this issue, restart the source PingDirectory server.

Previous Releases

Learn more about enhancements and issues resolved in previous major and minor releases of PingDirectory products using the following links: