Skip to content

Commit 980e9b0

Browse files
script.js
1 parent b6a351c commit 980e9b0

File tree

1 file changed

+43
-0
lines changed
  • Server-Side Components/Background Scripts/Merge Duplicate User Records Automatically

1 file changed

+43
-0
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
(function() {
2+
var userEmailMap = {};
3+
var userGR = new GlideRecord('sys_user');
4+
userGR.addNotNullQuery('email');
5+
userGR.addQuery('active', true);
6+
userGR.query();
7+
8+
var duplicatesFound = 0;
9+
10+
while (userGR.next()) {
11+
var email = userGR.email.toLowerCase();
12+
13+
if (!userEmailMap[email]) {
14+
// First user with this email
15+
userEmailMap[email] = userGR.sys_id.toString();
16+
} else {
17+
// Duplicate found then merge with master
18+
duplicatesFound++;
19+
var masterSysId = userEmailMap[email];
20+
21+
// Reassign related incidents
22+
var incGR = new GlideRecord('incident');
23+
incGR.addQuery('caller_id', userGR.sys_id);
24+
incGR.query();
25+
var incidentsReassigned = 0;
26+
while (incGR.next()) {
27+
incGR.caller_id = masterSysId;
28+
incGR.update();
29+
incidentsReassigned++;
30+
}
31+
32+
// Deactivate duplicate
33+
userGR.active = false;
34+
userGR.u_merged_to = masterSysId; // optional custom field
35+
userGR.update();
36+
37+
gs.info("Merged duplicate user '" + userGR.name + "' into master. Reassigned " + incidentsReassigned + " incidents.");
38+
}
39+
}
40+
41+
gs.info("Total duplicates merged: " + duplicatesFound);
42+
43+
})();

0 commit comments

Comments
 (0)