We've updated the ServiceNow Community Code of Conduct, adding guidelines around AI usage, professionalism, and content violations. Read more

Cancel HR Task if the subject person of the parent case is not a manager

Simran321
Tera Expert

Hi There,

 

I have a lifecycle case that has a task that gets created. I need to cancel that HR task if the subject person for the Parent case is not a manager. How can I do this

3 REPLIES 3

Sandeep Rajput
Tera Patron

@Simran321 You need to write an onBefore insert business rule on your HR Task table as follows.

 

Screenshot 2024-01-23 at 1.27.59 PM.pngScreenshot 2024-01-23 at 1.28.50 PM.png

Here is the script for your reference.

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var glideUser = new GlideAggregate('sys_user');
    glideUser.addQuery('manager', gs.getUserID());
    glideUser.addAggregate('COUNT');
    glideUser.query();
    var managerCount = 0;
    if (glideUser.next()) {
        managerCount = glideUser.getAggregate('COUNT');
    }

    if (managerCount == 0) {
        current.setValue('state', '7'); //set the state to cancelled.
    }

})(current, previous);

 

Hope this helps.

Simran321
Tera Expert

@Sandeep Rajput - Thanks for your response. The HR Task is the child task of Lifecycle case. I need to find id parent case subject person is the manager. So cannot use gs.getuserID()

Here is the updated script for the subject person.

 

(function executeRule(current, previous /*null when async*/ ) {

    // Add your code here
    var glideUser = new GlideAggregate('sys_user');
    glideUser.addQuery('manager', current.parent.subject_person);
    glideUser.addAggregate('COUNT');
    glideUser.query();
    var managerCount = 0;
    if (glideUser.next()) {
        managerCount = glideUser.getAggregate('COUNT');
    }

    if (managerCount == 0) {
        current.setValue('state', '7'); //set the state to cancelled.
    }

})(current, previous);