Digital Workplace(DWP) Service Requests
BMC Helix SDIM is certified for BMC Helix ITSM version 21.3 and now supports Digital Workplace (DWP) Service Request.
Prerequisites
For more information on the BMC Helix Digital Workplace Catalog REST APIs, see the Endpoints in the BMC Helix Digital Workplace Catalog REST API page.
-
Create a Service Request Definition / Catalog or use an existing one, create a Workflow, and create a Questionnaire based on the workflow as a part of Service Request Definition.
-
Create a dummy Service Request to get the IDs of the questionnaire associated with a particular ServiceId.
-
Execute the following REST APIs to get the values for the Service Request Payload:
-
Use the following API to fetch the serviceId (service/definition IDs) in the BMC Helix ITSM 21.3 environment:
GET https://{{server}}/api/myit-sb/services
, wheremyit-sb
is the default scope. -
Use the following API to initiate a Service Request:
POST https://{{server}}/api/myit-sb/requests
, wheremyit-sb
is the default scope.Request Body:
Copy{
"serviceId": "<Service Definition ID>"
} -
The Service request Id received in "Get Services List" API should be added as "serviceId" in "Initiate a Service Request" API.
GET https://{{server}}/api/myit-sb/requests/<Request ID>/questionnaire
. The response contains the question IDs, type, and label. This provides the details for the service request payload.
-
Ticket Creation
The following are properties used in the Request Payload for creating tickets:

This is the login ID of the user for whom the ticket is created for.

This includes the payload of all the required input questions defined in the Service Definition.
Values are provided for Description and Summary Given, you can add the Question-input IDs based on the Questionnaire Defined in the Service Catalog.
To add input values for the question/answer pair, add another <Map> entry to the Questions list. In the following example, replace the "QUESTIONNAIRE INPUT ID" with the Question Input ID of the field:
Copy<Map>
<entry key="answers">
<value>
<List>
<String>#foreach($req in $plan.requests) #if($req.operation == 'Create') Create Account on application $req.resource #else For $req.id in application $req.resource #end #if($req.items) $newline #foreach($item in $req.items) #if ($item.name == '*disabled*' && $item.value == 'true') Disable Account. $newline #elseif ($item.name == '*disabled*' && $item.value == 'false') Enable Account. $newline #elseif ($item.name == '*locked*' && $item.value == 'false') Unlock Account. $newline #else $!item.Operation $item.name: $item.value $newline #end #end #else $newline $!req.Operation Account #end #end</String>
</List>
</value>
</entry>
<!-- Question ID for Description input field -->
<entry key="questionId" value="QUESTIONNAIRE INPUT ID" />
</Map>Add the value of the field in the "answers" key.
Copy<entry key="provision">
<value>
<Map>
<entry key="request">
<value>
<Map>
<entry key="questions">
<value>
<List>
<Map>
<entry key="answers">
<value>
<List>
<String>#foreach($req in $plan.requests) #if($req.operation == 'Create') Create Account on application $req.resource #else For $req.id in application $req.resource #end #if($req.items) $newline #foreach($item in $req.items) #if ($item.name == '*disabled*' && $item.value == 'true') Disable Account. $newline #elseif ($item.name == '*disabled*' && $item.value == 'false') Enable Account. $newline #elseif ($item.name == '*locked*' && $item.value == 'false') Unlock Account. $newline #else $!item.Operation $item.name: $item.value $newline #end #end #else $newline $!req.Operation Account #end #end</String>
</List>
</value>
</entry>
<!-- Question ID for Description input field -->
<entry key="questionId" value="QUESTIONAIRE INPUT ID" />
</Map>
<Map>
<entry key="answers">
<value>
<List>
<String>SailPoint Access Request $!plan.arguments.identityRequestId #if($plan.arguments.identityName) for the user $plan.arguments.identityName #end</String>
</List>
</value>
</entry>
<!-- Question ID for Title of the ticket input field -->
<entry key="questionId" value="QUESTIONAIRE INPUT ID" />
</Map>
</List>
</value>
</entry>
<!-- Question ID for Title of the ticket input field -->
<entry key="questionId" value="QUESTIONAIRE INPUT ID" />
</Map>
</value>
</entry>
<entry key="requestForUserIds">
<value>
<List>
<String>$!plan.arguments.loginID</String>
</List>
</value>
</entry>
<entry key="serviceId" value="SERVICE ID FROM BMC HELIX ITSM SYSTEM" />
</Map>
</value>
</entry>

ID of the Service Definition to be added to the following entry:
<entry key="serviceId" value="SERVICE ID FROM BMC HELIX ITSM SYSTEM" />
Advanced Properties
The following properties are provided OOTB in the application XML:

Enter the resource used for the request ticket in the Resource field. Do not include the base URL for the instance in the value. Provide only the remaining directories for the endpoint. For example:
<entry key="resource" value="/api/myit-sb/requests" />

Enter the JSON path expression that indicates the location of the ticket number in the Response Element field. For example:
<entry key="responseElement" value="$.requests[0].['requestId']" />

Enter the URL required to submit the DWP Service Request to the BMC Helix ITSM system. For example:
<entry key="submitOrderResource" value="/api/myit-sb/orders" />