【ServiceNow】インシデント起票のあれこれ

# メールでのインシデント起票
ServiceNowでのインシデント起票(ITSM)には、entry-point(起票起点)は3つ。

- Platform起票
- SP起票
- メール起票

### 1)Platform起票
**incident.do** でプラットフォーム上でインシデントを起票できる。
![inc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/54b244b2-0692-cdbc-539b-d8f8cb9872c9.png)
上記の入力フォームからsubmitをクリックすれば起票終了である。

### 2)SP起票(ServicePortal)
ServicePortalの問い合わせフォームから起票できる。
OOTB(初期状態)でのインシデント起票手順は、
1)ホーム画面の[**Get Help**]クリック
![lp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/04ba6b37-e0c3-aeb0-dee8-a727609d59f2.png)
2)サービスカタログ画面の[**create incident**]クリック
![create inc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/982b525f-f436-375b-a4b9-1cb255728ab1.png)
サービスカタログは様々な顧客向けサービスのパッケージで、企業向け拡張として利用可能。いろいろ触ると楽しいですよ。
3)項目を入力して[**submit**]クリック
![sp起票.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/737ffd32-f2f3-e7d0-5f85-ce3c93124812.png)
下記の入力フォームから入力すると、ビジネスルールとレコードプロデューサーが連動することによってインシデントが起票される。

下記、起票完了画面(ticket_conversation)
![FireShot Capture 036 - Ticket Form - The Greatest HP - dev74512.service-now.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/8fba8027-8a8e-b2a0-9a9b-7330f9bcf256.png)

### 2.1)record producer
submitクリック時にrecord producer連動してチケットが起票されるが、その内部処理を見ていこう。

対象テーブル:**record producer**
対象レコード:**create incident**
![record pro.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/80599841-f965-3f8c-f19c-ce64f124cebb.png)

レコードを開くと、さまざまな情報が出る。
基本情報は下記。
![reco.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/bef55eab-178f-f65f-ddb0-e23adda2aae0.png)
内部変数(質問項目とかカテゴライズ)はrelated linksのvariablesからできる。
![rrrr.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/b319001a-7563-7c83-58e4-7b578fb5edbb.png)

受け渡しに使うデータなどの設定はスクリプトで行う。

```javascript:incident.js
var isMobile = GlideMobileExtensions.getDeviceType() == 'm';
var link = isMobile ? '#/!list/incident/q:active=true%5Ecaller_id=javascript:gs.user_id()%5EEQ' : 'home.do';

var linkLbl = isMobile ? "List" : "Homepage";
var br = '<br/>';
var linkURL = '<a href="' + link + '">' + gs.getMessage(linkLbl) + '</a>';
var msgArgs = [br, linkURL];

var info = gs.getMessage("This incident was opened on your behalf{0}The IT department will contact you if they need any further information{0}You can track status from this {1} {0}", msgArgs);

gs.addInfoMessage(info);
var caller = gs.getUserID();
var parent_table = RP.getParameterValue('sysparm_parent_table');
if (JSUtil.notNil(parent_table)) {
	var parent_map = new GlideRecord('request_parent_mapping');
	parent_map.addQuery('parent_table', parent_table);
	parent_map.query();
	if (parent_map.next())
		var requested_for_field = parent_map.getValue('requested_for_field');
	var parentGR = new GlideRecord(parent_table);
	parentGR.addQuery('sys_id', RP.getParameterValue('sysparm_parent_sys_id'));
	parentGR.query();
	if (parentGR.next())
		caller = parentGR.getValue(requested_for_field);
}
current.contact_type = 'self-service';
current.caller_id = caller;
if (producer.comments.length > 80)
	current.short_description = producer.comments.substring(0, 79);
else
	current.short_description = producer.comments;
current.description = producer.comments;

var incRPUtil = new LinkRecordProducerToIncident();
incRPUtil.linkRecordProducerToParentIncident(RP.getParameterValue('sysparm_parent_sys_id'), current);
```
currentObjectに設定値(short_description,description,urgency)を埋め込んで、
最後にLinkRecordProducerToIncident()で生成して、リダイレクトしています。
[インシデントから要求を作成する](https://docs.servicenow.com/bundle/london-it-service-management/page/product/incident-management/task/create-request-from-incident.html)
値が反映されて、インシデントレコードが生成されていることが確認できます。
![aa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/cc4780f9-df16-045c-bb0a-45f6bb7f9112.png)
### 3)メール起票設定
メール起票時の設定は、
下記の3つの手順が必要である。

- メールの送受信設定
- ユーザの設定
- ユーザにアドレスを設定

**email properties**にinbound,outboundのメール設定ができるので、メールでの調整はここ。
![aaaaa.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/3838a076-4471-cf41-fb2f-fea8d10c228f.png)
1)メール送受信設定
まず、ServiceNowからのin/outを可能とするには、
**Email receiving enabled**
**Email sending enabled**
ここのチェックボックスをYESにするだけ。
送信のSMTPと受信のPOP3サーバがこれでオンになる。カンタン。
[メール設定で最初につまずく「SMTP」「POP」「IMAP」。その意味＆設定方法は？](https://time-space.kddi.com/ict-keywords/kaisetsu/20170824/2081)

2)ユーザの設定
メール受信可能ユーザは、
**Send all email to this test email address (non-production testing)**のリストに値を入力することで追加できる。今はadminなので、追加でabel.tuterなどいろいろなユーザを加えることができる。

3)ユーザにアドレス設定
ユーザ(sys_user)レコードにはメールアドレスの入力項目があるので、
そこにメールアドレスを登録することではれてメールの送受信が可能となる。
![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/6ba3d812-d749-ae36-0133-2d148b24bf24.png)

# appendix.TaskSLAについて
インシデントレコードのrelated linkにtask slaがくっついている。
![FireShot Capture 043 - INC0010049 - Incident - Nowプラットフォーム - dev74512.service-now.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/26dae8ba-f102-f047-ab15-bf6dccf18a19.png)
これはSLAというITIL標準の概念。でService Level Agreementで、実務上ではインシデント起票から問題解決までの目標時間をインシデントの内容によって定義しよう、というもの。
[SLA（えすえるえい）](https://www.itmedia.co.jp/im/articles/0507/03/news005.html)
インシデントレコードの、インパクト・緊急度から優先度を導出し、その優先度からSLAを生成している。
**task_sla** テーブルにレコードが定義されており、時間設定などが可能である。
![FireShot Capture 044 - Priority 3 resolution (1 day) - SLA Definition - Nowプラットフォーム_ - dev74512.service-now.com.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/190712/34d7c3ed-4c38-152b-bb2f-90ddd5567ce3.png)