Redirect from a UI Action to a Catalog Item and set default values

mjg5111
Mega Guru

Hello,

I have a requirement to redirect to a Service Catalog item from a UI Action Form Button and set a specific value that will trigger other fields to be populated. I currently have the UI Action in place and it is redirecting to the correct Catalog Item, however I'm having trouble setting the value on the Catalog Item. Below is the code for my UI Action and Script Include:

UI Action:

1 ACCEPTED SOLUTION

mjg5111
Mega Guru

I ended up passing the form values to the catalog form through the URL. Code is below:

 

Catalog Client Script:

function onLoad() {

//Type appropriate comment here, and begin script below

var user = getParmVal('sysparm_user');

var first_name = getParmVal('sysparm_first_name');

var last_name = getParmVal('sysparm_last_name');

var user_id = getParmVal('sysparm_user_id');

var email = getParmVal('sysparm_email');

var business_phone = getParmVal('sysparm_business_phone');

var mobile_phone = getParmVal('sysparm_mobile_phone');

var street = getParmVal('sysparm_street');

var street2 = getParmVal('sysparm_street2');

var city = getParmVal('sysparm_city');

var state = getParmVal('sysparm_state');

var zip = getParmVal('sysparm_zip');

 

if(user){

g_form.setValue('user_ref', user);

g_form.setValue('first_name', first_name);

g_form.setValue('last_name', last_name);

g_form.setValue('user_id', user_id);

g_form.setValue('email', email);

g_form.setValue('business_phone', business_phone);

g_form.setValue('mobile_phone', mobile_phone);

g_form.setValue('street', street);

g_form.setValue('street2', street2);

g_form.setValue('city', city);

g_form.setValue('state', state);

g_form.setValue('zip', zip);

}

 

function getParmVal(name){

var url = document.URL.parseQuery();

if(url[name]){

return decodeURI(url[name]);

} else {

return;

}

}

}

 

UI Action form button:

var user = current.sys_id;

var first_name = current.first_name;

var last_name = current.last_name;

var user_id = current.user_name;

var email = current.email;

var business_phone = current.phone;

var mobile_phone = current.mobile_phone;

var street = current.street;

var street2 = current.u_street2;

var city = current.city;

var state = current.state;

var zip = current.zip;

gs.setRedirect('com.glideapp.servicecatalog_cat_item_view.do?sysparm_id=1248c78d37440f40f51ea6d2b3990e67&sysparm_user=' + user + '&sysparm_first_name=' + first_name + '&sysparm_last_name=' + last_name + '&sysparm_user_id=' + user_id + '&sysparm_email=' + email + '&sysparm_business_phone=' + business_phone + '&sysparm_mobile_phone=' + mobile_phone + '&sysparm_street=' + street + '&sysparm_street2=' + street2 + '&sysparm_city=' + city + '&sysparm_state=' + state + '&sysparm_zip=' + zip);

View solution in original post

14 REPLIES 14

...so?

U managed? Could you tell me how it finally worked?

Thank you

mjg5111
Mega Guru

I ended up passing the form values to the catalog form through the URL. Code is below:

 

Catalog Client Script:

function onLoad() {

//Type appropriate comment here, and begin script below

var user = getParmVal('sysparm_user');

var first_name = getParmVal('sysparm_first_name');

var last_name = getParmVal('sysparm_last_name');

var user_id = getParmVal('sysparm_user_id');

var email = getParmVal('sysparm_email');

var business_phone = getParmVal('sysparm_business_phone');

var mobile_phone = getParmVal('sysparm_mobile_phone');

var street = getParmVal('sysparm_street');

var street2 = getParmVal('sysparm_street2');

var city = getParmVal('sysparm_city');

var state = getParmVal('sysparm_state');

var zip = getParmVal('sysparm_zip');

 

if(user){

g_form.setValue('user_ref', user);

g_form.setValue('first_name', first_name);

g_form.setValue('last_name', last_name);

g_form.setValue('user_id', user_id);

g_form.setValue('email', email);

g_form.setValue('business_phone', business_phone);

g_form.setValue('mobile_phone', mobile_phone);

g_form.setValue('street', street);

g_form.setValue('street2', street2);

g_form.setValue('city', city);

g_form.setValue('state', state);

g_form.setValue('zip', zip);

}

 

function getParmVal(name){

var url = document.URL.parseQuery();

if(url[name]){

return decodeURI(url[name]);

} else {

return;

}

}

}

 

UI Action form button:

var user = current.sys_id;

var first_name = current.first_name;

var last_name = current.last_name;

var user_id = current.user_name;

var email = current.email;

var business_phone = current.phone;

var mobile_phone = current.mobile_phone;

var street = current.street;

var street2 = current.u_street2;

var city = current.city;

var state = current.state;

var zip = current.zip;

gs.setRedirect('com.glideapp.servicecatalog_cat_item_view.do?sysparm_id=1248c78d37440f40f51ea6d2b3990e67&sysparm_user=' + user + '&sysparm_first_name=' + first_name + '&sysparm_last_name=' + last_name + '&sysparm_user_id=' + user_id + '&sysparm_email=' + email + '&sysparm_business_phone=' + business_phone + '&sysparm_mobile_phone=' + mobile_phone + '&sysparm_street=' + street + '&sysparm_street2=' + street2 + '&sysparm_city=' + city + '&sysparm_state=' + state + '&sysparm_zip=' + zip);

Samuel Scott
Giga Contributor

I do not see your UI action attached...I'm trying to solve the same issue.

Su522
Kilo Sage

I've used the above suggestion but if I submit the catalog item manually through the portal > it has the same data from last time, from the UI Action. 

Is there a solution for this?

I think below link has steps to solve this issue

 

https://www.servicenow.com/community/developer-forum/how-to-clear-session-data-after-submit-catalog-...

 

Regards,

Bharath