Join the #BuildWithBuildAgent Challenge! Get recognized, earn exclusive swag, and inspire the ServiceNow Community with what you can build using Build Agent.  Join the Challenge.

Delete Duplicate Serial Number assests

Prince Sai
Giga Expert

Hi all,

 

In the hardware table we have duplicate assets with same serial number.

I want to filter out which assets are having same serial number. and delete the oldest records and keep the newly created assets.

I need to build script to delete data.

Can I get any sample script to complete my task?

 

Thanks in advance

1 ACCEPTED SOLUTION

Prasad Dhumal
Mega Sage

Hello prince,

Try this script in test environment:

 

 

var gr = new GlideRecord('alm_asset');
gr.addQuery('serial_number', '!=', '');
gr.groupBy('serial_number');
gr.query();

while (gr.next()) {
  var serialNumber = gr.getValue('serial_number');

  var gr2 = new GlideRecord('alm_asset');
  gr2.addQuery('serial_number', serialNumber);
  gr2.addQuery('sys_created_on', '<', gr.getValue('sys_created_on'));
  gr2.query();

  while (gr2.next()) {
    gr2.deleteRecord();
  }
}

 

 

 

backup your data before executing script to prevent data loss

View solution in original post

1 REPLY 1

Prasad Dhumal
Mega Sage

Hello prince,

Try this script in test environment:

 

 

var gr = new GlideRecord('alm_asset');
gr.addQuery('serial_number', '!=', '');
gr.groupBy('serial_number');
gr.query();

while (gr.next()) {
  var serialNumber = gr.getValue('serial_number');

  var gr2 = new GlideRecord('alm_asset');
  gr2.addQuery('serial_number', serialNumber);
  gr2.addQuery('sys_created_on', '<', gr.getValue('sys_created_on'));
  gr2.query();

  while (gr2.next()) {
    gr2.deleteRecord();
  }
}

 

 

 

backup your data before executing script to prevent data loss