Configure On-Call Schedules
On-call schedules define who is responsible for responding to incidents at any given time.
As an administrator, you'll create rotation schedules for your teams, manage overrides for temporary coverage changes, and optionally import configurations from external tools.
Create a Schedule
- Go to On-Call → Schedules.
- Click Create Schedule.
- Configure the schedule:
- Name: A descriptive name (e.g., "Payments Team: Weekly Rotation").
- Rotation pattern: Set the rotation type (e.g., weekly) with a customizable start time and day.
- Time zone: Select the appropriate time zone for the team.
- Participants: Add team members to the rotation.
- Review the schedule preview to verify coverage.
- Click Save.
Schedule Options
- Weekly rotations with customizable handoff times and days.
- 24/7 coverage for always-on services.
- Follow-the-sun patterns for globally distributed teams.
- Holiday calendars to account for planned time off.
- Edit YAML for programmatic schedule setup and bulk configuration.
Create Schedule Overrides
Overrides let you temporarily change who's on call: for example, when someone is out sick, on vacation, or swapping shifts.
- Go to the schedule you want to override.
- Click Add Override.
- Specify:
- The person covering the shift.
- The start and end time for the override.
- Save the override. The schedule view will reflect the temporary change.
Import from External Sources
If your organization is migrating from another on-call tool, you can import schedule configurations:
Syncing with External On-call Tools
Syncers for importing users, escalation policies, and schedules are available for PagerDuty, OpsGenie, and xMatters.
When you sync with an external on-call tool, the following data is imported:
- Users: Team members and their contact information
- Schedules: Rotation patterns, time zones, and coverage periods
- Escalation Policies: Rules for routing alerts and escalating to backup responders
- Teams/Groups: Team structure and ownership
Configure PagerDuty Sync
- Go to On-Call → Sync from 3rd Party tab
- Connect Source: Select PagerDuty as the source system and configure the connector:
- API Token: Generate from PagerDuty → Integrations → API Access Keys
- Subdomain: Your PagerDuty subdomain (e.g.,
yourcompany.pagerduty.com)
- Click Next: Select Entities
- Select Entities: Choose which services to sync
- Select specific services or all services
- Preview shows what will be imported: schedules, escalation policies, groups, people, contact details
- Click Next: Invite Users
- Invite Users: Invite discovered users to Harness (optional)
- Select users who need Harness accounts to receive pages
- Invited users will receive email invitations
- Click Next: Configure Sync Rules
- Configure Sync Rules: Configure sync behavior
- Sync Contact Details: Enable to import email, SMS, phone numbers
- Sync Strategy: Choose how to handle conflicts (preserve local changes or overwrite)
- Click Start Sync
- Sync Summary: Monitor the import progress
- View imported: users, schedules, escalation policies, teams
Configure OpsGenie Sync
- Go to On-Call → Sync from 3rd Party tab
- Connect Source: Select OpsGenie as the source system and configure the connector:
- API Key: Generate from OpsGenie → Settings → API Key Management
- Region: Select US or EU based on your OpsGenie instance
- Click Next: Select Entities
- Select Entities: Choose which services to sync
- Select specific services or all services
- Preview shows what will be imported: schedules, escalation policies, groups, people, contact details
- Click Next: Invite Users
- Invite Users: Invite discovered users to Harness (optional)
- Select users who need Harness accounts to receive pages
- Click Next: Configure Sync Rules
- Configure Sync Rules: Configure sync behavior
- Sync Contact Details: Enable to import email, SMS, phone numbers
- Sync Strategy: Choose how to handle conflicts
- Click Start Sync
- Sync Summary: Monitor the import progress
Configure xMatters Sync
- Go to On-Call → Sync from 3rd Party tab
- Connect Source: Select xMatters as the source system and configure the connector:
- Instance URL: Your xMatters instance URL (e.g.,
https://yourcompany.xmatters.com) - Username: API user username
- Password: API user password or API key
- Instance URL: Your xMatters instance URL (e.g.,
- Click Next: Select Entities
- Select Entities: Choose which services to sync
- Select specific services/groups or all
- Preview shows what will be imported: schedules, shifts, escalation policies (on-call groups), people, contact details
- Click Next: Invite Users
- Invite Users: Invite discovered users to Harness (optional)
- Select users who need Harness accounts to receive pages
- Click Next: Configure Sync Rules
- Configure Sync Rules: Configure sync behavior
- Sync Contact Details: Enable to import email, SMS, phone numbers
- Sync Strategy: Choose how to handle conflicts
- Click Start Sync
- Sync Summary: Monitor the import progress
Post-Import Steps
After importing from an external tool:
- Verify User Mapping: Ensure external users are correctly mapped to Harness users by email
- Review Schedules: Check that rotation patterns and time zones imported correctly
- Test Escalation Policies: Verify escalation rules work as expected
- Update Service Ownership: Assign imported teams to services in the Service Directory
- Configure Notifications: Set up notification preferences for imported users
Import Conflicts
Common conflicts and how to resolve them:
| Conflict Type | Cause | Resolution |
|---|---|---|
| User not found | External user email does not match a Harness user | Invite the user to Harness or map to an existing user |
| Duplicate schedule | Schedule with same name already exists | Rename one of the schedules or merge them |
| Team name collision | User Group with same name exists | Rename the User Group or choose to merge |
| Timezone mismatch | External tool uses different timezone format | Review and confirm timezone conversions |
Ongoing Sync
After initial import, you can:
- Re-sync periodically to pull updates from the external tool
- One-way sync - Changes in the external tool can be synced to AI SRE
- Manual management - After import, manage schedules independently in AI SRE
Best Practices
- Ensure full coverage: Review the schedule preview for gaps. Every hour should have a designated responder.
- Set reasonable rotation lengths: Weekly rotations are a common default. Shorter rotations reduce fatigue; longer ones reduce handoff overhead. Adjust based on team feedback.
- Use overrides instead of editing the schedule: Overrides preserve the base rotation and create a clear audit trail of coverage changes.
- Leverage YAML for large teams: The Edit YAML feature makes it easier to manage complex or multi-team schedules programmatically.
- Account for time zones: For distributed teams, verify that handoff times make sense in each participant's local time zone.