---
title: Use the server SDK
description: Synchronizing Lightweight Directory Access Protocol (LDAP) data to or from a relational database requires creating a Java database connectivity (JDBC) Sync Source or Destination extension to act as an interface between PingDataSync and the relational database. The Server SDK provides APIs to develop plugins and third-party extensions to the server using Java or Groovy. The Server SDK's documentation is delivered with the Server SDK build in .zip format.
component: pingdirectory
version: 11.0
page_id: pingdirectory:pingdatasync_server_administration_guide:pd_sync_use_server_sdk
canonical_url: https://docs.pingidentity.com/pingdirectory/11.0/pingdatasync_server_administration_guide/pd_sync_use_server_sdk.html
revdate: September 13, 2023
---

# Use the server SDK

Synchronizing Lightweight Directory Access Protocol (LDAP) *(tooltip: \<div class="paragraph">
\<p>An open, cross platform protocol used for interacting with directory services.\</p>
\</div>)* data to or from a relational database requires creating a Java database connectivity (JDBC) *(tooltip: \<div class="paragraph">
\<p>A Java API that allows Java programs to interact with databases.\</p>
\</div>)* Sync Source or Destination extension to act as an interface between PingDataSync and the relational database. The Server SDK provides APIs to develop plugins and third-party extensions to the server using Java or Groovy. The Server SDK's documentation is delivered with the Server SDK build in `.zip` format.

The Server SDK contains two abstract classes that correspond to how the database is used:

```
com.unboundid.directory.sdk.sync.api.JDBCSyncSource

com.unboundid.directory.sdk.sync.api.JDBCSyncDestination
```

The remainder of the SDK contains helper classes and utility functions to facilitate the script implementation. The SDK can use any change tracking mechanism to detect changes in the database. Examples are provided in the `<server-root>/config/jdbc/samples` directory for Oracle Database and Microsoft SQL Server.

PingDataSync uses a scripted adapter *(tooltip: \<div class="paragraph">
\<p>Plug-in software that allows Ping products to interact with web applications and authentication systems.\</p>
\</div>)* layer to convert any database change to an equivalent LDAP entry. The Sync Pipe then processes the data through inclusive (or exclusive) filtering using attribute and DN maps defined in the Sync Classes to update the endpoint servers. For example, a script using Java can be configured by setting the `extension-class` property on a `ThirdPartyJDBCSyncSource` or `ThirdPartyJDBCSyncDestination` configuration object within PingDataSync. The following figure is a sample architecture.

![A diagram illustrating synchronization with RDBMS.](_images/spd1564012159066.png)
