NetSuite Resources
Reference articles for NetSuite developers and administrators: SuiteScript patterns, performance optimization, workflow design, and more.
How to Migrate NetSuite RESTlet Integrations from NLAuth to Token-Based Authentication
NLAuth stops working in NetSuite 2027.1. Here are the steps to audit your RESTlet integrations and migrate them to Token-Based Authentication before the deadline.
How to Use Sequential Batch Processing in NetSuite REST Web Services
NetSuite 2026.2 adds sequential processing for REST batch operations so you can run multiple API requests in a guaranteed order. Here is when to use it and what it means for dependent operations.
How to Use Bound Parameters in NetSuite REST SuiteQL
Bound parameters let you pass dynamic values to SuiteQL queries separately from the query string, preventing injection vulnerabilities. Here is the format and how to convert an existing query to use them.
How to Fix NetSuite SuiteQL Queries Affected by the 2026.2 Default Sort Change
NetSuite 2026.2 changed the default sort for Transaction table SuiteQL queries from tranDisplayName to tranDate. Here is how to find and fix queries that relied on the old default order.
Why search.runPaged() Should Replace search.run() for Large Datasets
search.run().getRange() has a 4,000-record ceiling in SuiteScript. Learn when to use search.runPaged() and how to implement it correctly to avoid silently missing records.
record.submitFields() vs record.load() in SuiteScript: Choosing the Right Update Method
Using record.load() to update a single body field is one of the most common SuiteScript performance mistakes. Learn when to use record.submitFields() — and the critical User Event caveat you need to know before switching.
Why You Should Never record.load() Inside a Loop in SuiteScript
Loading records inside a loop is one of the most common SuiteScript performance mistakes. Learn how to use saved search columns instead, and when record.load() in a loop is actually unavoidable.
record.load() vs search.lookupFields() in SuiteScript: When to Use Each
If you only need a few field values from a known record, search.lookupFields() is significantly faster than record.load(). Learn the difference, when each applies, and what search.lookupFields() cannot do.
NetSuite Scheduled Script vs Map/Reduce Script: Choosing the Right Script Type
Using a Scheduled Script for work that should be handled by Map/Reduce is one of the most common causes of governance limit errors and slow batch processing. Learn the difference and when each type applies.
NetSuite beforeSubmit vs afterSubmit: Choosing the Right User Event Trigger
beforeSubmit and afterSubmit serve different purposes in NetSuite User Event scripts. Using the wrong one causes silent failures, data errors, and missed business logic. Learn when each fires and how to choose correctly.
NetSuite User Event Script vs Client Script: When to Use Each
User Event scripts run on the server. Client scripts run in the browser. Choosing the wrong one means your business logic silently fails whenever records are saved via API, CSV import, or workflow. Learn the distinction and how to apply it.