ServiceNow開発者の皆さん、開発環境で**Scheduled Job(スケジュールジョブ)**を作成したのに、Update Setに含まれておらず移行(マイグレーション)に苦労した経験はありませんか? 実はデフォルト設定では、スケジュールジョブは自動的にキャプチャされません。ここでは、スケジュールジョブを別のインスタンスへ安全かつ確実に移行するためのベストプラクティスを解説します。
なぜScheduled JobはUpdate Setに追加されないのか?
- スケジュールジョブ(
sysautoテーブルや拡張テーブル)はシステム設定(Configuration)ではなく**システムデータ(Data)**として扱われます - そのため、ビジネスルールやクライアントスクリプトのようにUpdate Setの自動追跡の対象外となっています
スケジュールジョブを移行する3つの方法
- 方法1:XMLエクスポート・インポート(最も推奨)
- レコードのヘッダーを右クリック >
Export>XMLを選択してダウンロードします - 移行先インスタンスのリスト画面でヘッダーを右クリックし、
Import XMLを使用して取り込みます - ServiceNowが公式に推奨している、最も安全で確実な移行方法です
- レコードのヘッダーを右クリック >
- 方法2:「Add to Update Set」機能の利用(便利)
- コミュニティで有志が提供しているUI Action追加ツールや、SN Utilsの機能を使い、手動でレコードをUpdate Setに強制追加(Force to Update Set)します
- 設定ファイルとデータを1つのUpdate Setにまとめて移送したい場合に便利です
- 方法3:Dictionary属性の変更(非推奨・危険)
- テーブルのDictionary設定を開き
update_synch=true属性を追加することで、強制的に追跡させることも一応可能です - しかし、システムのバージョンアップ(アップグレード)時に重大な予期せぬ不具合を引き起こす可能性が高いため、公式からは強く非推奨とされています
- テーブルのDictionary設定を開き
まとめ
- Scheduled JobはデフォルトではUpdate Setに記録されません
- レコードを別インスタンスへ移行するにはXMLのエクスポート&インポートが最も安全です
- 安易にシステムの
update_synch属性を変更することは、システムリスクを伴うため絶対に避けましょう
一言まとめ: 👉 スケジュールジョブの移行は「XMLでエクスポートしてインポート」が最も確実なベストプラクティス!