PingDirectory

Notification mode overview

PingDataSync supports standard and notification synchronization modes. Notification mode polls the directory server’s Lightweight Directory Access Protocol (LDAP) change log for changes on any entry but skips the fetch and compare phases of processing in standard mode. Instead, the Sync Destination is notified of the change regardless of the current state of that entry at the source or destination. PingDataSync accesses state information on the change log to reconstruct the before-and-after values of any modified attribute (for example, for MODIFY change operation types). It passes in the change information to a custom server extension based on the Server SDK.

Third-party libraries can be employed to customize the notification message to an output format required by the client application or service. For example, the server extension can use a third-party XML parsing library to convert the change notifications to a SOAP XML format.

Notification mode can only be used with an PingDirectory Server, Nokia 8661 Directory Server, PingDirectoryProxy server, or Nokia 8661 Directory Proxy Server as the source endpoint.

A diagram illustrating a notification mode synchronization change flow

PingDataSync can use notification mode with any type of endpoint; therefore, it is not an absolute requirement to have a custom server extension in your system. For example, it is possible to set up a notification Sync Pipe between two LDAP server endpoints.

Implementation considerations

Before implementing and configuring a Sync Pipe in notification mode, answer the following questions:

  • What is the interface to client applications?

  • What type of connection logic is required?

  • How will the custom server extension handle timeouts and connection failures?

  • What are the failover scenarios?

  • What data needs to be included in the change log?

  • How long do the change log entries need to be available?

  • What are the scalability requirements for the system?

  • What attributes should be used for correlation?

  • What should happen with each type of change?

  • What mappings must be implemented?

Use the Server SDK and LDAP SDK

To support notification mode, the Server SDK provides a SyncDestination extension to synchronize with any client application. The PingDataSync engine processes the notification and makes it available to the extension, which can be written in Java or Groovy. This generic extension type can also be used for standard synchronization mode.

Similar to database synchronization, the custom server extension is stored in the <server-root>/lib/groovy-scripted-extensions directory (for Groovy-based extensions) or the jar file in the <server-root>/lib/extensions directory (for Java-based extensions) before configuring PingDataSync for notification mode. Groovy scripts are compiled and loaded at runtime.

The Server SDK’s SyncOperation interface represents a single synchronized change from the Sync Source to the Sync Destination. The same SyncOperation object exists from the time a change is detected, through when the change is applied at the destination.

The LDAP SDK’s UnboundIDChangelogEntry class (in the com.unboundid.ldap.sdk.unboundidds package) has high-level methods to work with the ds-changelog-before-value, ds-changelogafter-values, and ds-changelog-entry-key-attr-values attributes. The class is part of the commercial edition of the LDAP SDK for Java and is installed automatically with PingDataSync. For detailed information and examples, see the LDAP SDK Javadoc.