- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 03:34 AM
Hi,
So basically from a parent flow designer, I am raising a child RITM by setting the values of the child requested form. The need here is to populate one particular variable based on the below mapping.
Script in flow for child RITM:
(function execute(inputs, outputs) {
// ... code ...
var userid = inputs.requested_for.getUniqueValue();
outputs['user_email'] = userid;
var grMail = new GlideRecord('sys_user');
grMail.addQuery('sys_id',userid);
grMail.query();
if(grMail.next()){
var email = grMail.getValue('email');
outputs['user_email'] += email;
}
var catItem = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.varaible')['catalog'];
var environment = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables1')['vdi'];
var reqHelp = new GlideappCalculationHelper();
var reqID = inputs.request.getUniqueValue();
outputs['reqid'] = reqID;
reqHelp.addItemToExistingRequest(reqID, catItem, 1);
//reqHelp.rebalanceRequest(reqID);
var grReqItem = new GlideRecord('sc_req_item');
grReqItem.addQuery('request', reqID);
grReqItem.addQuery('cat_item', catItem);
grReqItem.addQuery('parent', reqID);
grReqItem.query();
outputs['grreqitem'] = grReqItem;
if (grReqItem.next()) {
grReqItem.setValue('stage', 'Request for Approval');
grReqItem.setValue('approval', 'not requested');
grReqItem.setValue('u_requested_for', inputs.requested_for);
// grReqItem.varaibles.requested_for = current.varaibles.requested_for;
grReqItem.variables.approver = inputs.approver;
grReqItem.variables.vdi_desktop_environment = environment; // this should appear based on user selected in requested for.
grReqItem.variables.do_you_need_to_receive_user_documentation = 'Yes';
grReqItem.update();
}
})(inputs, outputs);
**********************************************
Mapping for VDI Environment
Employment Type | Service Function | VDI Environment |
Contractor | Audit | Contingent Worker DaaS Audit |
Contractor | Advisory | Contingent Worker DaaS Advisory |
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 05:45 AM
@shivani39 Here is the updated script.
(function execute(inputs, outputs) {
// ... code ...
var userid = inputs.requested_for.getUniqueValue();
outputs['user_email'] = userid;
var grMail = new GlideRecord('sys_user');
grMail.addQuery('sys_id',userid);
grMail.query();
if(grMail.next()){
var email = grMail.getValue('email');
outputs['user_email'] += email;
}
var catItem = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.varaible')['catalog'];
// var environment = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables1')['vdi'];
var environment2 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables2')['vdi2'];
var environment3 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables3')['vdi3'];
var environment4 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables4')['vdi4'];
var environment5 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables5')['vdi5'];
var environment6 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables6')['vdi6'];
var environment7 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables7')['vdi7'];
var reqHelp = new GlideappCalculationHelper();
var reqID = inputs.request.getUniqueValue();
outputs['reqid'] = reqID;
reqHelp.addItemToExistingRequest(reqID, catItem, 1);
//reqHelp.rebalanceRequest(reqID);
var grReqItem = new GlideRecord('sc_req_item');
grReqItem.addQuery('request', reqID);
grReqItem.addQuery('cat_item', catItem);
grReqItem.addQuery('parent', reqID);
grReqItem.query();
outputs['grreqitem'] = grReqItem;
if (grReqItem.next()) {
grReqItem.setValue('stage', 'Request for Approval');
grReqItem.setValue('approval', 'not requested');
grReqItem.setValue('u_requested_for', inputs.requested_for);
// grReqItem.varaibles.requested_for = current.varaibles.requested_for;
grReqItem.variables.approver = inputs.approver;
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Audit' )
{
grReqItem.variables.vdi_desktop_environment = environment2;
}
else if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Advisory' )
{
grReqItem.variables.vdi_desktop_environment = environment3;
}
else if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Tax' )
{
grReqItem.variables.vdi_desktop_environment = environment4;
}
else if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'NBPG' )
{
grReqItem.variables.vdi_desktop_environment = environment5;
}
else if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'Audit' )
{
grReqItem.variables.vdi_desktop_environment = environment5;
}
else if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'Advisory' ){
grReqItem.variables.vdi_desktop_environment = environment6;
}
else if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'Tax' ){
grReqItem.variables.vdi_desktop_environment = environment6; //Set the right environment here for US Employee and Tax
}
else if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'NBPG' ){
grReqItem.variables.vdi_desktop_environment = environment6; //Set the right environment here for US Employee and NBPG
}
// grReqItem.variables.vdi_desktop_environment = environment;
grReqItem.variables.do_you_need_to_receive_user_documentation = 'Yes';
grReqItem.variables.e_mail_address_to_receive_documentation = email;
grReqItem.variables.high_risk_vdi = 'Yes';
grReqItem.update();
}
})(inputs, outputs);
In this script I have replaced else with else If statements and added missing conditions for US Employee and Tax/NBPG service function.
There are better ways to refactor this code but I will suggest them later once this one addresses your current implementation.
Please mark my answers correct and helpful if it addresses your question.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 04:12 AM
Since I have no clue about the variables on your requested item, I am making a random guess. Replace RITM variables names (service_function, VDI Environment) based on your actual variable names.
(function execute(inputs, outputs) {
// ... code ...
var userid = inputs.requested_for.getUniqueValue();
outputs['user_email'] = userid;
var grMail = new GlideRecord('sys_user');
grMail.addQuery('sys_id',userid);
grMail.query();
if(grMail.next()){
var email = grMail.getValue('email');
outputs['user_email'] += email;
}
var catItem = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.varaible')['catalog'];
var environment = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables1')['vdi'];
var reqHelp = new GlideappCalculationHelper();
var reqID = inputs.request.getUniqueValue();
outputs['reqid'] = reqID;
reqHelp.addItemToExistingRequest(reqID, catItem, 1);
//reqHelp.rebalanceRequest(reqID);
var grReqItem = new GlideRecord('sc_req_item');
grReqItem.addQuery('request', reqID);
grReqItem.addQuery('cat_item', catItem);
grReqItem.addQuery('parent', reqID);
grReqItem.query();
outputs['grreqitem'] = grReqItem;
if (grReqItem.next()) {
grReqItem.setValue('stage', 'Request for Approval');
grReqItem.setValue('approval', 'not requested');
grReqItem.setValue('u_requested_for', inputs.requested_for);
// grReqItem.varaibles.requested_for = current.varaibles.requested_for;
grReqItem.variables.approver = inputs.approver;
if(inputs.requested_for.employment_type=='contractor')//assuming employment type is a field on the user record.
{
grReqItem.variables.service_function = 'Audit';//Assuming there is a serivce_function variable on the RITM
grReqItem.variables.vdi_desktop_environment = 'Contingent Worker DaaS Audit';
}
else{
grReqItem.variables.service_function = 'Advisory';//Assuming there is a serivce_function variable on the RITM
grReqItem.variables.vdi_desktop_environment = 'Contingent Worker DaaS Advisory';
}
grReqItem.variables.do_you_need_to_receive_user_documentation = 'Yes';
grReqItem.update();
}
})(inputs, outputs);
Hope this helps.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 04:51 AM
Hi Sandeep,
thanks for the reply, both employee type and service function is appearing from user table.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 05:00 AM - edited 04-20-2023 05:16 AM
Since we cannot hardcode the value,I have remodified the script with your script. Could you please check and confirm if this works.
(function execute(inputs, outputs) {
// ... code ...
var userid = inputs.requested_for.getUniqueValue();
outputs['user_email'] = userid;
var grMail = new GlideRecord('sys_user');
grMail.addQuery('sys_id',userid);
grMail.query();
if(grMail.next()){
var email = grMail.getValue('email');
outputs['user_email'] += email;
}
var catItem = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.varaible')['catalog'];
// var environment = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables1')['vdi'];
var environment2 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables2')['vdi2'];
var environment3 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables3')['vdi3'];
var environment4 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables4')['vdi4'];
var environment5 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables5')['vdi5'];
var environment6 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables6')['vdi6'];
var environment7 = new global.KPMGCustomProperties().getVariable1Value1('hrlp.workflow.variables7')['vdi7'];
var reqHelp = new GlideappCalculationHelper();
var reqID = inputs.request.getUniqueValue();
outputs['reqid'] = reqID;
reqHelp.addItemToExistingRequest(reqID, catItem, 1);
//reqHelp.rebalanceRequest(reqID);
var grReqItem = new GlideRecord('sc_req_item');
grReqItem.addQuery('request', reqID);
grReqItem.addQuery('cat_item', catItem);
grReqItem.addQuery('parent', reqID);
grReqItem.query();
outputs['grreqitem'] = grReqItem;
if (grReqItem.next()) {
grReqItem.setValue('stage', 'Request for Approval');
grReqItem.setValue('approval', 'not requested');
grReqItem.setValue('u_requested_for', inputs.requested_for);
// grReqItem.varaibles.requested_for = current.varaibles.requested_for;
grReqItem.variables.approver = inputs.approver;
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Audit' )
{
grReqItem.variables.vdi_desktop_environment = environment2;
}
else{
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Advisory' )
{
grReqItem.variables.vdi_desktop_environment = environment3;
}
}
else{
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'Tax' )
{
grReqItem.variables.vdi_desktop_environment = environment4;
}
}
else{
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_service_function == 'NBPG' )
{
grReqItem.variables.vdi_desktop_environment = environment5;
}
}
else{
if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'Audit' )
{
grReqItem.variables.vdi_desktop_environment = environment5;
}
}
else{
if(inputs.requested_for.u_employment_type =='US Employee' && inputs.requested_for.u_service_function == 'Advisory' )
{
grReqItem.variables.vdi_desktop_environment = environment6;
}
}
// grReqItem.variables.vdi_desktop_environment = environment;
grReqItem.variables.do_you_need_to_receive_user_documentation = 'Yes';
grReqItem.variables.e_mail_address_to_receive_documentation = email;
grReqItem.variables.high_risk_vdi = 'Yes';
grReqItem.update();
}
})(inputs, outputs);
******************************
Is this correct?

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
04-20-2023 05:12 AM
@shivani39 changes look good to me except one question where are you setting the different environments based on the Service function as according to the mapping
Employment Type |
Service Function |
VDI Environment |
Contractor |
Audit |
Contingent Worker DaaS Audit |
Contractor |
Advisory |
Contingent Worker DaaS Advisory |
For Service function Audit -> VID Environment should be Contingent Worker DaaS Audit
For Service function Advisory -> VID Environment should be Contingent Worker DaaS Advisory
In the script there is only an if to check the employment type
if(inputs.requested_for.u_employment_type =='Contractor' && inputs.requested_for.u_employment_type )
{
grReqItem.variables.vdi_desktop_environment = environment2; //created a custom property to save the sys id
}
There should be one more if to check the Service Function too. On the basis of which correct VID Environment should be set.