---
title: "Migrate to Grafana IRM manually | Grafana Cloud documentation"
description: "Migrate to Grafana IRM using Terraform or a fully UI-based approach."
---

> For a curated documentation index, see [llms.txt](/llms.txt). For the complete documentation index, see [llms-full.txt](/llms-full.txt).

# Migrate to Grafana IRM manually

If you’re migrating from a vendor not supported by the [IRM migration tools](https://github.com/grafana/irm-tooling), or you prefer not to use the migration tools, you can migrate manually using one of two approaches:

- **As-code migration using Terraform**
- **UI-based migration**

## Before you begin

Ensure you have the following:

- A documented inventory of your current on-call schedules, escalation policies, integrations, and notification preferences.
- For Terraform migration: the [Grafana Terraform provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs) installed and configured with access to your Grafana Cloud instance.
- For UI migration: access to the IRM plugin in your Grafana Cloud instance.

## Migrate with Terraform

If you already use infrastructure as code (IaC) and are comfortable with Terraform, this approach offers a structured and repeatable migration. It gives you version-controlled configurations with consistency and traceability, and the flexibility to customize the migration process using Terraform’s configuration language.

**Considerations:** Your team needs to be proficient in Terraform. Post-migration testing is important to ensure all configurations function as expected.

### Get started with Terraform

1. Install and configure the [Grafana Terraform provider](https://registry.terraform.io/providers/grafana/grafana/latest/docs).
2. Clone the [grafana/irm-tooling](https://github.com/grafana/irm-tooling) repository. The [`terraform/examples/`](https://github.com/grafana/irm-tooling/tree/main/terraform/examples) directory contains examples for schedules, escalation chains, routes, and more.
3. Adapt the example configurations to match your current setup.
4. Run `terraform plan` to preview the resources that will be created.
5. Run `terraform apply` to create the resources in IRM.
6. Test and validate all critical workflows.

## Migrate with the UI

If you have a small team or you’re testing IRM on a smaller scale, a UI-based migration offers a low-code, hands-on approach with full control over the process. No coding or external tooling is required.

**Considerations:** This approach can be time-intensive, especially for larger-scale migrations. The time required increases significantly with scale.

### Get started with the UI

1. Document your current on-call schedules, escalation policies, and notification preferences.
2. In IRM, create [on-call schedules](/docs/grafana-cloud/alerting-and-irm/irm/on-call-schedules), [escalation chains](/docs/grafana-cloud/alerting-and-irm/irm/escalation-and-routing/escalation-chains), and [integrations](/docs/grafana-cloud/alerting-and-irm/irm/integrations) to mirror your existing setup.
3. Configure [alert routing](/docs/grafana-cloud/alerting-and-irm/irm/escalation-and-routing/routing-rules) and [notification rules](/docs/grafana-cloud/alerting-and-irm/irm/notify-responders/personal-notification-rules) as needed.
4. Test end-to-end with a small set of users and alerts before expanding.

## Next steps

- [Migrate to Grafana IRM with the migration tool](/docs/grafana-cloud/alerting-and-irm/irm/set-up/migrate/migrator-tools) for PagerDuty, Splunk OnCall, or Opsgenie
- [Migrate from Grafana OnCall OSS](/docs/grafana-cloud/alerting-and-irm/irm/set-up/migrate/oncall-oss) for OnCall OSS-specific migration guidance
- [Grafana IRM tooling](https://github.com/grafana/irm-tooling)
- [Infrastructure as code for Grafana IRM](/docs/grafana-cloud/alerting-and-irm/irm/set-up/infra-as-code)
