E-Bonding, Received Correlation ID

Naveen87
Tera Guru

Hello Developers,

 

We are doing E-bonding b/w X & Y companies.

X company is passing Incident data & it's flowing as expected & creating ticket on Y company Incident table with information passed.

 

I want to receive the ticket number created on Y company on correlation ID field of X company, to confirm that ticket is created.

 

I have done below stuff but not receiving it. Not sure what is missed.

Please guide me

 

Naveen87_0-1711014869994.png

 ebondIncidentUpdate: function() {
		//var pathParams = request.pathParams; 
		//var table = pathParams.tableName;
		var requestBody = request.body;
		var requestData = requestBody.data;
		
	

		if (requestData.u_partner_ticket_id == undefined || requestData.u_partner_ticket_id == '')
		{
			response.setError(new sn_ws_err.BadRequestError('Correlation ID is missing'));
			return;
		}
		if (requestData.number == undefined || requestData.number == '')
		{
			response.setError(new sn_ws_err.BadRequestError('Number is missing'));
			return;
		}

		var gr = new GlideRecord('incident');
		gr.addQuery('number', requestData.number);
		gr.query();
		if (gr.next()) {
			gr.correlation_id = requestData.u_partner_ticket_id;
			gr.update();
		} else {
			response.setError(new sn_ws_err.BadRequestError('Incident not found'));
			return;
		}
		//  start building response object
		response.setStatus(200);
		response.setContentType('application/json');

		var body = {
			status: 'ok',
			requesterId: gr.number,
			providerId: gr.correlation_id,
			sys_id: gr.getUniqueValue()
		};

		response.setBody(body);
			var jsonObj = JSON.parse(responseBody)
        var ticketid = jsonObj.result.u_partner_ticket_id;
	},

 

1 ACCEPTED SOLUTION

Naveen87
Tera Guru

Please ignore.

I have found the solution.

I had to modify the BR.

var response = r.execute();
        var responseBody = response.getBody();
        gs.info("responseBody Wipro" + responseBody);
		var jsonObj = JSON.parse(responseBody)
        var ticketid = jsonObj.result.u_partner_ticket_id;
        current.correlation_id = ticketid;
        var httpStatus = response.getStatusCode();
    } catch (ex) {
        var message = ex.message;
    }

View solution in original post

9 REPLIES 9

Amit Pandey
Kilo Sage

Hi @Naveen87 

 

Y company can send the number in successful response to which X company needs to map with the correlation_id to confirm if the incident is created or not. 

 

Sharing the outline of scripted rest api-

 

ebondIncidentUpdate: function() {
    var requestBody = request.body;
    var requestData = requestBody.data;

    if (!requestData.u_partner_ticket_id || !requestData.number) {
        response.setError(new sn_ws_err.BadRequestError('Correlation ID or Incident Number is missing'));
        return;
    }

    var gr = new GlideRecord('incident');
    gr.addQuery('number', requestData.number);
    gr.query();
    if (gr.next()) {
        gr.correlation_id = requestData.u_partner_ticket_id;
        gr.update();
        response.setStatus(200);
        response.setContentType('application/json');

        var responseBody = {
            status: 'ok',
            requesterId: requestData.number, // Assuming 'number' is the incident number from company Y
            providerId: requestData.u_partner_ticket_id, // Assuming 'u_partner_ticket_id' is the ticket ID from company X
            sys_id: gr.getUniqueValue()
        };

        response.setBody(responseBody);
    } else {
        response.setError(new sn_ws_err.BadRequestError('Incident not found'));
    }
}

Please mark my answer helpful and correct.

 

Regards,

Amit

@Amit Pandey ,

 

Y company needs to call the API of X company to receive correlation id?

 

Also, correlation_id is a string field. I want to set, 'Y 1234'.

So we can understand this ID is coming from Y company.

 

Please suggest the line of code.

Amit Pandey
Kilo Sage

Y company can parse the response and update from it.

Sorry but I don't understand.

I will share my current configuration. Maybe this can be helpful  for u to guide me.

Let me know, If i need to add modify these. Please Share the line of code.

OUTBOPUND

BR

(function executeRule(current, previous /*null when async*/ ) {

    try {
        var r = new sn_ws.RESTMessageV2('global.EUW Ebonding', 'POST Incident');   
        r.setStringParameterNoEscape('u_customer_ticket_id', current.number);
        r.setStringParameterNoEscape('u_shr_priority', current.priority);
        r.setStringParameterNoEscape('u_shr_assignment_group', current.getDisplayValue('assignment_group'));

        var response = r.execute();
        var responseBody = response.getBody();
        gs.info("responseBody " + responseBody);
        var httpStatus = response.getStatusCode();
    } catch (ex) {
        var message = ex.message;
    }

})(current, previous);

Scripted REST API

Naveen87_0-1711021969394.png

 

Script Include

ebondIncidentUpdate: function() {
        var requestBody = request.body;
        var requestData = requestBody.data;
//u_partner_ticket_id  is the Y company field to store number (Ex:- Incident number).
        if (requestData.u_partner_ticket_id == undefined || requestData.u_partner_ticket_id == '') {
            response.setError(new sn_ws_err.BadRequestError('Correlation ID is missing'));
            return;
        }
        if (requestData.number == undefined || requestData.number == '') {
            response.setError(new sn_ws_err.BadRequestError('Number is missing'));
            return;
        }

        var gr = new GlideRecord('incident');
        gr.addQuery('number', requestData.number);
        gr.query();
        if (gr.next()) {
            gr.correlation_id = requestData.u_partner_ticket_id;
            gr.update();
        } else {
            response.setError(new sn_ws_err.BadRequestError('Incident not found'));
            return;
        }
        //  start building response object
        response.setStatus(200);
        response.setContentType('application/json');

        var body = {
            status: 'ok',
            requesterId: gr.number,
            providerId: gr.correlation_id,
            sys_id: gr.getUniqueValue()
        };

        response.setBody(body);
    },