- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2019 02:08 AM
Hi all,
I recently included a field into our LDAP import, this has forced 42,000 records to be imported to the Sys_User table.
I need to remove these, i don't mind deleting all users and running a new import (this would be the better option).
Does anyone know how to do this?
Thanks,
Andrew
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2019 02:45 AM
Slight modifications
Firstly id recommmend you do this in batches, lets say 10k at a time
function removeComputers() {
var gr = new GlideRecord("sys_user");
gr.addEncodedQuery('user_name=null');
gs.setLimit(10000);
gr.setWorkflow(false);
gr.query();
var deleteCount = 0;
while(gr.next()){
gr.deleteRecord();
deleteCount++;
}
gs.print('Records Deleted: '+ deleteCount);
}
Also noticed something odd at the start of your script, make sure its not a copy paste error, you are calling a different function and the deletion function has s different name.
deleteSys_user();
function removeComputers() {
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2019 03:03 AM
I made a mistake too instead of gr i wrote gs
it should be
gr.setLimit(10000);
Use that and see if it works
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2019 03:06 AM
Yeah all good - thanks.
However, i must say it takes a very long time. There's no way to speed this up is there?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
12-10-2019 03:16 AM
Set workflow false is the way to speed it up, it ensures that no business rules run for the transaction.
Since it is a one time thing i feel it is fine.