I have REST Message through which code loops through all the pages available in the 3rd party app and responds back to ServiceNow. Additionally, I want to stop processing once records are over.
var baseUrl = "https:first_page/api/arsys/v1.0/entry/HPD:Help%20Desk?&q=%27Status%27%3C=%22Pending%22"; // first page
function fetchRecords(baseUrl) {
var r = new sn_ws.RESTMessageV2('Integration', 'get token');
var TOKEN_SYS_PROP_NAME = '';
var authBodyContent = 'dXNlcm5hbWU9YWtob3Nobm9vZEBhY29yaW8uY29tJnBhc3N3b3JkPTEyMzQ=';
var authBodyContentDecoded = GlideStringUtil.base64Decode(authBodyContent); //
r.setRequestBody(authBodyContentDecoded);
var response = r.execute();
var responseBody = response.getBody();
var httpStatus = response.getStatusCode();
TOKEN_SYS_PROP_NAME = ("AR-JWT " + responseBody + '');
gs.print(TOKEN_SYS_PROP_NAME);
rm = new sn_ws.RESTMessageV2('global.Helix Integration', 'get helix incidents');
rm.setStringParameterNoEscape('authToken', TOKEN_SYS_PROP_NAME);
rm.setStringParameterNoEscape('url', baseUrl);
var response1 = rm.execute();
var responseBody1 = response1.getBody();
var parsedResponse = JSON.parse(responseBody1);
//var parser = new JSONParser();
//var result = parsedResponse;
var httpStatus1 = response.getStatusCode();
//gs.print(result);
if (parsedResponse.entries && parsedResponse.entries.length > 0) {
processRecords(parsedResponse.entries);
}
if (parsedResponse._links) {
baseUrl = JSON.stringify(parsedResponse._links.next);
fetchRecords(JSON.stringify(parsedResponse._links.next));
}
else{
gs.print("Processing completed");
}
function processRecords(entries) {
for (var i = 0; i < entries.length; i++) {
var num = entries[i].values["Incident Number"];
var submitter = entries[i].values["Submitter"];
var sub_date = entries[i].values["Submit Date"];
var cat = entries[i].values["Category"];
var ass_id = entries[i].values["Assignee Id"];
var last_mod_by = entries[i].values["Last Modified By"];
var last_mod_date = entries[i].values["Last Modified Date"];
var status = entries[i].values["Status"];
var desc = entries[i].values["Description"];
var created_by = entries[i].values["Created_By"];
var res_cat = entries[i].values["Resolution Category"];
var site = entries[i].values["Site"];
var res_cat_tier_3 = entries[i].values["Resolution Category Tier 3"];
var res_cat_tier_2 = entries[i].values["Resolution Category Tier 2"];
var resolution = entries[i].values["Resolution"];
var urgency = entries[i].values["Urgency"];
var impact = entries[i].values["Impact"];
var incident_num = entries[i].values["Incident Number"];
var priority = entries[i].values["Priority"];
var assign_group = entries[i].values["Assigned Group"];
var rep_source = entries[i].values["Reported Source"];
var detailed_desc = entries[i].values["Detailed Description"];
var ph_number = entries[i].values["Phone Number"];
var product_name = entries[i].values["Product Name"];
var cat_tier_1 = entries[i].values["Categorization Tier 1"];
var last_res_date = entries[i].values["Last Resolved Date"];
var closed_date = entries[i].values["Closed Date"];
var srattach = entries[i].values["SRAttachment/Attachment"];
var cat_tier_2 = entries[i].values["Categorization Tier 2"];
var cat_tier_3 = entries[i].values["Categorization Tier 3"];
var pro_cat_1 = entries[i].values["Product Categorization Tier 1"];
var pro_cat_3 = entries[i].values["Product Categorization Tier 3"];
var pro_cat_2 = entries[i].values["Product Categorization Tier 2"];
var req_id = entries[i].values["SRID"];
var inc = new GlideRecord('sn_customerservice_case');
inc.addQuery('number', num);
inc.query;
if (!inc) {
var grUser = new GlideRecord('sys_user');
grUser.addQuery('email', submitter); // Replace with the actual email address
grUser.query();
if (grUser.next()) {
var sys_id = grUser.getUniqueValue(); // Or grUser.sys_id
var grGroup = new GlideRecord('sys_user_group');
grGroup.addQuery('name', assign_group); // Replace with the actual email address
grGroup.query();
var group_sys_id = grGroup.getUniqueValue();
var gr = new GlideRecord('sn_customerservice_case'); // Replace with target table name
gr.initialize();
gr.setValue('u_ticket_type', 'Incident'); // Replace FIELD_1 and KEY_1
gr.setValue('number', num);
gr.setValue('description', req_id);
gr.setValue('internal_user', sys_id);
gr.setValue('category', 'ServiceNow');
gr.setValue('category', 'Other');
gr.setValue('assignment_group', group_sys_id);
gr.setValue('u_this_issue_is_for', 'Employee(s)');
gr.setValue('sys_created_on', sub_date);
gr.setValue('assigned_to', ass_id);
gr.setValue('sys_updated_by', last_mod_by);
gr.setValue('sys_updated_on', last_mod_date);
gr.setValue('state', status);
gr.setValue('state', status);
gr.setValue('short_description', (req_id, ' :', desc));
gr.setValue('ticket_type', 'Incident');
gr.setWorkflow(false);
gr.insertWithReferences();
}
} else {
gs.print(num+ "Record already exists in the table");
}
}
}
}
fetchRecords(baseUrl);