- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2019 05:16 AM
in ATF usually we need to select a member of assignment group to impersonate and now we got a requirement to make it dynamic like select any one from assignment group to be impersonated.
for example : if Group A is having 6 users then system has to impersonate to anyone of 6 users (randomly)
here is the piece of code i am using but not worked 'Run Server Side Script' before the impersonation step
(function(outputs, steps, stepResult, assertEqual) {
var group ;
var chg = new GlideRecord('change_request');
chg.get(steps('795486dbdb51f7000eb3ec51ca9619ee').record_id); //substitute the sys_id from the previous test step that references your change request
chg.query();
while(chg.next()){
group = chg.assignment_group;
}
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('group', group); //call group with sys_id
grMember.query();
if (grMember.next()) { //this will get the first group member record that is returned
outputs.table = 'sys_user';
outputs.record_id = grMember.user;
if (outputs.record_id) {
stepResult.setOutputMessage("Successfully collected user sys_id");
return true;
} else {
stepResult.setOutputMessage("Failed to collect user sys_id"); //This likely means that the group member record is bad
return false;
}
} else {
stepResult.setOutputMessage("Failed to find group members"); //This likely means that there are no group members
return false;
}
})(outputs, steps, stepResult, assertEqual);
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2019 07:05 AM
Hi
I try this on Incident record, which is created by step: Open New Form and after step: Submit a Form and use this record sys_id in step: Run Server Side Script.
Please go through the below code.
Hopefully, it will helpful for you.
Regards,
Vaibhav Chaudhari
(function(outputs, steps, stepResult, assertEqual) {
describe('making jasmine wiggle when poked', function (){
var STEP_3_SYS_ID= '31dc97d3371533008020036973990eb8'; // Incident Submit form step sys_id
it('any RITM exist from STEP_3', function(){
var step_3_output = steps(STEP_3_SYS_ID);
gs.warn(JSON.stringify(step_3_output));
gs.warn("record_id = " + step_3_output.record_id);
gs.warn("------------------------------------------------------");
var INC = new GlideRecord('incident');
INC.addQuery('sys_id',step_3_output.record_id);
INC.query();
INC.next();
gs.log("Found Group : " + INC.assignment_group);
gs.log("Found INC : " + INC.number);
gs.log("Found Caller : " + INC.caller_id);
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('group',INC.assignment_group); //call group with sys_id
grMember.query();
if(grMember.next()) { //this will get the first group member record that is returned
expect(grMember.next());
outputs.table = 'sys_user_grmember';
outputs.record_id = grMember.user.sys_id;
gs.log("Found User : " + grMember.user.sys_id);
stepResult.setOutputMessage("Successfully collected user sys_id");
var sys_id = outputs.record_id;
}
});
});
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-14-2019 07:05 AM
Hi
I try this on Incident record, which is created by step: Open New Form and after step: Submit a Form and use this record sys_id in step: Run Server Side Script.
Please go through the below code.
Hopefully, it will helpful for you.
Regards,
Vaibhav Chaudhari
(function(outputs, steps, stepResult, assertEqual) {
describe('making jasmine wiggle when poked', function (){
var STEP_3_SYS_ID= '31dc97d3371533008020036973990eb8'; // Incident Submit form step sys_id
it('any RITM exist from STEP_3', function(){
var step_3_output = steps(STEP_3_SYS_ID);
gs.warn(JSON.stringify(step_3_output));
gs.warn("record_id = " + step_3_output.record_id);
gs.warn("------------------------------------------------------");
var INC = new GlideRecord('incident');
INC.addQuery('sys_id',step_3_output.record_id);
INC.query();
INC.next();
gs.log("Found Group : " + INC.assignment_group);
gs.log("Found INC : " + INC.number);
gs.log("Found Caller : " + INC.caller_id);
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('group',INC.assignment_group); //call group with sys_id
grMember.query();
if(grMember.next()) { //this will get the first group member record that is returned
expect(grMember.next());
outputs.table = 'sys_user_grmember';
outputs.record_id = grMember.user.sys_id;
gs.log("Found User : " + grMember.user.sys_id);
stepResult.setOutputMessage("Successfully collected user sys_id");
var sys_id = outputs.record_id;
}
});
});
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-15-2019 02:40 AM
fantastic it is working and selecting user from the assignment group. a small modification
for change request - > it has to impersonate user from the approval group of change (any one has awaiting approval for a change)
and here is the code i modified according to it
(function(outputs, steps, stepResult, assertEqual) {
describe('making jasmine wiggle when poked', function (){
var STEP_3_SYS_ID = 'f4b5c65fdb51f7000eb3ec51ca96194e'; // Change Submit form step sys_id
it('any RITM exist from STEP_3', function(){
var step_3_output = steps(STEP_3_SYS_ID);
gs.warn(JSON.stringify(step_3_output));
gs.warn("record_id = " + step_3_output.record_id);
gs.warn("------------------------------------------------------");
var CHG = new GlideRecord('sysapproval_approver');
CHG.addQuery('sysapproval',step_3_output.record_id);
CHG.query();
CHG.next();
gs.log("Found Group : " + CHG.assignment_group);
gs.log("Found CHG : " + CHG.number);
gs.log("Found Caller : " + CHG.caller_id);
var grMember = new GlideRecord('sys_user_grmember');
grMember.addQuery('group',CHG.assignment_group); //call group with sys_id
grMember.query();
if(grMember.next()) { //this will get the first group member record that is returned
expect(grMember.next());
outputs.table = 'sys_user_grmember';
outputs.record_id = grMember.user.sys_id;
gs.log("Found User : " + grMember.user.sys_id);
stepResult.setOutputMessage("Successfully collected user sys_id");
var sys_id = outputs.record_id;
}
});
});
})(outputs, steps, stepResult, assertEqual);
jasmine.getEnv().execute();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-15-2019 03:46 AM
Thanks to appreciating.
If a script is working fine please mark it correct it will also easy to find others & I will look into it respond you asap.
I do not understand why you want to peek approvers also, because generally they didn't see change form or is that you want that?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
05-15-2019 04:24 AM
yes we are configuring ATF Test Step on change management