Skip to main content

Grafana OnCall → Regen: Field-by-Field Mapping

This document is the authoritative reference for how every Grafana OnCall API object maps to the corresponding Regen data model. It is the source of truth for the transformation layer in backend/internal/integrations/oncall/transform.go.

Users

OnCall endpoint: GET /api/v1/users Conflicts: If a user with the same email already exists in Regen, the user is skipped and added to conflicts[]. Existing users are never overwritten. Not imported:
  • Notification policies (per-user paging rules) — planned for v1.1
  • Teams ID — not available in OnCall API
  • Phone number — OnCall does not expose this field

Teams

OnCall endpoint: GET /api/v1/teams Teams in Grafana OnCall have no direct equivalent in Regen. They are fetched for context but not imported. The team name may be added as a tag or label in a future release.

Schedules

OnCall endpoints: GET /api/v1/schedules + GET /api/v1/on_call_shifts

Schedule

Shift → Schedule Layer

Each shift in shifts[] maps to a schedule_layers row:

Participants

OnCall uses internal user IDs (pk) in rolling_users and users. During import, these IDs are resolved to display names using the imported user map. If a user ID cannot be resolved (user was skipped due to conflict or missing email), the raw OnCall ID is used as the participant name — the admin can correct this afterwards. Not imported:
  • by_day, by_month, by_monthday (complex recurrence rules) — mapped to weekly/daily with the same participants; full recurrence requires manual adjustment
  • Schedule overrides — not imported in this version (future: import as schedule_overrides)
  • iCal schedules (type = "ical") — layers cannot be derived from an iCal URL; skipped with a warning

Escalation Policies

OnCall endpoints: GET /api/v1/escalation_chains + GET /api/v1/escalation_policies

Escalation Chain → Escalation Policy

Escalation Step → Escalation Tier

Steps within a chain map to tiers, sorted by step index: Tier timeout: timeout_seconds defaults to 300 (5 min) unless the step has an explicit duration field set. Not imported:
  • Steps that reference users or schedules not present in the import (conflict/skip)
  • Notify channel/team steps
  • notify_if_time_from_to steps (time-window conditions — not yet supported in Regen)

Integrations (Webhook URLs)

OnCall endpoint: GET /api/v1/integrations Grafana OnCall integrations are inbound webhook sources. They do not create new Regen objects — instead, the import returns a mapping table showing what URL in Regen to use as the replacement. The user must manually update their Alertmanager / Grafana contact point configuration to point at the new Regen URLs. Not imported:
  • inbound_email integrations — Regen does not have an inbound email receiver
  • escalation_chain linked to an integration — user must manually link the imported escalation policy to a routing rule in Regen

Alert Groups (incident history)

OnCall endpoint: GET /api/v1/alert_groups Not imported in this version. Resolved alert groups can optionally be imported as read-only historical incidents in a future release.

Summary: what transfers, what doesn’t