ServiceNow SLA Default Flowの仕組みと問題

ServiceNow SLA定義の続編です。

**■SLA Flowについて**
Flow設定では、例えばSLAの経過率によりイベントを作成することが可能です。
ServiceNowが標準で用意したDefault SLA Flowにおいてもイベント作成により通知を実行しています。

※イベントの作成が出来ることから、通知以外にもイベントをトリガーとしたアクションが実装可能となります。



**■今回のポイント**
以下を確認していきます。文字多めなのでつまらないかもしれませんが、ご了承ください。

・ServiceNow標準Flow:Default SLA Flowより、SLA経過に伴うイベントをどのように作成しているか。
・イベントをトリガーとする通知設定をどのように設定しているか。
・標準設定の問題（SLA違反時）と、修正方法について。


**■Default SLA Flow**
ServiceNowより提供されるドキュメントのリンクは以下となります。

ServiceNow Docs
https://docs.servicenow.com/en-US/bundle/utah-it-service-management/page/product/service-level-management/concept/flows-for-sla.html

**■ServiceNow標準Flow:Default SLA Flowを開きます。**

Flow Designer
以下の画面よりFlow Designerを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/8a1c1999-8d7f-9276-03c8-6cc3f03916a4.png)

Default SLA Flowを開きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/32552d40-c62d-a294-5f37-acc1fe93ca16.png)

**■設定内容の確認**
Default SLA FlowではSLA経過率が50%,75%,SLA違反時の3パターンにおいてイベントを作成します。
順にみていきます。

- TRIGGER
Application:SLA TASKを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/6b8d0b53-ec5e-153a-a2bf-02f0b63770ad.png)

- ACTIONS
　●SLA 経過率:50%
　ActionsのNo1-4が該当します。
　SLA Percentage Timerフィールドが50%の条件を満たした場合に実行されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/51810425-2ce2-0ed0-98b0-5fc248437cd3.png)

　**●実行内容1**
　Look Up Task SLA Recordにより、対象のレコード条件を指定します。
　ここではSys IDがTrigger - SLA TASKが実行されたTASK SLA RecordのSysidとマッチさせています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/69a6572c-77f6-e3f3-f757-bd6d3b69c4f0.png)

　**●実行内容2**
　Create Event Recordによりイベントを作成しています。

　作成条件は以下となります。
　Action:Create Record
　Table:Event（sysevent）
　Instance:Lookup Up Record→Task SLA Record　※対象レコードです。
　Name:sla.warning.parm　※イベント名
　Parm1:Lookup Up Record→Task SLA Record→Task→Assign to ※アサイン先フィールドを取得
　Table:task_sla
　
　ここでのポイントはParm1に指定する情報です。
　テーブルを見るとわかりますが、task_slaテーブルのtaskフィールドに対象のチケット（インシデントや変更管理等）が含まれるので、アサイン先を送信先としたい場合は上記の条件のようにTask→Assign toとなります。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/db485d56-f388-ecbc-e108-7885f3bb2449.png)

　**●通知設定**
　作成されたイベントにより、実行される通知設定を確認します。
　メニュー：Notificationよりリストを開き以下画像の通りに条件指定してください。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/42affc77-21ff-5797-b879-3b95404b857c.png)

　SLA経過率50%の際には以下の通知設定が実行されます。
　"SLA warning Parm"

　　- 確認ポイントは以下です。
　　　When to Send > Send When がEvent is Firedであること
　　　When to Send > Event Name がsla.warning.parmであること
　　　※Flow > Create Event RecordのNameと同様であること
　　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/9ef07844-de4c-f6f0-4c63-a2bd71676af5.png)

　　　Who will receive > Event parm 1 contains recipientにチェックが入っていること
　　　※Parm1は何を指定しましたか？
　　　　各Task SLAテーブルのTaskフィールドに格納されているテーブル（インシデントや変更管理、タスク等）のアサイン先を指定していました。つまり、この通知の宛先はSLA経過率50%を超過したチケットの担当者となります。


　　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/62b278f5-42c5-1300-9472-db24c9fe6737.png)

※75%はTRIGGERが異なるのみですので、省略します。

**20230807_更新**

■SLA違反時
**SLA Flow**
　ActionsのNo9-13が該当します。
　Has BreachedフィールドがTrueの条件を満たした場合に実行されます。

　**●実行内容1:No10**
　Look Up Task SLA Recordにより、対象のレコード条件を指定します。
　ここではSys IDがTrigger - SLA TASKが実行されたTASK SLA RecordのSysidとマッチさせています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/2cff2e45-10bd-2c48-62f3-3b2db0486de1.png)


　**●実行内容2:No11**
　Create Event Recordによりイベントを作成しています。

　作成条件は以下となります。
　Action:Create Record
　Table:Event（sysevent）
　Instance:Lookup Up Record→Task SLA Record　※対象レコードです。
　Name:sla.warning.breach.parm　※イベント名
　Parm1:Lookup Up Record→Task SLA Record→Task→Assign to ※アサイン先フィールドを取得
　Table:task_sla

　
　変数:Parm1に格納する情報はSLA経過:50,75の時と同様です。
　変更されているのはイベント名がSLA違反時のものに変更されています。


　**●実行内容3:No12**
　Condition Label:Assigned To is different to Manager of Assigned To
　条件により、担当者と担当者のマネージャ情報が異なることを確認しています。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/3448d100-f90f-423a-00f9-0090b1594c5d.png)


　**●実行内容4:No13**
　Create Event Recordによりイベントを作成しています。

　作成条件は以下となります。
　Action:Create Record
　Table:Event（sysevent）
　Instance:Lookup Up Record→Task SLA Record　※対象レコードです。
　Name:sla.warning.breach.parm　※イベント名
　Parm1:Lookup Up Record→Task SLA Record→Task→Assign to→Manager ※アサイン先のマネージャ情報を取得
　Table:task_sla
　
　**SLA違反時の通知設定**
　SLA違反時の通知設定は"SLA breached Parm"です。
　通知内：Event name:sla.warning.breach.parmとなり、Flowで作成するRecordのイベント名と同じになります。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/7f052e53-f26e-5080-c270-662d01b87c61.png)

　**問題**
　実行内容4のNo13におけるCreate Event Recordには不具合があります。
　
　原因はマネージャ情報をParm1に取得失敗するためです。
　→Utahバージョンで動作確認を実施しましたが、Parm1の取得に失敗するため宛先である"Event parm 1 contains recipient"に値が入らず、通知自体が実行されません。

　**解決方法**
　以下の手順で修正可能です。
　
　① Eventを新規登録します。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/94c7b03d-e871-bbdf-f2a6-79b8ee2882a3.png)
　　
　② Default SLA FlowNo13のName（イベント名）を①で登録した値にします。
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/dd9b98ff-64ca-e8e4-90d2-14cc0c87b4b0.png)

　　
　③ 通知を新規作成します。（この際、イベント名を②で変更した値とします）
　　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/5e435524-d915-8161-983b-2e227ee23744.png)


 
　④Who will receiveを修正し、宛先情報を指定します。
　ドット連結により、Task → Assigned to → Managerと指定してください。
　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399414/0a584bf9-10b5-96fc-e40f-d18736d04619.png)

以上が問題と解決方法となります。
記載事項にご不明事項があればコメントください。
引き続き記事を更新していきますので、よろしくお願い致します。