approval-workflows について
ServiceNow のサービスカタログ承認を設定、管理するスキルです。カタログ管理者向けに、承認ルール、順次・並列ルーティング、委任、エスカレーション、状況監視を扱います。
主な機能
- 01承認ルールと条件の設定
- 02順次承認または並列承認の設定
- 03グループ承認と委任の管理
- 04期限とエスカレーションの設定
- 05承認リクエストの照会と処理
活用シーン
- 01高額なカタログ申請の承認経路設定
- 02承認者不在時の代理設定
- 03停滞中または期限超過の承認の確認
MCP 対応
SN-Query-Table、SN-Create-Record、SN-Update-Record などの ServiceNow MCP ツールで承認レコードを調査、設定、処理します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill approval-workflowsインストール後、Claude Code で/approval-workflowsを入力して読み込まれたか確認します。
詳細
サービスカタログの承認ワークフロー
概要
このスキルでは、サービスカタログのアイテムに対する承認管理について説明します。
- 承認アーキテクチャの理解
- 承認ルールと条件の設定
- 複数レベルおよび並列の承認
- 承認の委任と代理対応
- タイムアウト、リマインダー、エスカレーションの設定
- 承認リクエストの監視と管理
使用する場面: カタログアイテムの承認プロセスを設定するとき、承認が滞っている問題をトラブルシューティングするとき、または複雑な承認ルーティングを実装するときです。
前提条件
- ロール:
catalog_admin、approval_admin、またはadmin - アクセス権: sysapproval_approver、sc_ic_aprvl_type_defn、sc_ic_aprvl_defn テーブル
- 知識: サービスカタログの構造、承認の概念
- 関連スキル: 事前に
catalog/item-creationを完了してください
手順
ステップ 1:承認アーキテクチャを理解する
承認テーブル:
| テーブル | 目的 |
|---|---|
| sysapproval_approver | 個別の承認レコード(承認者ごとに 1 件) |
| sysapproval_group | グループベースの承認 |
| sc_ic_aprvl_type_defn | カタログ承認タイプの定義 |
| sc_ic_aprvl_defn | カタログ固有の承認定義 |
| sys_approval_rule | システム全体の承認ルール |
承認フロー:
Request Submitted
↓
Approval Rule Evaluated
↓
Approval Records Created (sysapproval_approver)
↓
Approvers Notified
↓
Approver Takes Action
↓
Next Level (if multi-level) OR Complete
承認状態:
| 状態 | 値 | 説明 |
|---|---|---|
| 未リクエスト | not yet requested | 承認は開始されていません |
| リクエスト済み | requested | 承認者の対応待ちです |
| 承認済み | approved | 承認者が承認しました |
| 却下 | rejected | 承認者が却下しました |
| キャンセル済み | cancelled | 承認はキャンセルされました |
| 重複 | duplicate | 重複した承認はスキップされました |
| 不要 | not_required | 承認は免除されました |
ステップ 2:既存の承認を照会する
リクエストに対する保留中の承認を検索する:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: sysapproval=[ritm_sys_id]
fields: sys_id,approver,state,due_date,source_table,sys_created_on
limit: 50
ユーザーに対するすべての保留中の承認を検索する:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: approver=[user_sys_id]^state=requested
fields: sys_id,sysapproval,document_id,source_table,sys_created_on
limit: 100
期限超過の承認を検索する:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: state=requested^due_date<javascript:gs.nowDateTime()
fields: sys_id,approver,sysapproval,due_date,source_table
limit: 100
ステップ 3:承認ルールを作成する(レガシー方式)
注: これはレガシー承認ルールシステムを使用します。新しい実装では、Flow Designer または Catalog Builder の承認タイプの使用を検討してください。
基本的な承認ルールを作成する:
Tool: SN-Create-Record
Parameters:
table_name: sys_approval_rule
data:
name: "Manager Approval for Hardware > $1000"
active: true
table: sc_req_item
condition: cat_item.price>1000^cat_item.category.title=Hardware
approval_type: "single"
approver_field: "opened_by.manager"
order: 100
ステップ 4:カタログ承認タイプを設定する
カタログ承認タイプでは、再利用可能な承認パターンを定義します。
既存の承認タイプを照会する:
Tool: SN-Query-Table
Parameters:
table_name: sc_ic_aprvl_type_defn
query: active=true
fields: sys_id,name,description,approval_type
limit: 50
承認タイプ定義を作成する:
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_type_defn
data:
name: "Manager Approval"
description: "Requires approval from requester's manager"
active: true
approval_type: "approver_user_field"
approver_user_field: "requested_for.manager"
wait_for: "everyone" # everyone, anyone
mandatory: true
承認タイプのオプション:
| approval_type | 説明 |
|---|---|
| approver_user_field | レコードのフィールドから取得するユーザー |
| approver_group_field | レコードのフィールドから取得するグループ |
| specific_user | 固定のユーザー |
| specific_group | 固定のグループ |
| script | カスタムスクリプトで承認者を決定 |
ステップ 5:複数レベルの承認を設定する
複数レベルの承認は、順序に基づいて順番に実行されます。
レベル 1 を作成する — マネージャーの承認:
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [catalog_item_sys_id]
name: "Manager Approval"
approval_type_definition: [manager_approval_type_sys_id]
order: 100
active: true
condition: "" # Always apply
レベル 2 を作成する — ディレクターの承認(高額なリクエストの場合):
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [catalog_item_sys_id]
name: "Director Approval"
approval_type_definition: [director_approval_type_sys_id]
order: 200
active: true
condition: "price>5000" # Only for requests over $5000
レベル 3 を作成する — 財務部門の承認(非常に高額な場合):
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [catalog_item_sys_id]
name: "Finance Approval"
approval_type_definition: [finance_approval_type_sys_id]
order: 300
active: true
condition: "price>10000"
ステップ 6:並列承認を設定する
並列承認は、同じレベルで同時に実行されます。
並列承認者を作成する(同じ順序 = 並列):
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [catalog_item_sys_id]
name: "IT Security Review"
approval_type_definition: [security_approval_type_sys_id]
order: 100 # Same order as other parallel approval
active: true
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [catalog_item_sys_id]
name: "Legal Review"
approval_type_definition: [legal_approval_type_sys_id]
order: 100 # Same order = parallel execution
active: true
待機オプション:
everyone- すべての承認者による承認が必要ですanyone- 最初の承認でレベルが完了しますmajority- 承認者の過半数による承認が必要です
ステップ 7:グループ承認を設定する
グループベースの承認タイプを作成する:
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_type_defn
data:
name: "Change Advisory Board"
description: "CAB approval required for major changes"
active: true
approval_type: "specific_group"
approver_group: [cab_group_sys_id]
wait_for: "everyone"
グループ承認のステータスを照会する:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_group
query: parent=[ritm_sys_id]
fields: sys_id,group,approval,sys_created_on
ステップ 8:承認の委任を設定する
委任を使用すると、不在時にユーザーが他のユーザーへ承認権限を割り当てられます。
既存の委任を照会する:
Tool: SN-Query-Table
Parameters:
table_name: sys_user_delegate
query: delegate=[user_sys_id]^active=true
fields: sys_id,user,delegate,starts,ends,approval
limit: 50
委任レコードを作成する:
Tool: SN-Create-Record
Parameters:
table_name: sys_user_delegate
data:
user: [original_approver_sys_id]
delegate: [delegate_user_sys_id]
starts: "2026-02-10"
ends: "2026-02-24"
approval: true # Delegate approvals
active: true
ステップ 9:タイムアウトとエスカレーションを設定する
期限日付きの承認:
Tool: SN-Update-Record
Parameters:
table_name: sysapproval_approver
sys_id: [approval_sys_id]
data:
due_date: "2026-02-13 17:00:00"
SLA によるエスカレーションを作成する: SLA 定義(sla)テーブルで設定します。
Tool: SN-Create-Record
Parameters:
table_name: contract_sla
data:
name: "Approval Escalation - 48 Hours"
table: sysapproval_approver
condition: "state=requested"
duration: "2 00:00:00" # 48 hours
workflow: [escalation_workflow_sys_id]
active: true
ステップ 10:プログラムで承認を処理する
リクエストを承認する:
Tool: SN-Update-Record
Parameters:
table_name: sysapproval_approver
sys_id: [approval_sys_id]
data:
state: "approved"
comments: "Approved - budget verified and manager confirmed need"
リクエストを却下する:
Tool: SN-Update-Record
Parameters:
table_name: sysapproval_approver
sys_id: [approval_sys_id]
data:
state: "rejected"
comments: "Rejected - request exceeds department budget. Please resubmit next quarter."
保留中の承認をキャンセルする:
Tool: SN-Update-Record
Parameters:
table_name: sysapproval_approver
sys_id: [approval_sys_id]
data:
state: "cancelled"
comments: "Approval cancelled - request withdrawn by user"
Step 11:承認メトリクスを監視する
グループ別に保留中の承認を数える:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: state=requested^sys_created_on>=javascript:gs.beginningOfLastMonth()
fields: sys_id,approver.u_group,state
limit: 1000
承認のボトルネックを見つける:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: state=requested^sys_created_onRELATIVELE@dayofweek@ago@5
fields: sys_id,approver,sysapproval,sys_created_on
limit: 100
完全な例:複数レベルのハードウェア承認
# 1. Create Manager Approval Type
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_type_defn
data:
name: "Requester Manager"
description: "Approval from requester's direct manager"
active: true
approval_type: "approver_user_field"
approver_user_field: "requested_for.manager"
wait_for: "everyone"
mandatory: true
# Result: sys_id = "type_manager"
# 2. Create IT Director Approval Type
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_type_defn
data:
name: "IT Director"
description: "IT Director approval for large hardware purchases"
active: true
approval_type: "specific_user"
specific_user: [it_director_sys_id]
wait_for: "everyone"
mandatory: true
# Result: sys_id = "type_director"
# 3. Create Level 1 Approval Definition (always required)
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [hardware_item_sys_id]
name: "Manager Approval"
approval_type_definition: "type_manager"
order: 100
active: true
condition: ""
# 4. Create Level 2 Approval Definition (only for > $2000)
Tool: SN-Create-Record
Parameters:
table_name: sc_ic_aprvl_defn
data:
catalog_item: [hardware_item_sys_id]
name: "IT Director Approval"
approval_type_definition: "type_director"
order: 200
active: true
condition: "price>2000"
# 5. Verify configuration
Tool: SN-Query-Table
Parameters:
table_name: sc_ic_aprvl_defn
query: catalog_item=[hardware_item_sys_id]
fields: name,approval_type_definition,order,condition,active
承認状態の遷移
┌──────────────────┐
│ not yet requested│
└─────────┬────────┘
│ Workflow triggers
┌─────────▼────────┐
│ requested │
└─────────┬────────┘
│
┌───────────────────────┼───────────────────────┐
│ │ │
┌─────────▼────────┐ ┌─────────▼────────┐ ┌─────────▼────────┐
│ approved │ │ rejected │ │ cancelled │
└──────────────────┘ └──────────────────┘ └──────────────────┘
│
│ All approvals approved
┌─────────▼──────────────────────┐
│ Request proceeds to fulfillment│
└────────────────────────────────┘
ツールの使用概要
| 操作 | MCP ツール | テーブル |
|---|---|---|
| 承認を照会 | SN-Query-Table | sysapproval_approver |
| 承認を処理 | SN-Update-Record | sysapproval_approver |
| 承認タイプを作成 | SN-Create-Record | sc_ic_aprvl_type_defn |
| 承認定義を作成 | SN-Create-Record | sc_ic_aprvl_defn |
| 委任を設定 | SN-Create-Record | sys_user_delegate |
| グループの承認を照会 | SN-Query-Table | sysapproval_group |
ベストプラクティス
- 承認レベルを最小限にする: 各レベルで遅延が増えるため、適切な場合は条件を使ってスキップします
- 個人よりグループを使う: グループなら人員の変更に対応できます
- 期限を設定する: 承認がいつまでも停滞しないようにします
- エスカレーションを設定する: 期限を過ぎた承認を自動的にエスカレーションします
- 条件を文書化する: 承認条件を明確にし、監査できるようにします
- すべての経路をテストする: 承認、却下、キャンセルのフローをテストします
- メトリクスを監視する: 承認にかかる時間とボトルネックを追跡します
- 委任を有効にする: PTO 中の業務をカバーできるようにします
トラブルシューティング
承認が生成されない
症状: リクエストを送信しても承認レコードが作成されない 原因:
- 承認ルールの条件を満たしていない
- 承認タイプが無効になっている
- ワークフローで承認アクティビティがトリガーされていない 解決策:
Tool: SN-Query-Table
Parameters:
table_name: sc_ic_aprvl_defn
query: catalog_item=[item_sys_id]^active=true
fields: name,condition,active,order
承認が「Requested」のまま止まっている
症状: 承認が保留中なのに、承認者は処理済みだと主張している 原因:
- 複数の承認レコードがある(1 件は承認済み、もう 1 件は保留中)
- 承認者が別のレコードを処理した
- 複数レベルの承認で、前のレベルの完了を待っている 解決策:
Tool: SN-Query-Table
Parameters:
table_name: sysapproval_approver
query: sysapproval=[ritm_sys_id]
fields: sys_id,approver,state,order,sys_updated_on
リクエストが却下されたのに処理が続く
症状: 却下されたにもかかわらず、リクエストの処理が続く 原因: ビジネスルールまたはワークフローが却下を反映していない 解決策: ワークフローで却下が適切に処理されているか確認します
委任が機能しない
症状: 代理人に承認リクエストが届かない 原因:
- 委任レコードが無効になっている
- 期間が終了している
- approval フラグが設定されていない 解決策:
Tool: SN-Query-Table
Parameters:
table_name: sys_user_delegate
query: user=[original_user_sys_id]^active=true
fields: delegate,starts,ends,approval,active
関連スキル
catalog/item-creation- カタログアイテムの作成(前提条件)catalog/request-fulfillment- 承認済みリクエストの処理admin/workflow-creation- 承認ワークフローの構築development/notifications- 承認通知の設定