ServiceNowでインシデントエントリーポイントを構成してみた


メールによるインシデント起票

ServiceNowが受信したメールを処理し、インシデントレコードの作成または更新を行うよう、受信アクションの設定を追加してみます。

[System Policy]->[Email]->[Inbound Action]を選択し、[Create incident]受信アクションを開きます。

"Action"タブを確認すると、スクリプトコードが記述されております。

/// Note: current.opened_by is already set to the first UserID that matches the From: email address

current.caller_id = gs.getUserID();
current.comments = "received from: " + email.origemail + "\n\n" + email.body_text;
current.short_description = email.subject;

current.category = "request";
current.incident_state = IncidentState.NEW;
current.notify = 2;
current.contact_type = "email";

if (email.body.assign != undefined)
   current.assigned_to = email.body.assign;

if (email.importance != undefined) {
   if (email.importance.toLowerCase() == "high") {
        current.impact = 1;
        current.urgency = 1;
   }
}

current.insert();

メール受信時に新しく作成されるインシデントで、設定されるのは以下の10種類。
・Caller : ユーザリストから送信元E-mailアドレスとマッチングをかけて情報を取得
・Comments : メール本文を投入
・Short discription : Subjectを投入
・Category : "request"に指定
・State : "New"に指定
・Notify : 2
・Contact Type : "email"に指定
・Assigned to : 指定があれば投入
・Impact : highと指定があれば1
・Urgency : highと指定があれば1

メール本文でテンプレートが指定されている場合、作成するインシデントにもテンプレートを適応するよう、下記コードをcurrent.insert();の直前に追加する。

if (email.body.template != undefined)
   current.applyTemplate(email.body.template);

ServiceNow上からメールを送信して機能しているかを確認する。インスタンス名@service-now.comにメールを送信すればチケットが起票される。
※ developerインスタンスだとdev*****@service-now.comになっている。

自分が参加している研修ではdeveloperインスタンスではない特殊なインスタンスだったのでテストができなかった。何だよちゃんと準備してyhぬjみk、おl。

レコードプロデューサーの追加

これまでは、ServiceNowのインスタンス上にアカウントがあり、かつインシデントテーブルを閲覧・編集できる人のみインシデントレコードを作成または更新することができた。
そのような権限が無い人でもインシデントレコードの作成もしくは更新を行うことができるようにするには、レコードプロデューサーを利用する必要がある。
レコードプロデューサーを介して、ユーザがポータル側で情報を投入した情報をインシデントレコードの各フォームに投入する、そんなイメージです。

実際はインシデントレコードをサービスカタログとして公開し、ポータル側のレイアウト公開しなければならないのですが、ここではレコードプロデューサーの簡単な作り方として、既存のレコードプロデューサーを複製して編集する方法をまとめます。

[Service Catalog]->[Catalog Definitions]->[Record Producer]を選択し、[Create incident]という名前のレコードプロデューサーを開きます。

これは基本設定(いわゆるベースライン)の一部で、今回はあるデバイス固有のインシデントについてのレコードプロデューサーを別途作成するという要件で変更させます。

[Action]チェックボックスにある[Preview Items]をクリックすると、仮にサービスとして公開された場合、ポータル側で表示される事項(ワイヤーフレーム)が表示されます。

完成イメージはこんな感じです。

早速[Copy]ボタンでコピーをして、NameとShort descriptionを"Report Issue with HHD Device"に変えてみます。"What it will contain"タブの[Description]フィールドにをIf you experience...を入れることで見出しを編集できます。

Item Affectedに関するワイヤーフレームを作成するには、下部"Variables"関連リストで[New]をクリックし必要な情報を入力します。



ここまで作成して[Submit]します。

レイアウト変更も"Variables"関連リストで[New]をクリックし必要な情報を入力します。


ここまで作成して[Submit]します。

"Variables"関連リストの[Order]列を編集します。

ここまで作成して[Preview Items]をクリックすると、目的のものに近づいてきました。

同じように、"Variables"関連リストで[New]をクリックし、ラベルとチェックボックス2つを作成します。


あとContainer Startを指定しているので、Container Endも新規で作成します。(キャプチャは省略)最後に"Variables"関連リストの[Order]列も編集します。

[Preview Items]をクリックすると、イメージにマッチしたものが出来上がりました。

ここまではデザインの設定で、インシデントレコードに反映させるべき情報を指定する必要があります。今回は[Create incident]という名前のレコードプロデューサーの設定をそのまま利用します。

■ ワイヤーフレームから抜き取る情報
・Urgency --> Urgency
・Item Affected --> Configuration Item
・Please Describe the Issue below --> Short description (短縮)
・Please Describe the Issue below --> Description (短縮なし)
■ 自動的に投入されるべき情報
・Caller --> レコードプロデューサーを介して情報投入を行った人
・Contact Type --> Self-Service

[Try It]ボタンを押して、情報を投入してみます。

[Submit]すれば、インシデントレコードが作成された…のですが…

今回新たに作成したチェックボックスの情報を格納するフィールドがない…

レコードプロデューサーによって生成されたインシデントとして表示させることが可能とのことで、[incident Variable Formatter]を使用します。

フォームデザイナーを起動すべく、[Incident]->[Create Now]から[Configure]->[Form Design]を選択します。

Formattersにincident Variable Formatterがあるので、2列目に表示させるようにします。

Saveを忘れずに。

これで、先ほど起票したインシデントレコードの2列目に下記のような情報が格納されることを確認できます。