The CreatorCon Call for Content is officially open! Get started here.

on Before Insert Business Rule problem

Alon Grod
Tera Expert

I have an on Before insert BR on the incident table that suppose to populate the assignment group field. Even though Im getting the log 'TRUE', the assignment group is not populated and instead Im getting an empty value inside the assignment group field. I checked and there is no BR that conflict with this BR. What am I doing wrong?

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var loc = current.location;

	var gr = new GlideRecord('cmn_location');
	gr.addEncodedQuery('sys_id='+loc+'^u_assignment_groupISNOTEMPTY');
	gr.query();
	if(gr.hasNext()){
		gs.log('TRUE');
		current.assignment_group = gr.u_assignment_group;
	}
	else{
		
	}

})(current, previous);
1 ACCEPTED SOLUTION

Prince Arora
Tera Sage

@Alon Grod ,

 

hasNext() either returns true or false while next() will actually iterate to the record.

 

try updating the code as:

gr.next()

 

 

View solution in original post

13 REPLIES 13

@Alon Grod This script which i have provided that is also same. it is replaced with gr.next().

Please check it once.

 

If my answer solved your issue, please mark my answer as Correct & 👍Helpful

@Alon Grod 

if it has value then you should be able to print it?

did you check the XML of that record and it has value in it?

share screenshot of that record ?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Ankur Bawiskar  i meant that it has value in it in the cmn_location table.

Screen Shot 2023-03-16 at 11.05.01.png

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var loc = current.location;

	var gr = new GlideRecord('cmn_location');
	gr.addEncodedQuery('sys_id='+loc+'^u_assignment_groupISNOTEMPTY');
	gr.query();
	if(gr.hasNext()){
		gs.log('TRUE');
		gs.log(gr.u_assignment_group);
		current.assignment_group = gr.u_assignment_group;
	}
	else{
		
	}

})(current, previous);

 

Screen Shot 2023-03-16 at 11.05.37.png

@Alon Grod 

is the script running in admin session?

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader

@Alon Grod 

you need not query since location is already reference field

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	var group = current.location.u_assignment_group;
	if(group)
		current.assignment_group = group;

})(current, previous);

If my response helped please mark it correct and close the thread so that it benefits future readers.

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader