SuiteScript 1.0 and 2.0 retire in 2028.2. Move once, properly.
Oracle has set the dates. We inventory every script in your account, convert or retire each one, prove it in sandbox against the old version, and roll it out in phases so nothing breaks at month-end.
Four releases between now and the deadline.
Release numbers rather than dates: NetSuite ships two major releases a year, so 2028.2 lands in the second half of 2028.
SuiteScript 2.1 is the standard scripting model for new and existing scripts.
We are here · October 2026SuiteScript 1.0 enters end-of-life support. Anything that is not critical needs the script on 2.1 first.
Scripts annotated 2.0 or 2.x run on the 2.1 runtime by default. 1.0 can no longer be deployed in new accounts.
All new and existing scripts must use SuiteScript 2.1.
Source: Oracle NetSuite help · Transitioning to SuiteScript 2.1
Every script gets one of three answers.
Not every script deserves a rewrite. The version it is on decides where we start; whether it still earns its keep decides whether it survives.
Convert
1.0 has no 2.1 runtime switch. Each script is rewritten into modules, and we fix what the old code got away with while we are in there.
How we rewriteTest as 2.1
Server scripts can run as 2.1 from an account preference without touching the file. If the logs stay clean, we change the annotation and ship.
How we testRetire
Scripts that have not run in a year, or do the same job as another one, are not worth converting. We switch them off first and delete them later.
How we decideOne script, and then the whole account.
Inventory, triage, convert, prove, roll out.
The order matters. The scripts that touch money, orders and integrations go first, because they are the ones you cannot afford to find out about in production.
Inventory
Every script record filtered by API version, with type, deployments, last run and what depends on it.
Output · ranked listTriage
Active and business-critical first: finance, integrations, order processing. Unused and duplicated scripts are marked to retire.
Output · plan per scriptConvert or test
1.0 is rewritten into modules. 2.0 and 2.x server scripts run as 2.1 under the account preference; client scripts get the new annotation.
Prove it
Old and new run against the same records in sandbox. Outputs compared, execution logs clean, governance checked.
Gate · you sign offRoll out
In phases by risk, with the previous deployment kept until the new one has run clean in production.
Not a find-and-replace.
SuiteScript 1.0 is global functions; 2.1 is modules. The mapping is the easy part. The judgement is in what each call was really for.
nlapiLoadRecordrecord.loador search.lookupFields when you only read a fieldnlapiSubmitRecordrecord.savereturns the internal idnlapiSubmitFieldrecord.submitFieldsno load, no savenlapiSearchRecordsearch.create().run()or runPaged for big result setsnlapiLogExecutionlog.debug / audit / errorN/lognlapiSendEmailemail.sendN/emailnlapiRequestURLhttps.get / https.postN/httpsnlapiScheduleScripttask.createN/tasknlobjErrorerror.createN/errornlapiGetContextruntime.getCurrentScriptN/runtimeThe things we check in every 2.0 and 2.x script.
From Oracle's list of differences between the two runtimes. Most scripts hit none of them. The ones that do, fail quietly.
Some identifiers that were fine in 2.0 are reserved in 2.1.
2.1 applies strict-mode rules, so sloppy assignments now throw.
Reassigning a const is handled differently.
The old for each...in statement behaves differently.
Converting dates to local date strings returns different formats.
Both behave differently on the 2.1 engine.
Parsing malformed JSON behaves differently.
Error properties differ, so error handling that reads them needs a look.
POST string handling and the return type differ.
Setting decimals with trailing zeros behaves differently.
Source: Differences between SuiteScript 2.0 and 2.1 · Enabling SuiteScript 2.1 at the account level
Before you start.
Do 2.0 scripts really need any work?
Many will run as 2.1 with no changes, but from 2028.1 they run on the 2.1 runtime whether they are ready or not. Testing them now, under the account preference, turns a surprise in production into a short list of fixes in sandbox.
What about client scripts?
The account preference only covers server scripts. Client scripts need the annotation changed to 2.1 and testing in the browser, so we plan them as their own batch.
Can we just let NetSuite run everything as 2.1 and see what happens?
You can switch the preference on in sandbox and watch the logs, and that is our first step. Doing it in production without the test pass is how month-end breaks.
Is the conversion automated?
The mechanical part goes quickly with AI-assisted tooling. Every converted script is still read, tested against the old one on the same records, and signed off by a developer before it ships.
Where do we start?
With an inventory: every script, its version, type, deployments, when it last ran and what depends on it. You get a ranked plan before anything changes.
Considering NetSuite, or already living with it?
Tell us what is not working. If it is a half-hour fix we will tell you that, and you can decide whether to pay anyone at all.