{"id":664,"date":"2026-06-22T05:00:14","date_gmt":"2026-06-22T05:00:14","guid":{"rendered":"https:\/\/struct.ai\/articles\/manage-on-call-schedules-jira\/"},"modified":"2026-06-22T05:00:14","modified_gmt":"2026-06-22T05:00:14","slug":"manage-on-call-schedules-jira","status":"publish","type":"post","link":"https:\/\/struct.ai\/articles\/manage-on-call-schedules-jira\/","title":{"rendered":"How to Manage On-Call Schedules in Jira and Beyond"},"content":{"rendered":"<p><em>Written by: Nimesh Chakravarthi, Co-founder &amp; CTO, Struct<\/em><\/p>\n<h2>Key Takeaways for Jira On-Call Teams<\/h2>\n<ul>\n<li>\n<p>Jira Service Management lets teams build on-call rotations, define escalation policies, and route alerts, but it does not automate the investigation that follows each page.<\/p>\n<\/li>\n<li>\n<p>Common rotation patterns must be built manually in JSM, and overrides lack comments or audit trails, which leaves covering engineers without critical context.<\/p>\n<\/li>\n<li>\n<p>Slack integrations deliver alerts but do not reduce noise or explain root causes, which often increases alert fatigue for on-call engineers.<\/p>\n<\/li>\n<li>\n<p>Adding Struct cuts median triage time by up to 80 percent by correlating logs, identifying probable causes, and surfacing fixes before engineers open their laptops.<\/p>\n<\/li>\n<li>\n<p><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/cal.com\/deepanm\/struct-demo\">Layering Struct on existing JSM<\/a> schedules replaces the 30\u201345 minute manual log hunt that Jira cannot address with a fast, guided investigation.<\/p>\n<\/li>\n<\/ul>\n<h2>Set up an on-call schedule in Jira<\/h2>\n<ol>\n<li>\n<p><strong>Create a team.<\/strong> In JSM, navigate to <em>Settings \u2192 Teams<\/em> and create a new team. JSM&#8217;s on-call dashboard is team-centric, so a team must exist before any schedule can attach to it.<\/p>\n<\/li>\n<li>\n<p><strong>Open the Operations module.<\/strong> From the JSM project sidebar, select <em>Operations \u2192 On-call schedules<\/em>.<\/p>\n<\/li>\n<li>\n<p><strong>Add a new schedule.<\/strong> Click <em>Create schedule<\/em>, name it, and assign it to the team you just created.<\/p>\n<\/li>\n<li>\n<p><strong>Define a rotation.<\/strong> Set the rotation type (daily, weekly, or custom), shift start time, and time zone. Add team members in the order they should rotate.<\/p>\n<\/li>\n<li>\n<p><strong>Set escalation policies.<\/strong> Under <em>Escalation policies<\/em>, chain the schedule so that if the primary on-call engineer does not acknowledge within a defined window, the alert escalates to a secondary or manager.<\/p>\n<\/li>\n<li>\n<p><strong>Connect an alert source.<\/strong> Under <em>Integrations<\/em>, add PagerDuty, Opsgenie, or a webhook so incoming alerts route to the active schedule.<\/p>\n<\/li>\n<\/ol>\n<p>One gap appears immediately after setup. <a target=\"_blank\" rel=\"noindex nofollow\" href=\"https:\/\/spike.sh\/blog\/jsm-review-oncall-2026\">JSM provides no ready-made schedule templates<\/a>, so every common rotation pattern, such as follow-the-sun or primary and secondary, must be built from scratch. More critically, JSM stops at routing the alert.<\/p>\n<p>Once an engineer is paged, they still open Datadog, CloudWatch, Sentry, and GitHub manually to piece together what broke and why. That manual log hunt routinely consumes 30\u201345 minutes per incident.<\/p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/cal.com\/deepanm\/struct-demo\"><strong>See how Struct automates first-pass investigations<\/strong><\/a> so your engineer starts with answers instead of raw logs.<\/p>\n<h2>Handle Jira on-call overrides and swaps with limited context<\/h2>\n<ol>\n<li>\n<p><strong>Open the active schedule.<\/strong> Navigate to <em>Operations \u2192 On-call schedules<\/em> and select the schedule you want to modify.<\/p>\n<\/li>\n<li>\n<p><strong>Add an override.<\/strong> Click the shift you want to cover, then select <em>Add override<\/em>. Choose the replacement engineer and the exact start and end timestamps.<\/p>\n<\/li>\n<li>\n<p><strong>Use &#8220;Take on-call&#8221; for urgent coverage.<\/strong> Any team member can click the <em>Take on-call<\/em> button to become the sole responder for one hour. This works well for immediate PTO swaps.<\/p>\n<\/li>\n<li>\n<p><strong>Set up multi-team hand-offs.<\/strong> For hand-offs across teams, duplicate the schedule under a second team and chain both into the same escalation policy. Ensure the outgoing team&#8217;s final shift overlaps with the incoming team&#8217;s first shift by at least 15 minutes.<\/p>\n<\/li>\n<\/ol>\n<p><a target=\"_blank\" rel=\"noindex nofollow\" href=\"https:\/\/spike.sh\/blog\/jsm-review-oncall-2026\">Overrides in JSM do not support comments<\/a>, and <a target=\"_blank\" rel=\"noindex nofollow\" href=\"https:\/\/spike.sh\/blog\/jsm-review-oncall-2026\">JSM provides no audit trail showing who edited a schedule or when<\/a>. The engineer covering a PTO swap has no in-tool context about why the override exists, what incidents are in flight, or which services are currently degraded.<\/p>\n<p>That missing context compounds the manual triage problem. A covering engineer unfamiliar with the system faces the same lengthy investigation with even less institutional knowledge to guide them.<\/p>\n<h2>Connect Jira on-call schedules to Slack<\/h2>\n<ol>\n<li>\n<p><strong>Install the JSM Slack app.<\/strong> In Slack, search the App Directory for <em>Jira Service Management<\/em> and authorize it against your Atlassian workspace.<\/p>\n<\/li>\n<li>\n<p><strong>Map alert sources.<\/strong> In JSM&#8217;s <em>Integrations<\/em> panel, select your alert source, such as PagerDuty, Opsgenie, or a direct webhook, and enable Slack notifications for each severity level.<\/p>\n<\/li>\n<li>\n<p><strong>Configure notification rules.<\/strong> Under <em>Notification rules<\/em>, define which Slack channel receives which alert type and at what escalation stage.<\/p>\n<\/li>\n<li>\n<p><strong>Test the pipeline.<\/strong> Trigger a test alert from your monitoring tool and confirm it appears in the correct Slack channel with the correct on-call mention.<\/p>\n<\/li>\n<\/ol>\n<p>Connecting JSM to Slack delivers the alert to the right channel, but the alert itself remains a thin notification. It usually contains a title, a severity, and a link back to JSM.<\/p>\n<p>On-call teams often receive frequent alerts each day, with many of those alerts being non-actionable. Engineers in many organizations report dismissing or ignoring alerts at least occasionally. The Slack integration moves the noise closer to the engineer, but it does not reduce it or explain it.<\/p>\n<h2>Real-world Jira rotation setups you can copy<\/h2>\n<p><strong>Scenario 1: Two-team, three-time-zone SaaS rotation.<\/strong> Team A (US-East) owns 08:00\u201318:00 ET. Team B (US-West) owns 18:00\u201302:00 PT. Team C (EMEA) owns 08:00\u201318:00 CET.<\/p>\n<p>Each team&#8217;s schedule is created separately in JSM, then chained into a single escalation policy. A 15-minute overlap is built into each hand-off shift. PagerDuty routes severity-1 alerts to the active schedule, while severity-3 alerts queue as JSM tickets for the next business day.<\/p>\n<p><strong>Scenario 2: High-severity fintech SLA rotation.<\/strong> A single weekly rotation uses a primary and a secondary engineer. The escalation policy pages the primary, then pages the secondary if no acknowledgment occurs within 5 minutes, then pages the engineering manager if no acknowledgment occurs within 10 minutes.<\/p>\n<p>All severity-1 alerts also post to a dedicated <code>#incidents-sev1<\/code> Slack channel. SLA timers are tracked in JSM&#8217;s SLA fields, and a JSM automation rule fires a Slack reminder at 80 percent of the SLA window.<\/p>\n<h2>Compare Jira-only schedules with Jira plus Struct<\/h2>\n<table style=\"min-width: 100px\">\n<colgroup>\n<col style=\"min-width: 25px\">\n<col style=\"min-width: 25px\">\n<col style=\"min-width: 25px\">\n<col style=\"min-width: 25px\"><\/colgroup>\n<tbody>\n<tr>\n<th colspan=\"1\" rowspan=\"1\">\n<p>Metric<\/p>\n<\/th>\n<th colspan=\"1\" rowspan=\"1\">\n<p>Jira Only<\/p>\n<\/th>\n<th colspan=\"1\" rowspan=\"1\">\n<p>Jira + Struct<\/p>\n<\/th>\n<th colspan=\"1\" rowspan=\"1\">\n<p>Impact<\/p>\n<\/th>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Median critical incident MTTR<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Often 30+ min for high-impact incidents<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Triage phase cut to under 10 min, resolution follows faster<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Investigation phase shortened from 45 min to under 5 min<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Initial investigation effort<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Manual log hunt across Datadog, CloudWatch, Sentry, GitHub<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Struct auto-investigates in &lt;5 min, engineer reviews a pre-built dashboard<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>45-min investigation becomes a 5-min review<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Setup time to first automated investigation<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Schedule live after team, rotation, and escalation policy are configured, with no investigation automation<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>10-minute integration setup, auto-investigations begin immediately<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>No additional engineering sprint required<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Alert noise handling<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>All alerts route to Slack equally; <a target=\"_blank\" rel=\"noindex nofollow\" href=\"https:\/\/devops.com\/the-end-of-alert-fatigue-how-ai-powered-observability-is-transforming-sre-teams-in-2026\">nearly 70% of SREs report on-call stress driving burnout<\/a><\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Struct differentiates transient noise from user-impacting outages automatically<\/p>\n<\/td>\n<td colspan=\"1\" rowspan=\"1\">\n<p>Actionable signal separated from noise before human review<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/cal.com\/deepanm\/struct-demo\"><strong>Run this comparison in your own environment<\/strong><\/a> to see the triage time reduction firsthand.<\/p>\n<h2>Migration checklist: keep Jira schedules, add Struct investigations<\/h2>\n<ul>\n<li>\n<p>\u2610 Confirm all JSM schedules, rotations, and escalation policies are finalized and tested.<\/p>\n<\/li>\n<li>\n<p>\u2610 Identify the Slack channels where JSM currently posts alert notifications.<\/p>\n<\/li>\n<li>\n<p>\u2610 Connect Struct to those same Slack channels, using the 5-minute OAuth flow.<\/p>\n<\/li>\n<li>\n<p>\u2610 Authenticate your observability stack, such as Datadog, AWS CloudWatch, GCP Logs, Sentry, or equivalent.<\/p>\n<\/li>\n<li>\n<p>\u2610 Connect your code repository, such as GitHub, for code-context correlation.<\/p>\n<\/li>\n<li>\n<p>\u2610 Paste your existing on-call runbook into Struct&#8217;s custom instructions so the AI follows your team&#8217;s exact procedures.<\/p>\n<\/li>\n<li>\n<p>\u2610 Trigger a test alert and review the auto-generated Struct dashboard alongside the JSM ticket.<\/p>\n<\/li>\n<li>\n<p>\u2610 Enable auto-investigations on all severity-1 and severity-2 alert channels.<\/p>\n<\/li>\n<li>\n<p>\u2610 Brief junior and new-hire engineers that Struct&#8217;s dashboard is their starting point for every alert.<\/p>\n<\/li>\n<\/ul>\n<p>Once these steps are complete, your team continues using JSM exactly as before, with the same schedules, escalation policies, and Slack channels. The difference is that when an alert fires, Struct&#8217;s investigation runs in parallel, so by the time your engineer opens the JSM ticket, the root cause analysis is already waiting.<\/p>\n<h2>Frequently Asked Questions<\/h2>\n<h3>What is the minimum team size to benefit from Jira on-call schedules?<\/h3>\n<p>Jira Service Management&#8217;s on-call module is useful for any team with at least two engineers sharing incident response duties. Even a two-person rotation benefits from formalized shift definitions and escalation policies, because it removes ambiguity about who is responsible at any given hour.<\/p>\n<p>For teams smaller than five, the manual triage overhead after an alert fires often represents a disproportionate share of total engineering time. That is where adding an automated investigation layer like Struct delivers the fastest return.<\/p>\n<h3>Is Struct compliant with SOC 2 and HIPAA requirements?<\/h3>\n<p>Struct is fully SOC 2 and HIPAA compliant. Logs and telemetry data are accessed and processed ephemerally, and they are not stored beyond the investigation window.<\/p>\n<p>For the majority of Seed-to-Series-C companies operating under standard compliance frameworks, this meets requirements. Teams with strict enterprise mandates that require full on-premise deployment or zero-egress log policies should evaluate whether their architecture permits any external integration before proceeding.<\/p>\n<h3>How long does it actually take to set up Struct alongside an existing Jira schedule?<\/h3>\n<p>Setup takes under 10 minutes. The process involves three authentication steps: connect your alert source, such as a Slack channel or ticketing system, connect your code repository, such as GitHub, and connect your observability platform, such as Datadog or CloudWatch.<\/p>\n<p>Once authenticated, auto-investigations activate immediately. No engineering sprint, professional services engagement, or changes to existing JSM schedules or escalation policies are required.<\/p>\n<h3>What happens if our logging and telemetry are incomplete?<\/h3>\n<p>Struct&#8217;s investigation quality is directly proportional to the observability data available. If a system lacks structured logs, trace IDs, or consistent alerting triggers, the AI cannot reconstruct a reliable incident timeline from code analysis alone.<\/p>\n<p>The ideal starting point is a team already using at least one log aggregation platform, such as Datadog, CloudWatch, or GCP Logs, an exception tracker like Sentry, and Slack for alert routing. Teams with gaps in their observability stack should address baseline logging before expecting high-fidelity automated investigations.<\/p>\n<h3>How does Struct help onboard new engineers to on-call rotations?<\/h3>\n<p>New engineers typically cannot take on-call shifts confidently because they lack the tribal knowledge required to navigate a complex, multi-service architecture at 3 AM. Struct addresses this directly by running the automated investigation before the engineer engages.<\/p>\n<p>By the time they open their laptop, Struct has correlated logs, mapped a timeline, identified the probable root cause, and surfaced suggested fixes in a single dashboard. New hires use that dashboard as a structured starting point rather than staring at raw logs. Teams can also encode their internal runbooks directly into Struct so the AI follows the same diagnostic steps a senior engineer would.<\/p>\n<h2>Conclusion: let Jira route alerts and Struct investigate them<\/h2>\n<p>Jira Service Management handles the rotation layer of on-call management reliably. It routes the right alert to the right engineer at the right time, but it does not investigate the alert.<\/p>\n<p><a target=\"_blank\" rel=\"noindex nofollow\" href=\"https:\/\/carriermanagement.com\/news\/2026\/04\/08\/286535.htm\">Nearly 40% of on-call engineers show burnout symptoms related to incident management<\/a>, and the time SREs spend on operations activities has risen in recent years. The investigation overhead that follows every page is not a Jira problem, it is an investigation problem.<\/p>\n<p>Struct solves that problem by running the first-pass investigation automatically and delivering a root cause and a suggested fix before the engineer is fully awake. JSM schedules stay exactly as they are. Struct layers on top in 10 minutes and handles everything Jira was never designed to do.<\/p>\n<p><a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https:\/\/cal.com\/deepanm\/struct-demo\"><strong>Book a demo<\/strong><\/a> and turn your next 45-minute investigation into a 5-minute review.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Set up Jira on-call rotations, escalations, and alerts the right way \u2014 then add Struct to cut triage time by 80%. Start faster incident response.<\/p>\n","protected":false},"author":73,"featured_media":663,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-664","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/posts\/664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/comments?post=664"}],"version-history":[{"count":0,"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/posts\/664\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/media\/663"}],"wp:attachment":[{"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/media?parent=664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/categories?post=664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/struct.ai\/articles\/wp-json\/wp\/v2\/tags?post=664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}