
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-01-2020 06:29 PM
Hello, I have a transform script on a table transform map that I want to go through all the users, initially set to inactive, and then set to active to make sure that only active users are in the User table everytime the User list is loaded from external source. (It is loaded every day at a set time)
I have the following:
onStart
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
var users = new GlideRecord('sys_user');
users.query();
var user = users.next();
while(user !== null){
user.Active = false;
user = users.next();
}
})(source, map, log, target);
onAfter
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
target.Active = true;
})(source, map, log, target);
It has been 1.5 hours, and it is still running.
Is there any better way to accomplish what I am trying to do here?
Solved! Go to Solution.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-02-2020 10:55 PM
Hi Andrew,
you need to identify the users and the roles
form the query from sys_user table the users you want and roles you need to check
copy that query and use in script as below
(function runTransformScript(source, map, log, target /*undefined onStart*/ ) {
var query = 'nameINAbel Tuter,Suresh Parab^roles=itil'; // place your query here
var users = new GlideRecord('sys_user');
users.setLimit(5); // for testing purpose
users.addEncodedQuery(query);
users.query();
users.setValue('active', false);
users.updateMultiple();
})(source, map, log, target);
Mark ✅ Correct if this solves your issue and also mark 👍 Helpful if you find my response worthy based on the impact.
Thanks
Ankur
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-06-2020 09:34 PM
Yes I marked your answer as correct. Thanks so much!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-01-2020 07:04 PM
Hi Andrew,
Inactivating all active user(s) through the data import transform map is not a good solution, If any user trying to login during the inactivated state they will redirected to logout page.
Instead, use the column mapping along with coalesce ( i.e. user_name or employee number ) then only new record will insert and existing record will update if chances expected through the daily data feed.
var users = new GlideRecord('sys_user');
users.query();
// either use updateMultiple
users.setValue('active',false);
users.updateMultiple();
or
// iterate the gliderecord resultset.
while (users.next()){
users.active = false;
users.update();
}
Thanks,
Ashish
Please mark correct answer/helpful for other if it helps you.
Please mark this response as correct and helpful if it helps you can mark more that one reply as accepted solution

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-01-2020 10:19 PM
Thanks where would I put this?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
07-02-2020 05:50 AM
Hi, Put this code in "Transform Map" onStart section.
Thanks,
Ashish
Please mark correct answer/helpful for others if it helps you.
Please mark this response as correct and helpful if it helps you can mark more that one reply as accepted solution