---
title: Configuring a custom datastore
description: You can configure your own custom datastore instance to perform specified actions.
component: pingfederate
version: 13.1
page_id: pingfederate:administrators_reference_guide:pf_config_custom_datastore
canonical_url: https://docs.pingidentity.com/pingfederate/13.1/administrators_reference_guide/pf_config_custom_datastore.html
llms_txt: https://docs.pingidentity.com/pingfederate/llms.txt
docs_for_agents: https://developer.pingidentity.com/build-with-ai/docs-for-agents.md
revdate: July 5, 2022
section_ids:
  about-this-task: About this task
  steps: Steps
  example: Example:
---

# Configuring a custom datastore

You can configure your own custom datastore instance to perform specified actions.

## About this task

Developers can use the PingFederate SDK to create specific drivers for non-Java Database Connectivity (JDBC) , LDAP datastores, or more sophisticated JDBC or LDAP queries, including flat files or SOAP-connected databases. You can write datastores to perform configuration assistance or validation actions, such as testing a connection to a database. Actions can also include generation of parameters that might need manual setting in a configuration file.

For more information, see the Javadoc for the `CustomDataSourceDriver` interface, the `SamplePropertiesDataStore.java` file for a sample implementation, and the [SDK Developer's Guide](../sdk_developers_guide/pf_sdk_developers_guide.html) for build and deployment information.

|   |                                                                                                                  |
| - | ---------------------------------------------------------------------------------------------------------------- |
|   | The Javadoc for PingFederate and the sample implementation are in the `<pf_install>/pingfederate/sdk` directory. |

## Steps

1. After the data store driver (JAR) file is written and installed, select it in the **Data Store** window when creating a new instance of your data store.

2. On the **Configure Data Store Instance** tab, configure your data store instance.

   |   |                                                                              |
   | - | ---------------------------------------------------------------------------- |
   |   | Depending on the data store implementation, configuration requirements vary. |

   ### Example:

   After building and deploying the sample from the `<pf_install>/pingfederate/sdk/plugin-src/custom-data-store-example` directory, you can create an instance of the **Sample SDK Properties Data Store** and configure the rest, as shown in the following images.

   ![A sample screenshot of the Data Store Type tab.](_images/hca1564003227745.png)![A sample screenshot of the Configure Data Store Instance tab.](_images/mto1564003228331.png)

   |   |                                                                                                                                                                                                                           |
   | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   |   | When editing an existing instance, you can modify the name of the data store instance and toggle the option for if PingFederate should mask attribute values returned from this data store instance in PingFederate logs. |

3. On the **Actions** window, follow the on-screen instructions provided by the developer to complete any required tasks.

   |   |                                                                                                                                 |
   | - | ------------------------------------------------------------------------------------------------------------------------------- |
   |   | Depending on the datastore implementation, configuration requirements vary. If no action is required, this window is not shown. |

4. Click **Save** to keep your configuration.
