Tutorials

Migrate from Opsgenie

One-click import of your Opsgenie heartbeats, on-call schedules and escalation policies into HowlOps.

Overview

HowlOps imports your Opsgenie setup directly through the Opsgenie API, without CSV files or manual recreation. Provide a read-only key, review what maps to what, and import. Nothing in Opsgenie is ever modified; the import only reads.

Time: a few minutes Prerequisites: an Opsgenie API integration with read access and configuration access, and a HowlOps account

Opsgenie has no uptime monitors because it is an alerting product. If you also monitor uptime elsewhere (for example UptimeRobot), import that separately with Migrate from UptimeRobot.


What gets imported

OpsgenieHowlOps equivalentNotes
Team + membershipTeam + members/leadsMembership is matched by email
HeartbeatHeartbeatInterval converted to seconds (minutes/hours/days)
Schedule + rotations + existing overridesTeam-owned on-call schedule + layers + layer-scoped or whole-schedule overridesExact daily/weekly, length-one rotations import; responders are matched by email
Escalation policyTeam-owned escalation policyif-not-acked and if-not-closed rules with representable recipients become runtime-enforced steps
Compatible team routing ruleTeam alert-routing ruleExact AND/equality subset only; preview flags the rest

What is not imported, and why

  • Uptime monitors: Opsgenie does not have them.
  • Unverified user accounts. In the preview, you choose which missing people to invite. HowlOps shows them as invited in imported teams, rotations and direct escalation recipients, but grants no access and sends no pages until that email accepts the normal invitation.
  • Alert and notification policies. Supported typed rules import disabled for review. Static alert transforms can be activated after a dry run; notification policies, complex templates, time windows, responders and lifecycle actions remain fail-closed and visible in preview.
  • Per-user notification rules. HowlOps inventories them per user, but delivery steps and contact methods require that person to verify and re-authorize their HowlOps channels; they are never copied silently.
  • Team routing outside the exact shared subset. Match-any, regex/text operations, time restrictions, direct schedule/none targets, and other conditions remain unsupported and require manual recreation.
  • ChatOps connections and provider identities. Slack, Discord, Telegram, Mattermost, and Microsoft Teams credentials, channels, user links, and commands are not imported.
  • Alert and incident history. The one-shot migration does not import or continuously synchronize alerts. A future provider alert sync is tracked separately.
  • Hourly rotations: HowlOps cannot currently represent their cadence. The rotation is omitted with an explicit warning; it is never changed into a weekly rotation.
  • Overrides: whole-schedule overrides and overrides limited to selected imported rotations are preserved. An override that references a rotation which itself cannot be imported is reported and that scope is skipped.
  • Advanced repeat actions: resetRecipientStates and closeAlertAfterAll do not yet have the same runtime behavior and are reported as lossy. The per-rule if-not-acked versus if-not-closed condition is preserved.

Step 1: Create a read-only Opsgenie API key

In Opsgenie, open Settings → API key management → Add new API integration. Disable write access, keep read access enabled, and make sure configuration access is allowed. A key restricted to alert operations may authenticate successfully but cannot read teams, schedules, or policies and returns 403 during preview.

Note your region: Opsgenie runs a US stack (api.opsgenie.com) and an EU stack (api.eu.opsgenie.com). You'll pick the matching region in HowlOps.

HowlOps never stores your API key. It is used only to read your data during the import and is discarded as soon as the job starts.


Step 2: Run the import

  1. In HowlOps, go to Settings → Import (or start it from the onboarding wizard: "Already using Opsgenie or UptimeRobot? Import instead").
  2. Choose Opsgenie, select your region, and paste your API key.
  3. Click Load items. HowlOps fetches teams, heartbeats, schedules, rotations, escalation policies, and team routing rules and shows a preview table. Preview creates no resources and sends no invitations. Every row is labelled exact, lossy, or unsupported.
  4. Tick the items you want, then click Import. A progress bar shows Importing 12/40…; a problem with one item never stops the rest.
  5. When it finishes you get a summary such as 37 imported, 3 skipped and a Download report button (a CSV of every item and its outcome).

Step 3: Fill in on-call members

If some team members have not joined your workspace yet:

  1. Select that person for invitation in the import preview, or invite them later under Settings → Members & roles.
  2. Before acceptance they are visible as Invited in imported teams, rotations and direct escalation targets, but cannot sign in, gain team visibility, become on-call or receive notifications.
  3. They accept the invitation. Pending team membership, rotation membership, direct escalation actions and imported override shifts are attached automatically. Pending assignments remain authorization-inert until a valid invitation for that email is accepted.

Reconnect ChatOps after migration

Migration recreates the on-call graph, not credentials held by chat providers. Connect channels under Integrations, then attach them to imported escalation policies or use broadcast routing.

  • Use Add to Slack (OAuth) for /howlops commands, signed message buttons, and automatic incident-channel creation. An Incoming Webhook is delivery-only.
  • Pair each Telegram user who should run commands.
  • Connect the Discord application for signed commands and buttons. A plain webhook is delivery-only.
  • Mattermost actions and Microsoft Teams Workflow links use scoped signed browser actions; they are not provider bot commands.

An Opsgenie email address does not prove ownership of a Slack, Discord, or Telegram identity. Every ChatOps identity is connected again and re-authorized against HowlOps permissions and private-team visibility. See Incident response & ChatOps and Slack alerts and ChatOps in 5 minutes.

Keep external alerts flowing during cutover

HowlOps already accepts the Opsgenie-shaped wire payload emitted by Alertmanager's native opsgenie_configs receiver. It preserves alias-based deduplication, priority, details, tags and close events, then applies HowlOps routing and escalation. Pointing an Alertmanager receiver at HowlOps is therefore suitable for a parallel cutover.

The import itself is configuration-only and one-shot. It does not store the Opsgenie key or create a background alert connector. Recurring provider alert sync is planned separately.

Policies and activation safety

HowlOps can import the typed subset of Opsgenie alert policies—supported filters plus static message, description, priority and tag transformations—and notification policies into disabled provider-neutral policies. The import never silently activates them. An owner or admin can inspect a dry-run trace before alert-policy activation. Notification policies remain non-activatable until broadcast, escalation, personal fallback and direct queue paths share one exact gate; templates, time restrictions, responder/custom actions and lifecycle actions also remain fail-closed and are listed in preview. This follows the fields and ordering documented by the Opsgenie Policy API.

Already-closed history, notes, attachments and arbitrary custom actions are not imported. Revoke the temporary Opsgenie key when the migration is complete.


Re-running is always safe

Every import is idempotent. A second run shows whether the source is unchanged, changed, or a legacy import with unknown drift, then skips the linked object rather than duplicating or overwriting it. A legacy importer-owned schedule left with no rotation layers is safely recreated. Source changes require conflict review.


What's next

Was this page helpful?