Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

How to Skip Service Catalog Approval if Manager is opening a Request Item?

Naresh_5120
Tera Contributor

I am working to modify our existing on-boarding Catalog form. Here on our form we have field called "Manager (Employee's direct supervisor).

What I am  looking for  is when a manger himself is opening a request then it should skip the Service Catalog Approval process and create a task , Otherwise if request is opened by someone else it should trigger approval process to manager mentioned in "Manager " field. In order to achieve this i have tried below mention script but somehow it skipping the approval in both scenario, when raised by manager or by others.

answer = ifScript();

 

function ifScript() {

 

var manager = current.variables.nh_manager;

 

var openedBy = current.opened_by;

 

if (manager == openedBy) {

 

return 'yes';

 

} else{

 

return 'no';

 

}

}

 

 On - Boarding form example

find_real_file.png

Variable name of Manager field

find_real_file.png

Can anyone help what I am missing to achieve the desired results. I am new to ServiceNow so my scripting not that advance.

Thanks & Regards,

Naresh 

 

8 REPLIES 8

Brian Bouchard
Mega Sage

Hi Naresh - Try putting some log messaged in your script, then checking System Logs for the output.  You can easily do something like the following to get a better idea of what might be going wrong. in the system Log look for messages starting with TMP to see what you're getting for values in those fields.

 

answer = ifScript();

function ifScript() {
  var manager = current.variables.nh_manager;
  var openedBy = current.opened_by;
  
  gs.log('TMP - MANAGER: ' +manager);
  gs.log('TMP - OPENED BY: ' +openedBy);

  if (manager == openedBy) {
    return 'yes';
  } else{
    return 'no';
  }
}

Hi Brian,

 

Thank you for your quick response.I have tried the suggested steps and found the systems longs as mention below. It looks like does not have any value.

 

find_real_file.png

hi Naresh - It looks like the values are there. They are the sys_ids of the 2 fields.

 

You might try moving your variable declaration before the function

var manager = current.variables.nh_manager;
var openedBy = current.opened_by;

answer = ifScript();

function ifScript() {

  if (manager == openedBy) {
    return 'yes';
  } else{
    return 'no';
  }
}

 

and/or converting the values to a string:

var manager = current.variables.nh_manager.toString();
var openedBy = current.opened_by.toString();

answer = ifScript();

function ifScript() {

  if (manager == openedBy) {
    return 'yes';
  } else{
    return 'no';
  }
}

 

Prateek kumar
Mega Sage

Try this

answer = ifScript();
function ifScript() {
var manager = current.variables.nh_manager.toString();
var openedBy = current.variables.opened_by.toString();
if (manager == openedBy) {
return 'yes';
} else{
return 'no';
}
}

Please mark my response as correct and helpful if it helped solved your question.
-Thanks