> For the complete documentation index, see [llms.txt](https://developer.harness.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.harness.io/harness-platform/use-harness-platform/pipelines/move-a-pipeline-between-projects.md).

# Move a pipeline between projects

Move a pipeline to a different project or organization while Harness retains its execution history.

{% hint style="info" %}
This feature is in Beta[^1] and requires enablement. [View all early access features.](/release-notes/features.md)

{% @harness-feature-flag-access/request-feature-flag-access module="platform" pagePath="platform/use-harness-platform/pipelines/move-a-pipeline-between-projects" featureFlags="%5B%7B%22name%22%3A%22Move%20a%20pipeline%20between%20projects%22%2C%22key%22%3A%22PIPE\_ENABLE\_PIPELINE\_MOVE\_ACROSS\_PROJECTS%22%2C%22status%22%3A%22BETA%22%2C%22description%22%3A%22Enables%20moving%20a%20pipeline%20to%20a%20different%20project%20or%20organization%20while%20Harness%20retains%20its%20execution%20history%20in%20the%20background.%22%7D%5D" %}
{% endhint %}

When you reorganize projects and teams, you sometimes need to move a pipeline to a different project or organization. Previously, the only way to do this was to delete the pipeline and recreate it in the new location, which lost the pipeline's execution history. Harness lets you move a pipeline directly, so you keep a complete, auditable execution history after the move.

***

## Before you begin

* **Feature flag**: Harness enables this feature behind the `PIPE_ENABLE_PIPELINE_MOVE_ACROSS_PROJECTS` feature flag. Contact Harness Support to enable it for your account.
* **Pipeline create and edit permissions**: You need the Create (`core_pipeline_create`) and Edit (`core_pipeline_edit`) permissions on the source project, and the Create (`core_pipeline_create`) permission on the destination project. Go to [Permissions reference](/harness-platform/use-harness-platform/platform-access-control/permissions-reference.md#pipelines) for the full list of pipeline permissions, and go to [RBAC in Harness](/harness-platform/use-harness-platform/platform-access-control.md) to assign roles.

***

## What you will learn from this topic

* How to [move a pipeline to another project](#move-a-pipeline-to-another-project), including across organizations.
* How to [monitor the execution history migration](#monitor-the-execution-history-migration) after a move.
* Understand the [limitations](#limitations) of moving a pipeline, including stale references and data that Harness does not migrate.
* Understand [what you cannot do](#important-notes) during and immediately after a move.

***

## Move a pipeline to another project

{% stepper %}
{% step %}

### Open the move pipeline drawer

1. Go to **Pipelines**.
2. Click the kebab menu (**⋮**) next to the pipeline you want to move.
3. Select **Move Pipeline**.

![Pipelines list with Move Pipeline highlighted in the row's kebab menu](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-22f071f33636201bf738fab8b15b54381e4d0ed4%2Fmove-pipeline-kebab-menu.png?alt=media)
{% endstep %}

{% step %}

### Select the destination

This step shows the pipeline name and its current organization and project as read-only fields. Select the destination organization and destination project from the dropdowns, then continue to the confirmation step.

![Destination selection step of the Move Pipeline drawer, with destination organization and project dropdowns](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-ebc36aaf72d601ed5a1b0d8a0d5525cd7bcafec2%2Fmove-pipeline-choose-destination.png?alt=media)
{% endstep %}

{% step %}

### Confirm and move the pipeline

Review the confirmation summary and the warning that the move cannot be undone and may affect entities that reference the pipeline, including triggers, input sets, and templates. Enter the pipeline identifier to confirm, then click **Move**.

![Confirmation step of the Move Pipeline drawer, with the warning and the pipeline identifier confirmation field](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-a296e2970b40de10421b8cf22e9baa39c872cf3b%2Fmove-pipeline-confirm.png?alt=media)
{% endstep %}
{% endstepper %}

After you click **Move**, the drawer closes, and Harness redirects you to the pipeline list in the destination project. The pipeline is immediately executable in the destination project. Execution history continues to migrate in the background.

Harness logs the move as a **Move Pipeline** event in the audit trail, including the pipeline's source and destination organization and project identifiers.

![Audit trail entry for a Move Pipeline event, showing the resource name and source and destination organization and project identifiers](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-47017984d3fa47164deb435adc828c9c3a05e3c5%2Fmove-pipeline-audit-log.png?alt=media)

***

## Monitor the execution history migration

As part of the move, Harness moves the pipeline, its input sets, and its triggers immediately. Execution history is the only part of the move that continues to migrate to the destination project in the background. While this migration is in progress, Harness displays an information banner stating that execution history is migrating on the pipeline's **Pipeline Studio**, **Input Sets**, **Triggers**, and **Execution History** pages in the destination project. Harness checks the migration status every five seconds and clears the banner everywhere once the migration finishes.

![Destination pipeline page with the execution history migration banner](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-a8de0b266f94deaadbaef1edfea68f2b23ba462d%2Fmove-pipeline-destination-banner.png?alt=media)

On the destination project's pipeline list, a pipeline still migrating shows **Execution history is being moved** in the **Last Execution** column, and the same message in the row's hover tooltip. The recent executions sparkline for that row is disabled until the migration finishes.

![Destination project's pipeline list showing a pipeline with execution history still migrating](https://173309742-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F3F2TpHXhur2QtQnORSM9%2Fuploads%2Fgit-blob-1bc04b6eb751e2361db68be9ffa3438a29fbf204%2Fmove-pipeline-history-migrating.png?alt=media)

***

## Limitations

When you move a pipeline from one project to another, Harness may not migrate all associated data, references, or behaviors. Some elements may require manual updates or reconfiguration after the migration.

The following limitations and considerations apply.

| Category                | Item                          | Impact after move                                                                                                                                                                                                                                                                                                                                      |
| ----------------------- | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| **Pipelines**           | Pipeline chaining             | Pipelines that call the moved pipeline, or that the moved pipeline calls, still reference the old org and project path. Update those pipeline step references after the move.                                                                                                                                                                          |
| **Pipelines**           | YAML scope and references     | Hardcoded `orgIdentifier` and `projectIdentifier` values, and project-scoped connectors, templates, and secrets, are not updated. Make sure the required resources exist in the destination project, or at the account or organization scope, or update the YAML. If you move the pipeline across organizations, review org-scoped references as well. |
| **Triggers**            | Trigger URLs and webhooks     | cURL commands, URLs, and Slack or generic webhooks that include the old org and project identifiers stop working after the move. Update these externally, and disable and re-enable triggers in the destination project if they do not fire correctly.                                                                                                 |
| **Policy management**   | OPA policies                  | Source-project OPA policies do not move with the pipeline. Policy checks use the destination project's policies after the move, which may be stricter or different from the source project's policies.                                                                                                                                                 |
| **CD Verify**           | Verify step configuration     | Continuous Verification step setup is project-scoped and may not work correctly after the move. Reconfigure Verify in the destination project if needed.                                                                                                                                                                                               |
| **Git Experience**      | Remote file paths             | Harness does not rename or move the pipeline file in Git. The stored path remains the same as before the move.                                                                                                                                                                                                                                         |
| **Audit logs**          | Links to the old path         | Audit entries created before the move still link to the old org and project path. Those links do not open correctly. No customer action required.                                                                                                                                                                                                      |
| **Licensing and usage** | Historical usage data         | Past license usage and similar usage records are not reassigned to the destination project. Usage recorded after the move counts under the destination project. No customer action required.                                                                                                                                                           |
| **CI**                  | Branch build sequence numbers | `<+pipeline.branchSeqId>` restarts from 1 in the destination project. Artifacts or version strings that use this value restart from 1 as well.                                                                                                                                                                                                         |
| **CI/CD dashboards**    | Dashboard data                | Harness does not update CI/CD dashboard data to reflect the move. No customer action required.                                                                                                                                                                                                                                                         |

***

## Important notes

* A pipeline move cannot be undone.
* You cannot delete a pipeline while a move is in progress.
* Do not delete the project while a move from the source project to the destination project is in progress. A background job processes the execution history, so deleting the project during the move can cause issues.
* You cannot start another move for a pipeline, including a move back to its original project, while a previous move is still migrating execution history in the background.
* You can retry a stage for executions that completed before the move, as well as for executions that started after the move completes. Go to [Retry failed executions from any stage](/harness-platform/use-harness-platform/pipelines/failure-handling/resume-pipeline-deployments.md) to learn how to retry a stage.

***

## Troubleshooting

<details>

<summary>Failed to start the pipeline move</summary>

Harness blocks a new move for a pipeline while a previous move for that same pipeline is still migrating execution history in the background. This includes trying to move the pipeline back to its original project before the migration finishes. You see an error similar to:

```
Failed to start the pipeline move
Invalid request: Pipeline [<PIPELINE_ID>] already has an active move operation in progress from [<SOURCE_ORG>/<SOURCE_PROJECT>] to [<DESTINATION_ORG>/<DESTINATION_PROJECT>].
```

Wait for the execution history migration banner on the destination pipeline to clear, then retry the move. Go to [Monitor the execution history migration](#monitor-the-execution-history-migration) to check migration status.

</details>

***

## Next steps

* [Permissions reference](/harness-platform/use-harness-platform/platform-access-control/permissions-reference.md#pipelines): Review the full list of pipeline permissions.
* [View and compare pipeline executions](/harness-platform/use-harness-platform/pipelines/executions-and-logs/view-and-compare-pipeline-executions.md): View execution history after a move completes.
* [Pipeline settings](/harness-platform/use-harness-platform/pipelines/pipeline-settings.md): Configure account-level pipeline settings and limits.

{% @harness-feedback/feedback module="harness-ai" pagePath="harness-ai/use-harness-platform/pipelines/move-a-pipeline-between-projects" %}

[^1]: Off by default. If you want to try it and share feedback, request access and Harness will turn it on for your account. Beta features can change and may not be ready for production use.
