I am trying the script below:
/*
* Use case: Show user additional field details in new request page.
*
* Input:
*
* requestAdditionalFieldID is the id of the field available in new request page. ie. Location
* requesterAdditionalField is the display name of the user additional fields. ie. Userlocation
*
*
*
*/
//-----------------------Inputs Required--------------------//
var requestAdditionalFieldID = 'WorkOrder_Fields_UDF_CHAR3';
var requesterAdditionalField= 'Adres';
//-----------------------Inputs Required--------------------//
var reqName = $CS.getValue("REQUESTER");
var reqEmail = $CS.getValue("REQUESTER.EMAILID");
if (reqEmail === "") {
reqEmail = " ";
}
var xmlData;
xmlData = getInputData('Requester', reqName, reqEmail);
ajaxcall();
if ($CS.isTechnician() && $CS.getValue(requestAdditionalFieldID) === "") {
xmlData = getInputData('Technician', reqName, reqEmail);
ajaxcall();
}
/* Functions starts */
function getInputData(usertype, username, usermail) {
var tempXMLData = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<API version=\"1.0\" locale=\"en\">" +
"<citype>" +
"<name>" + usertype + "</name>" +
"<criterias>" +
"<criteria>" +
" <parameter>" +
"<name compOperator=\"is\">CI Name</name>" +
" <value>" + username + "</value>" +
" </parameter>" +
"<reloperator>AND</reloperator>" +
" <parameter>" +
"<name compOperator=\"is\">E-mail</name>" +
" <value>" + usermail + "</value>" +
" </parameter>" +
" </criteria>" +
"</criterias>" +
" <returnFields>" +
"<name>"+requesterAdditionalField+"</name>" +
" </returnFields>" +
"</citype>" +
"</API>";
return tempXMLData;
}
function ajaxcall() {
jQuery.ajax({
url: 'api/cmdb/ci',
type: 'POST',
dataType: 'json',
headers: {
'Accept': 'application/v3+xml'
}, //NO I18N
data: {
'OPERATION_NAME': 'read',
'INPUT_DATA': xmlData
},
success: function(response) {
handleResponse(response);
},
async: false
});
}
/* Response Functions starts */
function handleResponse(response) {
if (!response.API.response.operation.Details["field-values"].hasOwnProperty('record')) {
return;
}
var detObj = response.API.response.operation.Details["field-values"].record;
var fieldValue = detObj.value;
$CS.setValue(requestAdditionalFieldID, fieldValue);
}
This script works great when a Technician is creating the ticket but when a requester is creating the ticket it is not working on form load in the self service portal.
Can you please help with this script so it is also working on formload? The version i am running is 10.5.
Thank you in advance!