<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Opsgenie on Tarragon</title><link>https://tarrragon.github.io/blog/backend/08-incident-response/vendors/opsgenie/</link><description>Recent content in Opsgenie on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/backend/08-incident-response/vendors/opsgenie/index.xml" rel="self" type="application/rss+xml"/><item><title>PagerDuty → Opsgenie：Atlassian 全家桶整合 vs Opsgenie 2027 EOL 的 vendor consolidation 取捨</title><link>https://tarrragon.github.io/blog/backend/08-incident-response/vendors/opsgenie/migrate-from-pagerduty/</link><pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/backend/08-incident-response/vendors/opsgenie/migrate-from-pagerduty/</guid><description>&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>PagerDuty 物件&lt;/th>
 &lt;th>Opsgenie 對應&lt;/th>
 &lt;th>JSM Cloud 對應（2027 後）&lt;/th>
 &lt;th>翻譯難度&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Service&lt;/td>
 &lt;td>Integration&lt;/td>
 &lt;td>Service registry&lt;/td>
 &lt;td>低&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Escalation Policy&lt;/td>
 &lt;td>Escalation&lt;/td>
 &lt;td>Escalation&lt;/td>
 &lt;td>中&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Schedule（layer model）&lt;/td>
 &lt;td>Schedule（rotation）&lt;/td>
 &lt;td>Schedule&lt;/td>
 &lt;td>中-高&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>User&lt;/td>
 &lt;td>User&lt;/td>
 &lt;td>Atlassian Account&lt;/td>
 &lt;td>中（IdP 整合）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Team&lt;/td>
 &lt;td>Team&lt;/td>
 &lt;td>JSM Team&lt;/td>
 &lt;td>低&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Event API v2&lt;/td>
 &lt;td>Alert API&lt;/td>
 &lt;td>JSM REST API&lt;/td>
 &lt;td>中&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Event Orchestration&lt;/td>
 &lt;td>Policy&lt;/td>
 &lt;td>Routing rule&lt;/td>
 &lt;td>中-高&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Status Page&lt;/td>
 &lt;td>Statuspage（同產品）&lt;/td>
 &lt;td>Statuspage&lt;/td>
 &lt;td>低&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Postmortem&lt;/td>
 &lt;td>（無原生）&lt;/td>
 &lt;td>（Confluence template）&lt;/td>
 &lt;td>高（要外接）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這張對照表是 PagerDuty → Opsgenie migration 的 &lt;em>表面 schema mapping&lt;/em>、但表前必須先處理一個前提：&lt;strong>Atlassian 2025 公開宣布 Opsgenie 將在 2027-04 EOL&lt;/strong>、現有 Opsgenie 客戶會被遷往 &lt;a href="https://www.atlassian.com/software/jira/service-management">Jira Service Management Premium / Enterprise&lt;/a> 內建的 on-call 能力。這條 migration 不是 PagerDuty ↔ Opsgenie 的 vendor swap、是 &lt;em>PagerDuty → Opsgenie → JSM Cloud&lt;/em> 的雙 hop migration。&lt;/p>
&lt;h2 id="誰應該考慮這條-migration">誰應該考慮這條 migration&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>適用條件&lt;/th>
 &lt;th>不適用&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>已是 Atlassian-heavy ecosystem（JSM / Confluence / Bitbucket）&lt;/td>
 &lt;td>純 Slack-first org（考慮 &lt;a href="https://tarrragon.github.io/blog/backend/08-incident-response/vendors/pagerduty/migrate-to-incident-io/" data-link-title="PagerDuty → incident.io：「On-call」是個 retconned word、同名不同 contract" data-link-desc="PagerDuty → incident.io 不是 schema translation — 兩家的「on-call」字面相同、contract 不同（alert routing vs IR coordination &amp;#43; Slack-native &amp;#43; retrospective）。本文走 Type E paradigm shift、6 維 audit 顯示 paradigm / schema / operational 三軸 High、用 4-phase partial migration（不收斂、Phase 1-2 多數 org 停留）、5 個 production 踩雷（雙系統 state drift / severity 翻譯失真 / schedule layer 漏 / Slack channel 過載 / retrospective 斷層）、跟 PagerDuty Process Automation / AIOps 沒對應的 capability gap">→ incident.io&lt;/a>）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>已買 JSM Premium / Enterprise、Opsgenie 是 entitled benefit&lt;/td>
 &lt;td>新案、無 Atlassian 基礎&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>願意走 PD → Opsgenie → JSM 雙 hop（或直接跳 JSM）&lt;/td>
 &lt;td>不想多次 migration、想一步到位&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Atlassian Identity / Cloud admin 已成熟&lt;/td>
 &lt;td>SSO / IdP 跟 Atlassian 沒整合好&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>OSS / 自管不可行（compliance / 規模）&lt;/td>
 &lt;td>規模 &amp;lt; 20 SRE（&lt;a href="https://tarrragon.github.io/blog/backend/08-incident-response/vendors/grafana-oncall/" data-link-title="Grafana OnCall" data-link-desc="OSS-friendly on-call 平台、Grafana Labs 維護、Apache 2.0、Grafana IRM bundle 把 OnCall &amp;#43; Incident 收進一個 alert-to-resolve 流程">Grafana OnCall&lt;/a> 或 PagerDuty Lite 已足夠）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>對 &lt;em>新案&lt;/em>：不要選 Opsgenie standalone。直接評估 PagerDuty → JSM Premium 一次到位、或 PagerDuty → incident.io（如果 Slack-first 是 driver）。&lt;/p></description><content:encoded><![CDATA[<table>
  <thead>
      <tr>
          <th>PagerDuty 物件</th>
          <th>Opsgenie 對應</th>
          <th>JSM Cloud 對應（2027 後）</th>
          <th>翻譯難度</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Service</td>
          <td>Integration</td>
          <td>Service registry</td>
          <td>低</td>
      </tr>
      <tr>
          <td>Escalation Policy</td>
          <td>Escalation</td>
          <td>Escalation</td>
          <td>中</td>
      </tr>
      <tr>
          <td>Schedule（layer model）</td>
          <td>Schedule（rotation）</td>
          <td>Schedule</td>
          <td>中-高</td>
      </tr>
      <tr>
          <td>User</td>
          <td>User</td>
          <td>Atlassian Account</td>
          <td>中（IdP 整合）</td>
      </tr>
      <tr>
          <td>Team</td>
          <td>Team</td>
          <td>JSM Team</td>
          <td>低</td>
      </tr>
      <tr>
          <td>Event API v2</td>
          <td>Alert API</td>
          <td>JSM REST API</td>
          <td>中</td>
      </tr>
      <tr>
          <td>Event Orchestration</td>
          <td>Policy</td>
          <td>Routing rule</td>
          <td>中-高</td>
      </tr>
      <tr>
          <td>Status Page</td>
          <td>Statuspage（同產品）</td>
          <td>Statuspage</td>
          <td>低</td>
      </tr>
      <tr>
          <td>Postmortem</td>
          <td>（無原生）</td>
          <td>（Confluence template）</td>
          <td>高（要外接）</td>
      </tr>
  </tbody>
</table>
<p>這張對照表是 PagerDuty → Opsgenie migration 的 <em>表面 schema mapping</em>、但表前必須先處理一個前提：<strong>Atlassian 2025 公開宣布 Opsgenie 將在 2027-04 EOL</strong>、現有 Opsgenie 客戶會被遷往 <a href="https://www.atlassian.com/software/jira/service-management">Jira Service Management Premium / Enterprise</a> 內建的 on-call 能力。這條 migration 不是 PagerDuty ↔ Opsgenie 的 vendor swap、是 <em>PagerDuty → Opsgenie → JSM Cloud</em> 的雙 hop migration。</p>
<h2 id="誰應該考慮這條-migration">誰應該考慮這條 migration</h2>
<table>
  <thead>
      <tr>
          <th>適用條件</th>
          <th>不適用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>已是 Atlassian-heavy ecosystem（JSM / Confluence / Bitbucket）</td>
          <td>純 Slack-first org（考慮 <a href="/blog/backend/08-incident-response/vendors/pagerduty/migrate-to-incident-io/" data-link-title="PagerDuty → incident.io：「On-call」是個 retconned word、同名不同 contract" data-link-desc="PagerDuty → incident.io 不是 schema translation — 兩家的「on-call」字面相同、contract 不同（alert routing vs IR coordination &#43; Slack-native &#43; retrospective）。本文走 Type E paradigm shift、6 維 audit 顯示 paradigm / schema / operational 三軸 High、用 4-phase partial migration（不收斂、Phase 1-2 多數 org 停留）、5 個 production 踩雷（雙系統 state drift / severity 翻譯失真 / schedule layer 漏 / Slack channel 過載 / retrospective 斷層）、跟 PagerDuty Process Automation / AIOps 沒對應的 capability gap">→ incident.io</a>）</td>
      </tr>
      <tr>
          <td>已買 JSM Premium / Enterprise、Opsgenie 是 entitled benefit</td>
          <td>新案、無 Atlassian 基礎</td>
      </tr>
      <tr>
          <td>願意走 PD → Opsgenie → JSM 雙 hop（或直接跳 JSM）</td>
          <td>不想多次 migration、想一步到位</td>
      </tr>
      <tr>
          <td>Atlassian Identity / Cloud admin 已成熟</td>
          <td>SSO / IdP 跟 Atlassian 沒整合好</td>
      </tr>
      <tr>
          <td>OSS / 自管不可行（compliance / 規模）</td>
          <td>規模 &lt; 20 SRE（<a href="/blog/backend/08-incident-response/vendors/grafana-oncall/" data-link-title="Grafana OnCall" data-link-desc="OSS-friendly on-call 平台、Grafana Labs 維護、Apache 2.0、Grafana IRM bundle 把 OnCall &#43; Incident 收進一個 alert-to-resolve 流程">Grafana OnCall</a> 或 PagerDuty Lite 已足夠）</td>
      </tr>
  </tbody>
</table>
<p>對 <em>新案</em>：不要選 Opsgenie standalone。直接評估 PagerDuty → JSM Premium 一次到位、或 PagerDuty → incident.io（如果 Slack-first 是 driver）。</p>
<p>對 <em>已是 Opsgenie 客戶但從 PagerDuty 遷入的 org</em>（少見、通常是 acquisition consolidation）：本文仍適用、但要把 Phase 5 EOL 路徑放在規劃裡。</p>
<h2 id="為什麼是-type-aschema-為主">為什麼是 Type A（schema 為主）</h2>
<p>跑 <a href="/blog/posts/migration-playbook-%E6%96%B9%E6%B3%95%E8%AB%96%E7%9A%84%E6%BC%94%E5%8C%96%E7%B4%80%E9%8C%84stage-0-variant-%E8%A6%8F%E5%8A%83%E6%8A%8A-collapse-%E7%8E%87%E5%BE%9E-60-%E9%99%8D%E5%88%B0-0/#6-%e7%b6%ad-diff-dimension-audit" data-link-title="Migration Playbook 方法論的演化紀錄：Stage 0 variant 規劃把 collapse 率從 60% 降到 0%" data-link-desc="跨 vendor migration playbook 需要獨立寫作方法論的依據，以及這套方法論從三輪 batch dogfood 中演化出來的驗證證據。">6 維 diff dimension audit</a>：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>評</th>
          <th>說明</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Schema</td>
          <td>Medium-High</td>
          <td>escalation policy / schedule / integration / API endpoint 都有 mapping、但概念對應度高</td>
      </tr>
      <tr>
          <td>Operational</td>
          <td>Low</td>
          <td>同為 alert routing + on-call schedule 平台、ops 模型一致</td>
      </tr>
      <tr>
          <td>Paradigm</td>
          <td>Low</td>
          <td>同 paging-first paradigm</td>
      </tr>
      <tr>
          <td>Components</td>
          <td>Low</td>
          <td>都是 SaaS 平台、no multi-tool decomposition</td>
      </tr>
      <tr>
          <td>App change</td>
          <td>Medium</td>
          <td>webhook URL / integration key 要換、application code 改動少</td>
      </tr>
      <tr>
          <td>Topology</td>
          <td>Low</td>
          <td>都是 cloud SaaS</td>
      </tr>
  </tbody>
</table>
<p>Schema = Medium-High（其他 Low） → <strong>Type A phased translation</strong>。比標準 Type A 11-12 章短、因 paradigm 不變、不需要重新訓練 SRE 行為。</p>
<h2 id="driveratlassian-vendor-consolidation">Driver：Atlassian vendor consolidation</h2>
<p>從 PagerDuty 遷入 Opsgenie 的核心 driver 是 <em>Atlassian 全家桶整合</em> — 已經買 JSM + Confluence + Bitbucket + Statuspage 的 org、再買 PagerDuty 等於多一條 SaaS 採購線、SSO 配置、billing 對接、user provisioning 重複。Opsgenie（或未來 JSM Premium 內建 on-call）走 Atlassian Identity、跟 JSM ticket / Confluence runbook / Statuspage component 同一個身份體系、incident 跟 ticket / status update 跨產品聯動不用 webhook chain。</p>
<p>這條 consolidation 拉力的具體形態：</p>
<ul>
<li><strong>單一 SSO + provisioning</strong>：Atlassian Cloud admin 一處 manage user / group / SSO、不需要 PagerDuty 獨立 SCIM + IdP 配置</li>
<li><strong>Ticket ↔ incident bi-directional</strong>：JSM ticket 升級成 incident、incident 自動建 ticket、close incident 自動 close ticket、不用 PagerDuty Jira integration plugin</li>
<li><strong>Runbook 跟 incident channel 同產品</strong>：Confluence runbook 從 Opsgenie alert 直接 link、不用維護兩套權限</li>
<li><strong>Status Page 共用 component model</strong>：Statuspage 已是 Atlassian 產品、Opsgenie incident 觸發 Status Page update 不用 webhook（內部 event）</li>
<li><strong>Billing 整合</strong>：Atlassian Cloud subscription bundle、CFO 不用對 5 條獨立 SaaS invoice</li>
</ul>
<p>這條 driver 在 PagerDuty 後加的 Status Updates / Jira plugin / Postmortems 模組下被部分削弱、但本質仍是 <em>Atlassian 是主、PagerDuty 是外掛</em> vs <em>全部都在 Atlassian</em> 的差別。</p>
<h2 id="type-a-phased-migration5-phase">Type A phased migration（5 phase）</h2>
<h3 id="phase-1schema-對照--識別差異">Phase 1：Schema 對照 + 識別差異</h3>
<p>把 PagerDuty 當前 config 完整 export（API endpoint <code>/services</code>、<code>/escalation_policies</code>、<code>/schedules</code>、<code>/users</code>、<code>/teams</code>、<code>/integrations</code>、<code>/event_orchestrations</code>）、對照上方 schema mapping table、識別 <em>無 1:1 對應的物件</em>：</p>
<ul>
<li>Event Orchestration rule 對 Opsgenie 的 Policy + Routing rule（複雜 routing 要拆）</li>
<li>Schedule layer model 對 Opsgenie 的 Rotation + Override（layer 疊加要展平）</li>
<li>PagerDuty AIOps / Process Automation 對 Opsgenie 的 <em>無對應</em> — 要評估是否丟掉這條能力</li>
</ul>
<p>完成標準：寫出 PagerDuty config inventory + Opsgenie target spec、確認所有物件都有 mapping path（即使是「捨棄」也算 mapping）。</p>
<h3 id="phase-2schedule--escalation-移植">Phase 2：Schedule + Escalation 移植</h3>
<p>PagerDuty schedule 是 layer 疊加（primary + secondary + override + restriction）、Opsgenie 是 <em>單一 rotation list + override</em>。簡單 schedule（單一 weekly rotation + 偶爾 override）直接對應、複雜 schedule（follow-the-sun + holiday + restriction time-of-day）要展平：</p>
<ul>
<li>PagerDuty <code>/schedules/{id}</code> 拉完整 <code>final_schedule</code>、用 <em>實際輪值結果</em> 重建 Opsgenie rotation</li>
<li>多層 schedule 在 Opsgenie 拆成多個 rotation、用 escalation chain 串</li>
<li>Restriction layer 在 Opsgenie 沒對應、要在 rotation rule 內 inline 時段限制</li>
</ul>
<p>Escalation policy 多 step + level-based timeout 在 Opsgenie 是 <em>step-based escalation</em>、直接對應、但每步 timeout 跟 acknowledge behavior 要 retest。</p>
<p>完成標準：on-call rotation 在 Opsgenie 跑一週、跟 PagerDuty parallel 對比實際 paging 行為一致（同一個 alert 兩邊都叫到對的人）。</p>
<h3 id="phase-3integration--webhook-改線">Phase 3：Integration / Webhook 改線</h3>
<p>每個 alert source（Splunk / Datadog / Cloudflare WAF / cloud control plane / synthetic monitor）的 webhook URL 從 PagerDuty Event API 換成 Opsgenie Alert API：</p>
<ul>
<li>Endpoint：<code>https://events.pagerduty.com/v2/enqueue</code> → <code>https://api.opsgenie.com/v2/alerts</code></li>
<li>Auth：PagerDuty <code>routing_key</code> → Opsgenie API key（per-integration）</li>
<li>Deduplication：PagerDuty <code>dedup_key</code> → Opsgenie <code>alias</code>（行為相同、欄位名不同）</li>
<li>Severity mapping：PagerDuty <code>severity</code>（info/warning/error/critical） → Opsgenie <code>priority</code>（P1-P5）</li>
</ul>
<p>這 phase 的工作量主要塊不是 schema 翻譯、是 <em>每個 integration 都要重新測 deduplication + severity</em>。新 integration key 配上去後第一週要密切監控、避免 dedup key 重設導致同事故開 100 個 incident。</p>
<p>完成標準：所有 alert source 都接 Opsgenie、PagerDuty 端 alert volume 降為 0。</p>
<h3 id="phase-4cutover--dual-ops-period">Phase 4：Cutover + dual ops period</h3>
<p>2-4 週 dual ops：alert 都進 Opsgenie 為主、PagerDuty 留作 backup paging（同樣 alert 也 mirror 進 PD、但 SRE response 全在 Opsgenie）。確認沒漏 alert、escalation 行為正確、Atlassian 整合（JSM ticket / Confluence runbook / Statuspage） wire 通。</p>
<p>完成標準：dual ops 4 週無漏 alert、SRE 沒回去 PagerDuty UI 操作。</p>
<h3 id="phase-5pagerduty-退役--opsgenie--jsm-eol-路徑規劃">Phase 5：PagerDuty 退役 + Opsgenie → JSM EOL 路徑規劃</h3>
<p>PagerDuty 退役後立即進入 <em>Opsgenie 2027 EOL 倒數</em>。這 phase 不是 PD migration 的尾巴、是 <em>下一條 migration 的起點</em>：</p>
<ul>
<li>2025-2026：Atlassian 推 JSM Premium 的 on-call 能力、提供 Opsgenie → JSM 遷移工具</li>
<li>2026-2027：實際遷 Opsgenie → JSM、schedule / integration / API 改線</li>
<li>2027-04：Opsgenie EOL、所有 traffic 必須在 JSM</li>
</ul>
<p>完成標準：PagerDuty 帳號取消、Opsgenie deployment 健康運作 + JSM unification roadmap 寫進 2026-2027 SRE OKR。</p>
<h2 id="5-個-production-踩雷">5 個 production 踩雷</h2>
<h3 id="1-escalation-step-routing-行為差異">1. Escalation step routing 行為差異</h3>
<p>PagerDuty escalation policy 的 step timeout 是 <em>每步獨立 acknowledge window</em>（step 1 等 5 分鐘沒人 ack → step 2 等 5 分鐘沒人 ack → &hellip;）、Opsgenie escalation 的行為類似但 <em>step 之間的 notification cumulative behavior</em> 不同 — Opsgenie 預設 step 2 觸發後 step 1 的人 <em>仍會收到 notification</em>（除非設定 step 1 not yet acknowledged 才繼續）。修法是寫測試 case 對比 alert 在兩邊 escalation 過程的 notification timeline、調整 Opsgenie escalation rule 的 acknowledge propagation 設定到跟 PD 一致。</p>
<h3 id="2-heartbeat-monitoring-在-pagerduty-沒對應">2. Heartbeat monitoring 在 PagerDuty 沒對應</h3>
<p>Opsgenie Heartbeat 是 <em>被動 monitoring</em> — service 必須定期 ping 一個 endpoint、超過 interval 沒 ping 就觸發 alert、用來監控 cron job / scheduled task 是否還在跑。PagerDuty 沒原生 Heartbeat、通常用 external service（Healthchecks.io / Dead Man&rsquo;s Snitch）。從 PD 遷入 Opsgenie 時、把這些 external service 收回 Opsgenie Heartbeat、減少 SaaS 數量。但反向（從 Opsgenie 遷出時要先把 Heartbeat dependency 外接）是不同問題、不在本篇 scope。</p>
<h3 id="3-integration-key-改線時-deduplication-重設">3. Integration key 改線時 deduplication 重設</h3>
<p>PagerDuty <code>dedup_key</code> → Opsgenie <code>alias</code> 行為相同、但 <em>新 integration key 上線後第一個 alert 不會跟舊 PD incident 對應</em> — 同一個事故在 PD 上是 incident #5234、在 Opsgenie 上是新 alert 從零開始。Phase 3 切換時間點如果剛好遇到 active incident、會分裂成兩個系統內各自的 incident、SRE confusion。修法是 cutover 時間點選擇在 <em>known quiet period</em>（一般是週末早上、避開 deploy 時段）、並接受第一個切換期間有手動 reconcile 的工作。</p>
<h3 id="4-schedule-時區處理">4. Schedule 時區處理</h3>
<p>PagerDuty schedule 的 timezone 是 <em>per-layer</em> 設定（layer 1 可以 PST、layer 2 可以 GMT）、Opsgenie rotation timezone 是 <em>per-schedule</em> 設定。Follow-the-sun schedule（亞太 / 歐洲 / 美洲三層）在 PD 是三 layer 各自 timezone、在 Opsgenie 要拆成三個 schedule 各自設定 timezone 用 escalation 串。Daylight saving transition 是另一個高風險點 — PD 跟 Opsgenie 在 DST 切換週的行為要分別測試。</p>
<h3 id="5-atlassian-identity-sso-整合">5. Atlassian Identity SSO 整合</h3>
<p>如果 org 既有 SSO（Okta / Azure AD）已經跟 PagerDuty 整合、遷 Opsgenie 時要 <em>重新對接 Atlassian Identity</em>。Atlassian Cloud 的 SSO 是在 Atlassian admin 層設定、跟個別產品（Opsgenie / JSM）獨立。常見問題：</p>
<ul>
<li>PagerDuty user email 不一定等於 Atlassian account email（有人用 work email 註冊 PD、用 personal email 註冊 Atlassian）</li>
<li>SCIM provisioning rule 要重寫、group / role mapping 重新設計</li>
<li>Just-in-time user provisioning behavior 不同（PD 是即時、Atlassian 可能需要 admin 手動 approve）</li>
</ul>
<p>修法是 Phase 1 schema mapping 時就把 user identity reconcile 列為獨立工作塊、不要假設 email 唯一對應。</p>
<h2 id="容量與成本對照">容量與成本對照</h2>
<table>
  <thead>
      <tr>
          <th>項目</th>
          <th>PagerDuty</th>
          <th>Opsgenie</th>
          <th>JSM Premium（2027 後）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>計費模式</td>
          <td>Per-user / month、tier-based</td>
          <td>Per-user / month、Free tier ≤ 5 user</td>
          <td>JSM seat + on-call entitlement</td>
      </tr>
      <tr>
          <td>Atlassian bundle</td>
          <td>獨立 SaaS</td>
          <td>Atlassian Cloud subscription</td>
          <td>JSM Premium / Enterprise 內建</td>
      </tr>
      <tr>
          <td>AIOps</td>
          <td>Enterprise + add-on</td>
          <td>弱（無原生 ML grouping）</td>
          <td>（roadmap）</td>
      </tr>
      <tr>
          <td>Heartbeat</td>
          <td>不適用</td>
          <td>內建</td>
          <td>內建</td>
      </tr>
      <tr>
          <td>Status Page</td>
          <td>內建（Business tier+）</td>
          <td>Statuspage（同 Atlassian、單獨計費）</td>
          <td>Statuspage 整合</td>
      </tr>
      <tr>
          <td>隱性 EOL 風險</td>
          <td>無</td>
          <td>2027-04 EOL</td>
          <td>Atlassian 主推</td>
      </tr>
  </tbody>
</table>
<p>實際 TCO 對比 <em>不能只看 per-seat price</em> — 必須加上：</p>
<ul>
<li>Atlassian Cloud bundle discount（多產品同訂閱通常有 15-25% 折扣）</li>
<li>PagerDuty AIOps + Process Automation 是否在用（如果在用、Opsgenie 沒對應、要外接成本）</li>
<li>雙 hop migration（PD → Opsgenie → JSM）的累計工程成本 vs 單 hop（PD → JSM 跳過 Opsgenie）</li>
</ul>
<h2 id="何時跳過-opsgenie-直接-pd--jsm">何時跳過 Opsgenie 直接 PD → JSM</h2>
<p>對 <em>已是 Atlassian-heavy org</em> 但 <em>尚未用 Opsgenie</em> 的場景、Opsgenie 2027 EOL 表示 PD → Opsgenie → JSM 雙 hop 不划算。直接 PD → JSM Premium：</p>
<ul>
<li>等 Atlassian 2026 公開 JSM 內建 on-call 的完整能力、確認 feature parity 跟 Opsgenie 相當</li>
<li>規劃 PD → JSM 一次 migration、結構接近本篇但 target 換成 JSM</li>
<li>風險：JSM 內建 on-call 在 2026 仍可能成熟度不夠、決策時點要看 Atlassian 公開 roadmap</li>
</ul>
<p>對 <em>已是 Opsgenie 客戶</em> 的場景、本篇的 PD → Opsgenie 路徑仍適用、但 Phase 5 EOL 路徑規劃是必要 deliverable、不是 optional。</p>
<h2 id="下一步路由">下一步路由</h2>
<ul>
<li>平行 batch：<a href="/blog/backend/08-incident-response/vendors/pagerduty/migrate-to-incident-io/" data-link-title="PagerDuty → incident.io：「On-call」是個 retconned word、同名不同 contract" data-link-desc="PagerDuty → incident.io 不是 schema translation — 兩家的「on-call」字面相同、contract 不同（alert routing vs IR coordination &#43; Slack-native &#43; retrospective）。本文走 Type E paradigm shift、6 維 audit 顯示 paradigm / schema / operational 三軸 High、用 4-phase partial migration（不收斂、Phase 1-2 多數 org 停留）、5 個 production 踩雷（雙系統 state drift / severity 翻譯失真 / schedule layer 漏 / Slack channel 過載 / retrospective 斷層）、跟 PagerDuty Process Automation / AIOps 沒對應的 capability gap">PagerDuty → incident.io</a>（Type E、Slack-first paradigm shift）/ <a href="/blog/backend/08-incident-response/vendors/atlassian-statuspage/migrate-to-instatus/" data-link-title="Atlassian Statuspage → Instatus：status page 成本下降、但 compatibility audit 不能跳" data-link-desc="Atlassian Statuspage → Instatus 是 Type B drop-in migration、6 維 audit 全 Low；典型情境是從 Statuspage Business / Enterprise 降到 Instatus Pro / Business、但 savings 取決於 subscriber、SSO、audit 與 SLA report 需求。本文走 compatibility audit prefix（subscriber channel 完整度 / SAML SSO / audit log / metrics integration / SLA report / API parity）、4 階段 cutover（DNS TTL &#43; parallel run）、5 個 production 踩雷（SSO tier 選錯、metrics 來源整合斷、subscriber import format / SLA report 缺、custom CSS 不完全相容）、何時不要切（enterprise compliance / 強 Atlassian 整合）">Atlassian Statuspage → Instatus</a>（Type B drop-in）</li>
<li>同 batch Type A：（待補、本篇是 batch 唯一 Type A）</li>
<li>上游：<a href="/blog/backend/08-incident-response/incident-workflow-automation-boundary/" data-link-title="8.21 Incident Workflow Automation Boundary" data-link-desc="定義哪些事故流程適合自動化，哪些決策需要保留人工確認">8.10 Incident Workflow Automation Boundary</a></li>
<li>下游：未來 Opsgenie → JSM Premium migration（2026-2027 寫）</li>
<li>vendor 對照：<a href="/blog/backend/08-incident-response/vendors/pagerduty/" data-link-title="PagerDuty" data-link-desc="On-call / alerting 主流 SaaS、IR 平台演化">PagerDuty</a> / <a href="/blog/backend/08-incident-response/vendors/opsgenie/" data-link-title="Opsgenie" data-link-desc="Atlassian on-call、跟 Jira / Statuspage 套件整合、JSM Premium migration 議題">Opsgenie</a> / <a href="/blog/backend/08-incident-response/vendors/incident-io/" data-link-title="incident.io" data-link-desc="Slack-native IR 平台、整合 paging / response / retro">incident.io</a></li>
<li>方法論：<a href="/blog/posts/migration-playbook-%E6%96%B9%E6%B3%95%E8%AB%96%E7%9A%84%E6%BC%94%E5%8C%96%E7%B4%80%E9%8C%84stage-0-variant-%E8%A6%8F%E5%8A%83%E6%8A%8A-collapse-%E7%8E%87%E5%BE%9E-60-%E9%99%8D%E5%88%B0-0/" data-link-title="Migration Playbook 方法論的演化紀錄：Stage 0 variant 規劃把 collapse 率從 60% 降到 0%" data-link-desc="跨 vendor migration playbook 需要獨立寫作方法論的依據，以及這套方法論從三輪 batch dogfood 中演化出來的驗證證據。">Migration Playbook Methodology</a>（Type A phased translation 結構說明）</li>
</ul>
]]></content:encoded></item></channel></rss>