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 inbackend/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 inshifts[] 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 bystep 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_tosteps (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_emailintegrations — Regen does not have an inbound email receiverescalation_chainlinked 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.
