Need to copy incident data to catalog item field on click of create request ui action

Ashwini35
Tera Contributor

Hi All,

 

I have a requirement to convert incident to request, for this I am using oob create request ui action but with this I need to copy few fields data from incident such as caller to requested for, short description of incident to short description of catalog item there are around 11 catalog items for which I have to configure this, can someone please guide me how this can be achieved? Its kind of urgent requirement from the client.

 

Thanks,

Ashwini

1 ACCEPTED SOLUTION

@Ashwini35 

try to set session variable and then use it in client script

You can add below code in your ui action

gs.getSession().putClientData('caller_id', current.caller_id);

To take these value in your catalog item you have to write a catalog client script.

You can use the below method to get those value

var user = g_user.getClientData('caller_id');

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

View solution in original post

18 REPLIES 18

@Ashwini35 

try this

gs.addInfoMessage(gs.getMessage('Incident will get Cancelled and new service request will be created - please validate any missing values in new task', current.number));

var caller_id = current.caller_id;
var business_service = current.business_service;
var short_description = current.short_description;
var description = current.description;

var street = current.street;
var url = "com.glideapp.servicecatalog_category_view.do?sysparm_parent=1808f7381ba055505e38ff3f034bcb3c&sysparm_catalog=e0d08b13c3330100c8b837659bba8fb4&sysparm_catalog_view=catalog_default&sysparm_view=catalog_default&sysparm_processing_hint=setfield:request.parent="+ '&sysparm_caller_id=' + caller_id + '&sysparm_business_service=' + business_service + '&sysparm_short_description=' + short_description + '&sysparm_description=' + description;
url += current.sys_id;

current.incident_state = 8;
current.active=false;
current.comments = 'Incident will get Cancelled and new service request will be created - please validate any missing values in new task';
current.update();
action.setRedirectURL(url);

Client script

function onLoad() {

	//Type appropriate comment here, and begin script below

	var gUrl = new GlideURL();
	gUrl.setFromCurrent();
	var itss_std_vsvar_requested_for = gUrl.getParam("sysparm_caller_id");
	var itss_std_vsvar_short_description = gUrl.getParam('sysparm_short_description');
	var itss_std_vsvar_detailed_description = gUrl.getParam('sysparm_description');

	g_form.setValue('itss_std_vsvar_requested_for', itss_std_vsvar_requested_for);
	g_form.setValue('itss_std_vsvar_short_description',itss_std_vsvar_short_description);
	g_form.setValue('itss_std_vsvar_detailed_description', itss_std_vsvar_detailed_description);

}

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

Requested for is still not coming as caller, but shortdescription and description are coming as undefined

 

@Ashwini35 

Did you check the URL to which it's getting redirected has the information for those fields?

 

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

Ankur, I got the issue. 

URL which I am passing is for category which has 11 items in it, this values are coming in url till category since on click of create request its redirecting to category first and then we are opening catalog items, this won't work similar way for my requirement since I have to navigate through category. Is there any other way to achieve this prepopulating of data if I have to go through category?

@Ashwini35 

try to set session variable and then use it in client script

You can add below code in your ui action

gs.getSession().putClientData('caller_id', current.caller_id);

To take these value in your catalog item you have to write a catalog client script.

You can use the below method to get those value

var user = g_user.getClientData('caller_id');

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