Error fixOracle NetSuiteSetup / Import-Export / CSV Import Job Status

NetSuite CSV Import Stuck in Processing or Queued

Error
NetSuite CSV import stuck in Processing or Queued

Also searched as

  • NetSuite import job status pending forever
  • NetSuite CSV import not finishing
  • view CSV import status NetSuite stuck on Queued
  • NetSuite CSV import taking hours to complete

Short answer

A CSV import that sits in Queued or Processing is normally waiting for a free processor, blocked by long running scripts on the target record, or retrying because of a lock. Check Setup > Import/Export > View CSV Import Status, then the Script Execution Log and Map/Reduce Status for what is running on the same records.

Applies to: NetSuite CSV Import Assistant for transaction, entity, item and custom records; accounts using SuiteCloud Plus or default processor allocation

How to diagnose a stuck CSV import

  1. 1Open Setup > Import/Export > View CSV Import Status. Note the job state (Queued, Processing, Complete, Failed), start time and the number of rows processed.
  2. 2If Queued, check how many other jobs are ahead. CSV imports share a queue with other asynchronous work, and large jobs ahead of you hold processors.
  3. 3If Processing but rows are not increasing, open Customization > Scripting > Script Execution Log and filter for the record type. User Event scripts firing per row slow imports massively.
  4. 4Check the Map/Reduce Script Status page and Scheduled Script Status for jobs touching the same records or running search heavy logic.
  5. 5Click the job's link to see the import log. Look for rows that fail repeatedly or for a lock related message on the same record, such as a customer updated by two threads.
  6. 6Check Setup > Company > Enable Features > SuiteCloud for concurrency features if you have a SuiteCloud Plus license. Without extra processors, queue priority is limited.
  7. 7Cancel the job from View CSV Import Status if you must, then split the file into smaller chunks, around a few thousand rows for scripted record types, and resubmit.
  8. 8Consider the Run Server SuiteScript and Triggered Workflows option on the import mapping. Turning it off for a bulk load that does not need scripts can reduce time dramatically.

Why an import queues instead of running

CSV imports are asynchronous jobs. When you click Run, NetSuite creates a job and places it in a processing queue shared with other long running work in the account. The number of processors available depends on the account license, so a standard account can run only a limited number of heavy jobs at once.

If three other imports, a scheduled script and a Map/Reduce deployment are active, your job waits. The status Queued is honest: nothing has started. It is not a failure and nothing is wrong with the file. Waiting time scales with the size of jobs ahead of you, not with your file size.

You can see competing work in Setup > Import/Export > View CSV Import Status for other imports, and on the Scheduled Script Status and Map/Reduce Script Status pages for script load. Administrators often find a nightly job that overlaps with a morning import.

Why Processing becomes slow: scripts on the target record

The most common cause of an import that runs for hours is customization. Every imported row saves a record, and every save runs User Event scripts, workflows, and validation. A User Event script that performs a search or loads related records per row turns a 10,000 row file into 10,000 additional searches.

Check the Script Deployments for the imported record type under Customization > Scripting > Script Deployments. Look at which scripts run on Create or Edit and which log high governance usage. If a script is only needed for interactive users, add an execution context filter so it skips CSV Import context.

Workflows have a similar effect. A workflow with a Send Email action on record creation will generate a message for each row. Check the workflow's trigger type and execution context and remember that Triggered Workflows can be toggled in the import mapping.

// Skip heavy logic during CSV import (SuiteScript 2.x user event)
const ctx = runtime.executionContext;
if (ctx === runtime.ContextType.CSV_IMPORT) { return; }

Locks, retries and duplicated work

Imports that update existing records, such as inventory adjustments or customer updates, can collide with other processes editing the same record. When a record is locked, NetSuite retries the row, which shows as slow progress rather than an error. A large number of rows against the same parent record, for example many lines on one sales order split across rows, amplify this.

Sort your file so rows for the same transaction are adjacent and use the Multiple Lines per Record mapping correctly. Rows for the same transaction that are scattered can trigger repeated loads and saves of the same record.

If you resubmit a job while the first is still running, both may touch the same records. Cancel the old job first, wait for it to leave the Processing state, and then run the corrected file.

When to stop using CSV Import

CSV import is convenient for thousands of rows but is not designed for continuous high volume loading. For recurring large loads consider a Map/Reduce script that reads a file and uses N/record with submitFields where possible, or an integration over SuiteTalk REST or SOAP with controlled concurrency.

A Map/Reduce approach lets you bypass user events with the right flags when it is safe, control the number of concurrent threads, and handle errors per row. It requires development, so reserve it for loads that run weekly or daily.

Common pitfalls

  • !Resubmitting the same file while the first job is still Queued or Processing.
  • !Importing a huge file in one run when scripted record types handle a few thousand rows more reliably.
  • !Leaving Run Server SuiteScript and Triggered Workflows on for a bulk migration that does not need them.
  • !Scheduling a big import at the same time as nightly Map/Reduce or scheduled scripts.
  • !Scattering rows of one multi line transaction across the file instead of keeping them adjacent.
  • !Assuming Queued means failure and canceling a job that was about to start.

How an ERP-grounded AI assistant handles this

An assistant grounded in NetSuite can read job status, script deployments and execution logs together and answer why a given import is slow: which user event fired per row, which overlapping job holds processors. ERPray is read-only by default, so it recommends splitting, scheduling or script context changes, and your admin makes the change.

Frequently asked questions

How long should a CSV import take?

It depends on the record type, scripts and queue load. Simple entity imports with no scripts often run through thousands of rows in minutes, while scripted transactions can take hours. If row count is not moving at all for a long time, investigate locks and queue contention rather than waiting.

Can I speed up an import without code?

Yes. Split the file, schedule it outside peak script windows, turn off Run Server SuiteScript and Triggered Workflows when appropriate, and make sure scripts check the execution context. SuiteCloud Plus adds processors if you run many concurrent jobs regularly.

Is it safe to cancel a Processing job?

Rows already committed stay in the account. Canceling stops further rows, so you will have a partially loaded file. Check the job log for the last processed row and resubmit only the remainder, or you will create duplicates on create type imports.

Why does Queued appear right after I click Run?

All imports are placed in the queue first, even when processors are free. A brief Queued state is normal. Concern starts when the state does not change for many minutes while other jobs are active in the account.

Related

How-to

How to Import CSV Data Into NetSuite Reliably

NetSuite's CSV Import Assistant, under Setup > Import/Export > Import CSV Records, maps spreadsheet columns to record fields, matches existing records by internal ID or a chosen field, and can create, update, or upsert in a single run. The most reliable imports use a saved import map, reference records by internal ID where possible, and stage the file with a header row that exactly matches expected column types.

Advanced

Avoiding governance limit errors in NetSuite Map/Reduce scripts

A NetSuite Map/Reduce script gives each map or reduce invocation of a key its own fresh governance allotment instead of sharing one pool across the whole run, so most SSS_USAGE_LIMIT_EXCEEDED failures come from a single key doing too much work, not from the total record count. Fix it by moving heavy logic out of getInputData, keeping map and reduce functions idempotent and cheap per key, and checking runtime.getCurrentScript().getRemainingUsage() before expensive calls.

Advanced

How NetSuite scheduled script queueing actually works

A Scheduled Script deployment queued behind other jobs is not failing; NetSuite runs a limited number of scheduled and Map/Reduce script queues concurrently per account, so deployments wait their turn based on account concurrency and deployment priority. The practical fixes are staggering trigger times, setting deployment priority correctly, and designing scripts that reschedule themselves cleanly with N/task instead of running one long unbroken execution.

Error fix

Fix NetSuite INVALID_FLD_VALUE Error

INVALID_FLD_VALUE means NetSuite rejected a value you tried to set on a field because it does not match the field's expected type, list option, or reference record. Fix it by confirming the internal ID or text value actually exists on that field's source list and matches the field's value type (text versus list versus record reference) before setting it.

Error fix

Fix NetSuite SSS_USAGE_LIMIT_EXCEEDED Error

SSS_USAGE_LIMIT_EXCEEDED fires when a SuiteScript execution consumes all the governance units (usage points) allotted to its script type before it finishes. Fix it by checking runtime.getCurrentScript().getRemainingUsage() before expensive calls, yielding or rescheduling in Scheduled scripts, and moving heavy record-count work into Map/Reduce, which yields automatically across stages.

Error fix

Fix NetSuite SSS_MISSING_REQD_ARGUMENT Error

SSS_MISSING_REQD_ARGUMENT means a NetSuite API call, most often record.create(), record.load(), or search.create(), was called without a parameter that method requires, such as type or id. Fix it by checking the object literal you passed against the current SuiteScript 2.x API signature and confirming no required key is undefined at runtime.

AI for ERP

AI for NetSuite, Beyond the Built-In Text Tools

NetSuite's built-in AI covers text generation, not grounded answers on your own data. See how a private LLM over SuiteQL adds real Q&A and controls.

Stuck on Oracle NetSuite?

Talk to engineers who work inside Oracle NetSuite every week, and who build private AI that answers these questions from your own ERP data.