【ServiceNow入門】Update Setの基本 と 使用時のよくあるトラブル

# 1.　はじめに
こんにちは。株式会社ウイズ・ワン、ServiceNow担当のY-Kです。

本記事ではServiceNowのインスタンス間リリース機能である、**Update Set(更新セット)** について、
基本的な利用方法と使用時のよくあるトラブル・その対応について説明します。

:::note info
本記事は2024/12/27時点での情報となります。
:::

# 2.　Update Setとは
**Update Set(更新セット)** とは、ServiceNow上のカスタマイズ内容を記録し、
他インスタンスへ移行するための機能です。

開発インスタンスにて開発/改修を行ったアプリケーションをテスト/本番インスタンスへ
リリースする際等に使用します。


# 3.　Update Setへ記録可能なレコード
Update Setに記録(他インスタンスへ移行)できるレコードには制限があります。


### Update Setへ記録されるレコード
各種カスタマイズ系のレコード

:::note info
Update Setへ**記録される**レコード例

・テーブル[sys_db_object]
・ロール[sys_user_role]
・ビジネスルール[sys_script]等のスクリプト系
:::

### Update Setへ記録されないレコード
各種データ系のレコード

:::note warn
Update Setへ**記録されない**レコード例

・インシデント[incident]等のタスク系レコード
・ユーザー[sys_user]
・ログエントリ[syslog]
:::

### よく勘違いされるレコード
よくある間違いとして以下のレコードはUpdate Setに記録されないため、注意が必要です。

:::note warn
Update Setへ記録されない
・ダッシュボード[pa_dashboards]
・スケジュール済みジョブ[sysauto]
・ナレッジベース[kb_knowledge_base]
:::

確実なUpdate Set移行のためには、Update Setの記録内容は詳細に確認するようにしましょう。

# 4.　Update Setの基本的な使用方法
ここでは基本的な利用の流れをご説明いたします。

詳細な使用方法については[製品ドキュメント](https://www.servicenow.com/docs/ja-JP/bundle/xanadu-application-development/page/build/system-update-sets/concept/system-update-sets.html)をご参照ください。


### 手順1：Update Setの作成（移行元インスタンス作業）
System Update Sets > Local Update Set　からUpdate Setを作成しましょう。

:::note 
Update Setはアプリケーションスコープ毎に作成する必要があるため、
適宜、ピッカーからアプリケーションスコープの変更を行いましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/51d86024-de25-078d-1d45-58a59386245e.png)
:::

### 手順2：Update Setの使用（移行元インスタンス作業）
記録を行うUpdate Setを選択し、開発作業を行いましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/2677d6d5-1fa2-69c3-e7a0-3249dd04dcbd.png)

:::note 
Update Setへ記録されたレコードはUpdate Setレコードの
関連リスト『Customer Updates』から確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/65f9130b-cf2d-13d4-0723-7d190a8fd816.png)
:::

開発の完了後、Update Setの『State』を「Complete」に変更しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/0071cecf-b516-39f4-f5fc-2dc723e5cafe.png)


### 手順3：Update Setの転送（移行先インスタンス作業）
System Update Sets>Update SourcesからRemote Instanceを作成しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/5d1f4647-48c2-de68-4fd5-3efd87d663b9.png)

:::note warn
移行元インスタンスからUpdate Set移行に使用するユーザーを設定する必要があり、
このユーザーはAdminロールを所持している必要があります。

設定後は、『Test Connection』ボタンからテスト接続を行い、
移行元インスタンスへ接続できることを確認しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/f3a0de6c-7fe8-bf17-9091-890754edd97d.png)
:::

Remote Instanceレコードの作成後、
『Retrieve Completed Updadte Sets』ボタンからUpdate Setの取得しましょう。
Update Setの取得が完了すると、
関連リスト『Retrieved Update Sets』に取得したUpdate Setが追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/6b6b531d-481b-aa7f-eccb-e689f7ed033d.png)

### 手順4：Update Setの適用（移行先インスタンス作業）
Update Setの適用を行いましょう。
取得したUpdate Setから『Commit Update Set』ボタンでUpdate Setを適用します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/f117867b-5fb5-f61c-b86a-8881bbc3fb44.png)

:::note warn
適用する際、レコードに問題があった場合、
Update Setは適用することができません。

よく発生する問題とその対応方法については以降に説明します。
:::


# 5.　Update Set利用時のよくあるトラブルと解決方法
以下に、Update Setを利用する際によく発生するトラブルとその解決方法について記載します。


## 5.1.　Update Setの記録先を変更したい
Update Setの選択間違いにより、
記録先のUpdate Setが想定とは別のUpdate Setに格納されてしまった場合等、
Update Setの記録先を変更する対応方法になります。

Update Set内の変更記録である、Customer Update[sys_update_xml]レコードの
『Update set』のフィールドを変更することで格納先のUpdate Setを変えることができます。

:::note
複数の変更を移行したい場合の便利な方法

間違えて使用したUpdate Setの関連リスト『Customer Updates』の
『Update set = XXXXXX』箇所を右クリックし、『Opne new window』を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/e5ed70d6-1819-6a0b-4e88-f1289811cd04.png)

表示されたリストにて、ShiftやCtrlでカラムを選択し、
ダブルクリックからUpdate Setを変更する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/1fae3e37-b192-cd56-567a-c39faa6be7ea.png)
:::

## 5.2.　Update Set適用時のエラー
以下は、Update Set適用前によく発生するエラーの一部についての説明となります。

------
・Could not find a record in XXXXXX for column 00000 referenced in this update

参照先のレコードが適用先のUpdate Setにない場合、発生するエラーとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/18deb774-1afb-b998-a4ba-aacb60b58a2e.png)

対応1：参照先レコードを適用に含める場合
　移行元インスタンスのUpdate Setの内容を確認/修正し、
　移行先インスタンスにてUpdate Set削除/再転送しましょう。

対応2：移行先インスタンスに変更を適用しない場合
　『Available Actions』の『Skip remote update』を選択しましょう。

対応3：エラーを無視して適用する場合
　『Available Actions』の『Accept remote update』を選択しましょう。

------
・Could not find a record in XXXX for column OOOO referenced in this update, but did find it in another uncommitted update set

参照先のレコードが適用先のUpdate Setにないが、他のUpdate Setに含まれている場合、
発生するエラーとなります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3812632/92290806-32bf-b15d-acac-37a8a951106e.png)

対応1：上記「Could not find a record in XXXXXX for column 00000 referenced in this update」と同じ対応方法をとる

対応2：他のUpdate Setを先に適用する場合
　『Available Actions』の『Show uncommitted update set』から参照先が記録されている
 　Update Setを確認し、そちらのUpdate Setを適用後、
  　エラーが発生していたUpdate Setにて『Run Preview Again』ボタンから、
  　エラー状況の再確認を実施しましょう。

# 6. まとめ
Update Setについて、その基本と使用時のよくあるトラブルについて紹介してまいりました。

Update SetはServiceNow開発における、基礎となりますので、
ServiceNowを始めたばかりの方は正しく利用できるようにしましょう。

---
株式会社ウイズ・ワン　ServiceNow担当Y-K

https://www.wiss1.co.jp/