How to add key and value in the response we got from rest message?

Prathamesh Chav
Tera Contributor

Hi Team,

 

I am fetching response from restmessage but from there I am getting company name, start date and end date,

start date and end date I am able to populate on change form, but for company name which is reference field I am trying to fetch sys_id from the same script include which is I am using to call rest message and fetch the responseBody and I am passing that responseBody to the client side.

 

PrathameshChav_0-1740044470079.png

 

 


 
Updating Media

 

try {
 var r = new sn_ws.RESTMessageV2('CLM Integration', 'Default GET');
 r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', crn_number);
 // r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', '00054549.0');


 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();
}
catch(ex) {
 var message = ex.message;
}
        if(httpStatus == 200){

             var compSys = new GlideRecord("core_company");
 compSys.addEncodedQuery("nameSTARTSWITH" + responseBody.records[0].Account_Name__c);
 compSys.query();
 if (compSys.next()) {
     var sys_Comp = compSys.sys_id;
 }

//adding new line
responseBody.records[0].sys_idd = sys_Comp;
            return JSON.stringify(responseBody);
        }
       

    },
 
getting this error message
PrathameshChav_1-1740044827032.png

 


 

 

23 REPLIES 23

SCRIPT INCLUDE:-

 

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

    getCrnNum: function() {

     var crn_number = this.getParameter('clmcrn');

 try {
 var r = new sn_ws.RESTMessageV2('CLM Integration', 'Default GET');
 r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', crn_number);
 // r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', '00054549.0');


 var response = r.execute();
 var responseBody = response.getBody();
 var httpStatus = response.getStatusCode();

       if(httpStatus == 200){
            return JSON.stringify(responseBody);
        }  

}
catch(ex) {
 var message = ex.message;
}
       
       

    },

    getCompanySysId: function(){

    var clmComp = this.getCrnNum;
    return clmComp;


    },

    type: 'clmCrmIntegration'
});
 
 
 
CLIENT SCRIPT:-
 
 
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

g_form.clearMessages();




        var gr = new GlideAjax("global.clmCrmIntegration");
            gr.addParam('sysparm_name', "getCrnNum"); //Method
            gr.addParam('clmcrn',newValue); //Parameters
            gr.getXMLAnswer(getResponse);

                function getResponse(response){
        var jsonString = JSON.parse(response);
        jsonString.toString();
        var jsonObj = JSON.parse(jsonString);
   
   
        var size = jsonObj.totalSize;
        if(size != 0){
        //var agreementNumber = jsonObj.records[0].Apttus__FF_Agreement_Number__c;
        var startDate = jsonObj.records[0].Apttus__Contract_Start_Date__c;
        var endDate = jsonObj.records[0].Apttus__Contract_End_Date__c;
        //var clmComp = jsonObj.records[0].sysId;
        //var sys_companySNow = jsonObj.records["0"].sys_idd;
        g_form.addInfoMessage(jsonObj);


         //g_form.addInfoMessage(agreementNumber + " Start Date :-" + startDate + " End Date :-" + endDate + " Size :   " + size) ;
         g_form.setValue("start_date", startDate);
         g_form.setValue("end_date", endDate);
        // g_form.addInfoMessage(jsonObj)
         //g_form.setValue("companyname", sys_companySNow);
         //g_form.setValue("companyname", clmComp);
        }
        else {
            g_form.addErrorMessage("InValid CRN, Please enter a valid CRN");
            g_form.showFieldMsg("consultants_employeecode","InValid CRN, Please enter a valid CRN", "error");
            g_form.setValue("start_date", "");
            g_form.setValue("end_date", "");
            g_form.setValue("ad_id_end_date", "");
        }

   
}
   
}
   
 
RESPONSE ;-
 
{"totalSize":1,"done":true,"records":[{"attributes":{"type":"Apttus__APTS_Agreement__c","url":"/services/data/v58.0/sobjects/Apttus__APTS_Agreement__c/a08O2000004i9TVIAY"},"Apttus__FF_Agreement_Number__c":"00055087.1","Apttus__Contract_Start_Date__c":"2023-11-04","Apttus__Contract_End_Date__c":"2024-11-03","Account_Name__c":"FIREWORKS PRODUCTIONS","Apttus__Status__c":"Activated"}]}
 
PrathameshChav_0-1740050209893.png

 

Hi @Prathamesh Chav ,

try this

Script Include:

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

    getCrnNum: function() {

        var crn_number = this.getParameter('clmcrn');

        try {
            var r = new sn_ws.RESTMessageV2('CLM Integration', 'Default GET');
            r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', crn_number);
            // r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', '00054549.0');


            var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();

            if (httpStatus == 200) {
                responseBody = JSON.parse(responseBody);
                responseBody.companySysID = this.getCompanySysId(responseBody.records[0].Account_Name__c);
                return responseBody;
            }
            return null;

        } catch (ex) {
            var message = ex.message;
        }



    },

    getCompanySysId: function(compayName) {

        var gr = new GlideRecord('core_company');
        gr.addEncodedQuery('nameSTARTSWITH' + compayName);
        gr.setLimit(1);
        gr.query()
        if (gr.next()) {
            return gr.getValue('sys_id');
        }
        return ''; //else return empty value


    },

    type: 'clmCrmIntegration'
});

 

Client Script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
        if (isLoading || newValue === '') {
            return;
        }

        g_form.clearMessages();

        var gr = new GlideAjax("global.clmCrmIntegration");
        gr.addParam('sysparm_name', "getCrnNum"); //Method
        gr.addParam('clmcrn', newValue); //Parameters
        gr.getXMLAnswer(getResponse);

        function getResponse(response) {
            // var jsonString = JSON.parse(response);
            // jsonString.toString();
            var jsonObj = JSON.parse(response);


            var size = jsonObj.totalSize;
            if (size != 0) {
                //var agreementNumber = jsonObj.records[0].Apttus__FF_Agreement_Number__c;
                var startDate = jsonObj.records[0].Apttus__Contract_Start_Date__c;
                var endDate = jsonObj.records[0].Apttus__Contract_End_Date__c;
                var clmComp = jsonObj.companySysID;
                //var sys_companySNow = jsonObj.records["0"].sys_idd;    
                g_form.addInfoMessage(JSON.stringify(jsonObj)); // you will see this info message


                //g_form.addInfoMessage(agreementNumber + " Start Date :-" + startDate + " End Date :-" + endDate + " Size :   " + size) ;
                g_form.setValue("start_date", startDate);
                g_form.setValue("end_date", endDate);
                // g_form.addInfoMessage(jsonObj)
                //g_form.setValue("companyname", sys_companySNow);
                //g_form.setValue("companyname", clmComp);
            } else {
                g_form.addErrorMessage("InValid CRN, Please enter a valid CRN");
                g_form.showFieldMsg("consultants_employeecode", "InValid CRN, Please enter a valid CRN", "error");
                g_form.setValue("start_date", "");
                g_form.setValue("end_date", "");
                g_form.setValue("ad_id_end_date", "");
            }


        }

    }

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

Hi @Chaitanya ILCR ,

 

Here how will I fetch company name from response into lookup to fetch sys_id, in script include

Hi @Prathamesh Chav ,

responseBody.companySysID = this.getCompanySysId(responseBody.records[0].Account_Name__c);

this line returns the sysid

 

Please mark my answer as helpful/correct if it resolves your query.

Regards,
Chaitanya

@Prathamesh Chav 

enhance as this

Script Include:

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

    getCrnNum: function() {
        var crn_number = this.getParameter('clmcrn');
        var obj = {};
        try {
            var r = new sn_ws.RESTMessageV2('CLM Integration', 'Default GET');
            r.setStringParameterNoEscape('Apttus__FF_Agreement_Number__c', crn_number);

            var response = r.execute();
            var responseBody = response.getBody();
            var httpStatus = response.getStatusCode();
            if (httpStatus == 200) {

                var startDate = jsonObj.records[0].Apttus__Contract_Start_Date__c;
                var endDate = jsonObj.records[0].Apttus__Contract_End_Date__c;

                obj['start'] = startDate.toString();
                obj['end'] = endDate.toString();

                var accountName = responseBody.records[0].Account_Name__c;

                var gr = new GlideRecord('core_company');
                gr.addEncodedQuery('nameSTARTSWITH' + accountName);
                gr.setLimit(1);
                gr.query()
                if (gr.next()) {
                    obj['company'] = gr.getUniqueValue();
                }
                return JSON.stringify(obj);
            }
            return '';
        } catch (ex) {
            var message = ex.message;
            gs.error("Error in getCrnNum: " + message);
        }
    },

    type: 'clmCrmIntegration'
});

Client script:

function onChange(control, oldValue, newValue, isLoading, isTemplate) {
    if (isLoading || newValue === '') {
        return;
    }

    g_form.clearMessages();

    var ga = new GlideAjax("global.clmCrmIntegration");
    ga.addParam('sysparm_name', "getCrnNum"); // Method
    ga.addParam('clmcrn', newValue); // Parameters
    ga.getXMLAnswer(function(answer) {
        if (answer != '') {
            var jsonObj = JSON.parse(answer);
            var startDate = jsonObj.start;
            var endDate = jsonObj.end;
            var accountName = jsonObj.company;

            g_form.addInfoMessage("Start Date: " + startDate + ", End Date: " + endDate + ", Account Name: " + accountName);
            g_form.setValue("start_date", startDate);
            g_form.setValue("end_date", endDate);
            g_form.setValue("account_name", accountName);
        } else {
            g_form.addErrorMessage("Invalid CRN, please enter a valid CRN");
            g_form.showFieldMsg("consultants_employeecode", "Invalid CRN, please enter a valid CRN", "error");
            g_form.clearValue("start_date");
            g_form.clearValue("end_date");
            g_form.clearValue("account_name");
        }
    });
}

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