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.

Catalog item to add role to group

Preethi26
Tera Contributor

Hi Team,

I need to create catalog item when role and group selected, role has to be added to selected group.

Can we please help me out, Can i use flow designers to achieve easily or workflow.

Thank You

3 ACCEPTED SOLUTIONS

Hi @Preethi26 

try this:

var roles = [];
var role = new GlideRecord('sys_user_role');
role.addEncodedQuery('nameINitil,admin');
role.query();
while(role.next()){
roles.push(role.getUniqueValue());
}
gs.info(roles);

//var roleID = roles.split(',');/// comment this line, not needed

for (var i = 0; i < roles.length; i++) {

var grRole = new GlideRecord('sys_group_has_role');
grRole.initialize();
grRole.group = '019ad92ec7230010393d265c95c260dd';
grRole.role = roles[i];
grRole.setWorkflow(false);
grRole.insert();
}

Best Regards
Aman Kumar

View solution in original post

Vishal Birajdar
Giga Sage

Hi @Preethi26 

 

Can you try below script background script :

 

 

var roles = [];
var role = new GlideRecord('sys_user_role');
role.addEncodedQuery('nameINitil,admin');
role.query();
while(role.next()){
roles.push(role.getUniqueValue());
}

for (var i = 0; i < roles.length; i++) {
var grRole = new GlideRecord('sys_group_has_role');
grRole.initialize();
grRole.setValue('group','477a05d153013010b846ddeeff7b1225');   ///use sys_id of your group
grRole.setValue('role',roles[i]);
grRole.insert();
}

 

 

Also, check by putting some logs if you are getting sys_id of roles or name in workflow for   'current.variables.roles_to_be_added' variable. If you are getting the sys_ids then no need to loop through 

 

var roles = current.variables.roles_to_be_added.toString().split(',');

for (var i = 0; i < roles.length; i++) {
var grRole = new GlideRecord('sys_group_has_role');
grRole.initialize();
grRole.setValue('group', current.variables.group);   ///use sys_id of your group
grRole.setValue('role',roles[i]);
grRole.insert();
}

 

You can do this using flow designer also which is better option i guess...

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

Hi @Preethi26 

 

Ok...so first you can add some condition in Look up Record - so that it will check records group & roles.

Step 1 :

VishalBirajdar_0-1701420061129.png

 

Step 2: 

VishalBirajdar_1-1701420130205.png

 

Step 3 : 

VishalBirajdar_2-1701420186621.png

 

Final flow should look like below :

 

VishalBirajdar_3-1701420254943.png

 

 

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

View solution in original post

16 REPLIES 16

Hi @Preethi26 

 

For flow designer you first need to use for each flow logic and then create record in 'sys_group_has_role'

1. Loop through list of roles

VishalBirajdar_0-1701152202612.png

 

2. Create a record 

VishalBirajdar_1-1701152296567.png

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi @Preethi26 

 

Please try updated logic below :

 

1. After Get catalog variables action , use 'Look up records' action & put condition script as below

 

var roles = fd_data.trigger.request_item.variables.roles; //use your variable name 
 return 'sys_idIN' + roles;

 

VishalBirajdar_0-1701155080423.png

 

2. use for each flow logic on  look up records >> Role records 

VishalBirajdar_1-1701155169790.png

 

3. Create Record 

Group = Get catalog variables >> Groups >> Sys id

Role = For each >> Role record >> sys id

 

VishalBirajdar_2-1701155283392.png

 

I have checked & its working ....

Hope this helps....!!

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Hi @Vishal Birajdar 

Iam trying to do but i cant able to select look up role record Why its happening.

Preethi26_0-1701413708423.png

 

Hi @Preethi26 

 

Its because you have selected 'Look up Record' action (will work for only one record).

Use 'Look up Records' action.

 

 

 

 

 

 

Vishal Birajdar
ServiceNow Developer

I know one thing, and that is that I know nothing.
- Socrates

Thanks @Vishal Birajdar  It worked for Add role to group.

Iam trying to do same to remove roles from group, but its stuck in delete record action can you help 

Preethi26_0-1701419096691.png