> For the complete documentation index, see [llms.txt](https://docs.bindplane.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bindplane.com/configuration/bindplane/migration/multi-project-migration.md).

# Multi Project Migration

How to migrate resources from one project to another, on the same system or a different system

### Multi Project

Multi-Project Bindplane is an Enterprise feature that allows users to create multiple tenants (projects). Each project can have its own users, configurations, and managed collectors. Multi-Project supports user invitations in order to support collaboration between multiple users.

### Objective

Export resources from an individual Bindplane project and import them into another project on the same system or a different Bindplane system.

### Prerequisites

The following requirements must be met:

* You are running Bindplane Enterprise. Contact the [sales team](mailto:sales@bindplane.com) for more information about upgrading to Bindplane Enterprise.
* Bindplane **v1.25.0** or newer. If on an older version, upgrade before attempting a migration.
* Bindplane is configured with multi-project enabled.

### Procedure

The migration procedure has the following steps:

1. Create API Keys
2. Configure Bindplane CLI profiles
3. Export resources from a project
4. Import resources to the new project
5. Validate
6. Migrate Collectors

#### Create API Keys

Following the [API Keys documentation](/cli-and-api/api-keys.md), create an API key for your source and destination projects. We are going to refer to them as "export" and "import".

Note the API keys, but do not create their profiles. Follow the next section for profile instructions.

#### Configure CLI Profiles

Configure your Bindplane CLI with two profiles. One for the source project and server, and another for the target project and server.

Create `export` profile:

```bash
bindplane profile set "export" \
  --server-url "http://192.168.1.9:3001" \
  --api-key "xxxx-xxxx-xxxx-xxxx-xxxxxx"
```

Create the `import` profile:

```bash
bindplane profile set "import" \
  --server-url "http://192.168.1.10:3001" \
  --api-key "xxxx-xxxx-xxxx-xxxx-xxxxxx"
```

Replace the values for the remote URL and API key with your Bindplane server remote URL(s) and API keys.

#### Export Resources

Switch to the `export` profile:

```bash
bindplane profile use "export"
```

Export destinations, sources, processors, and configurations from the project:

```bash
touch migration-resources.yaml
bindplane get destination -o yaml --export > "migration-resources.yaml"
bindplane get source -o yaml --export >> "migration-resources.yaml"
bindplane get processor -o yaml --export >> "migration-resources.yaml"
bindplane get extension -o yaml --export >> "migration-resources.yaml"
bindplane get configuration -o yaml --export >> "migration-resources.yaml"
```

#### Import Resources

Switch to the `import` profile:

```bash
bindplane profile use "import"
```

Import destinations, sources, processors, and configurations using the apply command:

```bash
bindplane apply -f "migration-resources.yaml"
```

#### Validate

Log into the Bindplane project and ensure the configurations and destinations are present. If everything looks right, the migration is finished.

#### Migrate Collectors

Previously connected collectors will need to be updated with the new project's secret key. Follow the [Migrate Collectors documentation](/configuration/bindplane/migration/migrate-collectors.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.bindplane.com/configuration/bindplane/migration/multi-project-migration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
