Thursday, September 27, 2018

ServiceNow cart API to request catalog item through script

var cart = new Cart();
var item = cart.addItem('12345678123456781234567812345678'); // sys id of the Catalog item
cart.setVariable(item, "employee", current.u_employee_name);
cart.setVariable(item, "employee_email", current.u_employee_email);
cart.setVariable(item, "employee_number", current.u_employee_number);
cart.setVariable(item, "termination_date", current.u_termination_date);
var rc = cart.placeOrder();

ServiceNow script to remove inactive user from all the groups and roles

function removeTheGroupsOfInactiveUser() {
        var groupGR = new GlideRecord('sys_user_grmember');
        groupGR.addQuery('user', current.u_employee_name);
        groupGR.query();
        while (groupGR.next()) {
                groupGR.deleteRecord();
        }
}


function removeTheRolesOfInactiveUser() {
        var roleGR = new GlideRecord('sys_user_has_role');
        roleGR.addQuery('user', current.u_employee_name);
        roleGR.query();
        while (roleGR.next()) {
                roleGR.deleteRecord();
        }
}

ServiceNow workflow run script to check if all the catalog tasks are closed for the current RITM

var tsk = new GlideRecord('sc_task');
tsk.addQuery('request_item', current.sys_id);
tsk.addActiveQuery();
tsk.query();

if(tsk.next()){
answer = false;
}
else{
answer = true;
}

Sunday, September 16, 2018

Add show workflow UI Action in ServiceNow for Global and scoped applications

For Global Application use the following script

onclik: showWorkflowContext()

condition: !current.isNewRecord() && (new Workflow().hasWorkflow(current))

function showWorkflowContext() {
   var id = g_form.getUniqueValue().toString();
   var url = new GlideURL('context_workflow.do');
   url.addParam('sysparm_stack', 'no');
   url.addParam('sysparm_table', g_form.getTableName());
   url.addParam('sysparm_document', id);
   g_navigation.open(url.getURL(), "_blank")
}

For Scoped Application use the following script

onclik: showWorkflowContext()

condition: !current.isNewRecord() && (new global.Workflow().hasWorkflow(current))
Script: Same as above