Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The NetSuite Pro

The NetSuite Pro Logo The NetSuite Pro Logo

The NetSuite Pro Navigation

  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask A Question
  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us
Home/SDF Deployment Tutorial Part 2: Creating Your First SDF Project and Understanding the Project Structure

SDF Deployment Tutorial Part 2: Creating Your First SDF Project and Understanding the Project Structure

Welcome to Part 2 of our SDF Deployment tutorial series. In Part 1 we set up the SuiteCloud CLI, installed the prerequisites, and confirmed access to a NetSuite account. Now we’ll create our first Account Customization Project (ACP), explore the folder structure SDF generates, and add a small custom record so you can see how everything fits together.

What You’ll Learn

How to scaffold a new Account Customization Project with the SuiteCloud CLI, what each folder and file in an SDF project means, how to add and validate a simple custom record, and how to keep your project ready for source control from day one.

Step 1 β€” Create the Project

From your workspace folder, run: suitecloud project:create –type ACCOUNTCUSTOMIZATION –projectname MyFirstSDFProject –publisherid com.mycompany –projectversion 1.0.0. The CLI will create a new folder containing the standard SDF project skeleton.

Step 2 β€” Tour the Project Structure

The src folder is the heart of the project. Inside it you’ll find Objects (XML definitions for custom records, fields, scripts, workflows, roles), FileCabinet (mirrors the NetSuite File Cabinet folder structure for scripts and templates), Translations (translation collections), AccountConfiguration (account-level settings like features and preferences), deploy.xml (declares what gets deployed and in what order), and manifest.xml (declares project metadata, dependencies, and required features).

Step 3 β€” Link the Project to an Account

Inside the project folder, run suitecloud account:setup and pick the authID you created in Part 1 (for example, sandbox-dev). This links the project to that NetSuite environment so deployments and imports target the right account.

Step 4 β€” Add Your First Custom Record

Create src/Objects/customrecord_blog_demo.xml with a basic customrecordtype definition. Give it a scriptid of customrecord_blog_demo, a recordname of Blog Demo Record, and add a single text field called custrecord_blog_demo_name. Then register the object in deploy.xml so it gets included in the next deploy.

Step 5 β€” Validate Before You Deploy

Run suitecloud project:validate. Validation catches missing dependencies, invalid scriptids, and schema errors before they reach NetSuite. Fix any errors it reports, then run suitecloud project:validate –server to run the same checks against the linked account.

Step 6 β€” Initialize Git

Run git init in the project root and add a .gitignore that excludes the .suitecloud-sdf folder, node_modules, and any local credential files. Commit the initial project so you have a clean baseline before importing existing objects in Part 3.

Common Pitfalls

Forgetting to register new objects in deploy.xml is the most common mistake β€” if a file isn’t listed, SDF silently skips it. Another frequent issue is using scriptids that don’t follow NetSuite’s naming rules (lowercase, underscores, customrecord_ prefix). Finally, never commit the cached credentials folder to source control.

Up Next

In Part 3, we’ll import existing customizations from a live NetSuite account into your SDF project so you can bring legacy work under source control. See you there!

Share
  • Facebook

Sidebar

Ask A Question

Stats

  • Questions 6
  • Answers 6
  • Best Answers 0
  • Users 5
  • Popular
  • Answers
  • Rocky

    Issue in running a client script in NetSuite SuiteScript 2.0 ...

    • 1 Answer
  • admin

    How can I send an email with an attachment in ...

    • 1 Answer
  • admin

    How do I avoid SSS_USAGE_LIMIT_EXCEEDED in a Map/Reduce script?

    • 1 Answer
  • admin
    admin added an answer The issue is usually caused by following Wrong script file… September 14, 2025 at 10:33 pm
  • admin
    admin added an answer Steps to send an Invoice PDF by email: define(['N/email', 'N/render',… August 28, 2025 at 3:05 am
  • admin
    admin added an answer This error means your script hit NetSuite’s governance usage limit… August 28, 2025 at 3:02 am

Top Members

Rocky

Rocky

  • 1 Question
  • 22 Points
Begginer
Sophie1022

Sophie1022

  • 0 Questions
  • 20 Points
Begginer
jmargoli

jmargoli

  • 0 Questions
  • 20 Points
Begginer

Trending Tags

clientscript netsuite scripting suitescript
  • Advanced PDF Templates in NetSuite: Integrating Saved Searches for Report-Style DocumentsMay 20, 2026
  • Debugging Advanced PDF Templates in NetSuite: Common Errors and How to Fix ThemMay 19, 2026
  • Advanced PDF Templates in NetSuite: Using FreeMarker for Dynamic ContentMay 18, 2026
  • N/email Module in NetSuite: How to Send Emails Programmatically Using SuiteScript 2.1May 18, 2026
  • NetSuite AI in 2026: How Oracle NetSuite AI Features Are Transforming ERP AutomationMay 17, 2026
  • N/file Module in NetSuite: Complete Guide to Reading, Writing & Managing Files in SuiteScript 2.1May 17, 2026
  • N/https Module in NetSuite: Complete Guide to Making HTTP Requests in SuiteScript 2.1May 17, 2026
  • N/format Module in NetSuite: Complete Guide to Date Formatting and Parsing in SuiteScriptMay 17, 2026
  • SuiteScript 2.1 Complete Guide: N/record Module β€” Create, Load, Edit & Delete RecordsMay 16, 2026
  • N/search Module in NetSuite: Complete Guide to Searching Records in SuiteScriptMay 15, 2026

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help

Footer

Menu

  • Home
  • About Us
  • Tutorials
    • NetSuite Scripting
    • NetSuite Customization
    • NetSuite Integration
    • NetSuite Advanced PDF Templates
    • NetSuite Reporting & Analytics Guide
    • Real-World NetSuite Examples
  • Blog
  • Contact Us

Quick Links

  • NetSuite Scripting
  • NetSuite Customization
  • NetSuite Advanced PDF Template
  • NetSuite Integration
  • NetSuite Reporting & Analytics

Subscribe for NetSuite Insights....

Β© 2026 The NetSuite Pro. All Rights Reserved