UI Action to Open a related case

Michael Nash
Giga Expert

Hey Community,

 

I have a requirement to create a UI Action to Open a related case.

 

1. Create a UI Action on the incident form and workspace that directs the user back to the related case

2. The UI action should be named 'Contact Customer'

3. Return error 'There is no related case' if no related case exists.

I need some assistance with the script please.

 

 

1 ACCEPTED SOLUTION

Hi,

Something like this

I hope this will benefit you and you can mark my response as correct and helpful to close the thread since I provided the script.

You can do further debugging if there are some challenges

Script Include: It should be client callable

var checkRecords = Class.create();
checkRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	checkRecordPresent: function(){

		var sysId = this.getParameter('sysparm_sysId');
		var gr = new GlideRecord('sn_customerservice_case');
		gr.addEncodedQuery('incident=' + sysId);
		gr.query();
		if(gr.next()){
			return gr.getUniqueValue();
		}
		else
			return '';
	},

	type: 'checkRecords'
});

Script:

function openCase(){

	// GlideAjax here
	var ga = new GlideAjax('checkRecords');
	ga.addParam('sysparm_name', "checkRecordPresent");
	ga.addParam('sysparm_userID', g_form.getUniqueValue());
	ga.getXMLAnswer(function(answer){
		if(answer != ''){
			var url = '/sn_customerservice_case.do?sys_id=' + answer;
			g_navigation.open(url,'_blank');
		}
		else{
			g_form.addErrorMessage('There is no related case');
		}
	});

}

Workspace client script:

function onClick(g_form) {

	var ga = new GlideAjax('checkRecords');
	ga.addParam('sysparm_name', "checkRecordPresent");
	ga.addParam('sysparm_userID', g_form.getUniqueValue());
	ga.getXMLAnswer(function(answer){
		if(answer != ''){
			var url = '/sn_customerservice_case.do?sys_id=' + answer;
			open(url);
		}
		else{
			g_form.addErrorMessage('There is no related case');
		}
	});
}

find_real_file.png

find_real_file.png

Regards
Ankur

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

View solution in original post

4 REPLIES 4

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

so on click of UI action it should redirect to case

You can use GlideAjax to check if there is any case for this incident and based on that redirect or show error message

Regards
Ankur

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

Hi,

like this

I assume you are comfortable in scripting

Script section:

var url = ''; // form the url

g_navigation.open(url,'_blank');

Workspace client script section:

var url = ''; // form the url

open(url);

for redirection use this

find_real_file.png

find_real_file.png

Regards
Ankur

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

Hi Ankur,

 

Not comfortable with scripting, still learning 🙂

 

Must I use the code as you have done it in the screenshot?

 

could you assist me with both scripts?

Hi,

Something like this

I hope this will benefit you and you can mark my response as correct and helpful to close the thread since I provided the script.

You can do further debugging if there are some challenges

Script Include: It should be client callable

var checkRecords = Class.create();
checkRecords.prototype = Object.extendsObject(AbstractAjaxProcessor, {

	checkRecordPresent: function(){

		var sysId = this.getParameter('sysparm_sysId');
		var gr = new GlideRecord('sn_customerservice_case');
		gr.addEncodedQuery('incident=' + sysId);
		gr.query();
		if(gr.next()){
			return gr.getUniqueValue();
		}
		else
			return '';
	},

	type: 'checkRecords'
});

Script:

function openCase(){

	// GlideAjax here
	var ga = new GlideAjax('checkRecords');
	ga.addParam('sysparm_name', "checkRecordPresent");
	ga.addParam('sysparm_userID', g_form.getUniqueValue());
	ga.getXMLAnswer(function(answer){
		if(answer != ''){
			var url = '/sn_customerservice_case.do?sys_id=' + answer;
			g_navigation.open(url,'_blank');
		}
		else{
			g_form.addErrorMessage('There is no related case');
		}
	});

}

Workspace client script:

function onClick(g_form) {

	var ga = new GlideAjax('checkRecords');
	ga.addParam('sysparm_name', "checkRecordPresent");
	ga.addParam('sysparm_userID', g_form.getUniqueValue());
	ga.getXMLAnswer(function(answer){
		if(answer != ''){
			var url = '/sn_customerservice_case.do?sys_id=' + answer;
			open(url);
		}
		else{
			g_form.addErrorMessage('There is no related case');
		}
	});
}

find_real_file.png

find_real_file.png

Regards
Ankur

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