Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

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
Giga 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
Giga 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