diff --git a/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/Code.js b/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/Code.js new file mode 100644 index 0000000000..f6b91c5108 --- /dev/null +++ b/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/Code.js @@ -0,0 +1,29 @@ +(function executeRule(current, previous /*null when async*/) { + + // Run only when the Manager field changes + if (current.manager.changes()) { + + var groupID = current.sys_id.toString(); + + // Remove old manager from group membership + if (!gs.nil(previous.manager)) { + var oldMember = new GlideRecord('sys_user_grmember'); + oldMember.addQuery('group', groupID); + oldMember.addQuery('user', previous.manager); + oldMember.query(); + while (oldMember.next()) { + oldMember.deleteRecord(); + } + } + + // Add new manager to group membership + if (!gs.nil(current.manager)) { + var newMember = new GlideRecord('sys_user_grmember'); + newMember.initialize(); + newMember.group = groupID; + newMember.user = current.manager; + newMember.insert(); + } + } + +})(current, previous); diff --git a/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/ReadMe.md b/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/ReadMe.md new file mode 100644 index 0000000000..e680174380 --- /dev/null +++ b/Server-Side Components/Business Rules/Group Manager changes, remove old manager & add new manager/ReadMe.md @@ -0,0 +1,5 @@ +When the Manager field changes on the Group table (sys_user_group), the system should automatically: + +Remove the previous manager from the group’s membership. + +Add the new manager as a member of the same group.