実践ServiceNow - サブドメイン申請の作成

#概要
今回はozawa-hi.co.jp及びozawa-hi.comドメインのサブドメイン申請フォームをServiceNowで作成します。
今まで開発されて来たプロジェクトよりフィールドも多く、ユーザ選択の方法を少し変えています。

完成したフォームはポータルで表示すると次のようになります。
![subdomain_request_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4dcd6ee0-6df5-2715-f765-f1d15cdbd90f.png)

![subdomain_request_1b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/3f2e597a-be3f-1664-c3e5-9aeaea5187b6.png)

#実装
それなら実装を始めます。
次の順で作成します。後で作成するものは前で作成したものを利用するようにしています。例えば、正規表現はフォームのフィールドに設定します。
①正規表現、②フォーム、③UIポリシー、④スクリプトインクルード（サーバ側スクリプト）、⑤クライアントスクリプト、⑥カテゴリー登録
##正規表現の作成
FQDNを検証する正規表現を定義します。もし既にFQDNを定義されている場合はスキップしてください。
1.アプリケーションナビゲータから「正規」を検索して、表示される一覧から「変数の妥当性確認の正規表現」を選択します。
![subdomain_request_regex_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d05cf48a-6196-c236-2ddc-de0b54b7b3dd.png)
2.「新規」ボタンを押下して新しい正規表現を作成します。
![subdomain_request_regex_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/04622937-4b6c-9c83-86b3-b56287a42753.png)
3.次のように定義します。入力後は「送信」ボタンを押下します。

|項目|値|
|---|---|
|名前|FQDN|
|検証メッセージ|Please enter full qualified domain name|
|正規表現|^((?:(?:(?:\w[\\.\\-\\+]?)*)\w)+)((?:(?:(?:\w[\\.\\-\\+]?){0,62})\w)+)\\.(\w{2,6})$|
![subdomain_request_regex_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c085ebf8-6584-bc7b-a915-683451ac1def.png)


##フォームの作成
フォームを作成します。
1.アプリケーションナビゲータから「アイテムの管理」を検索して選択します。
![subdomain_request_form_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/0761f7f8-d39e-ecc5-95c5-e3d84bd3b493.png)
2.「新規」ボタンを押下します。
![subdomain_request_form_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/1d283d1b-bee3-9caf-9749-22a977e3d56c.png)
3.次の項目を入力します。

|項目|値|
|---|---|
|名前|Subdomain Request|
|Subdomain Request|Request to update/delete subdomain|
![subdomain_request_form_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/cbbdbf53-1fc8-6a68-e911-a4b911db7b3f.png)
4.ポータルで表示するための設定を行います。
「ポータルの設定」タブを選択して次の設定を行います。

|項目|値|
|---|---|
|要求の方法|要求|
|[買い物かごに追加] を非表示にする|チェック|
|数量を非表示にする|チェック|
|配送時間を非表示にする|チェック|
|[ウィッシュリストに追加] を非表示にする|チェック|
|添付ファイルを非表示にする|チェック|
![subdomain_request_form_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/319297f0-9d88-992e-cb20-a7646466f4a2.png)
5.設定を保存します。
ヘッダ領域を右クリックして「保存」を選択します。保存するとページ下に変数設定用項目が表示されます。
![subdomain_request_form_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/cff731c6-bebf-5ec5-e04b-5cd8e8129024.png)

###変数の作成
フォームに表示するフィールド（変数）を定義します。
1.「変数」タブを選択して、「新規」ボタンを押下します。
![subdomain_request_variables_1_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4b4d0df7-fb40-b309-6658-d756458272d3.png)
2.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|タイトル表示|チェック|
|順番|10|
|質問|Domain name|
![subdomain_request_variables_1_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/bdf0d516-c586-9b57-03c5-f9824e37b1c8.png)
3.フィールドを2列に表示するように設定します。
「タイプ仕様」タブを選択してレイアウトを「2列幅、両側相互」を選択します。
「送信」ボタンを押下して設定を保存します。
![subdomain_request_variables_1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/a8483eec-34a4-0544-dc37-91738271cebe.png)
4.再び「新規」ボタンを押下します。コンテナ内にコンテナを定義してフィールドの長さをページの左半分に表示させます。
![subdomain_request_variables_2_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/95e38702-9318-a167-b1f1-43c2c70204f1.png)
5.次のように設定います。項目「名前」は「質問」タブ内にあります。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|20|
|名前|domain_name_container_2|
![subdomain_request_variables_2_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/807a035d-39ac-184a-3b1c-580a6b684cdf.png)
6.2列に表示するように設定します。
「タイプ仕様」タブを選択して、レイアウトを「2列幅、両側交互」を選択します。
「送信」ボタンを押下して設定を保存します。
![subdomain_request_variables_2_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/71455e00-5566-ce76-d8b3-57ac5d241a4e.png)
7.サブドメインフィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_3_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d22f7197-b118-8c93-5464-d428c661f4b0.png)
8.次の設定を行います。設定した後に「送信」ボタンを押下して保存します。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|30|
|質問|Subdomain name|
![subdomain_request_variables_3_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/0ec13592-4eed-2b11-fa03-498483675942.png)
9.ルートドメインの選択フィールドを設定します。本例ではルードドメインは「ozawa-hi.com」又は「ozawa-hi.co.jp」にします。必要に応じて変更してください。
「新規」ボタンを押下します。
![subdomain_request_variables_4_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/3a259e41-ac88-42a7-df23-7b90d799ba35.png)
10.次の設定を行います。

|項目|値|
|---|---|
|タイプ|複数選択肢|
|必須|チェック|
|順番|40|
|質問|Root domain|
![subdomain_request_variables_4_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/77823b67-eff5-b178-5f9b-2d6ccab516da.png)
11.サブドメインの右側に表示するようにします。
「タイプ仕様」タブを選択して選択肢の表示方向を「交差」にします。
![subdomain_request_variables_4_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/5f31dca4-ac83-2663-4ecc-5a1805aae617.png)
12.必須フィールドにしたのでデフォルト値を設定します。本例ではルートドメインのデフォルトは「ozawa-com」にします。
「デフォルト値」タブを選択してデフォルト値に「ozawa-hi.com」を入力します。
![subdomain_request_variables_4_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/3d09b290-c640-bc9a-fb70-007628db477e.png)
13.選択肢を定義する必要があるので一旦保存します。
ヘッダ領域を右クリックして「保存」を選択します。ページの下に「質問の選択肢」が表示されます。
![subdomain_request_variables_4_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/b5d3bc59-34d3-1397-cfa0-57ff1e2a9bb4.png)
14.選択肢を作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_4_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/6f4bd835-a60c-8ac7-6610-a522f9be2a84.png)
15.テキスト及び値に「ozawa-hi.com」を入力して「送信」ボタンを押下します。
![subdomain_request_variables_4_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/44ac5302-637e-7974-09bb-eb6f26c0244d.png)
16.選択肢「ozawa-hi.co.jp」を作成します。
再び「新規」ボタンを押下します。
![subdomain_request_variables_4_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/ed6a2caf-516e-fecc-9240-22267782e7fd.png)
17.テキスト及び値に「ozawa-hi.co.jp」を入力して「送信」ボタンを押下します。
![subdomain_request_variables_4_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/04aaf073-33c5-f7d9-848e-be0ff5418e3c.png)
18.これでルードドメインフィールドの定義は終わります。
「更新」ボタンを押下してフォーム定義ページに戻ります。
![subdomain_request_variables_4_9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/30de9406-79c7-cfcc-5796-befdb0cc9b2d.png)
19.これでドメイン正義フィールドの定義は終了しましたのでコンテナを終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_5_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/23d9a534-7c49-b97e-81b6-85d0b300602d.png)
20.次のように定義した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|50|
![subdomain_request_variables_5_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d3b83f91-8fee-86a2-8f94-c6b6558bf19f.png)
21.コンテナを2つ定義したので2番目のコンテナも終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_6_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d216c9de-013e-2883-8b52-d7b983aff231.png)
22.次のように定義した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|51|
![subdomain_request_variables_6_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/ce98dd6c-ef32-2f6b-8b55-c367664cde13.png)
23.次にAWS DNSサーバ入力フィールドを作成します。2列表示にするためにコンテナを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_8_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/47097689-fd0a-0790-e4dd-a8ebcbc1ebda.png)
24.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|80|
|名前|aws_dns_servers_container_1|
![subdomain_request_variables_8_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/09c6563a-ca60-6fcb-87ea-bece2385f639.png)
25.2列表示します。
「タイプ仕様」タブを選択してレイアウトを「2列幅、両側交互」を選択します。
「送信」ボタンを押下します。
![subdomain_request_variables_8_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/71c49036-a240-b96a-032d-d96e3a89518c.png)
26.フィールドをページの左半分に表示されるために再びコンテナを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_9_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d359ad68-0756-3c7b-84fe-5323b7083962.png)
27.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|タイトル表示|チェック|
|順番|90|
|質問|AWS DNS Server|
|名前|aws_dns_servers_container_2|
![subdomain_request_variables_9_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/78770d11-19f9-1cf1-65a6-1e0c9f21e372.png)
28.2列表示の設定を行います。
「タイプ仕様」タブを選択して、レイアウトを「2列幅、両側交互」を選択します。
設定した後は「送信」ボタンを押下します。
![subdomain_request_variables_9_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/ff568f87-7cb7-39aa-b5e7-ed7dc14fba0b.png)
29.AWS DNS Serverフィールドを4つ定義します。
「新規」ボタンを押下します。
![subdomain_request_variables_10_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d52b6d69-6b14-bafe-7fed-1bf8c0d1890a.png)
30.次の設定を行います。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|100|
|質問|AWS DNS Server 1|
![subdomain_request_variables_10_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c1bc22ca-65df-d6db-5692-29d3ed836108.png)
31.ドメイン名チェックを有効にします。
「タイプ仕様」タブを選択して妥当性確認用の正規表現を最初に定義した「FQDN」に設定します。
設定した後に「送信」ボタンを押下して設定内容を保存します。
![subdomain_request_variables_10_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/6475375a-ba55-5e33-5efe-dc344ad39e54.png)
32.同じようにAWS DNS Server 2フィールドも定義します。
「新規」ボタンを押下します。
![subdomain_request_variables_11_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/57bbe5c8-31b5-bfbf-4cd4-472157f6b06d.png)
33.次の設定を行います。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|110|
|質問|AWS DNS Server 2|
![subdomain_request_variables_11_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/553fce38-8151-7af0-971c-962dbbdeb450.png)
34.ドメイン名チェックを有効にします。
「タイプ仕様」タブを選択して妥当性確認用の正規表現を最初に定義した「FQDN」に設定します。
設定した後に「送信」ボタンを押下して設定内容を保存します。
![subdomain_request_variables_11_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c41d774a-5499-20f0-435e-f2dbe3f14acb.png)
35.同じようにAWS DNS Server 3フィールドも定義します。
「新規」ボタンを押下します。
![subdomain_request_variables_12_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/9bc32a50-1907-a1c1-017d-e9dec4175bc6.png)
36.次の設定を行います。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|120|
|質問|AWS DNS Server 3|
![subdomain_request_variables_12_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4ab37cf7-4275-5135-a0ae-95ff710087d2.png)
37.ドメイン名チェックを有効にします。
「タイプ仕様」タブを選択して妥当性確認用の正規表現を最初に定義した「FQDN」に設定します。
設定した後に「送信」ボタンを押下して設定内容を保存します
![subdomain_request_variables_12_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/8281a3fb-1be4-344e-e64e-2cdcd3ef7e5a.png)
38.同じようにAWS DNS Server 4フィールドも定義します。
「新規」ボタンを押下します。
![subdomain_request_variables_13_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d703026a-1415-8695-a6a5-ef96b4a2c886.png)
39.次の設定を行います。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|130|
|質問|AWS DNS Server 4|
![subdomain_request_variables_13_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/1c9a404c-1db5-f98c-3681-304824a39398.png)
40.ドメイン名チェックを有効にします。
「タイプ仕様」タブを選択して妥当性確認用の正規表現を最初に定義した「FQDN」に設定します。
設定した後に「送信」ボタンを押下して設定内容を保存します
![subdomain_request_variables_13_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c18f7b44-48c5-c0cb-8fff-a7ac5186d09e.png)
41.これでAWS DNSサーバフィールドの定義は終了しますのでコンテナを終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_15_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4ffefd37-0668-a5c4-2ff8-5e80d606b4c8.png)
42.次のように設定した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|150|
![subdomain_request_variables_15_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c4fdddba-4825-4940-14cc-e7b2022bab5f.png)
43.2つ目のコンテナも終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_16_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/685b241c-c724-997b-3354-f6adbd1d6cc6.png)
44.次のように設定した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|160|
![subdomain_request_variables_16_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/ae77194e-9d63-db99-7c3b-ed135411bfae.png)
45.サブドメインを利用目的の説明入力フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_20_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/b32200b1-cfa1-459e-165a-ff4a3dc5b680.png)
46.次の設定を行います。

|項目|値|
|---|---|
|タイプ|複数行テキスト|
|必須|チェック|
|順番|200|
|質問|Reason to have subdomain|
![subdomain_request_variables_20_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/918961a0-52b1-614f-0dd8-d140fb81b741.png)
47.フィールド幅を短くします。
「タイプ仕様」タブを選択して変数の幅を「50%」にします。
設定した後に「送信」ボタンを押下します。
![subdomain_request_variables_20_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4bdba2ff-2997-a3be-3144-b79d9180b89e.png)
48.利用予定開始日フィールドを作成します。
開始日と終了日を並べで表示するためにコンテナを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_30_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c33364ab-dd6a-0481-cc3c-b4ca246a337f.png)
49.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|300|
|名前|planned_start_end_dates_container_1|
![subdomain_request_variables_30_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/23377438-b9fd-1aed-c397-377841ac63dd.png)
50.2列に表示するように設定します。
「タイプ仕様」タブを選択してレイアウトを「2列幅、両側交互」を選択します。
設定した後に「送信」ボタンを押下します。
![subdomain_request_variables_30_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/052ab2f7-ab59-076b-2cb2-143145fbf4e8.png)
51.ページの左半分に表示させるために再びコンテナを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_31_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/68ef9ca9-8ee7-31d7-7959-2da24a8819e6.png)
52.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|310|
|名前|planned_start_end_dates_container_2|
![subdomain_request_variables_31_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/ebb42af5-6b0a-0034-3f78-ada612eff6fd.png)
53.2列に表示するように設定します。
「タイプ仕様」タブを選択してレイアウトを「2列幅、両側交互」を選択します。
設定した後に「送信」ボタンを押下します。
![subdomain_request_variables_31_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/983d7432-089f-bafb-0b62-1c1cf60b33c1.png)
54..利用予定開始日フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_32_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/2e1d1344-637d-8a96-295a-6f5e1c845921.png)
55.次の設定を行います。

|項目|値|
|---|---|
|タイプ|日付|
|必須|チェック|
|順番|320|
|質問|Planned usage start date|
![subdomain_request_variables_32_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/26f7c866-2612-0063-c98e-5fc00550121f.png)
56.デフォルトに今日の日付を設定します。
「デフォルト値」タブを選択して、デフォルト値に「now」を入力します。
入力後に「送信」ボタンを押下します。
![subdomain_request_variables_32_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/15a29edb-d3db-50e9-9f61-097927c23edd.png)
57.利用予定終了フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_33_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/7434634d-3a36-bbf7-ff27-397f26090ece.png)
58.次の設定を行います。

|項目|値|
|---|---|
|タイプ|日付|
|必須|チェックなし|
|順番|330|
|質問|Planned usage end date|
![subdomain_request_variables_33_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/df5a57a7-8d12-3a8f-9913-b093a6c72646.png)
59.これで利用予定日の設定は終了したのでコンテナを終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_35_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/a9570be8-4b1e-74ea-e428-cd4686821dfa.png)
60.次の設定を行います。入力した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|350|
![subdomain_request_variables_35_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d88591cf-41ee-0985-c76c-088d4f3357b7.png)
61.2番目のコンテナも終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_36_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/e2d45563-a23b-4622-7ff8-d8f2df875ccb.png)
62.次の設定を行います。入力した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|360|
![subdomain_request_variables_36_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/146a73bc-195d-c76a-77e2-3d12ee940b16.png)
63.責任者フィールドを作成します。責任者フィールドの右側に管理部署を表示させます。
そのために再びコンテナを作成します。
![subdomain_request_variables_50_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/073c462d-8817-598f-9cdd-997327db67e2.png)
64.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|500|
|名前|responsible_container1|
![subdomain_request_variables_50_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/494f8d36-ba6c-fb2a-1f58-f01be1a09df3.png)
65.フィールド管理部署に右の表示するのうに設定します。
「タイプ仕様」タブを選択して、レイアウトを「2列幅、両側交互」に設定します。
設定後に「送信」ボタンを押下します。
![subdomain_request_variables_50_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/8be8dcd3-2850-c2e1-42de-3a49da47a926.png)
66.再びコンテナを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_51_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/8cc36d66-edf0-088d-cb89-980aacbc11a3.png)
67.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ開始|
|順番|510|
|名前|responsible_container2|
![subdomain_request_variables_51_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/aae13372-2afc-f756-768c-b341d0f3d092.png)
68.フィールド管理部署に右の表示するのうに設定します。
「タイプ仕様」タブを選択して、レイアウトを「2列幅、両側交互」に設定します。
設定後に「送信」ボタンを押下します。
![subdomain_request_variables_51_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d0d5f125-b91c-eb8f-070f-db26277e70d6.png)
69.責任者選択フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_52_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/af157dfd-abd0-e26f-060e-9e4bd1fdca60.png)
70.次の設定を行います。

|項目|値|
|---|---|
|タイプ|選択ボックスをルックアップ|
|必須|チェック|
|順番|520|
|質問|Responsible|
![subdomain_request_variables_52_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/51cf46b1-adf2-c7bb-e448-433349b8fb1b.png)
71.ServiceNowのユーザテーブルを参照するように設定します。
「タイプ仕様」タブを選択して、次の設定を行います。
|項目|値|
|---|---|
|テーブルからルックアップ|ユーザー[sys_user]|
|ルックアップ値フィールド|名前|
|参照修飾子|active=true^departmentISNOTEMPTY^internal_integration_user=false^web_service_access_only=false^EQ|
![subdomain_request_variables_52_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/d4d5944a-dc23-d1b7-208c-75cdebb7f62e.png)
72.デフォルトでログインユーザを選択します。
「デフォルト値」タブを選択してデフォルト値に「javascript: gs.getUserDisplayName();」を入力します。
![subdomain_request_variables_52_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/5c3d4ada-24e0-e4b1-98af-c0e3619346cf.png)
73.管理者部門フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_53_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/59d89e3a-5962-7ad5-6f22-d0ff97d6f07f.png)
74.次の設定を行います。

|項目|値|
|---|---|
|タイプ|参照|
|順番|530|
|質問|Responsible department|
![subdomain_request_variables_53_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/8205e33e-6cd7-fcea-eb15-912138202494.png)
75.部門名を表示するようにします。
「タイプ仕様」タブを選択して項目「参照」を「部門[cmn_department]」を選択します。
![subdomain_request_variables_53_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/1db6a6a0-f89f-23eb-4029-82056f346855.png)
76.デフォルトでログインユーザの部門を表示します。
「デフォルト値」タブを選択してデフォルト値に「javascript: gs.getUser().getRecord().getValue('department');」を入力します。
![subdomain_request_variables_53_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/02e0bc53-ea52-e593-7025-28be108bbc7b.png)
77.責任者用コンテナを終了します。
「新規」ボタンを押下します。
![subdomain_request_variables_55_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/634a1eb0-1dc2-ff05-6105-5f3ee6bdc10a.png)
78.次の設定を行います。

|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|550|
![subdomain_request_variables_55_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/4bd02acf-6a08-2fea-6a6c-647672d5138d.png)
79.再びコンテナを修正します。
「新規」ボタンを押下します。
![subdomain_request_variables_56_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/fa7f651d-f160-babb-4d35-5406bebacb9d.png)
80.次の設定を行います。
|項目|値|
|---|---|
|タイプ|コンテナ終了|
|順番|560|
![subdomain_request_variables_56_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/e0b04cdb-b94f-d6b3-8d1d-7da3bc911149.png)
81.開発者選択フィールドを作成します。
「新規」ボタンを押下します。
![subdomain_request_variables_60_0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/02f1f82a-85fe-c880-8070-e21d1e333dbb.png)
82.次の設定を行います。

|項目|値|
|---|---|
|タイプ|リストコレクタ|
|必須|チェック|
|順番|600|
|質問|Developers|
![subdomain_request_variables_60_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/9e231ea3-3add-bbe3-afa6-ae357ccb8f01.png)
83.ユーザテーブルを参照するように設定します。
「タイプ仕様」タブを選択して次の設定を行います。設定した後に「送信」ボタンを押下します。これで変数（フィールド）の設定は終了です。

|項目|値|
|---|---|
|変数の幅|50%|
|リストテーブル|ユーザー[sys_user]|
|参照修飾子|active=true^departmentISNOTEMPTY^internal_integration_user=false^web_service_access_only=false^EQ|
|変数の属性|glide_list|
![subdomain_request_variables_60_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/3cb511c2-2a6e-d105-d402-40290c8c30ec.png)

###変数セットの作成
ServiceNowに未登録のメーリングアドレスを通知のために登録できるようにします。複数のメーリングリストを登録できるようにするために変数セットにします。
1.「変数セット」タブを選択して「新規」ボタンを押下します。
![subdomain_request_variableset_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/f1150a2d-24ae-523b-1322-00c16fac2c00.png)
2.複数行を登録できる変数セットを定義します。
「Add」ボタンを押下します。
![subdomain_request_variableset_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/fc8e173d-61f8-7774-45c4-55327a284bff.png)
3.次の設定を行います。

|項目|値|
|---|---|
|タイトル|Developer ML|
|内部名|developer_ml|
|順番|700|
![subdomain_request_variableset_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/85502bb5-0e8b-e10b-9184-c77e25e2a686.png)
4.設定を保存します。
ヘッダ領域を右クリックして「保存」を選択します。保存されるとページ下に「変数」を設定する項目が表示されます。
![subdomain_request_variableset_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/46034110-ccb8-fa68-78a4-157617f58000.png)
5.ML入力フィールドを作成します。
「変数」タブを選択して「新規」ボタンを押下します。
![subdomain_request_variableset_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/f55ee1ae-f7d6-2467-ee81-2548fe2bddc3.png)
6.次の設定を行います。

|項目|値|
|---|---|
|タイプ|1行テキスト|
|必須回答|チェック|
|順番|100|
|質問|ML name|
![subdomain_request_variableset_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/44654bb5-e8bb-4b0b-e24e-a3b04795e254.png)
7.正しいメールアドレスか検証するように設定します。
「タイプ仕様」タブを選択して、妥当性確認用の正規表現に「email」を選択します。
選択した後に「送信」ボタンを押下して設定を保存します。
![subdomain_request_variableset_7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/caa165f2-f085-e095-491a-3d975c3fcc9b.png)
8.これで変数セットの作成は終了です。
「更新」ボタンを押下して変数セットの設定を終了します。
![subdomain_request_variableset_8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/470e26eb-104d-3d68-5227-0ff5f8e4fd9b.png)

###表示テスト
フォームが正しく表示されるか確認します。
1.フォーム設定ページの右上の「試行」ボタンを押下します。
![subdomain_request_test_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c6eb989b-de9b-2954-af78-e260683e4248.png)
2.次のようなフォームが表示されるはずです。
![subdomain_request_test_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/6fe3a022-9e97-7a50-de61-ec7ccdaa82ac.png)

##UIポリシーの作成
責任者部署を読取り専用にします。
1.「カタログUIポリシー」タブを選択して、「新規」ボタンを押下します。
![subdomain_request_ui_policy_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/e66fcac6-1f81-3776-98dd-7a4f30d770f9.png)
2.簡単な説明に「Initialization」を入力します。
![subdomain_request_ui_policy_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/9770beb7-aaa5-49b2-324d-b4254fb391b2.png)
3.ヘッダ領域を右クリックして「保存」を選択します。保存されるとページ下に「カタログUIポリシーアクション」が表示されます。
「新規」ボタンを押下します。
![subdomain_request_ui_policy_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/30465e7b-5d1f-a4a6-fcd1-8361f47fa038.png)
4.アクションを追加します。
「新規」ボタンを押下します。
![subdomain_request_ui_policy_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/7efca6cd-8d18-b9ae-43c7-42bb7b842935.png)
5.次の設定を行います。設定後に「送信」ボタンを押下して保存します。これでUIポリシーの設定は終了です。

|項目|値|
|---|---|
|変数名|responsible_department|
|読み込み専用|True|
![subdomain_request_ui_policy_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/cda2b643-dbca-5940-1b81-9bea8a1dddf9.png)

##スクリプトインクルード（サーバ側スクリプトの作成）
クライアントスクリプトから呼び出さあれるサーバ側スクリプトを作成します。今回はユーザ部署を取得する関数を定義します。
1.アプリケーションナビゲータから「スクリプトインフルード」を検索して、選択します。
![subdomain_request_script_include_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/9dc42969-b403-afd5-fdfc-d4c9b51bc3de.png)
2.「[ServiceNow - クライアントスクリプトからテーブルレコードを参照する](https://qiita.com/htshozawa/items/74169038d649b9a83481)」で作成したスクリプトインクルード「GetUserInfo」を作成します。

2.1「新規」ボタンを押下します。
![subdomain_request_script_include_1_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/7a5cf0a8-4ca8-9c83-d21a-ecc6be4d7468.png)
2.2次のように設定した後に「送信」ボタンを押下します。

|項目|値|
|---|---|
|名前|GetUserInfo|
|クライアントコール可|チェック|
![subdomain_request_script_include_1_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/dc32573d-8299-1851-5e11-798bd5c58727.png)

```
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    getUserNameAndEmpNo: function() {
        var user_id = gs.getUserID();
        var grUser = new GlideRecord('sys_user'); //SystemNowのユーザテーブル（sys_id）を参照する
        if (grUser.get(user_id)) { //指定したユーザが存在するか確認
            return gs.getUserDisplayName() + '  [' + grUser.employee_number + ']'; //存在する場合はメールアドレスを返す
        }
        return ''; //存在しない場合は空文字を返す
    },

    getUserDept: function() {
        var user_id = this.getParameter('sysparm_user_id');
        var grUser = new GlideRecord('sys_user'); //SystemNowのユーザテーブル（sys_id）を参照する
        if (grUser.get(user_id)) { //指定したユーザが存在するか確認
            return grUser.department; //存在する場合はメールアドレスを返す
        }
        return ''; //存在しない場合は空文字を返す
    },
    type: 'GetUserInfo'
});
```



##クライアントスクリプトの作成
①ドメイン検証スクリプト、②終了日チェックスクリプト、③ユーザ部署表示スクリプトを作成します。
クライアントスクリプトは作成したサブドメインのカタログアイテムページから作成します。
アプリケーションナビゲータから「アイテムの管理」を検索するか、以前にお気に入りに登録されている場合はお気に入りから選択します。
![subdomain_request_client_script_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/c7b30b16-055e-b19e-4c82-6ca3244b0643.png)

###ドメイン名の検証
1.ページ下の「カタログクライアントスクリプト」タブを選択して、「新規」ボタンを押下します。
![subdomain_request_client_script_domain_name_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/599bde0d-f646-6e7e-2a6c-ba09c8a21360.png)
2.次の設定を行います。設定した後に「送信」ボタンを押下して設定を保存します。

|項目|値|
|---|---|
|名前|Validate domain name|
|UIタイプ|すべて|
|タイプ|onChange|
|変数名|subdomain_name|
![subdomain_request_client_script_domain_name_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/26b79923-39c0-a4f3-9efb-ac1126d5606f.png)
スクリプト（必要に応じてドメイン名を変更します）

```
    var re = /^((?:(?:(?:\w[.\-+]?)*)\w)+)((?:(?:(?:\w[.\-+]?){0,62})\w)+)\.ozawa-hi\.((com|co.jp))$/; //必要に応じてドメイン名を変更
	var fqdn = newValue + '.' + g_form.getValue('root_domain');
	if (!re.test(fqdn)) {
        g_form.showFieldMsg('subdomain_name', 'Invalid subdomain name', 'error');
        return false;
    }
    return true;
```
###終了日付チェック
終了日付が入力された場合は、開始日付より後の日付か確認する。
1.「新規」ボタンを押下します。
![subdomain_request_client_script_end_date_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/975ec02d-94c7-7cc4-5ddf-a0f23e12b66c.png)
2.次の設定を行います。設定を行われた後は「送信」ボタンを押下して設定を保存します。

|項目|値|
|---|---|
|名前|Check end date > start date|
|UIタイプ|すべて|
|タイプ|onChange|
|変数名|planned_usage_end_date|
スクリプト

```
    var startDate = new Date(g_form.getValue('planned_usage_start_date'));
    var endDate = new Date(newValue);
    if (startDate >= endDate) {
        g_form.showFieldMsg('planned_usage_end_date', 'Please select a date on or later than the start date', 'error');
	}
```
![subdomain_request_client_script_end_date_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/82f49ec2-4b05-1c7a-8e03-3e0e38fb62fa.png)


###ユーザ部門取得
ユーザ部署名をスクリプトインクルードから取得して表示するクライアントスクリプトを作成します。
1.「新規」ボタンを押下します。
![subdomain_request_client_script_department_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/7807cfd4-adce-50bb-8999-cf32c5d71d88.png)
2.次の設定を行います。設定を行われた後は「送信」ボタンを押下して設定を保存します。

|項目|値|
|---|---|
|名前|Update user department|
|UIタイプ|すべて|
|タイプ|onChange|
|変数名|responsible|
スクリプト

```
    var ajax = new GlideAjax('GetUserInfo'); //Ajaxを利用してサーバを呼び出す。引数にサーバスクリプトファイル名を渡す
    ajax.addParam('sysparm_name', 'getUserDept'); //呼び出すメソッド名を指定
    ajax.addParam('sysparm_user_id', newValue); //選択されたユーザのsys_idを設定する
    ajax.getXMLAnswer(function(answer) { //Ajax呼び出し
        if (answer.length > 0) { //メールアドレスを取得できたかチェック
            g_form.setValue('responsible_department', answer); //   結果をメールフィールドに設定する
        }
    });
```
![subdomain_request_client_script_department_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/073f7eec-92cf-3611-febd-4c0809df13df.png)

##途中テスト
スクリプトが正常に動作するか確認します。
1.ページ右上の「試行」ボタンを押下します。
![subdomain_request_catalog_item_test_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/215b0bf5-fe29-21cc-774d-4657cd2f2679.png)
2.間違えた値を入力してエラーメッセージが表示されるか確認します。
![subdomain_request_catalog_item_test_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/477baa9b-f5b7-80e0-b757-d15d50f2b89a.png)

##カテゴリ登録
ポータルから呼び出せるようにカテゴリを指定します。
1.項目カテゴリの右にある錠前アイコンをクリックする。
![subdomain_request_category_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/acb7a26b-5447-402c-9b51-eada2faf0ee7.png)
2.虫眼鏡アイコンをクリックする。ポップアップが表示されます。
![subdomain_request_category_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/44926943-d50c-a846-ba1b-df43c4dc202f.png)
3.「サービスカタログ」を選択します。カタログに「サービスカタログ」が追加されたことを確認します。
![subdomain_request_category_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/7ae92b8e-c3b7-729c-7a7f-1e788c08a133.png)
4.項目「カテゴリ」の虫眼鏡アイコンを選択します。
![subdomain_request_category_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/2e9185ab-1050-e3f0-80cc-88ec60a4f3b8.png)
5.フォームを登録するカテゴリを指定します。今回は「サービス」を選択します。
![subdomain_request_category_5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/0bbcf5eb-4560-8543-f1ff-3e111469f705.png)
6.カテゴリに「サービス」が追加されたことを確認した後に「更新」ボタンを押下して設定を保存します。これでカテゴリの登録は終了です。
![subdomain_request_category_6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/12968d56-8b02-c141-fb94-e672240fd1af.png)

#ポータルでの表示
ポータルで正しく表示されることを確認します。
1.アプリケーションナビゲータから「ポータル」を検索して、「サービスポータルホーム」を選択します。
![subdomain_request_portal_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/8d259e7b-2e99-dd8d-625a-75fc75bd6f0c.png)
2.「要求内容」を選択します。
![subdomain_request_portal_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/fadff58b-762e-b6bd-fcc6-0be5bf08abb4.png)
3.カテゴリから「オフィス」＞「サービス」を選択し、「Subdomain Request」を選択します。
![subdomain_request_portal_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/50dbb1c0-cd7f-430f-08ac-392e7452b6da.png)
4.フォームが正しく表示することを確認します。データを入力して動作確認も行います。
![subdomain_request_portal_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698027/105849e0-adb8-27c2-86ea-15032b22c94f.png)

以上