Skip to content

Commit 27f657c

Browse files
authored
Create cloneUserGroups.js
1 parent 5d434bf commit 27f657c

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
(function() {
2+
// Replace with the sys_ids of the users
3+
var sourceUserSysId = 'SOURCE_USER_SYS_ID'; // Copy groups from this user
4+
var targetUserSysId = 'TARGET_USER_SYS_ID'; // Copy groups to this user
5+
6+
// Validate both users exist
7+
var sourceUser = new GlideRecord('sys_user');
8+
if (!sourceUser.get(sourceUserSysId)) {
9+
gs.error('Source user not found: ' + sourceUserSysId);
10+
return;
11+
}
12+
13+
var targetUser = new GlideRecord('sys_user');
14+
if (!targetUser.get(targetUserSysId)) {
15+
gs.error('Target user not found: ' + targetUserSysId);
16+
return;
17+
}
18+
19+
gs.info('Cloning group memberships from ' + sourceUser.name + ' to ' + targetUser.name);
20+
21+
var addedCount = 0;
22+
var skippedCount = 0;
23+
24+
var srcGroups = new GlideRecord('sys_user_grmember');
25+
srcGroups.addQuery('user', sourceUserSysId);
26+
srcGroups.query();
27+
28+
while (srcGroups.next()) {
29+
var groupId = srcGroups.group.toString();
30+
31+
// Check if target user is already in the group
32+
var existing = new GlideRecord('sys_user_grmember');
33+
existing.addQuery('user', targetUserSysId);
34+
existing.addQuery('group', groupId);
35+
existing.query();
36+
37+
if (existing.next()) {
38+
skippedCount++;
39+
gs.info('Skipped: ' + targetUser.name + ' is already a member of group ' + srcGroups.group.name);
40+
continue;
41+
}
42+
43+
// Add target user to the group
44+
var newMember = new GlideRecord('sys_user_grmember');
45+
newMember.initialize();
46+
newMember.user = targetUserSysId;
47+
newMember.group = groupId;
48+
newMember.insert();
49+
50+
gs.info('Added ' + targetUser.name + ' to group ' + srcGroups.group.name);
51+
addedCount++;
52+
}
53+
54+
gs.info('Group cloning complete. ' + addedCount + ' groups added, ' + skippedCount + ' skipped.');
55+
})();

0 commit comments

Comments
 (0)