NetSuite’s governance limits are critical for managing script efficiency and ensuring system integrity. As you know, these limits regulate the consumption of system resources through usage units, and understanding how to work within them is key to building scalable, high-performance scripts.
Governance Limits Breakdown
For User Event scripts:
- 1,000 units for
beforeLoadandbeforeSubmit - 10,000 units for
afterSubmit
For Suitelet scripts:
- 10,000 units per execution
Unit consumption varies by API call:
- Record.load / Record.save: 10 units
- Search.run / Search.runPaged: 10 units per page
- Record.create / Record.delete: 20 units
- Task scheduling (Map/Reduce, Scheduled Script): 20 units
Optimizing for Governance Efficiency
- Minimize Record Operations: Avoid unnecessary record loads or saves. Use
record.setValueorrecord.submitFieldsfor direct field updates. - Search Smarter: Optimize searches with filters and columns. Use
runPagedto process large result sets in batches and prevent hitting limits. - Strategic API Calls: Group field updates, use conditional logic to avoid redundant operations, and cache reusable data.
- Script Chaining: When processing complex logic, break it into smaller scripts. Trigger secondary scripts via a
Scheduled ScriptorMap/Reduceto distribute the workload. - Usage Monitoring & Fallbacks: Regularly check remaining governance units with
runtime.getCurrentScript().getRemainingUsage(). Gracefully exit or queue operations when nearing limits to avoid script failure.
Handling Limit Overruns
When limits are breached, NetSuite throws a SCRIPT_EXECUTION_USAGE_LIMIT_EXCEEDED error. Mitigate this with:
- Deferred Execution: Offload heavy processes to scheduled scripts or asynchronous queues.
- Incremental Processing: Process records incrementally across multiple script executions.