Migrating from Opsgenie to All Quiet: The Terraform (IaC) Transformation Guide - Part I
🔧 A technical guide for DevOps and SRE teams: Learn how to migrate from Opsgenie to All Quiet using Terraform, transforming legacy ticketing-heavy structures into modern, developer-first IaC workflows.
Updated: Sunday, 11 January 2026
Published: Sunday, 11 January 2026
TL;DR
Migrating your on-call infrastructure to All Quiet allows you to strip away legacy administrative bloat and replace it with actionable notification logic directly in your Terraform (or more precisely HashiCorp Configuration Language (HCL)). By shifting from Opsgenie's fragmented member management to All Quiet's team-centric operational settings, you reduce your lines of code while gaining deeper control over how incidents are handled.
Building on our high-level look at why SRE teams are leaving the Atlassian ecosystem, it's time to get into the technical weeds. If your on-call setup is currently codified in HCL, your "checklist" isn't a spreadsheet, it's a mapping of Terraform resources. For DevOps and SRE teams, this migration is a chance to move from a legacy, ticketing-heavy structure to a modern, developer-first IaC workflow.
1. The User Transformation: From Directory to Delivery
Opsgenie's opsgenie_user resource often functions as a secondary HR directory, storing metadata like home addresses and Skype IDs that have no impact on incident resolution. All Quiet's allquiet_user refocuses the code on the only thing that matters during an outage: How and when do we reach the engineer?.
The "Before" (Opsgenie Legacy):
resource "opsgenie_user" "test" {
username = "user@domain.com"
full_name = "Test User"
role = "User"
# Administrative bloat that doesn't trigger alerts:
skype_username = "skypename"
user_address {
country = "Country"
zipcode = "998877"
}
}
The "After" (All Quiet Modern):
All Quiet replaces the address fields with Incident Notification Settings. Instead of knowing where an SRE lives, the code defines their personal "safety net", like a 5-minute delay before an SMS triggers for a Critical incident.
resource "allquiet_user" "billie_eilish" {
display_name = "Billie Eilish"
email = "acceptance-tests+billie@allquiet.app"
# Actionable intent: Define exactly how Billie is alerted
incident_notification_settings = {
should_send_sms = true
delay_in_min_sms = 5
severities_sms = ["Critical"]
should_send_push = true
delay_in_min_push = 0
severities_push = ["Critical", "Warning"]
}
}
2. The Team Transformation: Decoupling Membership from Strategy
In Opsgenie, teams are often "containers" for users, requiring explicit linking of every user ID and role directly in the team block. In All Quiet, teams are "Operational Blueprints". You no longer need to manually manage member blocks; instead, you define the team's heartbeat and automated reporting logic.
The "Before" (Opsgenie):
resource "opsgenie_team" "test" {
name = "example"
description = "This team deals with all the things"
member {
id = "${opsgenie_user.first.id}"
role = "admin"
}
}
The "After" (All Quiet):
All Quiet focuses on the team's output. You define the time_zone_id for local rotations and automate Engagement Reports to ensure the team isn't burning out.
resource "allquiet_team" "my_team" {
display_name = "My Team"
time_zone_id = "America/Los_Angeles"
# Automated feedback loops replace manual role management
incident_engagement_report_settings = {
day_of_week = "mon"
time = "09:00"
}
labels = ["Product", "Operations"]
}
Why This Matters for Your Migration
Reduced Dependency Graph: By moving notification logic into the user resource and rotation logic into escalations, your Terraform state becomes more resilient to changes.
Scalability: Adding a new SRE to a rotation no longer requires re-coding the entire team resource; you simply add their user_id to the relevant escalation tier.
Operational Health: All Quiet introduces automated reporting directly into the team resource, replacing the need for external tools to track team performance.
Summary: From Directory to Response
This code transformation illustrates the shift from Opsgenie's static, administrative records to All Quiet's dynamic, operational infrastructure. By consolidating notification logic into the user resource and operational health into the team resource, you eliminate HCL bloat while gaining precise control over alert delivery. Ultimately, this migration simplifies your dependency graph and ensures your on-call setup is built for rapid response rather than just directory management.
Read all blog posts and learn about what's happening at All Quiet.
Product
Solutions