Welcome to Community Week 2025! Join us to learn, connect, and be recognized as we celebrate the spirit of Community and the power of AI. Get the details  

Cancellation rights

JVINAY
Tera Contributor

Hi Team,

 

I have written  below script include script :

 

canCancelRequest: function(intakeID) {
        var cir = new GlideRecord('u_cloud_request');
        if (cir.get(intakeID)) {
            if (gs.hasRole('u_cloud_admin')) return true;
            var user = gs.getUserID();
            var grmembership = new GlideRecord("sys_user_grmember");
            grmembership.addQuery("user", user);           
grmembership.addQuery("group", "98280b79db3d3740ee5c24f405961998" || "f383c41c1bd89850f08eba215b4bcbb8");  //* 98280b79db3d3740ee5c24f405961998 Cloud Sys ID and f383c41c1bd89850f08eba215b4bcbb8 AWS SYS ID*//
            grmembership.query();
            if (grmembership.hasNext()) return true;
 
For my requirement
"Enable Request Account cancellation rights to ServiceNow Assignment group: Cloud teamd and AWS  Architecture Team "
 
This Script works for user have " u_cloud_admin" role and users belongs to either Cloud Team and not working for user belongs to AWS group
I want User don't have  " u_cloud_admin" but belogs to either Cloud or AWS will allows to  cancel the Request
 
Thanks.
1 ACCEPTED SOLUTION

ChallaR
Mega Guru

HI @JVINAY ,

please find the below script i have modified few lines , hope its helpful-

canCancelRequest: function(intakeID) {
    var cir = new GlideRecord('u_cloud_request');
    if (cir.get(intakeID)) {
        // If user has u_cloud_admin role, allow
        if (gs.hasRole('u_cloud_admin')) return true;

        var user = gs.getUserID();
        var grmembership = new GlideRecord("sys_user_grmember");
        grmembership.addQuery("user", user);

        // Check if user belongs to either Cloud Team or AWS Architecture Team
        var groupCondition = grmembership.addQuery("group", "98280b79db3d3740ee5c24f405961998"); // Cloud Team
        groupCondition.addOrCondition("group", "f383c41c1bd89850f08eba215b4bcbb8"); // AWS Architecture Team

        grmembership.query();
        if (grmembership.hasNext()) return true;
    }
    return false;
}

 

NOTE -

 

  • addOrCondition() ensures the query checks both groups.
  • If the user is in either group, grmembership.hasNext() will return true.

Thanks,

Rithika.ch

 

 

View solution in original post

12 REPLIES 12

Ravi Gaurav
Giga Sage
Giga Sage

Hi @JVINAY 

 

Your current logic almost does what you want — but the if condition for the admin check is returning early, meaning the rest of the code doesn’t run when the user doesn’t have that role. You just need to structure it a bit differently so that:

  • u_cloud_admin users are always allowed, and

  • Users without that role but in Cloud Team or AWS Architecture Team are also allowed.

Here’s the corrected version:

canCancelRequest: function(intakeID) {
var cir = new GlideRecord('u_cloud_request');
if (!cir.get(intakeID))
return false;

// Always allow users with the admin role
if (gs.hasRole('u_cloud_admin'))
return true;

// Check if user belongs to Cloud or AWS groups
var user = gs.getUserID();
var grMembership = new GlideRecord('sys_user_grmember');
grMembership.addQuery('user', user);
grMembership.addQuery('group', '98280b79db3d3740ee5c24f405961998'); // Cloud Team
grMembership.addOrCondition('group', 'f383c41c1bd89850f08eba215b4bcbb8'); // AWS Team
grMembership.query();

if (grMembership.hasNext())
return true;

// Otherwise deny
return false;
}

--------------------------------------------------------------------------------------------------------------------------


If you found my response helpful, I would greatly appreciate it if you could mark it as "Accepted Solution" and "Helpful."
Your support not only benefits the community but also encourages me to continue assisting. Thank you so much!

Thanks and Regards
Ravi Gaurav | ServiceNow MVP 2025,2024 | ServiceNow Practice Lead | Solution Architect
CGI
M.Tech in Data Science & AI

 YouTube: https://www.youtube.com/@learnservicenowwithravi
 LinkedIn: https://www.linkedin.com/in/ravi-gaurav-a67542aa/

Hi @Ravi Gaurav 

 

Thanks for Your reply 

 

I have updated the code :

 

canCancelRequest: function(intakeID) {

        var cir = new GlideRecord('u_cloud_request');

        if (!cir.get(intakeID))

            return false; {

            if (gs.hasRole('u_cloud_admin')) return true;

            var user = gs.getUserID();

            var grmembership = new GlideRecord("sys_user_grmember");

            grmembership.addQuery("user", user);

            grmembership.addQuery("group", "98280b79db3d3740ee5c24f405961998" || "f383c41c1bd89850f08eba215b4bcbb8");

            //grmembership.addOrCondition("group", "f383c41c1bd89850f08eba215b4bcbb8");

            grmembership.query();

            if (grmembership.hasNext()) {

                return true;

            }

 

Only  Cloud team able to cancel 

grMembership.addQuery('group', '98280b79db3d3740ee5c24f405961998'); // Cloud Team

 

AWS team not able to Cancel the request ,

Help me to Update the script for AWS team able to Cancel the request

 

Thank you.

Hi @JVINAY ,

Correct Script

 

canCancelRequest: function(intakeID) {
    var cir = new GlideRecord('u_cloud_request');
    if (!cir.get(intakeID)) {
        return false;
    }

    // If user has u_cloud_admin role, allow
    if (gs.hasRole('u_cloud_admin')) {
        return true;
    }

    var user = gs.getUserID();
    var grmembership = new GlideRecord("sys_user_grmember");
    grmembership.addQuery("user", user);

    // Add OR condition for both groups
    var qc = grmembership.addQuery("group", "98280b79db3d3740ee5c24f405961998"); // Cloud Team
    qc.addOrCondition("group", "f383c41c1bd89850f08eba215b4bcbb8"); // AWS Architecture Team

    grmembership.query();
    if (grmembership.hasNext()) {
        return true;
    }

    return false;
}

 

Option 2: Using IN Operator

 
 
grmembership.addQuery("group", "IN", "98280b79db3d3740ee5c24f405961998,f383c41c1bd89850f08eba215b4bcbb8");

Thanks,

Rithika.ch

 

Ankur Bawiskar
Tera Patron
Tera Patron

@JVINAY 

sorry your requirement is not clear.

you want to check user's role or user's group membership?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader