Menu
SuiteCommerce Version Upgrade Guide: 2023.x to 2024.x
SuiteCommerceVersion UpgradeMigration2024 ReleaseSCADeployment

SuiteCommerce Version Upgrade Guide: 2023.x to 2024.x

February 8, 202610 min read
Back to Blog

SuiteCommerce Version Upgrade Guide: 2023.x to 2024.x

Your SuiteCommerce site is running on a 2023.x version. It works. Orders process. Customers check out. So why upgrade?

Because you're accumulating technical debt with every month you delay. Security patches you're missing. Performance improvements you're not benefiting from. Features your competitors are using. And the longer you wait, the harder the eventual upgrade becomes.

We've handled 50+ SuiteCommerce version upgrades, including complex migrations spanning multiple major versions. The 2023 to 2024 jump is significant—Oracle introduced architectural improvements that deliver real performance gains, but they require careful migration planning.

This guide walks you through the entire upgrade process: from initial assessment to zero-downtime deployment.

What's New in 2024.x Releases

Version upgrade testing

Before diving into the upgrade process, understand what you're gaining. The 2024 releases introduced substantial improvements across performance, features, and developer experience.

Performance Improvements

The headline improvement in 2024.2 is skipping prerendering for returning shoppers. This architectural change reduces Time to First Byte (TTFB) and First Contentful Paint (FCP) for the majority of your visitors.

MetricTypical Improvement
TTFB20-35% faster
FCP15-25% faster
LCP10-20% faster
Server Response25-40% faster

These aren't theoretical benchmarks—we measured these improvements across client sites post-upgrade.

SEO Enhancements

The 2024 releases improved the SEO Page Generator with better handling of:

  • Dynamic meta tags for faceted navigation pages
  • Automatic canonical URL management
  • Enhanced structured data output
  • Improved sitemap generation performance

Site Management Improvements

Enhanced Site Management Tools (SMT):

  • Improved content editing interface
  • Better preview functionality
  • Streamlined publishing workflows
  • New content type support

Theme Management:

  • Fallback themes now fully supported
  • Improved skin configuration options
  • Better asset management

Commerce Features

Subscription Management:

  • Advanced subscription capabilities for recurring revenue businesses
  • Improved subscription lifecycle management
  • Better integration with NetSuite billing

Checkout Improvements:

  • Streamlined payment gateway integrations
  • Enhanced address validation
  • Improved guest checkout flows

B2B Enhancements:

  • Better quote management in MyAccount
  • Improved purchase order handling
  • Enhanced account hierarchy support

Upgrade Path Assessment

Not all upgrades follow the same path. Your starting version and customization level determine the complexity.

Version Compatibility Matrix

Current VersionTarget VersionUpgrade ComplexityEstimated Effort
2023.22024.2Moderate2-4 weeks
2023.12024.2Moderate-High3-5 weeks
2022.x2024.2High4-8 weeks
2021.x or earlier2024.2Very High6-12 weeks

Rule of thumb: Each major version jump adds 1-2 weeks to the timeline due to cumulative breaking changes.

SuiteCommerce vs. SuiteCommerce Advanced

Your product tier affects the upgrade process fundamentally:

SuiteCommerce (Standard):

  • Upgrades applied automatically by NetSuite
  • Customizations limited to themes and extensions
  • Extensions may need compatibility updates
  • Generally lower complexity

SuiteCommerce Advanced (SCA):

  • Manual upgrade required—you control the timing
  • Full source code access means more customization possibilities (and migration work)
  • Customizations embedded in core code must be re-implemented
  • Higher complexity but more control

This guide covers both paths, with specific callouts for SCA considerations.


Pre-Upgrade Assessment

Before touching any code, conduct a thorough assessment. This phase prevents 80% of upgrade problems.

Customization Inventory

Document every customization on your current site:

## Customization Inventory Template

### Extensions Installed
| Extension Name | Version | Source | Custom? |
|---------------|---------|--------|---------|
| PowerReviews Integration | 2.1.0 | Third-party | No |
| Custom Quick View | 1.0.0 | In-house | Yes |
| Enhanced Search | 3.0.0 | SuiteApp | No |

### Theme Customizations
| File | Modification Type | Description |
|------|------------------|-------------|
| header.tpl | Template override | Custom mega-menu |
| product_details.tpl | Template override | Custom gallery |
| _product-list.scss | Style override | Grid layout changes |

### SuiteScript Customizations (SCA only)
| Script Type | Name | Dependencies |
|------------|------|--------------|
| Service | CustomShipping.ss | - |
| Model | CustomProduct.Model.js | Product.Model.js |

### Third-Party Integrations
| Integration | Connection Method | Version Sensitive? |
|------------|------------------|-------------------|
| Klaviyo | Tag + Extension | Yes |
| Google Analytics 4 | Tag Manager | No |
| TaxJar | SuiteScript | Yes |

Breaking Change Analysis

Review NetSuite's release notes for breaking changes between your version and target:

Common breaking changes in 2024.x:

  1. Backbone.js updates: Views using deprecated patterns may fail
  2. Template context changes: Some data structures in templates modified
  3. Service endpoint changes: API response formats may differ
  4. SASS variable deprecations: Some variables renamed or removed

How to check:

# Download release notes from Oracle documentation
# Search for "breaking changes" and "deprecated"

Dependency Check

Verify all dependencies are compatible with 2024.x:

Node.js requirements:

  • 2023.x: Node 16.x or 18.x
  • 2024.x: Node 18.x or 20.x (Node 16 deprecated)

Gulp requirements:

  • Both versions: Gulp 4.x

Third-party bundles:

  • Check SuiteApp store for 2024.x compatible versions
  • Contact vendors for custom integrations

Sandbox Setup

Never upgrade production first. Your sandbox environment is where you'll do all development and testing.

Creating an Upgrade Sandbox

If your sandbox isn't a recent production copy, refresh it:

  1. Navigate to: Setup → Company → Setup Tasks → Sandbox Refresh
  2. Select: Full copy or Production to Sandbox Copy
  3. Wait: This can take several hours for large accounts

Important: Schedule the refresh during off-hours. It consumes system resources.

Downloading Development Tools

Get the 2024.x development tools:

Navigation: File Cabinet → SuiteBundles → Bundle 387395 (SuiteCommerce)

Download:

  • ExtensionDevelopmentTools-24.x.x.zip
  • ThemeDevelopmentTools-24.x.x.zip
  • For SCA: SuiteCommerce Advanced Developer Tools-24.x.x.zip

Version Control Setup

Your code should be in version control. Create an upgrade branch:

# Create upgrade branch from production
git checkout production
git checkout -b upgrade/2024.2

# Commit current state
git add .
git commit -m "Pre-upgrade snapshot - 2023.2"

Extension Migration

Extensions are the most portable customizations—but they still need compatibility verification.

Compatibility Testing Process

For each extension:

  1. Check manifest.json for version constraints:
{
    "name": "CustomQuickView",
    "version": "1.0.0",
    "target_version": {
        "minimum": "2020.1.0",
        "maximum": "2024.2.0"  // Update this if needed
    }
}
  1. Test locally against 2024.x:
# Fetch 2024.x base
gulp extension:fetch

# Deploy extension to local
gulp extension:local
  1. Check browser console for errors
  2. Verify functionality manually

Common Extension Issues

Issue: Backbone view errors

// Old pattern (may fail)
this.constructor.__super__.initialize.apply(this, arguments);

// Updated pattern
ParentView.prototype.initialize.apply(this, arguments);

Issue: Template data undefined

{{!-- If this worked before but fails now --}}
{{item.custitem_field}}

{{!-- Check if the model includes this field --}}
{{#if item.custitem_field}}
    {{item.custitem_field}}
{{/if}}

Issue: Service endpoint 404

Verify service URLs in your extension configuration match 2024.x patterns.

Updating Extensions for 2024.x

When an extension needs code changes:

// extension/JavaScript/MyExtension.View.js

define('MyExtension.View', [
    'Backbone',
    'my_extension.tpl'
], function(Backbone, template) {
    'use strict';
    
    return Backbone.View.extend({
        template: template,
        
        // 2024.x: Use events hash instead of deprecated bindEvents
        events: {
            'click [data-action="myAction"]': 'handleAction'
        },
        
        initialize: function(options) {
            this.options = options;
            // 2024.x: Ensure model is bound correctly
            this.model = options.model || this.options.application.getCart();
        },
        
        // 2024.x: getContext is now required for template data
        getContext: function() {
            return {
                showFeature: this.model.get('enableFeature'),
                items: this.model.get('items') || []
            };
        },
        
        handleAction: function(e) {
            e.preventDefault();
            // Action logic
        }
    });
});

Extension Re-deployment

After updating:

# Validate extension
gulp extension:validate

# Deploy to sandbox
gulp extension:deploy --to sandbox

# Test thoroughly

Theme Migration

Theme migration complexity depends on whether you're using the newer fallback architecture or traditional full themes.

Fallback Theme Migration

If you're already using fallback themes, migration is straightforward:

  1. Update base_theme reference in manifest.json:
{
    "name": "myTheme",
    "base_theme": "starter_theme_2024"  // Update to 2024.x base
}
  1. Review override files for deprecated classes or variables
  2. Test with new development tools:
gulp theme:local

Full Theme Migration (SCA)

For traditional SCA themes with full source code, you have two options:

Option A: Convert to Fallback Theme (Recommended)

This is more upfront work but dramatically simplifies future upgrades:

  1. Install 2024.x starter theme as base
  2. Identify which files you actually modified
  3. Copy only modified files to new fallback theme structure
  4. Update manifest.json with fallback configuration
  5. Test thoroughly

Option B: Manual Merge

More error-prone but preserves your existing structure:

  1. Get diff between your theme and original 2023.x base
  2. Apply same modifications to 2024.x base
  3. Resolve conflicts manually
  4. Test every modified file

SASS Variable Updates

Check for deprecated or renamed variables:

// 2023.x variable
$sc-color-theme-bg: #f5f5f5;

// 2024.x renamed to
$sc-color-theme-background: #f5f5f5;

Quick fix: Add aliases in your custom SASS:

// Bridge for renamed variables
$sc-color-theme-bg: $sc-color-theme-background !default;

Template Migration

Compare templates between versions for structural changes:

# Diff specific template
diff Themes/MyTheme/Modules/[email protected]/Templates/header.tpl \
     Themes/StarterTheme2024/Modules/[email protected]/Templates/header.tpl

Look for:

  • New data-attributes
  • Changed context variables
  • New child views
  • Modified structure

SuiteScript Migration (SCA Only)

SCA customizations often include SuiteScript services and modified models. These require careful migration.

Service Controller Updates

Check for API changes in service controllers:

// services/MyCustom.Service.ss

// 2023.x pattern
function service(request) {
    var response = require('SC.Response');
    // ...
}

// 2024.x - verify require paths still valid
define('MyCustom.Service', [
    'Application',
    'SC.Response',
    'MyCustom.Model'
], function(Application, Response, Model) {
    'use strict';
    
    Application.registerService({
        name: 'MyCustom.Service',
        
        get: function() {
            return Model.get(this.request.getParameter('id'));
        },
        
        post: function() {
            var data = JSON.parse(this.request.getBody());
            return Model.create(data);
        }
    });
});

Model Layer Changes

Check if your custom models extend base models that changed:

// Models/MyCustomProduct.Model.js

define('MyCustomProduct.Model', [
    'Product.Model',  // Check if this changed in 2024.x
    'underscore'
], function(ProductModel, _) {
    'use strict';
    
    return ProductModel.extend({
        // Override methods - verify parent method signatures
        get: function(id, options) {
            var result = ProductModel.prototype.get.apply(this, arguments);
            
            // Your custom additions
            result.custom_field = this.getCustomField(id);
            
            return result;
        }
    });
});

Testing SuiteScript Changes

# Deploy to sandbox for testing
gulp ssp:deploy --to sandbox

# Test all custom endpoints
curl -X GET "https://sandbox.netsuite.com/api/mycustom?id=123" \
     -H "Authorization: Bearer YOUR_TOKEN"

Testing Methodology

Comprehensive testing prevents post-deployment disasters. Follow this methodology systematically.

Functional Testing Checklist

## Core Functionality Tests

### Shopping Flow
- [ ] Homepage loads correctly
- [ ] Category navigation works
- [ ] Product listing displays correctly
- [ ] Faceted search filters function
- [ ] Product detail pages render
- [ ] Image galleries work
- [ ] Add to cart functions
- [ ] Cart updates correctly
- [ ] Quantity changes work

### Checkout Flow
- [ ] Guest checkout works
- [ ] Registered user checkout works
- [ ] Address validation functions
- [ ] Shipping methods display
- [ ] Payment processing works (use test mode)
- [ ] Order confirmation displays
- [ ] Order emails send

### MyAccount
- [ ] Login/logout works
- [ ] Order history displays
- [ ] Address book functions
- [ ] Payment methods manageable
- [ ] Account details editable

### B2B Features (if applicable)
- [ ] Quote request functions
- [ ] Approval workflows work
- [ ] Purchase orders process
- [ ] Account hierarchy displays

### Mobile
- [ ] All above tests pass on mobile devices
- [ ] Touch interactions work
- [ ] Mobile navigation functions

Performance Testing

Compare performance metrics before and after:

# Run Lighthouse on staging
lighthouse https://sandbox.yoursite.com \
    --output=json \
    --output-path=./lighthouse-2024-upgrade.json

# Compare to pre-upgrade baseline

Key metrics to compare:

MetricAcceptable RegressionInvestigate If
LCP+200ms> +500ms
FCP+100ms> +300ms
CLS+0.02> 0.05
TBT+50ms> +200ms

Cross-Browser Testing

Test on these minimum browser versions:

  • Chrome (latest 2 versions)
  • Firefox (latest 2 versions)
  • Safari (latest 2 versions)
  • Edge (latest 2 versions)
  • iOS Safari (latest)
  • Chrome for Android (latest)

Regression Testing

Document and verify any custom functionality:

## Custom Feature Tests

### Custom Quick View Extension
- [ ] Quick view button appears on product list
- [ ] Modal opens with product details
- [ ] Add to cart from modal works
- [ ] Modal closes correctly
- [ ] Keyboard accessibility (Escape to close)

### Custom Shipping Calculator
- [ ] Calculator appears in cart
- [ ] Postal code input works
- [ ] Shipping options display
- [ ] Rates are accurate

Data Migration Considerations

While most data stays in NetSuite (unchanged by SuiteCommerce upgrades), some configurations may need attention.

Site Configuration Review

After upgrading the application code, verify site configurations:

Commerce → Websites → Your Site → Setup:

  • Domain settings
  • SSL certificate assignment
  • Checkout flow configuration
  • Payment method settings

Commerce → Websites → Your Site → SMT Configuration:

  • Content types
  • Layout assignments
  • Widget configurations

Catalog Configuration

Verify catalog settings weren't affected:

  • Item display templates
  • Category configurations
  • Pricing display rules
  • Inventory display settings

Order Flow Configuration

Test and verify:

  • Tax calculation settings
  • Shipping method assignments
  • Email notification templates
  • Order status mappings

Zero-Downtime Deployment Strategy

Backup and deployment

Your customers shouldn't know you upgraded. Here's how to achieve zero-downtime deployment.

Deployment Timeline

Day -7:  Final sandbox testing complete
Day -3:  Production deployment scheduled with team
Day -1:  Final production backup
Day 0:   Deployment (during lowest traffic window)
Day +1:  Monitoring and quick-fix readiness
Day +7:  Post-upgrade review

Pre-Deployment Preparation

24 hours before:

  • Final sandbox testing passed
  • All team members briefed on rollback procedure
  • Support team aware of upgrade
  • Customer service team prepared for potential issues
  • Monitoring alerts configured
  • Rollback plan documented

1 hour before:

  • Team assembled (developers, DevOps, project manager)
  • Communication channels open
  • Production site current performance baseline captured
  • Database backup confirmed

Deployment Steps

Execute during your lowest traffic period (typically 2-6 AM local time for your primary market):

# Step 1: Deploy extensions (doesn't affect live site yet)
gulp extension:deploy --to production

# Step 2: Deploy theme (doesn't affect live site yet)  
gulp theme:deploy --to production

# Step 3: For SCA - Deploy SSP application
gulp ssp:deploy --to production

# Step 4: Activate new version in NetSuite
# Navigate to: Commerce → Websites → [Site] → Setup
# Update to 2024.x bundle version

# Step 5: Activate new theme
# Navigate to: Commerce → Websites → [Site] → Themes
# Activate upgraded theme

# Step 6: Clear caches
# CDN cache purge
# NetSuite cache refresh

Smoke Testing Post-Deployment

Immediately after activation, run critical path tests:

# Automated smoke test script
./scripts/smoke-test-production.sh

# Manual verification
# 1. Load homepage
# 2. Search for product
# 3. Add to cart
# 4. Proceed to checkout (stop before payment)
# 5. Check MyAccount login

Rollback Procedure

If critical issues arise:

Quick rollback (< 5 minutes):

  1. Reactivate previous theme
  2. Reactivate previous extensions
  3. For SCA: Revert bundle version

Full rollback (< 30 minutes):

  1. Restore from pre-upgrade backup
  2. Redeploy previous code versions
  3. Verify all functionality

Document the rollback procedure before deployment so anyone can execute it under pressure.


Post-Upgrade Validation

The upgrade isn't complete until you've validated everything in production.

Monitoring Checklist

First 24 hours:

  • Error rate monitoring (should be stable or improved)
  • Performance metrics (LCP, FCP, TTFB)
  • Conversion rate (no significant drops)
  • Cart abandonment rate
  • Server response times

First week:

  • Customer support ticket volume
  • Payment processing success rates
  • Email delivery rates
  • Search functionality accuracy
  • Mobile conversion rates

Performance Baseline

Capture new performance baseline:

# Run Lighthouse on production
lighthouse https://www.yoursite.com \
    --output=json \
    --output-path=./lighthouse-post-upgrade.json

# Compare to pre-upgrade
diff lighthouse-pre-upgrade.json lighthouse-post-upgrade.json

Issue Tracking

Create a dedicated channel for upgrade-related issues:

## Post-Upgrade Issue Template

**Issue:** [Brief description]
**Severity:** Critical / High / Medium / Low
**Affected Area:** [Shopping / Checkout / MyAccount / etc.]
**Steps to Reproduce:** 
1. ...
2. ...

**Expected Behavior:** ...
**Actual Behavior:** ...
**Browser/Device:** ...
**Screenshots/Logs:** [Attach]

Troubleshooting Common Upgrade Issues

JavaScript Errors

Console shows "undefined is not a function":

Usually a dependency loading order issue:

// Check module definition
define('MyModule', [
    'Backbone',
    'underscore',
    'jQuery'  // Ensure jQuery loads before dependent modules
], function(Backbone, _, jQuery) {
    // Verify all dependencies are available
    if (!jQuery) {
        console.error('jQuery not loaded');
    }
});

Template Rendering Failures

Blank page or partial rendering:

Check template context:

{{!-- Add debugging --}}
{{log this}}

{{!-- Verify expected data exists --}}
{{#if model}}
    {{!-- Normal template --}}
{{else}}
    <div>Model not available - check view getContext()</div>
{{/if}}

Extension Not Loading

Extension installed but not functioning:

  1. Verify bundle is active: Setup → SuiteCloud → Installed Bundles
  2. Check extension activation: Commerce → Websites → Site → Extensions
  3. Review browser console for loading errors
  4. Verify manifest.json target_version includes 2024.x

Style Regressions

Layout broken or styles missing:

# Compare compiled CSS size
ls -la LocalDistribution/css/*.css

# Check for SASS compilation errors
gulp sass:compile 2>&1 | grep -i error

# Verify all SASS files included in entry points
grep -r "import" Themes/MyTheme/Modules/BaseSassStyles/

Performance Degradation

Site slower after upgrade:

  1. Check if prerendering is working correctly
  2. Verify CDN cache is functioning
  3. Review new feature impact (disable optional features)
  4. Check for inefficient new JavaScript
  5. Review third-party integration impact

Upgrade Complexity Estimator

Use this to estimate your specific upgrade effort:

## Upgrade Effort Calculator

### Base Effort
Version jump (2023 → 2024): 3 base points

### Customization Multipliers
Number of custom extensions:
- 0-2: ×1.0
- 3-5: ×1.3
- 6-10: ×1.6
- 10+: ×2.0

Theme customization level:
- Minimal (colors/fonts): ×1.0
- Moderate (layout changes): ×1.3
- Heavy (custom templates): ×1.6
- Complete redesign: ×2.0

SuiteScript customizations (SCA):
- None: ×1.0
- Light (1-3 scripts): ×1.3
- Moderate (4-10 scripts): ×1.6
- Heavy (10+ scripts): ×2.0

### Third-Party Integration Factor
- None: ×1.0
- Standard (GA, Klaviyo): ×1.1
- Multiple (5+ integrations): ×1.3
- Complex (custom APIs): ×1.5

### Calculation
Total Points = Base × Extensions × Theme × SuiteScript × Integrations

### Effort Translation
- 3-6 points: 2-3 weeks
- 6-12 points: 3-6 weeks
- 12-24 points: 6-10 weeks
- 24+ points: 10+ weeks (consider phased approach)

FAQ

Q: Can I skip versions? (e.g., 2022.x directly to 2024.x)

A: Yes, but it's more complex. Each skipped version adds potential breaking changes you must address. We recommend sequential upgrades only for highly customized sites.

Q: How long will 2023.x be supported?

A: NetSuite typically supports N-2 versions. 2023.x will receive security patches through late 2025, but new features are only added to current releases. Plan your upgrade before support ends.

Q: Should I upgrade extensions and themes together or separately?

A: Deploy together in a coordinated release. Mismatched versions can cause subtle compatibility issues that are hard to debug.

Q: What if my third-party extension isn't compatible with 2024.x?

A: Contact the vendor for an updated version. If unavailable, evaluate: is the functionality critical? Can you build a replacement extension? Factor this into timeline.

Q: Will the upgrade affect my SEO rankings?

A: It shouldn't, but monitor carefully. Ensure redirects are in place for any URL changes, verify meta tags render correctly, and monitor Search Console for crawl errors post-upgrade.


When to Get Help

Consider professional assistance if:

  • You're jumping more than one major version
  • You have 10+ custom extensions
  • Your theme has significant customizations
  • You've modified core SCA code
  • Your site generates $1M+ annually (risk is too high for errors)
  • Your team lacks SuiteCommerce upgrade experience

We've handled upgrades from versions as old as Aconcagua to current releases. The investment in expertise typically pays for itself by reducing downtime and accelerating the timeline.

Schedule an Upgrade Assessment →


Running an outdated SuiteCommerce version? Contact our team to plan your upgrade path and minimize business disruption.

Need Help with Your NetSuite Project?

Our team of experts is ready to help you achieve your goals.

Related Articles