Can someone help me with mapping in the flow Designer script.

shivani39
Tera Expert

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

1 ACCEPTED SOLUTION

@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. 

View solution in original post

9 REPLIES 9

Sandeep Rajput
Tera Patron
Tera Patron

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.

 

 

Hi Sandeep, 

thanks for the reply, both employee type and service function is appearing from user table.

 

shivani39_0-1681991487183.png

 

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?

 

shivani39_1-1681992210787.png

 

@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.