Copy this script into ServiceNow under application x_786686_hr_leave (Australia). Table/API names already use the current scope.
Source: src/server/rest/outbound_rest_message.js
/**
* Application: Custom · Scope: x_786686_hr_leave · sys_id: c84db0e8839f0b509f02b0d6feaad3c9
* Outbound REST — usage example
*
* FULL SETUP (Studio screenshot, all fields, POST method, test Send):
* src/server/rest/OUTBOUND_REST_MESSAGE_SETUP.md
*
* REST Message record:
* Name: HRLX ERP Push Decision
* Endpoint: x_786686_hr_leave.config.erp_endpoint (property name on form)
* Method: Push Decision (POST) — NOT Default GET
*
* Test: REST Message → HTTP Method Push Decision → Send (not REST API Explorer)
*
* Production call options:
* A) HRLXProIntegrationUtilsV2().outboundPushDecision(leaveSysId)
* B) RESTMessageV2('HRLX ERP Push Decision', 'Push Decision') + setStringParameter('employee_id', ...)
*/
// --- Reference: call configured REST Message by name ---
function pushDecisionViaRestMessage(leaveSysId) {
var gr = new GlideRecord('x_786686_hr_leave_req_v2');
if (!gr.get(leaveSysId)) return;
var empId = '';
if (gr.u_employee_ref) {
var e = gr.u_employee_ref.getRefRecord();
if (e.isValidRecord()) empId = e.getValue('u_employee_id');
}
var rm = new sn_ws.RESTMessageV2('HRLX ERP Push Decision', 'Push Decision');
rm.setStringParameter('employee_id', empId);
var resp = rm.execute();
gs.info('[HRLX] ERP push status: ' + resp.getStatusCode());
}
// --- Reference: raw outbound (no REST Message record) ---
function pushDecisionRaw(leaveSysId) {
var gr = new GlideRecord('x_786686_hr_leave_req_v2');
if (!gr.get(leaveSysId)) return;
var r = new sn_ws.RESTMessageV2();
r.setEndpoint(gs.getProperty('x_786686_hr_leave.config.erp_endpoint'));
r.setHttpMethod('POST');
r.setRequestHeader('Content-Type', 'application/json');
r.setRequestBody(JSON.stringify({
leave_number: gr.getValue('u_number'),
state: gr.getValue('u_state'),
start_date: gr.getValue('u_start_date'),
end_date: gr.getValue('u_end_date'),
decision_time: gr.getValue('sys_updated_on')
}));
var resp = r.execute();
gs.info('[HRLX] ERP push status: ' + resp.getStatusCode());
}
/* --- Async Business Rule (after, update) on x_786686_hr_leave_req_v2 ---
(function executeRule(current, previous) {
if (current.u_state.changesTo('approved') || current.u_state.changesTo('rejected')) {
new x_786686_hr_leave.HRLXProIntegrationUtilsV2().outboundPushDecision(current.getUniqueValue());
}
})(current, previous);
*/