Incompatible changes
DS 8.0
- 
DS replicas using change number indexing to provide Internet-Draft change numbers now order change numbers locally on each server. The local change numbers follow the order in which replicated updates arrive.
DS servers no longer order change numbers globally. The order likely differs from replica to replica.
This reduces the number of potential problems the change number indexer faces, and so simplifies monitoring.
Applications that need global consistency in the change log to fail over across replicas can continue to use or switch to changelog cookies.
 - 
New DS servers now publish Prometheus metrics at
/metrics/prometheus/0.0.4by default.The
0.0.4path element reflects the content type version for the Prometheus text-based format. - 
The global property
max-psearchessets a default limit of 100 total concurrent persistent searches.By default, the global property
max-psearches-policyis set towarn. When it reaches the limit, DS accepts the incoming persistent search request and logs a warning message to the error log.If you set
max-psearches-policy: reject, when it reaches the limit set bymax-psearches, DS rejects incoming persistent search requests. - 
HDAP now returns normalized field names by default.
To return field names as specified with the
_fieldsquery parameter or as stored in the LDAP entry, set the HDAP endpoint configuration propertynormalize-attribute-names:falseor the HDAP gateway configuration setting"normalizeAttributeNames": false. - 
The
rebuild-index --rebuildDegradedoption is nowrebuild-index --rebuildUntrusted.The
rebuild-index --clearDegradedStateoption now does nothing. Since DS 7.5.0, DS servers no longer require rebuilding indexes for attributes that have never been used before.In addition, DS log messages now mention "trusted" and "untrusted" indexes rather than "degraded" indexes. If you scan log files for messages about degraded indexes, you must update them.
 - 
The
setup-profile --instancePathoption is no longer supported.Set the instance path when using the
setupcommand instead. - 
The DS plugin API continues to evolve. This release brings many significant changes.
Make sure you can build plugins built with earlier releases. Review the Javadoc to understand how the API has changed.
 - 
Setup profiles like the user data profile have changed how they interpret relative paths to LDIF files.
Previously, the path was either absolute or relative to the current directory. Now, the path is either absolute or relative to the directory where the profile is defined.
 
DS 7.5.2
- 
DS 7.5.x no longer logs
debugsearchindexinformation by default.If needed, use the boolean system property
org.forgerock.opendj.logDebugSearchIndexto enable it:$ OPENDJ_JAVA_ARGS="-Dorg.forgerock.opendj.logDebugSearchIndex=true" start-ds 
DS 7.5
The following changes affect the evolving DS plugin API:
| Class or interface | Changes | 
|---|---|
  | 
Added: 
 Removed: 
  | 
  | 
Added: 
  | 
  | 
This class has a volatile API and will very likely be subject to significant changes in future releases. Many methods were added and removed.  | 
  | 
To access resource limits, change your code from: 
To: 
 | 
DS 7.4
- 
You can upgrade DS 6.0 and later servers directly to DS 7.4.
When starting from 5.5.x and earlier, first upgrade all servers to DS 6.5 before upgrading further. Direct upgrade from versions earlier than 6.0 is no longer supported.
 - 
For new DS servers, the
setupcommand no longer enables support for changelog change numbers or change number indexing by default.For new servers, the replication server configuration property is
changelog-enabled: enabled-cookie-mode-onlyby default, meaning client applications must use cookies instead of change numbers when searching the changelog. For examples, refer to Use the external change log.When you upgrade an existing server in place, the
upgradecommand keeps the existing server behavior. - 
The documentation describes the new HDAP APIs for HTTP access.
For documentation covering REST to LDAP, refer to Use REST/HTTP for 7.3.
 - 
The log publisher properties
default-severityandoverride-severitynow take single values.Set them to the lowest severity level to log.
 - 
The
create-rc-scriptoption-f|--outputFilehas been removed.Use
-r|--rcScript /etc/init.d/opendjor-s|--systemdService /etc/systemd/system/opendj.serviceinstead. - 
The configuration property
big-index-matching-rulehas changed tobig-index-extensible-matching-rule.When creating a
big-extensibleindex, you must set at least onebig-index-extensible-matching-rule. - 
The configuration property
log-control-oidshas changed tolog-controlsand istrueby default for new servers. - 
DS servers no longer return replication conflict entries by default.
Use the manage DSAIT LDAP control to access them.
 
DS 7.3
- 
New DS servers now write replication messages to the server error log (default:
opendj/logs/errors). - 
Metrics formerly under
cn=entry cache,cn=monitorhave moved undercn=entry caches,cn=monitor. 
DS 7.2
- 
The deployment key described in earlier DS 7 releases has been renamed deployment ID:
- 
A deployment ID is not a cryptographic key or digital certificate.
 - 
A deployment ID does uniquely identify a DS deployment.
 
The change affects the commands and the documentation:
Old option New option --deploymentKey--deploymentId--deploymentKeyPassword--deploymentIdPasswordThe name change does not affect the deployment IDs (formerly keys) themselves. You can continue to use existing IDs (keys) in your deployments.
 - 
 - 
The
setupcommand now requires a--deploymentIdoption.Before running
setupfor the first time, generate a deployment ID as shown throughout the documentation:$ /path/to/opendj/bin/dskeymgr create-deployment-id --deploymentIdPassword password <deployment-id> $ export DEPLOYMENT_ID=<deployment-id> - 
As a side effect of the change to allow
mailaddresses to include UTF-8 characters, DS no longer supports zero-lengthmailaddresses.If you cannot prevent applications from adding zero-length
mailaddresses and no addresses use UTF-8, set the advanced core schema propertyallow-zero-length-values-directory-stringtotrue. - 
The following changes affect proxy backend configurations:
Old Property New Property heartbeat-intervalkeep-alive-intervalheartbeat-search-request-base-dnkeep-alive-search-request-base-dn - 
The
lookthrough-limitsetting has been removed. Usetime-limitinstead.DS servers now enforce
time-limitandds-rlimit-time-limitsettings while evaluating the entries to return for a search, rather than enforcing time limits only when sending entries.DS servers now ignore the
ds-rlim-lookthrough-limitsetting. - 
The global advanced setting,
cursor-entry-limit, has been replaced by amax-candidate-set-sizesetting, which corresponds to the maximum number of candidate entries that DS servers maintain in memory when querying attribute indexes. - 
The
dsbackupcommand no longer supports specifying options before the subcommand.You must now put all options after the subcommand, as has always been indicated in the documentation.
 
DS 7.1
- 
With the introduction of the global configuration property,
group-id-failover-order, which takes a comma-separated list of group IDs, commas are no longer permitted in group IDs.The
upgradecommand replaces each,with a.in group IDs. - 
The following changes affect proxy backend configurations:
Old Property New Property Notes load-balancing-algorithmNone
All proxy backends now use affinity load balancing. As a result, they always route requests with the same target DN to the same server.
bind-connection-pool-idle-timeoutconnection-pool-idle-timeoutDS proxy backends no longer use shared connection pools.
bind-connection-pool-max-sizeconnection-pool-max-sizebind-connection-pool-min-sizeconnection-pool-min-sizerequest-connection-pool-sizeNone
 - 
When using the
dskeymgrcommand to generate a PEM format certificate, you can no longer use the--aliasoption. The PEM format does not support aliases.If you do use the
--aliasand--outputFileoptions together, the command now displays an error message:You may not provide both the --outputFile and the --alias arguments
 
DS 7.0
Accounts
- 
The default directory superuser (Directory Manager) DN is now
uid=adminfor new servers.The upgrade process does not change the directory superuser DN for existing servers.
This change makes it easier to manage the server configuration over REST, as the default identity mapper configuration maps the HTTP
adminusername to the LDAP DNuid=admin. - 
The replication service discovery mechanism now obtains some information by reading the
cn=monitorLDAP entry. As a result, thebind-dnaccount must now have themonitor-readprivilege.This affects accounts used by DS directory proxy servers to bind to DS replication servers. For an example showing the account with the
monitor-readprivilege, refer to Try DS directory proxy. 
Backup
- 
DS backups taken with this release are not compatible with backups from earlier releases.
 - 
Scheduled backup tasks continue after upgrade.
 - 
Tasks created with the
restorecommand in earlier releases are removed during upgrade. 
Data
The default backend ID for application data depends on the setup profiles.
The upgrade process does not change the backend ID for existing servers.
LDAP
When matching strings in attributes with telephone number syntax, DS servers now behave as follows:
- 
As in previous versions, a search for
"(telephoneNumber=1555123456)"matches entries with telephone number values+1 555 123 456and1 555 123456. - 
All
+characters are ignored.In other words,
+is no longer significant when matching a telephone number syntax attribute. - 
A search for
"(telephoneNumber=*Flower*)"returns only entries with telephone numbers containingFlower(case-insensitive match). - 
A search for
"(telephoneNumber=15550102)"no longer matches entries with telephone numbers like+15550102 - Home. 
Logging
- 
The
batchconfiguration for the JMS common audit handler for access logs has changed to support reconnection if the broker becomes unavailable.This change adds a
batch.writeIntervalsetting. It removes the following settings:- 
batch.batchEnabled - 
batch.insertTimeoutSec - 
batch.pollTimeoutSec - 
batch.shutdownTimeoutSec - 
batch.threadCount 
 - 
 - 
The example JDBC audit handler configuration for logging to MySQL has changed.
The old configuration is not compatible with MySQL 8, supported in DS 7.
 
Replication
- 
The
group-idandserver-ididentifiers are now global settings, and only take a single value per server.Replication domain and replication server configurations no longer have mutable
server-idandgroup-idproperties. - 
The external changelog domain configuration has moved to the replication domain and replication server configurations.
This affects the following properties:
- 
ecl-include - 
ecl-include-for-deletes - 
changelog-enabled-excluded-domains 
 - 
 - 
The following replication domain configuration properties have moved to the replication synchronization provider:
- 
changetime-heartbeat-interval - 
isolation-policy - 
heartbeat-interval - 
initialization-window-size - 
log-changenumber - 
referrals-url - 
solve-conflicts - 
source-address 
 - 
 - 
The following replication server properties have moved to the replication synchronization provider:
- 
replication-purge-delay - 
source-address 
 - 
 - 
In addition to the property changes, the replication synchronization provider has changed:
- 
A new property,
bootstrap-replication-server, takes the addresses of one or more replication servers this server should contact to discover the rest of the topology. - 
The
replication-purge-delayproperty has replaced the replication domain property,conflicts-historical-purge-delay.In this release, the
replication-purge-delaysetting alone governs how long the replica retains data in the changelog and historical metadata necessary to solve conflicts in directory entries. 
 - 
 
REST
- 
The
resourceTypePropertyfield is no longer used in REST to LDAP configurations. The resource type is now inferred from the property with"type": "resourceType". 
Security
- 
Default security settings have been hardened.
For details, refer to Default Security Settings.
 - 
The following configuration changes impact TLS-related settings:
The Crypto Manager no longer has the following properties:
- 
ssl-cert-nickname - 
ssl-cipher-suite - 
ssl-encryption - 
ssl-protocol 
The replication synchronization provider configuration object now has the following properties:
- 
key-manager-provider - 
ssl-cert-nickname - 
ssl-cipher-suite - 
ssl-encryption - 
ssl-protocol - 
trust-manager-provider 
The following configuration objects now have
ssl-cipher-suiteandssl-protocolproperties:- 
HTTP OAuth2 OpenAM authorization mechanism
 - 
HTTP OAuth2 token introspection (RFC 7662) authorization mechanism
 - 
Replication service discovery mechanism
 - 
Static service discovery mechanism
 
 - 
 - 
The default fingerprint algorithm for the fingerprint certificate mapper is now SHA-256.
 
Setup
The setup command has changed:
- 
The
--productionModeoption has been removed.Default settings are now secure. For details, refer to Default Security Settings.
The evaluation setup profile is compatible with other setup profiles. However, if you apply the evaluation setup profile last, it sets
unauthenticated-requests-policy:allow, granting global permission to perform operations over insecure connections. - 
Subcommands have been replaced by setup profiles.
 - 
The
setupcommand no longer starts the server by default.Before starting your new DS server, finish configuration.
If no further configuration is required, use the
setup --startoption. - 
For new servers, key pairs with self-signed certificates are no longer used. Instead, the setup process generates keys used for secure connections, and derives a shared master key to protect secret keys for data encryption. These keys depend on a deployment ID and deployment ID password.
The deployment ID and deployment ID password are required as part of the setup process:
- 
If you do not provide your own keys, the generated keys and the signing CA certificate are stored in a PKCS#12 keystore file,
config/keystore.The password is stored in a PIN file,
config/keystore.pin.You can use the CA certificate as the root of trust for an entire deployment.
 - 
By default, replication now relies on the same key pairs as all other connection handlers to secure network communications.
The
Replication Key ManagerandReplication Trust Managerproviders now point to the providers chosen during the setup process. - 
The
Default Key Manageris now named after its keystore format, such asPKCS12. 
 - 
 - 
The following
setupcommand options have been removed:- 
-a, --addBaseEntry - 
-b, --baseDn - 
--useJvmTrustStore - 
-l, --ldifFile - 
-O, --doNotStart - 
--productionMode - 
-R, --rejectFile - 
--skipFile 
Add your initial data before starting the server by creating a backend database, configuring indexes, and importing from LDIF.
 - 
 - 
The
-d, --sampleDataoption has moved. It is now provided as thegeneratedUsersparameter of theds-evaluationsetup profile. 
Tools
- 
DS command line tools no longer support the
-w -and--bindPassword -options to prompt interactively for a password.Instead, provide the bind DN and omit the
-w -or--bindPassword -option. The tools then prompt for a password unless you specify the--no-promptoption. 
Upgrade
You can upgrade DS 3.0 and later servers directly to DS 7.
When starting from 2.6, first upgrade all servers to DS 6.5 before upgrading further. Direct upgrade from 2.6 is no longer supported.
Default Security Settings
When you set up new DS servers, they are now configured with tighter security settings by default. These changes do not affect DS servers that you upgrade from earlier versions. If you require more lenient settings for compatibility, you must configure them after setting up the server:
- 
All operations except bind requests and StartTLS requests, and base object searches on the root DSE, require secure connections.
This behavior is governed by the global configuration property,
unauthenticated-requests-policy, which is now set toallow-discovery, instead ofallow, unless the last setup profile applied is theds-evaluationprofile. - 
The password storage scheme for the Default Password Policy and Root Password Policy is now
PBKDF2-HMAC-SHA256with 10 iterations. For stronger security, raise the number of iterations, and require users to change their passwords.PBKDF2-HMAC-SHA256is a computationally intensive one-way hashing scheme. When used with a high number of iterations, it is intentionally orders of magnitude slower than the previous default for user passwords, which wasSalted SHA-512.PBKDF2-HMAC-SHA256and similar computationally intensive password storage schemes lower throughput and raise response times for some operations, including the following:- 
Importing plaintext passwords from LDIF; for example, during evaluation and testing with generated data.
 - 
Updating passwords.
 - 
Authenticating with passwords.
 
To migrate user passwords to a new storage scheme, refer to Password storage.
 - 
 - 
SASL mechanism handler configurations for
CRAM-MD5andDIGEST-MD5are no longer present in the default configuration. - 
Password storage scheme configurations for
MD5,RC4, andSalted MD5are no longer present in the default configuration.Less secure and reversible password storage schemes have been disabled in the default configuration. You must therefore enable these password storage schemes if you intend to use them.
Setting New Default Crypto Manager
SHA-256Crypto Manager
RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDINGCrypto Manager
HmacSHA256Global setting
allow-discoveryPassword storage scheme: 3DES
falsePassword storage scheme: AES
falsePassword storage scheme: Base64
falsePassword storage scheme: Blowfish
falsePassword storage scheme: Clear
falsePassword storage scheme: CRYPT
falsePassword storage scheme: PBKDF2
falsePassword storage scheme: PKCS5S2
falsePassword storage scheme: Salted SHA-1
falsePassword storage scheme: Salted SHA-256
falsePassword storage scheme: Salted SHA-384
falsePassword storage scheme: Salted SHA-512
falsePassword storage scheme: SHA-1
falsePluggable (JE) backend
AES/GCM/NoPaddingReplication server
AES/GCM/NoPadding 
DS 6.5
- 
There is an issue when running an upgrade from DS 6.5.0 to 6.5.1. If you did not set the
je-backend-shared-cache-enabledproperty and accepted the default value oftrueprior to the upgrade, the value changes AFTER upgrade tofalse. You may have to reset this value totruefor your deployments.If you set the
je-backend-shared-cache-enabledproperty prior to upgrade to eithertrueorfalse, the value does not change after upgrade. - 
The
statuscommand has been rewritten, with the following notable changes:- 
The command is no longer interactive.
 - 
You must supply the required options when invoking the status command.
 - 
The command now has an
--offlineoption. - 
When you run status
--offlineon a running server, the command only displays a portion of the available information. - 
You can now run the command against a remote DS server version 6 or later.
 - 
The output shows more information than before.
 
 - 
 - 
The
dsreplication statuscommand no longer shows metrics forM.C.(missing changes) andA.O.M.C.(age of oldest missing change). Instead, it shows the replication delay.For DS 6 and later servers that expose a replication delay metric, the command shows the delay value. For DS 5.5 and earlier servers, the command shows
N/A. - 
The
db/adminbackend has been renameddb/adminRoot. - 
The global server configuration property,
reject-unauthenticated-requests, a boolean, has been removed and replaced with the property,unauthenticated-requests-policy. The new property can be set to the following values:reject- 
Same behavior as
reject-unauthenticated-requests:true allow- 
Same behavior as
reject-unauthenticated-requests:false allow-discovery- 
Like
reject, but allows unauthenticated base object searches of the root DSE 
 - 
The proxy backend configuration property
service-discovery-mechanismhas been renamedshard. - 
The
encode-passwordcommand now displays the encoded password without additional characters.In other words, the output is now
{scheme}encoded-passwordrather thanEncoded Password: "{scheme}encoded-password".