NetSuite CPQ 2026.1: AI Assistant, Migration Bundle, and New Scripting APIs
NetSuite CPQ gains a generative-AI configuration assistant, a migration bundle (ID 596110) for moving from the Configurator bundle to the SuiteApp, SuiteQL-backed dynamic tables, and several new scripting functions including submitConfig(), restartConfig(), setFormattedValue(), and getParsedValue().
Overview
NetSuite 2026.1 delivers a large set of CPQ enhancements spread across multiple SuiteApp versions. The changes range from a new AI-driven configuration assistant to new scripting functions, SuiteQL integration in dynamic tables, a formal migration bundle, and manufacturing BOM improvements. Below is a breakdown organized by impact area.
CPQ AI Assistant (Configurator v1.8.0)
A new generative-AI chat assistant is available for configurable items. When a user selects a configurable item on a transaction, a Configure with CPQ Assistant button appears. It launches a guided chat that uses an LLM to walk sales reps or buyers through complex product configurations via natural-language prompts.
Administrators and users with the CPQ Product Builder role prepare product, question, and answer records on a new CPQ AI Assistant subtab found on each related record. This subtab controls readiness, AI descriptions, quality standards, and visibility to end users.
Availability: Restricted to supported locations and user language preferences. Check Generative AI Feature Availability in NetSuite for your account.
Migration Bundle for CPQ Configurator (Bundle ID 596110)
A new public managed bundle — NSCPQ Bundle Migration (v1.0.0, ID 596110) — supports migration from the CPQ Configurator bundle to the corresponding SuiteApp. It preserves configuration records and transaction field data, reducing export/import effort.
- Install the migration bundle after updating the CPQ Configurator bundle to the latest version and before exporting bundle data.
- Without this bundle installed, the CPQ Configurator bundle cannot be uninstalled during migration.
- Keep the migration bundle installed post-migration to continue editing existing configured items on transactions.
- Warning: Uninstalling the migration bundle permanently deletes configuration and transaction data from the old bundle.
New and Updated Scripting APIs
submitConfig() — restart and product parameters (Ecommerce Integration v1.2.1)
The submitConfig() function now accepts restart and product parameters, enabling conversion of multiple transaction line items into configured items in a single session without collapsing all product logic into one action or calling recalcRulesets().
submitConfig({ afterSubmitAction: 'new', restart: true, product: 13 });When restart: true, after submission the processing flow restarts from the first before-event action, refreshes building blocks, and runs after-event actions. Any actions queued after the current action will not run — apply this on the last action if you need all actions to execute. The product parameter lets you dynamically switch products for different transaction lines.
restartConfig() (Ecommerce Integration v1.2.1)
Restarts the conversion process for a new transaction line without submitting a configuration. Useful for preparing transaction data before processing.
restartConfig({ product: 13, copy: false });Set copy: true to carry configuration choices to the next conversion task. Default is false (blank configuration). Calling without parameters restarts with the same product and a blank configuration.
setFormattedValue() and getParsedValue() (Configurator v1.9.0)
New functions to simplify date/time field handling in CPQ scripts. setFormattedValue() converts a JavaScript Date object into the string format expected by the answer record. getParsedValue() returns a field value as a JavaScript Date object.
setFormattedValue('QUESTION_CODE', 'ANSWER_CODE', new Date());
getParsedValue('QUESTION_CODE', 'ANSWER_CODE');Both work in client-side and server-side actions. When used with non-date fields, they behave like setValue() and getValue().
getTable().loadContent() — sublists parameter (Configurator v1.9.1)
When loading dynamic or function-generated tables via script, you can now retrieve data organized by sublist:
let table = await getTable('TABLE_CODE').loadContent({ sublists: true });Oracle recommends this approach over getData() with loadapi: true for new implementations to improve table loading performance.
addRuleset() — itemPrice parameter (Configurator v1.9.1)
When adding materials via script, set itemPrice: true to automatically create and link pricing records for the current configuration session:
addRuleset({ type: 'material', item: '859', name: 'Desk side panel', rule: '*/*', itemPrice: true });The itemPrice parameter is only valid when type is 'material'. The price label is sourced from the name parameter, falling back to the item's Display Name/Code field.
SuiteQL Integration for Dynamic Tables (Configurator v1.9.1)
Dynamic tables now support two new options:
- Show all sublist results — Returns one search result per sublist entry instead of one per record. Only applies to sublist line field queries; body field queries are unaffected.
- Search using SuiteQL — Runs search queries using SuiteQL instead of the standard search module. This expands search to any sublist line field and automatically retrieves all sublist results.
When using SuiteQL, specify sublist line fields in dot notation (sublistID.sublistFieldID) in the Record Fields and Search Filter fields on the table record. Example: itemvendor.purchaseprice.
QTable and UI Enhancements
Popup list filtering by row (Configurator v2.0.1)
Append the _@ suffix to the answer code of a popup list to filter by row without scripting. For example, {ACCESSORIES/QUANTITY_@} == 3 evaluates per row — _@ is replaced with _1, _2, etc. at runtime. Configure this on the Popup Tables and Lists subtab of the answer record using the Product Table Filter field.
Custom separator in resolve expressions (Configurator v1.9.5)
Multi-answer resolve expressions now accept a custom separator in parentheses: {LAMP(-)} returns GREEN-BLUE-YELLOW instead of the default comma-space separation.
QTable header unlock and column freeze (Configurator v1.9.0)
- Unfreeze top row — checkbox on the QTable tab of the question record. Requires Maximum Visible Rows to be set.
- Freeze column — checkbox on the QTable Cells tab of the answer record. Pins selected columns to the left on horizontal scroll.
Date/time input masking (Configurator v1.9.0)
Enable the Enable date mask checkbox on answer records to enforce formatted date/time typing in input boxes, qTable columns, checkboxes, and radio buttons associated with date/time fields. Fixed characters (slashes, hyphens) auto-complete as users type.
Document and PDF Enhancements
PDF file ordering (Proposal Generator v1.2.5)
A new PDF Sequence field on the template record controls where the main PDF appears relative to additional PDFs. Files are arranged lowest-to-highest sequence number. Leaving the field blank preserves the legacy append behavior.
CSS class selectors for document formats (Proposal Generator v1.2.4)
Two predefined CSS class selectors — .html and .pdf — are automatically assigned to the template <body> element. Use them in the Custom Styles field on the template record to target format-specific styling. General CSS (without these selectors) applies to all formats including DOCX.
Transaction Attachments (Configurator v2.0.1)
A new Attach to transaction checkbox on the attachment question record allows files uploaded during configuration to be attached to the parent transaction under Communication > Files. Each file attaches only once; deleting an attachment during configuration editing removes it from the transaction.
Third-Party Website Integration (Configurator v1.9.1)
The Configurable Items page can now be launched from external websites. Enable the Launch products from SuiteCommerce checkbox on the options record, then construct the URL using the External Link of the CPQC-ST-SCA-Wrapper script deployment with &cmd=selector appended. Only products marked Available on SuiteCommerce on the product record will appear.
Manufacturing: Item Creation Record BOM Improvements (Configurator v1.8.3)
Two new options on the BOM subtab of the item creation record when creating or updating assemblies with advanced BOMs:
- Master Default — Sets the BOM as the master default for the assembly.
- Add as a new BOM — Adds a new BOM to the assembly. The BOM name must be unique; a duplicate name overwrites the existing BOM.
Material Sequencing (Configurator v1.9.1)
A new Sequence Number field on the material record controls the sort order of stand-alone materials on work orders and under the Audit menu > Materials option. Materials assigned to routing steps continue to sort by operation sequence. Default sequence number when left blank is 0.
What to Do
- Migration from CPQ bundle to SuiteApp: Install bundle ID 596110 (NSCPQ Bundle Migration v1.0.0) after updating to the latest Configurator bundle and before exporting data. Do not uninstall it post-migration or you will permanently lose data.
- Ecommerce integration scripts: If you convert multiple line items to configured items, refactor to use
submitConfig({ restart: true, product: id })andrestartConfig()instead of consolidating logic into a single action withrecalcRulesets(). - Dynamic table searches: If you need all sublist results, enable Show all sublist results or switch to Search using SuiteQL and update field references to SuiteQL dot notation (
sublistID.sublistFieldID). - Table loading scripts: For new implementations, prefer
getTable().loadContent({ sublists: true })overgetData({ loadapi: true }). - Date/time scripting: Use
setFormattedValue()andgetParsedValue()instead of manually formatting date strings. - Document templates: Use the new PDF Sequence field to control PDF ordering. Use
.htmland.pdfCSS class selectors for format-specific styling. Existing templates are unaffected if you leave new fields blank. - AI Assistant: Administrators should review the CPQ AI Assistant subtab on product, question, and answer records to prepare AI descriptions and control visibility. Check your account's generative AI availability.
- Third-party integration: To embed the Configurable Items page externally, configure the options record and build the URL from the
CPQC-ST-SCA-Wrapperscript deployment external link.
Source: Oracle NetSuite Release Notes