Applications developed to perform batched transactions should include as few operations in the transaction as possible. The changes aren't actually processed until the commit request is received. Therefore, the client can't know whether the changes are successful until commit time. If any of the operations fail, then the entire set of operations fails.

Batched transactions are write operations that are processed as a single atomic unit when the commit request is received. The write operations include the following:

  • add
  • delete
  • modify
  • modify DN
  • password modify

If an abort request is received or an error occurs during the commit request, the changes are rolled back. The batched transaction mechanism supports the standard LDAP transaction implementation based on RFC 5805. It's not currently possible to process a transaction that requires changes to be processed across multiple servers or multiple PingDirectory server backends.

Directory servers can limit the set of controls that are available for use in requests that are part of a transaction. RFC 5805 section 4 indicates that you can use the following controls in conjunction with the transaction specification request control:

  • Assertion request control
  • manageDsaIT request control
  • Pre-read request control
  • Post-read request control

The proxied authorization v1 and v2 controls can't be included in requests that are part of a transaction, but they can be included in the start transaction request to indicate that all operations within the transaction should be processed with the specified authorization identity.

The PingDirectory server supports the following additional controls in conjunction with operations included in a transaction:

  • Account usable request control
  • Hard delete request control
  • Intermediate client request control
  • Password policy request control
  • Replication repair request control
  • Soft delete request control
  • Soft-deleted entry access request control
  • Subtree delete request control, and undelete request control