> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.itential.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.itential.com/_mcp/server.

# Install and migrate adapters and custom applications

> How to install and migrate adapters and custom applications to Itential Platform 6.

This guide covers installing adapters and custom applications on Platform 6, including how to migrate them from a previous Platform version.

Before you proceed, note the following differences in Platform 6:

* Platform 6 installs to a different on-disk location than earlier Platform releases (2022.1, 2023.1, 2023.2).
* Adapters and custom applications must be placed in the correct services directory for the product to function.

| Platform version         | Services directory                                         |
| ------------------------ | ---------------------------------------------------------- |
| 2022.1 / 2023.1 / 2023.2 | `/opt/itential/pronghorn/node_modules/@itentialopensource` |
| Platform 6               | `/opt/itential/platform/services`                          |

## Migration to Platform 6

Use this procedure to migrate adapters from a legacy Platform installation to Platform 6.

#### Locate existing adapters

On your current Platform system, find the adapters directory:

```
/opt/itential/pronghorn/node_modules/@itentialopensource
```

#### Remove generated files from each adapter

For each adapter you intend to migrate:

```bash
cd adapter-name
rm -rf node_modules
rm package-lock.json
cd ..
```

#### Package and transfer each adapter

Compress each adapter using `zip`, `gzip`, or `tar`, then transfer the compressed file to the Platform 6 system.

#### Place adapters in the Platform 6 services directory

On the Platform 6 system, decompress each adapter into:

```
/opt/itential/platform/services
```

The services directory should contain individual adapter directories directly — not a namespace directory wrapping them.

#### Install dependencies for each adapter

```bash
cd /opt/itential/platform/services/adapter-name
npm install
```

#### Run lint and tests

```bash
npm run lint:errors   # Should produce no errors
npm run test          # All tests should pass
```

#### Restart the Platform

After all adapters have been migrated, restart once:

```bash
systemctl restart itential-platform
```

#### Configure service instances

For each adapter, complete the configuration steps in the [Install an adapter](#install-an-adapter) section below.

Repeat this procedure for all adapters on the legacy system, including custom adapters in non-standard namespaces.

## Install an adapter

#### Navigate to the services directory

```bash
cd /opt/itential/platform/services
```

#### Add the adapter

Use one of the following methods:

```bash
git clone git@gitlab.com:@itentialopensource/adapters/adapter-name
```

```bash
unzip adapter-name.zip
```

```bash
tar -xvf adapter-name.tar
```

#### Install adapter dependencies

```bash
cd adapter-name
npm install
```

#### Run lint and tests

```bash
npm run lint:errors   # Should produce no errors
npm run test          # All tests should pass
```

#### Restart the Platform

```bash
systemctl restart itential-platform
```

#### Create a service instance

In the Admin Essentials GUI, create a new service instance for the adapter.

#### Configure the service instance

In the Admin Essentials GUI, open the service instance configuration for the adapter.

Copy the properties from `sampleProperties.json` in the adapter directory and paste them into the inner (second) properties object in the service instance configuration. Update host, port, authentication method, credentials, and any other environment-specific values.

#### Set permissions

Grant the `admin` role to the adapter for any user who will:

* Build workflows that include an adapter task
* Use adapter calls to retrieve dynamic data in a JSON form or custom application

### Adapter high availability setup

In a high availability (HA) cluster, you must install the adapter source code on every node before creating the adapter instance. This ensures the adapter can run on any node in the cluster.

#### Install adapter source code on all nodes

On every node in the cluster, follow the [Install an adapter](#install-an-adapter) steps above.

#### Restart the Platform on all nodes

```bash
systemctl restart itential-platform
```

#### Create an adapter instance

From any node, open **Admin Essentials** and create a new adapter instance. See [Adapters](/itential-platform/admin-essentials/adapters) for instructions.

#### Configure the adapter

In the **Configuration** tab, edit the service config to match your environment, then click **Save**. Saving automatically restarts the adapter on that node.

#### Restart Platform on all remaining nodes

The auto-restart in the previous step only affects the node where you saved the config. On each remaining node, restart Itential Platform so that it loads the new adapter instance from the shared database:

```bash
systemctl restart itential-platform
```

The adapter instance is now running on all nodes in the cluster.

## Adapter logging

Adapter debug logging captures three event types:

| Log event   | Description                                                           |
| ----------- | --------------------------------------------------------------------- |
| OPTIONS     | Configuration and metadata for the call made to the downstream system |
| REQUEST     | Payload sent to the downstream system                                 |
| CALL RETURN | Raw response received from the downstream system                      |

## Troubleshooting

Most adapter issues relate to configuration and authentication. Check the adapter's `sampleProperties.json` for documented authentication approaches, and the `AUTH.md` file for a description of the login process and requirements.

When using SSL/TLS, enable SSL in the service instance configuration and provide a CA file. Accepting invalid certificates is not recommended for production environments.

For missing or outdated API calls, use the adapter's generic methods to continue work while a formal update is added. Generic adapter calls let you define custom endpoints and parameters directly.

* [Generic adapter methods](/adapters/customize/adapter-method-reference)
* [Use the dynamic dropdown form element with adapters](/studio/json-forms/adapters/use-dynamic-dropdown)

For additional support, contact the Itential Adapters Team: [Here to Help](/).

## Related reading

* [Install Platform 6](/itential-platform/install/platform)
* [Adapter overview](/adapters/introduction/overview)
* [Install adapters — adapter developer guide](/adapters/get/install)