Make catalog task variables mandatory on "Close Complete"

SC10
Kilo Guru

I'd like to force a variable to be mandatory on my catalog task to be mandatory when the catalog task form is being submitted AND state = closed complete (3).

I tried doing this with a business rule, and it sort of works.. but the "Close Complete" UI action bypasses it as it forces a redirect and this apparently doesn't work in conjunction with .setAbortAction.Trying to look for some alternatives as I would like the entire page to stop loading/redirecting when using the Close Complete button, or setting to Closed Complete manually, and make the variable mandatory:

  1. (function executeRule(current, previous /*null when async*/) {  
  2.   if(current.variables.offboard_desktoprecoverassets == '' && current.state == "3"){  
  3.        
  4.   current.state=previous.state;  
  5.   current.setAbortAction(true);  
  6.   gs.addInfoMessage('NOTICE: Please select an option for desktop recovery below completing the task.');  
  7.   gs.setRedirect(current);  
  8.   }  
  9.  
  10.  
  11. })(current, previous);  
1 ACCEPTED SOLUTION

You can write a onSubmit client script and put this script in there


function onSubmit() {


  var ritm= g_form.getReferenec("request_item");


  if((g_form.getValue('state')==3) && (ritm.cat_item=='Your cat item sys_id')){


  if(g_form.getValue('variables.<variable_name>')==''){


  g_form.setMandatory('variables.<variable_name>',true);


  return false;


  }


  }


}


View solution in original post

24 REPLIES 24

Pradeep Sharma
ServiceNow Employee
ServiceNow Employee

Hi Shane,



The best option is to create a UI policy and make field mandatory as per the conditions you have mentioned via filter. Please refer below link for more info.


Creating a UI Policy - ServiceNow Wiki


Can I have this be a UI Policy on the catalog item, rather than directly on the catalog task form? This requirement is only specific to this catalog item...



Thanks


Pradeep Sharma
ServiceNow Employee
ServiceNow Employee

Thanks Shane for the update. Yes you can have this specific to catalog item. But is the req to make mandatory on catalog item or catalog task.


The catalog UI policy is to only apply on the catalog task, that is generated by the catalog item's workflow.



I have only "Applies on Catalog Tasks" checkes, so to only run on the catalog task level, but I can not use the filter to choose a record attribute like "State" or "Date opened", etc, it will only give me variables to condition the UI policy off of. Under advanced scripting, I only see an option to script what happens on the condition, now how to script a custom condition.