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.

Cannot delete record(s) from background script

xiaix
Tera Guru

This is the script I'm trying to run (in Global scope):

(function () {
    gs.print("First, deleting any old records.");
    var record = false;
	record = new GlideRecord('sn_wsd_core_workplace_profile');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_workplace_profile records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_space');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_space records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_floor');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_floor records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_building');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_building records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_campus');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_campus records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_site');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_site records.');
        record.deleteMultiple();
    }
	record = new GlideRecord('sn_wsd_core_region');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_region records.');
        record.deleteMultiple();
    }
}();

 

This is the result I get:

 

*** Script: First, deleting any old records.
*** Script: Deleting 41 sn_wsd_core_workplace_profile records.
Security restricted: Delete operation against 'sn_wsd_core_workplace_profile' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 41 sn_wsd_core_space records.
Security restricted: Delete operation against 'sn_wsd_core_space' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 1 sn_wsd_core_floor records.
Security restricted: Delete operation against 'sn_wsd_core_floor' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 1 sn_wsd_core_building records.
Security restricted: Delete operation against 'sn_wsd_core_building' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 1 sn_wsd_core_campus records.
Security restricted: Delete operation against 'sn_wsd_core_campus' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 1 sn_wsd_core_site records.
Security restricted: Delete operation against 'sn_wsd_core_site' from scope 'rhino.global' has been refused due to the table's cross-scope access policy
*** Script: Deleting 1 sn_wsd_core_region records.
Security restricted: Delete operation against 'sn_wsd_core_region' from scope 'rhino.global' has been refused due to the table's cross-scope access policy

Well, this sucks. So I change my application scope to "Workplace Safety Management", run the script, same issue.
So then, while I'm still in Workplace Safety Management scope, I go to each of those tables and click the "Delete" checkbox:
find_real_file.png

I even go into the Workspace Location table (which is extended by most of the above listed tables) and set "Can delete" to true:
find_real_file.png

I try running the script... same result!

So then I do my least favorite thing of all in ServiceNow... open Studio (bleh)

find_real_file.png

Then try to go into settings:

find_real_file.png

But oh look, isn't this lovely:

find_real_file.png

I mean c'mon.

Anyone know what magic mantra's I need to chant to allow me to run some scripts to clean out old records?

20 REPLIES 20

Elijah Aromola
Mega Sage

Can't you just go to the table definition and click the "Delete records" UI action if you're trying to delete all records? 

Yes, but this is part of a much larger automation process.  It must be done in script.

Ankur Bawiskar
Tera Patron
Tera Patron

Hi,

try creating restricted caller access record for the delete operation

find_real_file.png

Regards
Ankur

Regards,
Ankur
✨ Certified Technical Architect  ||  ✨ 9x ServiceNow MVP  ||  ✨ ServiceNow Community Leader

find_real_file.png

 

(function () {
    var record = false;
	record = new GlideRecord('sn_wsd_core_workplace_profile');
    record.query();
	if (record.next()) {
        gs.print("Deleting "+record.getRowCount()+' sn_wsd_core_workplace_profile records.');
        record.deleteMultiple();
    }
})();

 

find_real_file.png