#概要
ServiceNowでテーブルを一括更新する場合はServiceNowにログインしてインポートセットからファイルをアップロードする場合が多い。しかし、定期的にインポートする場合はWebサービスインポートセットを利用することができる。
WebサービスインポートセットとはServiceNowのREST APIを利用してデータを作業用インポートセット用テーブルに保存して、そこから普通のインポートセットと同じようにトランスフォームマップ(変換マップ)を利用してServiceNowの実テーブルに反映する仕組みである。
REST APIを利用するのでExcelマクロなど外部ツールを利用することが可能である。また、ServiceNowの変換マップを利用するのでServiceNowページから重複チェックなどで利用するキーなど変換ルールを定義することができる。
#実装
##ServiceNowでの実装
###システムWebサービスの作成
先ずは会社情報を登録するWebサービスインポートセットを作成します。
1.アプリケーションナビゲータから「システム Web サービス」を検索して「新規作成」を選択
2.次の情報を入力して「作成」ボタンを押下
項目 | 値 |
---|---|
ラベル | Import company_data |
ターゲットテーブルからフィールドをコピー | チェック |
ターゲットテーブル | core_company |
###変換マップの作成
入力データとServiceNowテーブル列のマッピングルールを定義します。
3.ServiceNowのテーブルから項目を取得します。
「Auto Map Matching Fields」リンクをクリックします。ページの下に会社テーブルのフィールド一覧が追加されます。
4.インポートするフィールド以外は削除します。
今回は「notes」,「manufacturer」,「vendor」,「name」,「vendor_type」のみを残します。それ以外のフィールドをチェックします。
5.チェックした後に「Actions on selected rows」を選択して「Delete」を選択します。
6.削除確認が情報されるので「Delete」ボタンを押下
7.削除すると残りのフィールドが表示されます。今回、不要な項目をすべてチェックして削除します。
8.同じようにフィールドを削除します。
9.続けて削除します。
10.インポートするフィールドのみが表示されていることを確認します。
今回は企業名をキーにします。キーでレコードを識別されます。インポートセットテーブルにはすべてのレコードは追加されますが、実テーブルに再インポートした場合で既に同じキーのレコードがある場合は新しいレコードを追加せずに内容が更新されます。
名前をキーにするので、u_nameのCoalesceセルをクリックします。
11.内容を「true」に変更して、右のチェックをクリックします。
12.設定が変更されたことを確認した後に「Update」ボタンを押下して保存します。
###通信テスト
ServiceNowのREST API Explorerを利用して作成したWebサービスインポートセットを試します。
先ずはインポートセットテーブルに接続できるか試します。
13.アプリケーションナビゲータから「REST」を検索して、「REST API Explorer」を選択します。
14.「Retrieve records from a table (GET)」を選択します。
検索するテーブル名は先ほど作成したWebサービスインポートセットの「source table」です。今回は「Import company data (u_import_company_data)」です。
15.ページの下の方にある「送信」ボタンを押下してGETリクエストをServiceNowに送ります。
16.問題がなければ「200 OK」を表示されます。まだデータを登録していないのでデータはありません。
17.接続できることを確認できたのでデータをPOSTして登録して見ます。
左側のメニューから「レコードの作成(POST)」を選択して再びtable nameに作成した「Import company data(u_import_company_data)」を指定します。
18.ページ下の方に「要求本文」セクションがあります。「ビルダ」タブを選択して「フィールドを追加してください」ボタンを押下します。
19.ServiceNowに送信するフィールドを指定します。フィールドを定義するとその下に送られるJSONが表示されます。
##場所テーブル
名前 | 値 |
---|---|
Webサービスインポートセット名 | Import location data |
ソーステーブル | Import location data [u_import_location_data] |
ターゲットテーブル | cmn_location |
フィールド名 | 値 | インポートセットのフィールド名 | 結合 |
---|---|---|---|
名前 | test location | u_name | true |
##モデルテーブル
名前 | 値 |
---|---|
Webサービスインポートセット名 | Import model data |
ソーステーブル | Import modeldata [u_import_model_data] |
ターゲットテーブル | cmdb_model |
フィールド名 | 値 | インポートセットのフィールド名 | 結合 |
---|---|---|---|
メーカー | test manufacturer | u_manufacturer | false |
名前 | test model | u_name | true |
モデル番号 | test model number | u_model_number | false |
モデルカテゴリ | Network Gear | u_cmdb_model_category | false |
##ハードウエア資産テーブル
名前 | 値 |
---|---|
Webサービスインポートセット名 | Import hardware asset data |
ソーステーブル | Import hardware asset data [u_import_hardware_asset_data] |
ターゲットテーブル | alm_hardware |
フィールド名 | 値 | インポートセットのフィールド名 | 結合 |
---|---|---|---|
表示名 | test display name | u_display_name | false |
会社 | test company | u_company | false |
名前 | test department | u_department | false |
部門 | 1 | u_install_status | false |
シリアル番号 | test serial number | u_serial_number | true |
場所 | test location | u_location | false |
モデル | test model | u_model | false |
モデルカテゴリ | test vendor | u_vendor | false |
以上