初めまして。
SCSKの庄司です。
今回は、ServiceNowで「レコードのどの部分が、いつ、誰によって更新されたのか」の情報を取得・確認する方法を紹介していきます。
事前準備:監査を有効化しよう
ServiceNowは裏で「誰が何を変更したか」を記録する機能があります。
それが「監査ログ」です。
監査ログレコードは監査対象レコードの各フィールドの更新ごとに以下のような情報を自動で保存してくれます。
・更新日時
・対象フィールド名
・更新前後の値
・更新者 等
ただし最初からすべてのテーブルが監査対象になっているわけではありません。
まずは、特定のテーブルを監査対象に設定する方法を確認しましょう。
監査対象テーブルの設定手順
①[システム定義]>[ディクショナリ]に移動
②監査対象とするテーブルを検索し、列名=空欄、タイプ=コレクションのレコードを探す
③該当レコードの「監査」をTRUEに変更
テーブル丸ごとではなく特定の列のみを確認したい場合は、手順②でテーブルのレコードではなく対象としたい列のレコードを探し、「監査」をTRUEにしてください。
上記の手順を実施することでテーブルの監査ログ取得が可能となります。
監査ログを見てみよう
さて、レコードの内容を更新して監査ログに更新内容がしっかりとキャッチされてるか見てみましょう。
今回はユーザー(sys_user)テーブルを監査対象としたので、ユーザーテーブルの任意のレコードの値(メール、部門、Web サービスへのアクセスのみ)を変更します。
監査ログの確認手順
①Filter Navigatorに [sys_audit.list] を入力して監査ログテーブルにアクセス
②テーブル名やフィールド名、レコードのSys IDでフィルタをかけて検索します。
③該当するレコードを探し、開きます。
監査ログレコードの各種列は以下内容を格納しています。
作成日時 | 監査対象レコードが更新された日時 |
テーブル名 | 監査対象レコードのテーブル |
フィールド名 | 監査対象レコードの更新されたフィールド |
ドキュメントキー | 監査対象レコードのsysID |
ユーザー | 監査対象レコードに更新をかけたユーザー |
以前の値 | 監査対象レコードの該当フィールドの更新以前の値 |
新しい値 | 監査対象レコードの該当フィールドの更新後の値 |
試しにユーザーテーブルのたとえば「メール」フィールドを見てみると、先ほど更新した内容の更新日時、変更前後の値、更新者などがきちんと記録されています。
フォームコンテキストメニューから履歴を見る
一方で、わざわざ監査ログテーブルに遷移せずとも対象のレコードのフォーム画面から更新内容を確認する方法もありますので、そちらの方法も紹介します。
1.カレンダー形式で履歴を確認
①対象のレコードのフォームを開く
②フォームコンテキストメニューから、[履歴]>[カレンダー]を選択
③遷移先の「ユーザー履歴詳細」ページでは以下のような特徴があります。
・レコードの更新履歴がカレンダー形式で表示されます
・各日付の更新者や更新内容がひと目で確認できます
・カレンダー上部に、フィールド名や更新前後の値も表示されます
2.リスト形式で履歴を確認
①対象のレコードのフォームを開く
②フォームコンテキストメニューから、[履歴]>[リスト]を選択
③遷移先の「レコード履歴」ページでは以下のような特徴があります。
・フィールドごとのリスト形式で表示されます
・リスト上からはフィールド名や最終更新日時、最終更新者、更新前後の値などを確認することが可能です
・各レコードを押下することで、そのレコードに応じたフィールドの履歴を表示することができます
まとめ
ServiceNowでは監査ログ機能を活用することで、「いつ・誰が・どこを・どう変更したのか」をしっかり追跡できます。
設定もシンプルなので、ぜひ日常の業務等に役立ててみてください。