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

Please check my another response I have given above

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

Hi Sandeep,

Yes I have tried with else if statement, unfortunately now child RITM is not triggering only.

With my very initial script, child ritm is getting created but with new mapping its not.

@shivani39 it looks like script is crashing somewhere, I recommend adding gs.info(); logs at different lines and see till which line the script is executing. This will help you pinpoint the exact location where the aforementioned script is breaking.

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_0-1681993224215.png