MKIが解説するServiceNow開発blog

ServiceNow にまつわるMKIナレッジを紹介いたします。

Flow Designerによるcsvファイル自動インポートフロー

はじめに
みなさんこんにちは、三井情報株式会社です。

ServiceNowのCatalog Itemでは、申請者側に可変的な情報を入力してもらうために Multi-row variable set(以下、MRVS)を使用するケースがあります。
しかし、 MRVS は1件ずつ登録や編集する形式ですので、入力してもらう情報が何十件、何百件となると申請者側へ負担がかかってしまいます。
そこで、申請者側の負担を軽減する方法として、申請者側 はcsvファイルに申請情報を登録し、そのcsvファイルをServiceNow内でインポートする形式を考え、今回Catalog Itemに添付されたcsvファイルを自動でインポートする処理を検証しましたのでご紹介したいと思います。
本記事では、添付されたcsvファイルの内容を会社テーブルにインポートする処理を例に説明させて頂きます。

今回利用する機能
Data Sources
Table Transform Map
Scheduled Data Imports
Flow Designer

設定方法
① Data Sources
System Import Sets配下にあるData Sourcesを選択し、Newをクリックします。
f:id:mki-blog:20211210111441p:plain

Nameにcsvファイル名、Import set table nameに中間テーブル名を入力し保存します。
f:id:mki-blog:20211210111521p:plain

フォーマットとなるcsvファイルを添付します。
f:id:mki-blog:20211210111533p:plain

csvファイルをロードし、中間テーブルを作成します。
f:id:mki-blog:20211210111548p:plain

② Table Transform Map
Data Sourcesの関連リストにあるTransformsタブのNewをクリックしてください。
f:id:mki-blog:20211210111604p:plain

NameにTable Transform Mapの名前、Source tableにData Sourcesの登録時に設定した中間テーブル、Target tableにインポート先のテーブルを設定し保存します。
f:id:mki-blog:20211210111617p:plain

Mapping Assistから項目のマッピングを行います。
f:id:mki-blog:20211210111632p:plain

f:id:mki-blog:20211210111645p:plain

f:id:mki-blog:20211210111659p:plain

③ Scheduled Data Import
Scheduled Import Sets配下にあるScheduled Importsを選択し、Newをクリックします。
f:id:mki-blog:20211210111720p:plain

NameにScheduled Data Importの名前、Data Sourceに①で作成したData Sourceを設定します。
今回はFlow Designerのタイミングでのみ実行するのでActiveをFalseに設定します。
f:id:mki-blog:20211210111736p:plain

④ Flow Designer
③で作成したScheduled Data Importを実行するためのアクションを作成します。
NameとCategoryを設定します。
f:id:mki-blog:20211210111750p:plain

Inputに設定する引数を設定します。
参照先のテーブルはScheduled Data Importテーブルを設定します。
f:id:mki-blog:20211210111805p:plain

f:id:mki-blog:20211210111828p:plain

Scriptのアクションを追加します。
f:id:mki-blog:20211210111839p:plain

Input Variables にInputsで設定したScheduled Data ImportのデータのSys ID を設定します。
f:id:mki-blog:20211210111853p:plain

Scriptには以下の通り設定し保存します。

(function execute(inputs, outputs) {
  var exportGr = new GlideRecord('scheduled_import_set');
  exportGr.addQuery('sys_id', inputs.scheduledDataImport);
  exportGr.query();
  
  if (exportGr.next()) {
    gs.executeNow(exportGr);
  }

})(inputs, outputs);

アクションの作成が完了したら、次はフローの作成を行います。
全体としては以下の通りですが、Action 2のCreate Catalog Taskは運用担当者が申請内容を確認する想定で追加したもので、自動インポートの処理に関わるものではありませんので省略しても問題ありません。
※本記事ではCreate Catalog Taskのアクションの作成は省略しております
f:id:mki-blog:20211210112117p:plain

Flowを作成し、TriggerにはService Catalogを設定します。
ActionからGet Catalog Variablesを選択します。
f:id:mki-blog:20211210112132p:plain

Submitted RequestにはTriggerのRequest Itemを指定します。
f:id:mki-blog:20211210112148p:plain

Template Catalog Itemに申請に使用するカタログアイテムを選択します。
f:id:mki-blog:20211210112203p:plain

次に、申請の添付ファイルの情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
f:id:mki-blog:20211210112219p:plain

Source RecordにはTriggerのRequest Itemを指定します。
f:id:mki-blog:20211210112241p:plain

次に、申請の添付ファイルの情報をもとにAttachmentテーブルから情報を取得するための処理を実装します。
ActionからLook Up Attachmentを選択します。
f:id:mki-blog:20211210112352p:plain

TableにはAttachmentテーブル、ConditionにはSys IDが一つ前のActionで取得した申請の添付ファイルのSys IDと一致するように設定します。
f:id:mki-blog:20211210112409p:plain

次に、すでにSource Recordに添付されているファイルを現在の申請の添付ファイルを複製する前に削除する処理を実装します。
ActionからDelete Attachmentを選択します。
f:id:mki-blog:20211210112423p:plain

Source Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
Delete All Attachments?はTrueにします。
f:id:mki-blog:20211210112514p:plain

次に、申請の添付ファイルをData Sourceのレコードに複製を行います。
ActionからCopy Attachmentを選択します。
f:id:mki-blog:20211210112528p:plain

Source Attachment Recordには二つ前のActionで取得したAttachmentテーブルでの申請の添付ファイルのレコード、Target Recordには①で作成したData Sourceのレコード、TableにはData Sourceテーブルを設定します。
f:id:mki-blog:20211210112550p:plain

最後に、Scheduled Data Importを実行するアクションを追加します。
Actionから④の最初に作成したアクションを選択します。
f:id:mki-blog:20211210112608p:plain

Scheduled Data Importには、③で作成したScheduled Data Importを選択します。
f:id:mki-blog:20211210112626p:plain

実装は以上になりますので、実際にサービスカタログから申請を行い、自動でインポートされていれば成功です。

おわりに
今回の検証により、 Catalog Item で可変的な情報を申請する方法として、MRVS以外にcsvファイルでのインポートも採用できるようになりました。
最後まで読んでいただき、ありがとうございました。

三井情報株式会社
ソリューション技術本部
クラウドソリューション部
第四技術室
甲田善寛
www.mki.co.jp