ServiceNow を運用していると、次のような要望は非常によく出てきます。

「インシデントの内容を見ながら、そのまま“関連する申請”を作らせたい」

本記事では、 インシデント詳細画面 → 別の申請画面(Service Portal)へ遷移し、インシデント情報を引き継ぐ方法を、 実務で使える形で解説します。


想定シナリオ(最も多い実務パターン)

  • 利用者は Incident(INC0001234)を参照している
  • 対応の過程で「追加作業の申請」が必要になる
  • 申請画面では
    • どのインシデントから来た申請か
    • 関連インシデント を自動でセットしたい

👉 ユーザーに再入力させず、申請ミスも防ぎたい


全体の処理イメージ

インシデント画面
↓(URLにインシデント情報を付与)
Service Portal 申請画面
↓(Client Scriptで取得)
申請変数へ自動セット


手順①:申請側に「関連インシデント」変数を作成する

まず、申請画面にインシデントを保持するための変数を作成します。

変数設定例

項目設定値
TypeReference
Question関連インシデント
Namerelated_incident
Reference tableIncident [incident]
Read onlytrue(推奨)

※ この変数は URLから受け取った値を表示・保持する目的のため、  通常は Read only にします。


手順②:インシデント画面から申請画面へ遷移するURLを用意

次に、インシデント画面から申請画面を開くためのリンクを作成します。

URL例(重要)

  • sysparm_incident_sys_id
    • インシデントの sys_id を渡すための独自パラメータ
  • sysparm_ プレフィックス
    • ServiceNowで推奨される命名ルール

※ このURLは、

  • UI Action
  • メール通知
  • 画面リンク

などから呼び出せます。


手順③:Catalog Client Script(onLoad)を作成

申請画面が表示された瞬間に、URLパラメータを取得します。

Client Script設定

項目設定値
TypeonLoad
UI TypeService Portal
Activetrue

手順④:参考コード(URLパラメータ取得)

function onLoad() {
 // URLパラメータを取得
 var param = new URLSearchParams(location.search);

 // 引き継ぎ元申請の sys_id を取得
 var sourceReqId = param.get('sysparm_source_req_id');

 // 値が存在する場合のみセット
 if (sourceReqId) {
 g_form.setValue('related_request', sourceReqId);
 }
}


画面上の動き(利用者視点)

  1. Incident を表示
  2. 「関連申請を作成」リンクをクリック
  3. 申請画面が開く
  4. 関連インシデント欄に INC0001234 が自動表示

👉 利用者は入力不要でそのまま申請を進められます。


よくある設計ミス(注意)

❌ Business Rule でURLを取得しようとする

  • URLはクライアント情報
  • サーバー処理では取得不可

❌ URLの値をそのまま業務判断に使う

  • URLは改ざん可能
  • あくまで「画面補助情報」

👉 必ず画面で受け取り、正式な項目として保存してください。


実務向け設計ポイント

  • URLパラメータは
    • 一時的な文脈情報
    • 画面を開いた瞬間に使い切る
  • 保存が必要な情報は
    • カタログ変数
    • RITMフィールド へコピーする

まとめ

  • インシデント → 申請の導線は非常に多い
  • URLパラメータを使うことで
    • UX向上
    • 入力ミス防止
    • カタログ再利用 が実現できる

Service Portal を使った申請設計では、 必ず押さえておきたい定番パターンです。

ぜひ、自身の環境に合わせて応用してみてください。

投稿者プロフィール

naruya

Tags:

Comments are closed

カテゴリー
PAGE TOP