A practical, step-by-step guide that turns the comparison into a real migration — inventory the bundles, set up the SuiteCloud SDK, create the project, import objects, manage dependencies, then deploy safely — with links to the official NetSuite documentation so you can verify everything for yourself.
Practical developer guide · Backed by the official NetSuite Help Center
This is the practical companion to our SDF vs SuiteBundler guide. The main article explains the two deployment models and how to choose; this page is the plain checklist for actually moving a customization off SuiteBundler and onto SDF. Work through the steps in order — inventory first, deploy sandbox-first — and use the official NetSuite documentation link under every step to confirm the exact command and behavior as you go.
Before you start — prerequisites
A sandbox: do the whole migration in a Sandbox or Release Preview account first — never straight to Production.
SDF enabled + Developer role: confirm SuiteCloud Development Framework is enabled and your role has the SDF/Developer permissions and token-based authentication.
Source control: have a Git repo ready — the whole point of SDF is that your project is text files you can version.
What you'll set up
Inventory your bundles and choose a project type
Set up the SuiteCloud SDK and Developer role
Authenticate and create your SuiteCloud project
Import objects, scripts and files
Manage dependencies in the manifest
Validate against the target account
Deploy sandbox-first and roll out
1
Inventory your bundles and choose a project type
You can’t migrate what you haven’t measured. List the bundles and customizations in scope, then pick the project type — this choice is hard to undo later.
Decide: Account Customization Project (own accounts) vs SuiteApp (distribution)
List every bundle and the objects, scripts, and files it contains; flag what is genuinely in scope.
Choose an ACP for accounts you own, or a SuiteApp project if you distribute to others — remember an ACP cannot be uninstalled.
Confirm each object type is supported by SDF before committing to the approach.
Pull your existing customizations into the project as XML and File Cabinet contents. You can also convert an installed bundle to an ACP zip as a starting point.
Code: suitecloud object:import & file:import
Import custom objects (records, forms, workflows, scripts) into src/Objects as XML with object:import.
Import SuiteScript files and templates into src/FileCabinet with file:import.
Keep the project zip small — it’s capped at 50 MB, so keep large files in the File Cabinet, not the project.
SDF can check the whole project against the account before deploying. Use it — it surfaces conflicts and missing dependencies while they’re still cheap to fix.
Code: suitecloud project:validate --server
Run a server-side validation to compare project components against the target account and list differences or conflicts.
Resolve any missing dependencies or unsupported objects the validator reports.
Read the errors carefully — SDF messages can be verbose, but they point at the real blocker.
Migration risk is deployment risk. Prove the project in Sandbox, watch for the bundle-duplication trap, then promote to Production with a rollback ready.
Process: Sandbox deploy → verify → Production (with rollback)
Deploy to Sandbox with suitecloud project:deploy and confirm objects, scripts, and form layouts land correctly.
Watch for the duplication trap — deploying a SuiteApp project where the equivalent bundle is still installed flags every shared object as a duplicate.
Promote to Production deliberately, keeping the prior state ready as a rollback.
A note on accuracy: SuiteCloud CLI commands, supported object types, and tooling names evolve between releases (the SDK has gained capabilities every NetSuite version). Always confirm each command and the supported-objects list against its official reference, and validate the project in Sandbox before deploying to Production.
Where a lift-and-shift ends and engineering begins
Everything above gets your customizations off SuiteBundler and into a version-controlled SDF project. What sits beyond a mechanical move — restructuring objects into clean SuiteApp boundaries, wiring the project into a CI/CD pipeline, handling unsupported object types, and planning a client cutover that avoids duplication errors — is engineering work. It often means re-architecting the package and adding automated validation, not just importing XML.
A migration touches live, distributed customizations, so build in a Sandbox, validate against the target before every deploy, and keep a rollback. For the full reasoning behind each decision — the two models, the project types, and when to keep using Bundler — read the companion guide.
Migrating off SuiteBundler?Our NetSuite engineers inventory your bundle estate, rebuild it as a version-controlled SDF project with clean dependencies, and roll out Sandbox-first — so nothing breaks for you or your clients.
Documentation links point to the official Oracle NetSuite Help Center (docs.oracle.com). Exact commands, menu paths, and supported object types vary by NetSuite version and edition — confirm each step against the linked Help Center page and validate in Sandbox first.