SuiteCommerce
NetSuite 2020.1
2020-02-19

SuiteCommerce 2020.1: MyAccount Portal, SuiteScript 2.0 Module Migration, 3DS2, and Breaking Library Updates

The 2020.1 SuiteCommerce/SCA release introduces SuiteCommerce MyAccount, begins migrating core Commerce modules to SuiteScript 2.0, adds 3D Secure 2.0 checkout support, drops IE 9/10, bumps Node.js to 12.14.x, and ships breaking version bumps to Backbone.js, jQuery, Bignumber, and Handlebars.

Affects:SuiteCommerceSuiteCommerce AdvancedSuiteScript 2.0SuiteScript 1.0Extensibility APIExtension ManagerSuiteCommerce Configuration RecordBackbone.jsjQueryNode.js

SuiteCommerce MyAccount

A new standalone self-service portal — SuiteCommerce MyAccount (SCMA) — is available for merchants who need customer-facing account management without shopping or checkout. It exposes purchases, return/refund requests, quote requests, billing (balances, invoices, transaction history, printable statements), account settings, and support case management.

SCMA runs on the same architecture as SuiteCommerce proper, so existing extensions, themes, and Site Management Tools (SMT) apply. It requires four SuiteApps to be installed:

  • SuiteCommerce
  • SuiteCommerce Extensions Management
  • SuiteCommerce Base Theme
  • SuiteCommerce Configuration

3D Secure 2.0 in Checkout

Checkout now supports 3D Secure 2.0 (3DS2), meeting the Strong Customer Authentication (SCA) requirement of PSD2. Both the card issuer and the payment gateway must independently support 3DS2 for a transaction to use it. No new configuration properties were documented; support is automatic when the gateway and issuer are capable.

JSON-LD Structured Data Markup

Product Detail Pages (PDPs) now automatically inject JSON-LD structured data into the HTML <head>. Product list pages (PLPs) are excluded. Two new configuration properties control behavior on the SuiteCommerce Configuration Record under Shopping Catalog > Structured Data Markup:

  • structureddatamarkup.type — Markup Type
  • structureddatamarkup.availabilityonbackorder — Out of Stock Behavior (When Item Back Orders Are Allowed)

A corresponding new Extensibility API method, modifyViewJsonLd(), on the Visual component lets extensions add, remove, or modify JSON-LD data before the view renders. If your extension changes data shown in a view, call this method to keep JSON-LD consistent.

Extensibility API: SCModel and SCCollection

Two new TypeScript-based components — SCModel and SCCollection — replace direct use of Backbone.Model and Backbone.Collection in extensions. They extend the Backbone equivalents and inherit all their methods. From 2020.1 onward, new extensions should use SCModel/SCCollection instead of raw Backbone classes.

Extension Manager: SuiteScript 2.0 Service Support

The Extension Manager and developer tools now accept SuiteScript 2.0 as a file type when creating baseline extensions and additional modules. Extensions can now ship SS2.0 service scripts alongside SS1.0 code.

Conditional Display of Configuration Groups and Subtabs

Module and extension JSON configuration files now support additional metadata that controls whether SuiteCommerce Configuration groups (tabs) and subtabs are shown. This lets developers conditionally hide irrelevant settings.

Commerce Module Migration to SuiteScript 2.0

The following My Account modules have been refactored from SuiteScript 1.0 / Commerce API to SuiteScript 2.0:

  • OrderHistory
  • ReturnAuthorization
  • StoreItem
  • Transaction
  • TransactionHistory

All other modules remain on SuiteScript 1.0 and the Commerce API. This is part of a multi-release migration effort. If you have customizations that hook into these modules' server-side code, expect the underlying record-access patterns to shift from Commerce API calls to N/record and N/search equivalents.

TypeScript Migration

Core source code continues migrating from JavaScript to TypeScript. Newly converted in this release:

  • Collection (base class)
  • Models (base class)
  • Utils.ts
  • Case.Model
  • Case.Collection

Important: This migration applies only to core source code. Theme and extension development remains JavaScript-based.

New Configuration Properties

In addition to the structured data properties above, four subscription-related properties were added under My Account > Subscriptions:

  • subscriptions.lineStatusChange — Subscription Line Status Change
  • subscriptions.allowToCancelSuspendRequiredLines — Allow The User to Cancel/Suspend Required Lines
  • subscriptions.generalStatusChange — Subscription General Status Change
  • subscriptions.disallowUpgradeQuantity — Disallow The User to Upgrade Quantity
  • subscriptions.disallowDowngradeQuantity — Disallow The User to Downgrade Quantity

IE 9 and 10 Dropped

Internet Explorer 10 and earlier are no longer supported. Microsoft ended security updates for IE 10 in January 2016. Continuing to serve IE 10 users risks breaking changes and security vulnerabilities.

Breaking: Third-Party Library Updates

The following libraries shipped with SuiteCommerce have been updated. Check distro.json for exact versions. Asterisks indicate customized builds:

  • Backbone.js: 1.3.3 → 1.4.0 (customized)
  • Bignumber: 7.2.1 → 9.0.0 (major version jump — review API changes)
  • Font Awesome: 4.2.1 → 4.7.0 (customized)
  • Handlebars: 4.0.12 → 4.5.3
  • jQuery: 3.3.1 → 3.4.1 (customized)
  • Require.js: 2.3.5 → 2.3.6

Bignumber 7 → 9 is the highest-risk upgrade. The library changed its API surface between major versions. Audit any theme or extension code that calls Bignumber methods directly.

Node.js Requirement Change

Developer tools now require Node.js 12.14.x. Older Node versions will not work with the 2020.1 theme, extension, or core SCA developer tools.

What to Do

  1. Update Node.js to 12.14.x on all developer workstations before working with 2020.1 developer tools.
  2. Audit extensions and themes for use of deprecated or changed methods in Backbone.js 1.4.0, Bignumber 9.0.0, Handlebars 4.5.3, and jQuery 3.4.1. Pay special attention to Bignumber — two major versions were skipped.
  3. Review custom code in migrated modules (OrderHistory, ReturnAuthorization, StoreItem, Transaction, TransactionHistory). Server-side overrides or hooks against these modules may break if they assumed SuiteScript 1.0 / Commerce API patterns.
  4. Switch new extensions to SCModel/SCCollection instead of raw Backbone classes.
  5. If you modify PDP data in an extension, call modifyViewJsonLd() on the Visual component to keep JSON-LD in sync.
  6. Stop supporting IE 10 and earlier — update any browser-support documentation or polyfill bundles.
  7. Evaluate SuiteCommerce MyAccount if you have merchants who need account self-service without a full shopping experience. Install the four required SuiteApps.
  8. Review subscription configuration if you use the Subscriptions feature in My Account — five new properties control line-level and general status change behavior.