Creating a new Story record causes multiple existing Story records to be updated automaticallyIssue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Creating a new Story record causes multiple existing Story records to be updated automatically.As a result:The "sys_updated_by" field on many existing stories is updated with the user who created the new story.The "sys_updated_on" field is also updated unexpectedly. Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } All releases Cause<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Root Cause: Thousands of stories had a corrupted global_rank value, which was caused by a corrupted last_index in the ranking configuration (rank_configuration_list). Every new Story insert triggered a mass resequencing across these records, stamping sys_updated_by/sys_updated_on on thousands of rows. Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } Run the provided background scripts in the provided order. Step 1 - Identify duplicate global_rank values [code] var ga = new GlideAggregate('rm_story');ga.addNotNullQuery('global_rank');ga.groupBy('global_rank');ga.addAggregate('COUNT', 'global_rank');ga.addHaving('COUNT', 'global_rank', '>', 1);ga.query();while (ga.next()) { gs.print('Duplicate rank: ' + ga.getValue('global_rank') + ' (count: ' + ga.getAggregate('COUNT', 'global_rank') + ')');} [/code] Step 2 - Reassign duplicate stories to unique rank values (Replace 2147483647 with the value found in Step 1 if different) [code] var startRank = 1999900000;var blockSize = 100000;var currentRank = startRank;var count = 0;var gr = new GlideRecord('rm_story');gr.addQuery('global_rank', 2147483647);gr.orderBy('sys_created_on');gr.query();while (gr.next()) { gr.setValue('global_rank', currentRank); gr.setWorkflow(false); gr.autoSysFields(false); gr.update(); currentRank -= blockSize; count++; if (count % 1000 == 0) gs.print('Progress: ' + count + ' updated');}gs.print('Done. Updated: ' + count + ' stories.'); [/code] Step 3 - Reset last_index to 2,000,000,000 (This is the key step - done programmatically to bypass the UI restriction) [code] var rankConf = new GlideRecord('rank_configuration');rankConf.addQuery('table', 'rm_story');rankConf.addQuery('column', 'global_rank');rankConf.setLimit(1);rankConf.query();if (rankConf.next()) { var gri = new GlideRecord('global_rank_index'); gri.addQuery('rank_configuration', rankConf.getUniqueValue()); gri.query(); if (gri.next()) { gri.setValue('last_index', '2000000000'); gri.update(); gs.print('last_index reset to: ' + gri.getValue('last_index')); }} [/code] Step 4 - Verify [code] var ga = new GlideAggregate('rm_story');ga.addNotNullQuery('global_rank');ga.groupBy('global_rank');ga.addAggregate('COUNT', 'global_rank');ga.addHaving('COUNT', 'global_rank', '>', 1);ga.query();var count = 0;while (ga.next()) count++;gs.print('Remaining duplicate groups: ' + count + ' (expected: 0)'); [/code] After Step 4 confirms 0 duplicates, insert a test Story and verify sys_updated_by is not mass-stamped on other records.