Help in Scripting

Community Alums
Not applicable

Hello ServiceNow family.

Greetings of the day!

 

I have a requirement.

 

If a user's title is updated to 'abc' then that user should automatically become a member of 'XYZ' group. Similarly, if the user's title is changed, then he/she should be removed from that group. How can I do this.

 

Please help.

2 ACCEPTED SOLUTIONS

Peter Bodelier
Giga Sage

Hi @Community Alums,

 

Create a business rule on the user table. Condition title changes.
Script:

(function executeRule(current, previous /*null when async*/) {
	if (current.title == 'abc' && previous.title != 'abc') {
		var chkMember = new GlideRecord('sys_user_grmember');
		chkMember.addEncodedQuery('group=XYZ^user=' + current.sys_id);
		chkMember.query();
		if(!chkMember.next()){
			var crMember = new GlideRecord('sys_user_grmember');
			crMember.initialize();
			crMember.group = 'XYZ';
			crMember.user = current.sys_id;
			crMember.insert();
		}
	} else if (current.title != 'abc' && previous.title == 'abc') {
		var dlMember = new GlideRecord('sys_user_grmember');
		dlMember.addEncodedQuery('group=XYZ^user=' + current.sys_id);
		dlMember.query();
		if (dlMember.next()){
			dlMember.deleteRecord();
		}
	}

})(current, previous);

 Replace XYZ by the sys_id of the group


Help others to find a correct solution by marking the appropriate response as accepted solution and helpful.

View solution in original post

Sandeep Rajput
Tera Patron
Tera Patron

@Community Alums You need to write an onBefore Insert/Update Business rule on sys_user table as follows.

Screenshot 2023-10-13 at 8.52.02 PM.pngScreenshot 2023-10-13 at 9.01.40 PM.png

Here is the script.

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

	// Add user to group
	if(current.title=='VP'){ //Apply your title check here
		var glideRecord=new GlideRecord('sys_user_grmember');
		glideRecord.initialize();
		glideRecord.setValue('user',current.sys_id);
		glideRecord.setValue('group','<sys_id of group>');//group to be added
		glideRecord.insert();
	}
	else{//remove user from group
		var glideRecordDel=new GlideRecord('sys_user_grmember');
		glideRecordDel.addQuery('user',current.sys_id);
		glideRecordDel.addQuery('group','<sys_id of group>');
		glideRecordDel.query();
		if(glideRecordDel.next()){
			glideRecordDel.delete();//delete the user from group
		}
	}

})(current, previous);

Hope this helps.

View solution in original post

5 REPLIES 5

Community Alums
Not applicable

Sure