0
0

More than 1 year has passed since last update.

【OpsRamp】承認ボタンでカスタムステータスの自動変更(サービスデスク-ワークフロー)

Last updated at Posted at 2022-10-21

概要

実現できること

BusinessUser(顧客利用想定)が承認ボタンでチケットをUpdateした際に「承認ステータス」が自動で次に進む。
進んだことがチケットのコメント欄に自動で記載される。
(顧客は「承認ステータス」のフィールドは編集できない。)

1.チケットの名前が「Ticket aprv」であること。(こちらは条件は変更できます。)
2.承認ボタンにチェックを付ける。
3.チケットを更新する。
4.承認ステータスが1つ次のものに遷移する。
今回だと、上記の手順を実施するたび、「作業[前] 承認-待ち」->「作業[前] 承認-済み」->「作業[後] 承認-待ち」->「作業[後] 承認-済み」と遷移していきます。

必要な設定

BusinessUser用のPermissionSet-Role作成
管理用ユーザーはClientAdminでOK
BusinessUser作成
CustomField作成
CustomIntegration作成(2つ)
Endpoint用とTask実行用
Workflow作成

ざっくり流れ

1, Ticketで「承認ボタン」がチェックされチケットが更新される。
2, Workflowがチケットの更新をトリガーに起動する。
3, Workflowが「承認ボタン」をアンチェックし、ステータスを次のものに変更し、チケットにその内容をコメントする。

詳細設定

BusinessUser用のパーミッションセットの作成

Setup>Accounts>パーミッションセット

項目
Name 任意
デバイス デバイス参照
レポート レポート参照
インシデント インシデント編集
サービスリクエスト サービスリクエスト作成

BusinessUser用のロールの作成

Setup>Accounts>ロール
記入のない項目はすべてデフォルトでOK

項目
Name 任意
Visibility to Resources All Resources
Selected Permission Sets 作成したパーミッションセットを選択

BusinessUser用のユーザーの作成

Setup>Accounts>ユーザー
記入のない項目はすべてデフォルトでOK

項目
Name 任意
Account Type Business User
以下すべての必須項目 任意
ロールの割当 作成したロールを選択

カスタムフィールドの作成

Setup>Service Desk>Custom Forms
記入のない項目はすべてデフォルトでOK
上部タブ「Incident」を選択

右側メニューからチェックボックスを選択

項目
Display Label Approval 
Visible to Business User チェック有効

右側のメニューからドロップダウンリストを選択

項目 Value Display Title デフォルトチェック
Display Label ApprovalStatus - - -
Dropdown Options - default 作業[前] 承認-待ち チェック入れる
Dropdown Options - Approval1 作業 [前] 承認-済み -
Dropdown Options - Approval2 作業 [後] 承認-待ち -
Dropdown Options - Approval3 作業 [後] 承認-済み -

それぞれ作成後、編集で以下を変更

項目 値(変更前) 値(変更後)
Display Label Approval 【承認ボタン】(承認の際にチェックボックスを有効にしてチケットを更新してください。)
項目 値(変更前) 値(変更後)
Display Label ApprovalStatus 承認ステータス

Custom Integrationの作成01

Setup>インテグレーション>インテグレーション>利用可能なインテグレーション>Other>Custom Integration
記入のない項目はすべてデフォルトでOK

  1. 任意の名前を入力して作成
  2. 「1. Authentication」の「保存」をクリック
  3. 画面に表示される以下を控えてください。
    Tenant Id(以降この値を TENANTID と略します。)
    Key(以降この値を KEY と略します。)
    Secret(以降この値を SECRET と略します。)
    SECRETは画面を移動するともう確認出来ません。コピーアイコンでクリップボードにコピーして保存してください。

Custom Integrationの作成02

Setup>インテグレーション>インテグレーション>利用可能なインテグレーション>Other>Custom Integration
記入のない項目はすべてデフォルトでOK

  1. 任意の名前を入力
  2. 「Category」を「Process Automation」にして「Install」をクリック

カスタムフィールド確認

先程作成したカスタムフィールドはOpsRamp内で固有のIDをもっています。
後ほど使うためそちらを取得して控えます。

  1. Command Center>Service Desk>左上部プラスアイコン>インシデント、に移動

  2. 件名と説明に任意の文字列を入れ、「作成」をクリック

  3. 「INC」から始まるインシデントのIDを控える。(例:INC0017332098)

  4. 下記のエンドポイントをGETします。
    「接続しているOpsRampのURL」/api/v2/tenants/[TENANTID]/incidents/「3番で控えたチケットID」
    例) https://test.app.vistanet.jp/api/v2/tenants/11b704b9-d7a0-955e-d8c708b1/incidents/INC0017332098
    APIの基本的な部分については下記を参照してください。
    https://develop.opsramp.com/v2
    今回のエンドポイントの詳細は下記です。
    https://develop.opsramp.com/v2/api/tickets/clientid-ticketentity-ticketid

  5. レスポンスで返ってきたPayload内の以下の部分を確認してください。
    確認部分を【】で記載しています。4箇所です。
    リストとしてでてくるので、既存で作成しているカスタムフィールドも表示されます。
    その際はこのカスタムフィールドの下から2つがこれに該当します。
    値1、2の名前で判断してください。(新規作成の名前が必ず含まれています。)

	"customFields": [
		{
			"id": "UDF0000100323",【ここに表示されるIDを控えてください。(以下 ID1 )】
			"classCode": "INCIDENT",
			"displayLabel": "【承認ボタン】( 承認の際にチェックボックスを有効にしてチケットを更新してください。)",
			"name": "approval_100333",【ここに表示される数字を控えてください。(以下 値1 )】
			"fieldType": "TYPE_CHECKBOX",
			"mandatory": false,
			"editable": true,
			"description": "",
			"options": [
				{
					"label": "yes",
					"value": "1"
				}
			],
			"value": "0",
			"defaultValue": "0",
			"customField": true
		},
		{
			"id": "UDF0000100328", 【ここに表示されるIDを控えてください。(以下 ID2 )】
			"classCode": "INCIDENT",
			"displayLabel": "承認ステータス",
			"name": "approvalstatus_100328",【ここに表示される名前を控えてください。(以下 値2 )】
			"fieldType": "TYPE_DROPDOWN",
			"mandatory": false,
			"editable": true,
			"description": "",
			"options": [
				{
					"label": "作業[前] 承認-待ち",
					"value": "default"
				},
				{
					"label": "作業 [前] 承認-済み",
					"value": "Approval1"
				},
				{
					"label": "作業 [後] 承認-待ち",
					"value": "Approval2"
				},
				{
					"label": "作業 [後] 承認-済み",
					"value": "Approval3"
				}
			],
			"value": "default",
			"defaultValue": "default",
			"selectedOption": {
				"label": "作業[前] 承認-待ち",
				"value": "default"
			},
			"customField": true
		}
	]

「Custom Integrationの作成02」で作成したIntegrationにイベントを作成

Setup>インテグレーション>インテグレーション>「Custom Integrationの作成02」で作成したIntegrationを選択
記入のない項目はすべてデフォルトでOK

  1. 「2. Integration Events」で「作成」をクリック
    ここに記載するイベントをすべて作成してください。
項目 Please enter name Please enter key Please enter value
名前 GetIncident - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Get - - -
Headers - Content-Type - application/json
Headers - Accept - application/json
Responce - - id $id
Responce - - Approvalid $customFields[0].name
Responce - - ApprovalValue $customFields[0].value
Responce - - ApprovalStatus $customFields[1].value
Responce - - ApprovalLabel $customFields[1].selectedOption.label
Responce - - CusomFieldName02 $customFields[1].displayLabel

警告
この「Responce」の値の[0]や[1]の数字は、インシデントに対してすでに別のカスタムフィールドが作成されている場合、その数の分だけ数字を増やしてください。
例) すでに別のカスタムフィールドを2つ作成している場合。上記設定の最後のcustomFields[1].displayLabelでしたら、customFields[3].displayLabelと [ ] 内の数字を2足してください。



項目 Please enter name Please enter key Please enter value
名前 DiableApprovalButton - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Post - - -
Headers - Content-Type - application/json
Payload 下記を入れてください。 - - -

先程「カスタムフィールド確認」で確認した値に置換してください。

{
	"customFields": [
		{
			"id": "ID1",
			"name": "値1",
			"value": "0"
		}
	]
}


項目 Please enter name Please enter key Please enter value
名前 Default to Approval1 - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Post - - -
Headers - Content-Type - application/json
Payload 下記を入れてください。 - - -

先程「カスタムフィールド確認」で確認した値に置換してください。

{
	"customFields": [
		{
			"id": "ID2",
			"name": "値2",
			"value": "Approval1"
		}
	]
}


項目 Please enter name Please enter key Please enter value
名前 Approval1 to Approval2 - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Post - - -
Headers - Content-Type - application/json
Payload 下記を入れてください。 - - -

先程「カスタムフィールド確認」で確認した値に置換してください。

{
	"customFields": [
		{
			"id": "ID2",
			"name": "値2",
			"value": "Approval2"
		}
	]
}


項目 Please enter name Please enter key Please enter value
名前 Approval2 to Approval3 - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Post - - -
Headers - Content-Type - application/json
Payload 下記を入れてください。 - - -

先程「カスタムフィールド確認」で確認した値に置換してください。

{
	"customFields": [
		{
			"id": "ID2",
			"name": "値2",
			"value": "Approval3"
		}
	]
}


項目 Please enter name Please enter key Please enter value
名前 Approval3 to Approval4 - - -
On Incident - - -
Endpoint URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/api/v2/tenants/[TENANTID]/incidents/$incident.uuid
- - -
Notification Type REST API - - -
認証タイプ OAUTH2 - - -
Grant Type Client Credentials - - -
Access Token URL " [] "内を置換してください。
https://[OpsRampにログインした際のURL(vistanet.jpまで)]/auth/oauth/token
- - -
key KEY - - -
Secret SECRET - - -
Web Method Post - - -
Headers - Content-Type - application/json
Payload 下記を入れてください。 - - -

先程「カスタムフィールド確認」で確認した値に置換してください。

{
	"customFields": [
		{
			"id": "ID2",
			"name": "値2",
			"value": "Approval4"
		}
	]
}

ワークフローの作成

Automation>Process Definitions> + NEW
記入のない項目はすべてデフォルトでOK
任意の名前を「Name」に入力してください。以下は各タスクの作成になります。
※特に記載のない場合、直前に出てきた「次に記載するTask/またはGateway」と
「その次に出てくるTask/またはGateway」とをコネクトツールでつなげてください。

startevent(アラート発生)

記入のない項目はすべてデフォルトでOK
ここではインシデントの件名が”Ticket aprv”であった場合、
このWorkflowを開始する。

項目
メニューから右を選択 Create StartEvent
スパナアイコンで右を選択 Signal Start Event
Name start
ID 自動入力
Configuration Incident
Configuration2 Updated
Filter Criteria $subject CONTAINS "Ticket aprv"

getIncident

記入のない項目はすべてデフォルトでOK
ここではインシデントの詳細情報を入手する

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name getIncident
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event GetIncident
Input $start

Gateway 01

記入のない項目はすべてデフォルトでOK
ここでは分岐用のGatewayを作成する

項目
メニューから右を選択 Create Gateway
Name GW01
ID 自動入力

end

記入のない項目はすべてデフォルトでOK
ここでは終点のEndEventを作成する

項目
メニューから右を選択 Create EndEvent
Name end
ID 自動入力

Global Connect 0

記入のない項目はすべてデフォルトでOK
ここではGW01からendまでの経路を作成する
コネクトをクリックしてスパナアイコンから「Default Flow」にしてください。

項目
メニューから右を選択 Activate the Global Connect tool
始点 GW01
終点 end
Name 0
ID 自動入力
Flowのタイプ Default Flow

setButton0

記入のない項目はすべてデフォルトでOK
ここでは【承認ボタン】のチェックを外します

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name setButton0
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event DiableApprovalButton
Input $start

Global Connect 1

記入のない項目はすべてデフォルトでOK
ここではGW01からsetButton0までの経路を作成する

項目
メニューから右を選択 Activate the Global Connect tool
始点 GW01
終点 setButton0
Name 1
ID 自動入力
Flowのタイプ Sequence Flow
Condition $getIncident.ApprovalValue = "1"

Gateway Status

記入のない項目はすべてデフォルトでOK
ここでは分岐用のGatewayを作成する

項目
メニューから右を選択 Create Gateway
Name Status
ID 自動入力

Global Connect 0

記入のない項目はすべてデフォルトでOK
ここではStatusからendまでの経路を作成する
コネクトをクリックしてスパナアイコンから「Default Flow」にしてください。

項目
メニューから右を選択 Activate the Global Connect tool
始点 Status
終点 end
Name 0
ID 自動入力
Flowのタイプ Default Flow

defaultToApproval1

記入のない項目はすべてデフォルトでOK
ここでは【承認ステータス】のValueをdefaultからApproval1に変更します。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name defaultToApproval1
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event Default to Approval1
Input $start

Global Connect default

記入のない項目はすべてデフォルトでOK
ここではStatusからDefault to Approval1までの経路を作成する

項目
メニューから右を選択 Activate the Global Connect tool
始点 Status
終点 Default to Approval1
Name default
ID 自動入力
Flowのタイプ Sequence Flow
Condition $getIncident.ApprovalStatus = "default"

Approval1To2

記入のない項目はすべてデフォルトでOK
ここでは【承認ステータス】のValueをApproval1からApproval2に変更します。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name Approval1To2
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event Approval1 to Approval2
Input $start

Global Connect Approval1

記入のない項目はすべてデフォルトでOK
ここではStatusからApproval2までの経路を作成する

項目
メニューから右を選択 Activate the Global Connect tool
始点 Status
終点 Approval1 to Approval2
Name Approval1
ID 自動入力
Flowのタイプ Sequence Flow
Condition $getIncident.ApprovalStatus = "Approval1"

Approval2To3

記入のない項目はすべてデフォルトでOK
ここでは【承認ステータス】のValueをApproval2からApproval3に変更します。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name Approval2To3
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event Approval2 to Approval3
Input $start

Global Connect Approval2

記入のない項目はすべてデフォルトでOK
ここではStatusからApproval2までの経路を作成する

項目
メニューから右を選択 Activate the Global Connect tool
始点 Status
終点 Approval2 to Approval3
Name Approval2
ID 自動入力
Flowのタイプ Sequence Flow
Condition $getIncident.ApprovalStatus = "Approval2"

Approval3To4

記入のない項目はすべてデフォルトでOK
ここでは【承認ステータス】のValueをApproval3からApproval4に変更します。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name Approval3To4
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event Approval3 to Approval4
Input $start

Global Connect Approval3

記入のない項目はすべてデフォルトでOK
ここではStatusからApproval2までの経路を作成する

項目
メニューから右を選択 Activate the Global Connect tool
始点 Status
終点 Approval3 to Approval4
Name Approval3
ID 自動入力
Flowのタイプ Sequence Flow
Condition $getIncident.ApprovalStatus = "Approval3"

getIncident2

記入のない項目はすべてデフォルトでOK
ここではインシデントの詳細情報を入手する。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name getIncident2
ID 自動入力
Service REST Web Service
Integration 「Custom Integrationの作成02」で作成したIntegration名
Event GetIncident
Input $start

タスクの結合

Global Connectツールで下記それぞれ線でつなげてください。
defaultToApproval1 -> getIncident2
Approval1ToApproval2 -> getIncident2
Approval2ToApproval3 -> getIncident2
Approval3ToApproval4 -> getIncident2

UpdateIncident

記入のない項目はすべてデフォルトでOK
ここではインシデントに自動対応した内容をコメントします。

項目
メニューから右を選択 Create Task
スパナアイコンで右を選択 Service Task
Name UpdateIncident
ID 自動入力
Service Platform Service
Task Update Incident
Incident Unique Id $start.incident.uuid
Responce $getIncident2.CusomFieldName02 : $getIncident2.ApprovalLabel

最後にUpdateIncidentとendをつなげて完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0