Flow is updating existing records without a .update()
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-16-2025 11:22 AM
Hey all,
I'm running a Flow Designer action that uses a Script step to insert records into a custom table (sn_customerservice_certificate_information). I'm using .initialize() followed by .insert(), and not calling .update() anywhere.
However, when the same correlation_id is used, instead of inserting a new record, it seems to update an existing one, even though I'm explicitly calling .insert().
Is this expected behavior? Could a unique index or something on correlation_id be causing GlideRecord to silently update instead of inserting?
(function execute(inputs, outputs) {
var payload = JSON.parse(inputs.inqPayload)
for (var v in payload.body.Item.certNumbers) {
var match = payload.body.Item.certNumbers[v].match_status;
if (payload.body.Item.certNumbers[v].isthisaseriesrequest.toString() == "Yes") {
var gr = new GlideRecord('sn_customerservice_certificate_information');
gr.initialize();
gr.parent = inputs.parentRec;
gr.correlation_id = payload.body.Item.certNumbers[v].recordNumber.toString();
if (match != 0) {
if (payload.body.Item.certNumbers[v].institution_details) {
var contact_name = payload.body.Item.certNumbers[v].institution_details.contact_name != null ? payload.body.Item.certNumbers[v].institution_details.contact_name : "";
var contact_phone = payload.body.Item.certNumbers[v].institution_details.contact_phone != null ? payload.body.Item.certNumbers[v].institution_details.contact_phone : "";
gr.u_transfer_pay_agent = contact_name + " " + contact_phone;
gr.u_institution = payload.body.Item.certNumbers[v].institution_details.name_of_institution ? payload.body.Item.certNumbers[v].institution_details.name_of_institution : "";
var address_line_1 = payload.body.Item.certNumbers[v].institution_details.address_line_1 ? payload.body.Item.certNumbers[v].institution_details.address_line_1.toString() : "";
var address_line_2 = payload.body.Item.certNumbers[v].institution_details.address_line_2 ? payload.body.Item.certNumbers[v].institution_details.address_line_2.toString() : "";
gr.u_address = address_line_1 + " " + address_line_2;
gr.u_city = payload.body.Item.certNumbers[v].institution_details.city != null ? payload.body.Item.certNumbers[v].institution_details.city.toString() : "";
gr.u_state_province = payload.body.Item.certNumbers[v].institution_details.state != null ? payload.body.Item.certNumbers[v].institution_details.state.toString() : "";
gr.u_zip_code = payload.body.Item.certNumbers[v].institution_details.zip != null ? payload.body.Item.certNumbers[v].institution_details.zip.toString() : "";
}
gr.u_record_update_flag = payload.body.Item.certNumbers[v].record_update_flag;
gr.u_processing_complete = payload.body.Item.certNumbers[v].processing_complete;
gr.u_preliminary_report = payload.body.Item.certNumbers[v].preliminary_report;
gr.u_disputed_item = payload.body.Item.certNumbers[v].disputed_item;
}
gr.u_transaction_number = payload.body.Item.certNumbers[v].transaction_number;
gr.u_denomination_shares = payload.body.Item.certNumbers[v].denomination;
gr.u_certifcate_prefix = payload.body.Item.certNumbers[v].certificate_prefix;
gr.u_issue_date = payload.body.Item.certNumbers[v].issuedates;
gr.u_certificate_serial_numbers = payload.body.Item.certNumbers[v].certFrom;
gr.u_inquiry_status = payload.body.Item.certNumbers[v].match_status;
gr.u_stop_type = payload.body.Item.certNumbers[v].stop_type;
gr.u_denomination_hit = payload.body.Item.certNumbers[v].denomination_hit != null ? payload.body.Item.certNumbers[v].denomination_hit : "";
gr.u_issue_date_hit = payload.body.Item.certNumbers[v].issue_date_hit != null ? payload.body.Item.certNumbers[v].issue_date_hit : "";
gr.u_certificate_hit = payload.body.Item.certNumbers[v].certificate_prefix_match != null ? payload.body.Item.certNumbers[v].certificate_prefix_match : "";
gr.u_cancelled_indicator = payload.body.Item.certNumbers[v].cancelled_indicated != null ? payload.body.Item.certNumbers[v].cancelled_indicated : "";
gr.u_counterfeit_indicated = payload.body.Item.certNumbers[v].counterfeit_indicated != null ? payload.body.Item.certNumbers[v].counterfeit_indicated : "";
gr.u_criminially_indicated = payload.body.Item.certNumbers[v].criminality_indicated != null ? payload.body.Item.certNumbers[v].criminality_indicated : "";
gr.work_notes = "Individual response from " + payload.body.Item.certNumbers[v].recordNumber.toString() + " series request.";
gr.u_original_record = orgRecord(payload.body.Item.certNumbers[v].recordNumber, "sn_customerservice_certificate_information");
gr.parent = orgRecord(payload.body.Item.rpt, "sn_customerservice_case");
gr.u_type = "response";
// gr.state = "3"; //closed complete
gr.insert();
} else {
var gr = new GlideRecord('sn_customerservice_certificate_information');
gr.initialize()
gs.info("Testing process inquiry" + match.toString());
if (match != 0) {
if (payload.body.Item.certNumbers[v].institution_details) {
var contact_name = payload.body.Item.certNumbers[v].institution_details.contact_name != null ? payload.body.Item.certNumbers[v].institution_details.contact_name : "";
var contact_phone = payload.body.Item.certNumbers[v].institution_details.contact_phone != null ? payload.body.Item.certNumbers[v].institution_details.contact_phone : ""
gr.u_transfer_pay_agent = contact_name + " " + contact_phone;
gr.u_institution = payload.body.Item.certNumbers[v].institution_details.name_of_institution ? payload.body.Item.certNumbers[v].institution_details.name_of_institution : "";
var address_line_1 = payload.body.Item.certNumbers[v].institution_details.address_line_1 ? payload.body.Item.certNumbers[v].institution_details.address_line_1.toString() : "";
var address_line_2 = payload.body.Item.certNumbers[v].institution_details.address_line_2 ? payload.body.Item.certNumbers[v].institution_details.address_line_2.toString() : "";
gr.u_address = address_line_1 + " " + address_line_2;
gr.u_city = payload.body.Item.certNumbers[v].institution_details.city != null ? payload.body.Item.certNumbers[v].institution_details.city.toString() : "";
gr.u_state_province = payload.body.Item.certNumbers[v].institution_details.state != null ? payload.body.Item.certNumbers[v].institution_details.state.toString() : "";
gr.u_zip_code = payload.body.Item.certNumbers[v].institution_details.zip != null ? payload.body.Item.certNumbers[v].institution_details.zip.toString() : "";
}
gr.u_record_update_flag = payload.body.Item.certNumbers[v].record_update_flag ? payload.body.Item.certNumbers[v].record_update_flag : "";
gr.u_processing_complete = payload.body.Item.certNumbers[v].processing_complete;
gr.u_preliminary_report = payload.body.Item.certNumbers[v].preliminary_report;
gr.u_disputed_item = payload.body.Item.certNumbers[v].disputed_item;
}
gr.u_transaction_number = payload.body.Item.certNumbers[v].transaction_number != null ? payload.body.Item.certNumbers[v].transaction_number : "";
gr.u_inquiry_status = match;
gr.u_denomination_shares = payload.body.Item.certNumbers[v].denomination != null ? payload.body.Item.certNumbers[v].denomination : "";
gr.u_certifcate_prefix = payload.body.Item.certNumbers[v].certificate_prefix != null ? payload.body.Item.certNumbers[v].certificate_prefix : "";
gr.u_issue_date = payload.body.Item.certNumbers[v].issuedates != null ? payload.body.Item.certNumbers[v].issuedates : "";
gr.u_certificate_serial_numbers = payload.body.Item.certNumbers[v].certFrom != null ? payload.body.Item.certNumbers[v].certFrom : "";
gr.u_stop_type = payload.body.Item.certNumbers[v].stop_type != null ? payload.body.Item.certNumbers[v].stop_type : "";
gr.u_denomination_hit = payload.body.Item.certNumbers[v].denomination_hit != null ? payload.body.Item.certNumbers[v].denomination_hit : "";
gr.u_issue_date_hit = payload.body.Item.certNumbers[v].issue_date_hit != null ? payload.body.Item.certNumbers[v].issue_date_hit : "";
gr.u_certificate_hit = payload.body.Item.certNumbers[v].certificate_prefix_match != null ? payload.body.Item.certNumbers[v].certificate_prefix_match : "";
gr.u_cancelled_indicator = payload.body.Item.certNumbers[v].cancelled_indicated != null ? payload.body.Item.certNumbers[v].cancelled_indicated : "";
gr.u_counterfeit_indicated = payload.body.Item.certNumbers[v].counterfeit_indicated != null ? payload.body.Item.certNumbers[v].counterfeit_indicated : "";
gr.u_criminially_indicated = payload.body.Item.certNumbers[v].criminality_indicated != null ? payload.body.Item.certNumbers[v].criminality_indicated : "";
gr.u_original_record = orgRecord(payload.body.Item.certNumbers[v].recordNumber, "sn_customerservice_certificate_information");
gr.parent = orgRecord(payload.body.Item.rpt, "sn_customerservice_case");
gr.u_type = "response";
gr.insert();
}
var inq = new GlideRecord("x_g_afss_inquiry_inquiries");
inq.addQuery("sys_id", inputs.parentRec);
inq.query();
if (inq.next()){
inq.u_cusip_changed = payload.body.Item.u_cusip_changed;
inq.update();
}
}
})(inputs, outputs);
function isMatchValue(match) {
var answer = null;
if (match == "N") {
answer = "0"
} else if (match == "Y") {
answer = "2"
} else if (match == "P") {
answer = "1"
}
return answer;
}
function orgRecord(recNo, tbl) {
answer = null;
gr = new GlideRecord(tbl);
gr.addEncodedQuery("number=" + recNo);
gr.query();
if (gr.next()) {
answer = gr.sys_id.toString();
}
return answer;
}​
Any insight or workaround would be appreciated, I need to keep every submission as a new row, not overwrite previous ones.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-18-2025 09:33 PM
Hi @dswider ,
No, GlideRecord.insert() should not update an existing record — unless a constraint like a unique index is causing a conflict.
When you call .insert()
If no constraints are violated, ServiceNow inserts a new record.
If there's a unique constraint (like a unique index) on a field (e.g., correlation_id), and the new value already exists in another record:
It will throw a duplicate key error, which is usually silently swallowed in Flow Designer or inside script steps.
You won’t see a log message, but the insert fails — no new record is created.
It does not update the existing record either — that’s key. It just fails silently.
you can try this
(function execute(inputs, outputs) {
var payload = JSON.parse(inputs.inqPayload);
for (var v in payload.body.Item.certNumbers) {
var certData = payload.body.Item.certNumbers[v];
var match = certData.match_status;
// Helper function to check duplicate by correlation_id
function isDuplicate(correlationId) {
var dupCheck = new GlideRecord('sn_customerservice_certificate_information');
dupCheck.addQuery('correlation_id', correlationId);
dupCheck.query();
return dupCheck.hasNext();
}
// Only insert if it's a series request
if (certData.isthisaseriesrequest.toString() == "Yes") {
var correlationId = certData.recordNumber.toString();
if (isDuplicate(correlationId)) {
gs.warn("Skipping insert: Duplicate correlation_id found: " + correlationId);
continue; // Skip to next iteration
}
var gr = new GlideRecord('sn_customerservice_certificate_information');
gr.initialize();
gr.parent = orgRecord(payload.body.Item.rpt, "sn_customerservice_case");
gr.correlation_id = correlationId;
if (match != 0 && certData.institution_details) {
var inst = certData.institution_details;
gr.u_transfer_pay_agent = (inst.contact_name || "") + " " + (inst.contact_phone || "");
gr.u_institution = inst.name_of_institution || "";
gr.u_address = (inst.address_line_1 || "") + " " + (inst.address_line_2 || "");
gr.u_city = inst.city || "";
gr.u_state_province = inst.state || "";
gr.u_zip_code = inst.zip || "";
}
gr.u_record_update_flag = certData.record_update_flag;
gr.u_processing_complete = certData.processing_complete;
gr.u_preliminary_report = certData.preliminary_report;
gr.u_disputed_item = certData.disputed_item;
gr.u_transaction_number = certData.transaction_number;
gr.u_denomination_shares = certData.denomination;
gr.u_certifcate_prefix = certData.certificate_prefix;
gr.u_issue_date = certData.issuedates;
gr.u_certificate_serial_numbers = certData.certFrom;
gr.u_inquiry_status = match;
gr.u_stop_type = certData.stop_type;
gr.u_denomination_hit = certData.denomination_hit || "";
gr.u_issue_date_hit = certData.issue_date_hit || "";
gr.u_certificate_hit = certData.certificate_prefix_match || "";
gr.u_cancelled_indicator = certData.cancelled_indicated || "";
gr.u_counterfeit_indicated = certData.counterfeit_indicated || "";
gr.u_criminially_indicated = certData.criminality_indicated || "";
gr.work_notes = "Individual response from " + correlationId + " series request.";
gr.u_original_record = orgRecord(certData.recordNumber, "sn_customerservice_certificate_information");
gr.u_type = "response";
var insertSysId = gr.insert();
if (!insertSysId) {
gs.error("Insert failed for correlation_id: " + correlationId);
}
} else {
var gr = new GlideRecord('sn_customerservice_certificate_information');
gr.initialize();
if (match != 0 && certData.institution_details) {
var inst = certData.institution_details;
gr.u_transfer_pay_agent = (inst.contact_name || "") + " " + (inst.contact_phone || "");
gr.u_institution = inst.name_of_institution || "";
gr.u_address = (inst.address_line_1 || "") + " " + (inst.address_line_2 || "");
gr.u_city = inst.city || "";
gr.u_state_province = inst.state || "";
gr.u_zip_code = inst.zip || "";
}
gr.u_record_update_flag = certData.record_update_flag || "";
gr.u_processing_complete = certData.processing_complete;
gr.u_preliminary_report = certData.preliminary_report;
gr.u_disputed_item = certData.disputed_item;
gr.u_transaction_number = certData.transaction_number || "";
gr.u_inquiry_status = match;
gr.u_denomination_shares = certData.denomination || "";
gr.u_certifcate_prefix = certData.certificate_prefix || "";
gr.u_issue_date = certData.issuedates || "";
gr.u_certificate_serial_numbers = certData.certFrom || "";
gr.u_stop_type = certData.stop_type || "";
gr.u_denomination_hit = certData.denomination_hit || "";
gr.u_issue_date_hit = certData.issue_date_hit || "";
gr.u_certificate_hit = certData.certificate_prefix_match || "";
gr.u_cancelled_indicator = certData.cancelled_indicated || "";
gr.u_counterfeit_indicated = certData.counterfeit_indicated || "";
gr.u_criminially_indicated = certData.criminality_indicated || "";
gr.u_original_record = orgRecord(certData.recordNumber, "sn_customerservice_certificate_information");
gr.parent = orgRecord(payload.body.Item.rpt, "sn_customerservice_case");
gr.u_type = "response";
var insertSysId = gr.insert();
if (!insertSysId) {
gs.error("Insert failed for correlation_id (non-series): " + certData.recordNumber.toString());
}
}
// Update inquiry record
var inq = new GlideRecord("x_g_afss_inquiry_inquiries");
if (inq.get(inputs.parentRec)) {
inq.u_cusip_changed = payload.body.Item.u_cusip_changed;
inq.update();
}
}
})(inputs, outputs);
// Helper to convert match value
function isMatchValue(match) {
if (match == "N") return "0";
if (match == "Y") return "2";
if (match == "P") return "1";
return null;
}
// Helper to get sys_id by record number from any table
function orgRecord(recNo, tbl) {
var gr = new GlideRecord(tbl);
gr.addQuery("number", recNo);
gr.query();
if (gr.next()) {
return gr.sys_id.toString();
}
return null;
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-18-2025 09:47 PM
what debugging did you do from your side and what's your analysis?
If my response helped please mark it correct and close the thread so that it benefits future readers.
Ankur
✨ Certified Technical Architect || ✨ 9x ServiceNow MVP || ✨ ServiceNow Community Leader