vRA User Interactions hacks

A vRO / vRA “User Interaction” is a nice feature to have request data completed by several peers and / or gathering data which is not known during request time. To some extend this could also be used to approve a step during a provisioning or WF run.

If a XaaS Blueprint or Resource Actions Workflow contains a element “User Interaction” the “Work Item” the User Interaction automatically shown up in vRA for the assigned group or individuals to approve or submit (Inbox > Manual User Action).

This post will cover following questions:

  • How to pass Variables to User Interaction form in vRA?
  • How to use variables to pass to a action which enrich a predefined list / dropdown field? (including dependencies between form fields)
  • How to provide a link referring directly to specific user interaction on a notification eMail?
  • How to react an proceed on a reject of a User Interaction?

Passing Variables from vRO to vRA Form

Preparing variables which needs to be shown as variables in the User Interaction Form:

Preparing User Interaction Form Variables

Setting Description of Presentation (User Interaction Element) in vRO for displaying a defined variable in WF (needs to be defined in WF runtime, set in General tab)

Configure variables for User Interaction Presentation

Testing the form for the description including a variable defined in vRO:

Label contains vRO variable

Form fields depending on form fields – passed through vRO

If we want to add a component to a user interaction form, like a combo box with a predefined list of elements, which will be received during runtime based on a value set on an other component in the form, this value / variable needs to be passed like #VariableName.

The action for a set of answers on “Predefined list of elements” will be called like:

GetAction("com.vbounty.userInteraction","returnListBasedOnBoolean").call( #VariableName)
set a variable from the form as an input of a vRO action

So in this example an action “returnListBasedOnBoolean” will return an array of strings based on input boolean (true / false). All members of the array will have (true: / false:) as an prefix. The combobox / dropdown in the UI will be updated as soon the boolean is switched from yes to no or vice versa. The UI will reload for some seconds.

Testing the form

Direct Link to the User Interaction / Work Item

Specially if a link should be provided to a user or a group via eMail, a direct link could be assembled like in the following example.

Note: this can’t be used if your user interaction was started as a anynchronus execution (for instance if you want to react on rejected interactions) becuase the workOrderId will be set to an new unique id.

var workItems = vCACCAFEEntitiesFinder.getWorkItems(cafeHost);
link = null;
wfActionName = workflow.name + " : User interaction";
for each(var el in workItems){
    if(el.getWorkItemRequest().getItemData().get("requestRef").value == requestId){
        if(el.workItemRequest.getItemName() == wfActionName){
            link = "#csp.cs.ui.workitem.detail%5Bid:=" + el.id;
var url = cafeHost.url.toString() + "\/vcac\/org\/" + requestTenant + "" + link;

How to react on a rejected User Interaction

Per default a workflow execution including a User Interaction which has been rejected in vRA will be changed to cancelled. During the execution of this workflow there is no possibility to react on the event of a rejected User Interaction. At least there is a way to have action performed on a rejected User Interaction by wrapping the actual user interaction in a dedicated workflow and while its parent is polling the state of this workflow. Polling on the state means:

  • Successful = User Interaction was submitted and WF execution was successful
  • Failed = User Interaction was submitted but WF execution has failed
  • Canceled = User Interaction has been rejected and WF execution has been interrupted