Upload and Deploy

Upload cartridge files as you save, upload selected files on demand, and deploy linked cartridges to one or more instances from the Deployment Manager

Auto upload sends each saved cartridge file to the active connection. The Deployment Manager deploys all linked cartridges to every instance you select, each with its own progress notification, and writes every step and a summary per instance to the B2C Sync Log

The extension sends code to the selected code version of a connection in three ways:

  • Auto upload sends each file that changes in a linked cartridge to the active connection
  • B2C - Upload to Active Instance uploads the files and folders you pick
  • The Deployment Manager deploys linked cartridges to every instance you select, each to its own code version

Every step is written to the B2C Sync Log output channel. It is the only record of uploads and deployments, and it starts empty each time VS Code starts

Before you upload

  • Add the instance in Connections and select its Code Version. The connection needs an account with a username and a password or WebDAV access key
  • Link your cartridges with Cartridge Management. Uploads and deployments send files from linked cartridges and modules. When a connection has Connection Cartridges, the cartridges in that list are sent too, even if they are not linked
  • Linking a cartridge does not change the site's cartridge path on the instance. Keep the cartridge path of the site aligned with the code you deploy
  • Uploading and deploying are paid features, gated as Upload, Auto upload, and Deploy. Without access, the status bar items are hidden

Status bar

The active connection's status bar items sit on the left, in this order:

ItemTooltipClick
ConnectionActive connectionPick another active connection. With no connections, the item adds one
Code versionSelected Code Version on Sandbox 01Change the code version. Without one, the item reads Select Code Version on a red background
WandSwitch to Active Code Version on Sandbox 01Select the code version that is active on the instance
Deploy🚀 Deployment ManagerOpen the Deployment Manager. It spins while a deployment runs
Auto uploadAuto Upload Enabled for Sandbox 01 or Auto Upload Disabled for Sandbox 01Turn auto upload on or off for the active connection

The deploy and auto upload items appear once the workspace has a linked cartridge and at least one connection

Auto upload

Click the auto upload item to turn it on for the active connection. Each connection keeps its own state in the workspace, so switching connections switches auto upload with it. The B2C Sync Log shows 🙉 File Watcher Started and 🙈 File Watcher Stopped

While it is on, a file watcher follows every linked cartridge:

  • A file that changes on disk is uploaded to the selected code version, whether you saved it, a Git checkout changed it, or another tool wrote it
  • A file or folder you delete locally is deleted on the instance
  • A TypeScript file is transpiled first, and its .js file is uploaded to the same path. If the transpile fails, nothing is uploaded
  • A new empty folder is not created on the instance; its files are uploaded as they change
  • Every file inside the cartridge folder is uploaded, so keep dependencies and build output outside cartridge folders
  • Uploads run in a queue, up to intellij-sfcc.concurrentRequestsPerSecond at a time. Queued files are dropped when you switch the active connection or its code version

After a save, the line under the cursor turns green for a second when the upload succeeds, or red when it fails. The B2C Sync Log shows 🆕 Created for a new file or 🔄 Updated for a changed or deleted one, with the cartridge path. A failed upload logs [☁️ Sandbox 01] HTTP Code: 401 | Path: ... | Unauthorized. Please check your credentials., and its notification offers Select Account

Upload selected files

B2C - Upload to Active Instance uploads exactly what you pick to the selected code version of the active connection. Run it from the context menu of the Explorer, the editor, or an editor tab. Select several files or folders to upload them together. From the Command Palette, it uploads the current Explorer selection

Right-click files, folders or a whole cartridge in the Explorer and B2C - Upload to Active Instance zips them and uploads them to the active connection's code version, logging each step in the B2C Sync Log. A connection with Connection Cartridges only takes files from those cartridges
  • Each item has to be inside a linked cartridge or module, or a cartridge in the connection's Connection Cartridges list. A folder and a file inside it count once
  • Each item is zipped, uploaded next to its remote folder, unzipped on the instance, and the archive is removed
  • node_modules, .git, .vscode, .idea, .intellij-sfcc, .settings, .DS_Store, and .eslintrc are left out. TypeScript sources are transpiled and uploaded as JavaScript, without .d.ts files
  • A cartridge folder uploads the whole cartridge on top of the remote one. Files that exist only on the instance stay. To replace a cartridge, deploy it
  • The notification, titled with the connection, counts Zipping 2/4 and Uploading 2/4 and can be cancelled. Up to 15 items upload at a time
  • While a deployment runs, the command warns Sandbox 01 → deployment in progress. Please wait and try again. and does not upload
MessageWhy
Nothing to upload. Make sure file/folder you select is child of linked cartridge or module.None of the selected items is in a linked cartridge or module
🚨 You specified Connection Cartridges for Sandbox 01 connection. File you want upload is from int_loyalty cartridge and it's not in the list of Connection Cartridges.The connection has Connection Cartridges and the file's cartridge is not in the list. Edit Connection Cartridges opens the list
No active connection. Please create or select active connection.No connection is active. Select B2C Connection picks one, or Add B2C Connection adds the first one

Deploy with the Deployment Manager

Click the deploy item in the status bar or run Intellij SFCC: Deploy code to Active B2C Instance from the Command Palette. The 🚀 Deployment Manager opens with Confirm instances, code versions to deploy the code. Press Esc to exit

The Deployment Manager title buttons add an .apiversion file to the deployment, switch every instance to its active code version and save the checked instances for next time. Each row can deploy to its own code version
  • The active connection comes first, under Active connection, and is selected
  • Grouped connections follow under their group names. Connections without a group follow without a header of their own
  • Each row shows the code version it deploys to, or Not selected
  • Instances you saved with Save Selection for Future Deployments come back selected
  • Select every instance to deploy to, then press OK. The Deployment Manager has no history view; the B2C Sync Log keeps the record
ButtonWhereWhat it does
Change Code VersionRowOpens 🚀 Confirm code version for deployment | Sandbox 02 with a Back button. The version you pick becomes the connection's selected code version, and the Deployment Manager reopens. The picker also creates and deletes code versions
Switch to Active Code Version on InstanceRowSelects the code version that is active on that instance
Include .apiversion file into deploymentTitleOpens Set API Compatibility Version
Switch to Active Code Version on All InstancesTitleSelects the active code version of every listed connection, with a Switching to Active Code Versions progress. It changes each connection's selected code version
Save Selection for Future DeploymentsTitleRemembers the selected instances for the current active connection and confirms ✅ Selection saved based on current active connection for future deployments

API compatibility version

Set API Compatibility Version takes a version such as 18.10. When it is set, each deployment from the Deployment Manager uploads an .apiversion file with version=18.10 to the root of the code version, and the title button turns on. The value is one per workspace and applies to every instance. Press Esc to keep the current value, or clear the field to deploy without the file. After a deployment with a compatibility version, re-enable the code version on the instance

A deployment does not activate the code version. If it is not the active one on the instance, activate it in Business Manager, or use the code version actions in Connections, before you test

What a deployment does

Every selected instance deploys at the same time, in its own background worker, with its own notification titled with the connection name. For each instance:

Transpile and zip

TypeScript is transpiled, then 📦 Zipping cartridges... zips the linked cartridges and modules, or the Connection Cartridges when the connection has a list. node_modules and .git folders are left out. The B2C Sync Log shows 💾 TOTAL SIZE: 1.8 MB (zipped)

Remove the old cartridges

🗑 Removing remote cartridges 2/4 removes the cartridges with the same names as the ones being deployed, plus .apiversion. Cartridges that are only on the instance stay. Each one is logged as 🗑️ app_custom → removing remote cartridge

Upload the compatibility file

When a compatibility version is set, 🏷️ Sandbox 01 → uploading .apiversion ... sends the .apiversion file

Upload the cartridges

🚀 Uploading cartridges 3/4 uploads each archive, unzips it on the instance, and removes the archive. The log shows 📤 app_custom → uploading zip..., then the unzip and the zip removal

To empty the whole code version in step 2 instead, turn on intellij-sfcc.deployment.clearCodeVersion (Clear Code Version Before Deployment, off by default). Connections with Connection Cartridges never clear the code version

When an instance is done, ✅ Sandbox 01: Deployment completed. Duration: 00 min, 14 sec offers See details, which brings up the B2C Sync Log. The summary of that instance is printed there as soon as it finishes:

B2C Sync Log
◢■■■■■■■■■■■■■■■■■■ ◈ DEPLOYMENT ◈ ■■■■■■■■■■■■■■■■■■■■■◣
▌ ⟫ Sandbox 01 (dev01-sfcc.demandware.net)
▌ ┌─────────────────────────────────────────────────┐
▌ │ STATUS................ ✅ DONE
▌ │ DURATION.............. 00 min, 14 sec
▌ │ CARTRIDGES............ 4
▌ │ CODE VERSION.......... version3
▌ │ SIZE.................. 1.8 MB (zipped)
▌ │ COMPATIBILITY MODE.... Not Specified
▌ └─────────────────────────────────────────────────┘
◥■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■◤

Cancel a deployment from its notification. Cartridges that were already removed are not restored, so the code version stays partial until you deploy again. A failed upload or unzip, such as app_custom → ERROR UNZIP. Run code deployment again., leaves it the same way

With nothing to deploy, the extension reports No cartridges to deploy to Sandbox 01 instance. A WebDAV error during a deployment shows its message with See details to bring up the B2C Sync Log

B2C Sync Log

The B2C Sync Log output channel opens with 🚀 B2C Sync Terminal Started and records every upload and deployment. Each line starts with the connection and the code version, for example [Sandbox 01] [version3] 🔄 Updated app_custom/cartridge/controllers/Checkout.js. Lines from a deployment carry the instance they belong to, so parallel deployments stay readable

LineMeaning
🙉 File Watcher Started / 🙈 File Watcher StoppedAuto upload turned on or off
🆕 Created / 🔄 UpdatedAuto upload sent a new file, or a changed or deleted one
🚨 You specified Connection Cartridges...Auto upload skipped a file outside the connection's Connection Cartridges
UploadedB2C - Upload to Active Instance sent an item
💾 TOTAL SIZEThe zipped size of a deployment
🗑️ ... → removing remote cartridge / 📤 ... → uploading zip...Deployment progress for each cartridge
◈ DEPLOYMENT ◈The summary block of a finished deployment
HTTP Code, PathA failed auto upload or WebDAV request, with the reason

Validation and errors

Before any upload or deployment, the extension checks the connection

When a deployment or an upload cannot go ahead, the error notification leads to the fix: Select Code Version when the connection has none, Select Account when the instance rejects the credentials. A running deployment stops from Cancel on its notification
MessageFix
😱 Username is not provided for Sandbox 01 connectionSelect Account opens the account picker
😱 Password is not provided for Sandbox 01 connectionEdit Password sets the account's password, or add a WebDAV access key for the host in Credentials
😱 Code version is not selected for Sandbox 01 connectionSelect Code Version opens the code version picker
😱 No active B2C connectionMake a connection active before you turn on auto upload

Connection Cartridges

By default, deployment and auto upload use every linked cartridge. To limit one connection to a subset, open Connection Cartridges under the connection's Settings and choose Edit Connection Cartridges. With a list in place:

  • Deployments send only those cartridges and never clear the code version
  • Auto upload and B2C - Upload to Active Instance skip files from other cartridges
  • The list can include cartridges that are not linked. They deploy and upload, but auto upload does not watch them and their TypeScript is not transpiled
  • Code assistance still uses all linked cartridges

See Connection Settings

Compare with the instance

Compare with B2C Instance in the editor title bar of a file in a linked cartridge opens a diff titled Local ↔ Sandbox 01 (version3), against the same file in the selected code version of the active connection. Use it to check what the sandbox runs before you upload, or after a teammate deployed. For TypeScript, it compares the transpiled JavaScript

Compare with B2C Instance downloads the open file from the active connection's code version and opens it in a diff beside your local copy. For TypeScript the left side is the transpiled JavaScript, the file the instance actually runs

TypeScript projects

SFCC runs JavaScript, so uploads and deployments send the transpiled .js of your TypeScript sources:

  • The extension transpiles every linked cartridge when the cartridges load and before a deployment, the selected files before B2C - Upload to Active Instance, and a changed file while auto upload is on
  • Output goes to .intellij-sfcc/transpiled/<cartridge>/ in the workspace, with source maps. Messages go to the B2C TypeScript Transpiler output channel
  • Show Transpiled File in the editor title bar opens the .js for the TypeScript file in the editor

To build the same output in CI, see TypeScript transpilation and CI/CD

Deploys from AI agents

The SFCC MCP server can upload and deploy too. intellijsfcc.deploy.plan and intellijsfcc.deploy.execute deploy the linked cartridges to the active connection, to its selected code version or one the agent names, once you confirm in VS Code. This deployment runs inside VS Code instead of a worker:

  • It cannot be cancelled
  • It does not send the .apiversion file
  • It clears the B2C Sync Log before it starts

Agents also read the deploy state with intellijsfcc.deploy.settings.status, intellijsfcc.upload.queue.status, and intellijsfcc.auto_upload.status, and change the clear-before-deploy and compatibility version settings with the confirmed intellijsfcc.deploy.settings.update pair. See SFCC MCP

Settings

SettingDefaultWhat it does
intellij-sfcc.deployment.clearCodeVersionfalseEmpties the code version before a deployment uploads
intellij-sfcc.concurrentRequestsPerSecond7Maximum parallel WebDAV requests for auto upload and deployments. A value below 1 falls back to 10. A change applies without a reload

On this page