File tree Expand file tree Collapse file tree 1 file changed +43
-0
lines changed
Server-Side Components/Background Scripts/Merge Duplicate User Records Automatically Expand file tree Collapse file tree 1 file changed +43
-0
lines changed Original file line number Diff line number Diff line change 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+ } ) ( ) ;
You can’t perform that action at this time.
0 commit comments