Bulk cleanup, done on purpose
I built this for my own cleanup work, because clicking delete ten thousand times is not a plan. Dry-run first, see the dependencies, then execute with a full audit trail behind you. It runs as a SuiteApp inside NetSuite. If it would fit your environment, get in touch.
- Not days for a cleanup
- Minutes
- Deep dependency detection
- 10 levels
- Records per job
- Unlimited
Cleanup is real work, so I treated it that way
Every NetSuite environment accumulates things that have to go: test data from a UAT cycle, duplicates from a bad import, old transactions a retention policy says to delete. That part is normal.
What was not normal was the way I kept doing it: clicking delete, confirm, delete, confirm, hoping I had not missed a dependency, with no record of what happened. So I built the version I actually wanted to use. Test before you commit. See the dependencies. Run the job with confidence. Keep a complete audit trail. Then get back to the work that moves the business.
The parts that make it safe
Dry-run testing
Simulate the deletion without removing anything. See exactly what would go before you commit to it.
Dependency detection
Finds child records up to 10 levels deep, so nothing gets orphaned and no relationship breaks.
Complete audit trail
Logs who deleted what, when, and why. Email notifications, and a record an auditor can read.
Full source code
Every SuiteScript file is unencrypted and commented. Modify it as you need. You own it.
Define, test, review, execute
Define → Test → RunCreate a job
Use the custom record form. Pick the record type and criteria. No coding to define it.
Dry-run test
Simulate the deletion. See exactly what would be removed before anything happens.
Review dependencies
Check the child records and relationships. Confirm nothing gets orphaned.
Execute
Run it. Watch real-time progress. Get an email confirmation when the job finishes.
The situations that call for it
A UAT cycle left thousands of test records behind
Testing is done and the environment is full of throwaway data. I run a job instead of clicking delete for three days.
A CSV import went sideways and made duplicates
An import created thousands of duplicates. Clean slate in minutes, re-import correctly, move on.
A retention policy needs old transactions gone
Policy says delete transactions past a certain age. Set the criteria, run the job, keep the log for the auditor.
Duplicate customers or items piled up over years
Clean them up without breaking relationships. The dependency detection is the part that makes that safe.
For the people deploying it into an account
- SuiteScript 2.1, Map/Reduce architecture for scale
- Custom record interface, no coding to use it
- 10-level dependency recursion that catches nested relationships
- Governance-compliant, respects NetSuite usage limits
- Email notifications when jobs complete
- Full source code, unencrypted, commented, yours to keep
- Customers, contacts, vendors
- Sales orders, purchase orders
- Invoices, bills, payments
- Items, inventory records
- Custom records
- Journal entries
- Opportunities, leads
- Projects, tasks
- Any standard or custom record
Setup time around 30 to 45 minutes. No ongoing maintenance.
If this is how you want cleanup handled
There is no checkout here. I built Mass Delete for my own client work. If it fits your environment, get in touch and we can talk about putting it in your account.