Every SuiteScript 1.0 migration project begins with the same unglamorous but essential task: taking inventory. Before you can plan, prioritize, or estimate anything, you need a complete, accurate picture of exactly which 1.0 scripts live in your account, what they do, and which ones are actually running. This guide walks through that audit step by step, with the exact navigation paths and a ready-to-run query. If you are new to why this matters, our overview on the SuiteScript 1.0 deprecation sets the context.
Why inventory comes before migration
It is tempting to jump straight to rewriting scripts, but that is backwards. You cannot prioritize what you cannot see. Most accounts have accumulated scripts over many years, built by different people and vendors, some long forgotten. Until you have a full list in front of you, any migration estimate is a guess, and you risk pouring effort into scripts that are inactive while missing a critical one that quietly runs your order flow. A clean inventory turns a vague worry into a concrete, prioritized project plan.
Step 1: Find your 1.0 scripts in the UI
Start in the NetSuite interface. Navigate to:
Customization > Scripting > Scripts
This opens the master list of every script in your account. Use the filters at the top of the list and set API Version = 1.0. This immediately narrows the view to only your SuiteScript 1.0 scripts β the population you care about. Take note of the total count; this is the top-line number that defines the size of your migration.
Step 2: Export the script list
With the list filtered to 1.0, export it so you can work with it outside NetSuite. For each script, make sure you capture at least these columns:
- Script ID β the unique identifier you will reference throughout the project.
- Type β User Event, Client, Scheduled, Suitelet, RESTlet, and so on.
- Status β whether the script record is active or inactive.
- Record β the record type the script is attached to, where applicable.
- Owner β who created or owns it, which helps you find the right person when questions arise.
This export becomes the backbone of your inventory spreadsheet.
Step 3: Run the SuiteQL query for a precise list
The UI is great for a quick look, but a query gives you a clean, repeatable dataset. Open the SuiteQL query tool in NetSuite and run the following:
SELECT id, name, scripttype, apiversion, status
FROM script
WHERE apiversion = '1.0'
ORDER BY scripttype
This returns every 1.0 script grouped by type, with its ID, name, and status in one tidy result you can export directly. Running it as a query also means you can re-run it later to confirm your progress as scripts get migrated β the list should shrink over time.
Step 4: Cross-reference with Script Deployments
A script record existing is not the same as a script actually running. Deployment is what makes a script live. To see what is genuinely in play, cross-reference your list against script deployments. In NetSuite, review the Script Deployments for each script (accessible from the script record, and listed under the scripting area). Focus on deployments whose status is Released (as opposed to Testing or undeployed) β those are the ones affecting your live environment.
This step separates the “real” from the “dormant.” A 1.0 script with no released deployment is far lower priority than one running against production records every day. Mark each script in your inventory as live or inactive accordingly.
Step 5: Classify risk
Not all scripts carry the same urgency. Use a simple three-tier framework to prioritize migration effort:
- HIGH β RESTlets and Scheduled scripts. RESTlets are exposed to external systems and often rely on legacy authentication that faces hard deadlines, so they are the most exposed. Scheduled scripts run automated business processes unattended, so a failure can go unnoticed until damage accumulates.
- MEDIUM β User Event and Client scripts. These shape day-to-day record behavior and user interactions. Important, but generally lower external exposure and easier to test.
- LOW β Suitelets and other types. Typically more contained in scope and lower risk, these can usually be scheduled later in the migration.
Assign every script a HIGH, MEDIUM, or LOW tag in your spreadsheet. This is what transforms a flat list into an actionable, sequenced plan.
Step 6: Flag third-party bundle scripts
Some 1.0 scripts in your account did not come from your team at all β they arrived as part of an installed SuiteApp or bundle from a third-party vendor. These need special handling. You generally should not (and often cannot) modify bundled scripts directly; the vendor owns them.
To identify them, look for scripts whose owner or origin ties back to a bundle, and check whether the script record indicates it belongs to an installed bundle. For each one you find, the action is different: rather than migrating it yourself, contact the vendor to confirm they have a SuiteScript 2.x-compatible version, and plan to update the bundle. Flag these clearly in your inventory as “vendor-owned” so nobody wastes effort trying to rewrite code they do not control.
Your inventory spreadsheet template
Pulling it all together, your working inventory should be a single spreadsheet with one row per script and columns for: Script ID, Name, Type, Status, Record, Owner, Live/Inactive (from deployments), Risk Tier (HIGH/MEDIUM/LOW), Vendor-Owned (yes/no), and a Notes field for migration decisions. This one document becomes your migration command center β it is what you will use to estimate effort, assign work, track progress, and report status to stakeholders.
Let The NetSuite Pro run the audit for you
This audit is thorough, but it takes time and a careful eye β especially the deployment cross-referencing and bundle identification, where it is easy to miss something. If you would rather start your migration with a complete, professionally validated inventory in hand, The NetSuite Pro can run this entire audit as a service and hand you a prioritized, ready-to-action plan. Reach out and we will take the guesswork off your plate.
Discover more from The NetSuite Pro
Subscribe to get the latest posts sent to your email.
Leave a Reply