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

@JVINAY 

you can use IN operator as well

canCancelRequest: function(intakeID) {
    var cir = new GlideRecord('u_cloud_intake_request');
    if (cir.get(intakeID)) {
        if (gs.hasRole('u_cloud_intake_admin'))
            return true;

        var user = gs.getUserID();
        var grmembership = new GlideRecord("sys_user_grmember");
        grmembership.addQuery("user", user);
        grmembership.addQuery("group.sys_id", "IN", "98280b79db3d3740ee5c24f405961998,f383c41c1bd89850f08eba215b4bcbb8");
        grmembership.query();
        if (grmembership.hasNext())
            return true;
    }
    return false;
}

💡 If my response helped, please mark it as correct and close the thread 🔒— this helps future readers find the solution faster! 🙏

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

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

 

 

JVINAY
Tera Contributor

@ChallaR 

 

Now  It's working.

Thanks for your help