Home » ERP System » Converting Account Customization to SuiteApp Project

Converting Account Customization to SuiteApp Project

NetSuite provides powerful customization capabilities to tailor the platform to specific business needs. Developers often use SuiteCloud Development Framework (SDF) for larger and more complex customizations. SDF supports two types of projects

  1. Account Customization Projects (ACP) 
  2. SuiteApp projects. 

While ACPs focus on deploying customizations to a single account, SuiteApps are designed for distribution across multiple accounts, making them essential for ISVs and partners. Let’s learn about the process of converting an ACP project into a SuiteApp SDF project in this blog.

Key Takeaways

  • ACP projects are customized for a single NetSuite account, whereas SDF projects are designed for distribution across multiple accounts.
  • Compliance with SuiteApp certification is essential for listing in the SuiteApp Marketplace, making it more accessible to a broader audience.
  • Update the project’s type and metadata in the manifest.xml file.

What is an ACP Project?

An Account Customization Project (ACP) in NetSuite SDF is tailored to deploy customizations to a specific account. It includes various customization objects such as custom records, forms, scripts, and workflows.

ACP is ideal for:

  • Customizations are limited to a single account.
  • Internal use or specific client requirements.

What is a SuiteApp SDF Project?

SuiteApps are SDF projects that are packaged and distributed across multiple NetSuite accounts. They can be installed using bundles or SuiteApp Marketplace, enabling wider distribution and monetization.

SuiteApps are characterized by:

  • A manifest.xml file defining metadata like version and dependencies.
  • Distribution and installation scripts for setup in target accounts.
  • Compliance with NetSuite’s SuiteApp requirements, including sandbox testing.

Why Convert an ACP Project to SuiteApp?

Converting an ACP project to a SuiteApp is beneficial when:

  1. You want to distribute the solution to multiple accounts.
  2. The customization needs to be monetized as a product.
  3. Compliance with SuiteApp certification is required for Marketplace listing.

Steps to Convert ACP to SuiteApp

1. Set Up Your Environment

Ensure the latest SuiteCloud CLI is installed.

Authenticate using suitecloud account:setup.

Confirm the ACP project is error-free by validating with suitecloud project:validate.

2. Modify the Project Type

Open the manifest.xml file.

Change “projecttype”: “ACCOUNTCUSTOMIZATION” to “type”: “SUITEAPP”.

3. Add IDs and Project Name

Add publisherid and project id tags in manifest.xml along with projectname tag. 

Remove Configuration Tag from deploy.xml

Update the deploy.xml file to remove the <configuration> tag, retaining only the <files> and <objects> sections:
xml
Copy code
<deploy>

    <files>

        <path>~/FileCabinet/*</path>

    </files>

    <objects>

        <path>~/Objects/*</path>

    </objects>

</deploy>

4. Add SuiteApp Metadata

Update the manifest.xml file with SuiteApp details:
xml
Copy code
<manifest projecttype=”SUITEAPP”>

    <publisherid>com.example</publisherid>

    <projectid>mysuiteapp</projectid>

    <projectname>MySuiteApp</projectname>

    <projectversion>1.0.0</projectversion>

    <frameworkversion>1.0.0</frameworkversion>

</manifest>

5. Update Code and Script References

Replace all /SuiteScripts references in your code and script objects with /SuiteApps/com.example.mysuiteapp.

6. Validate and Deploy

Run suitecloud project:validate to ensure the project meets SuiteApp standards.

Deploy to a test account using suitecloud project:deploy -i in interactive mode.

Considerations

1. Deploy All Objects

Always deploy all objects using the deploy.xml file to prevent accidental deletion of existing objects. Deploying specific objects will delete all others not listed in deploy.xml.

2. Avoid Special Characters in Project IDs

Ensure the projectid in manifest.xml does not include special characters. For example, my_suiteapp_project will fail. Use a valid format like mysuiteapp.

3. Already existing entities

When deploying a SuiteApp to an account, if a certain entity (record, field, list, etc)   already exists in that account, deployment will fail. In order to fix that, either the entity needs to be deleted from the account, or the particular object needs to be removed from the code. The former is recommended. 

Common Challenges and Solutions

Object Dependencies

  • Ensure all custom records, scripts, and lists are included in the project.
  • Use suitecloud project:adddependencies to identify missing dependencies.

Installation Script Issues

  • Test installation scripts in a sandbox to avoid deployment failures.
  • Use logs to debug any issues.

Compliance with SuiteApp Standards

  • Follow NetSuite’s guidelines for SuiteApp certification.
  • Validate the project using suitecloud project:validate.

Conclusion

Converting an ACP project to a SuiteApp SDF project unlocks the potential for wider distribution and scalability. While the process involves additional steps and considerations, adhering to best practices ensures a seamless transition.

By following the steps and addressing challenges proactively, you can transform your ACP project into a robust SuiteApp ready for distribution.

Picture of About the Author

About the Author

Usman Majied
Senior Software Engineer - Folio3

Usman Majied is a passionate tech enthusiast who likes to take on challenging tasks. He likes to read books, play physical games, workout, and play video games to blow off steam.

Get In Touch With Our Experts


    NetSuite provides powerful customization capabilities to tailor the platform to specific business needs. Developers often use SuiteCloud Development Framework (SDF) for larger and more complex customizations. SDF supports two types of projects

    1. Account Customization Projects (ACP) 
    2. SuiteApp projects. 

    While ACPs focus on deploying customizations to a single account, SuiteApps are designed for distribution across multiple accounts, making them essential for ISVs and partners. Let’s learn about the process of converting an ACP project into a SuiteApp SDF project in this blog.

    Key Takeaways

    • ACP projects are customized for a single NetSuite account, whereas SDF projects are designed for distribution across multiple accounts.
    • Compliance with SuiteApp certification is essential for listing in the SuiteApp Marketplace, making it more accessible to a broader audience.
    • Update the project’s type and metadata in the manifest.xml file.

    What is an ACP Project?

    An Account Customization Project (ACP) in NetSuite SDF is tailored to deploy customizations to a specific account. It includes various customization objects such as custom records, forms, scripts, and workflows.

    ACP is ideal for:

    • Customizations are limited to a single account.
    • Internal use or specific client requirements.

    What is a SuiteApp SDF Project?

    SuiteApps are SDF projects that are packaged and distributed across multiple NetSuite accounts. They can be installed using bundles or SuiteApp Marketplace, enabling wider distribution and monetization.

    SuiteApps are characterized by:

    • A manifest.xml file defining metadata like version and dependencies.
    • Distribution and installation scripts for setup in target accounts.
    • Compliance with NetSuite’s SuiteApp requirements, including sandbox testing.

    Why Convert an ACP Project to SuiteApp?

    Converting an ACP project to a SuiteApp is beneficial when:

    1. You want to distribute the solution to multiple accounts.
    2. The customization needs to be monetized as a product.
    3. Compliance with SuiteApp certification is required for Marketplace listing.

    Steps to Convert ACP to SuiteApp

    1. Set Up Your Environment

    Ensure the latest SuiteCloud CLI is installed.

    Authenticate using suitecloud account:setup.

    Confirm the ACP project is error-free by validating with suitecloud project:validate.

    2. Modify the Project Type

    Open the manifest.xml file.

    Change “projecttype”: “ACCOUNTCUSTOMIZATION” to “type”: “SUITEAPP”.

    3. Add IDs and Project Name

    Add publisherid and project id tags in manifest.xml along with projectname tag. 

    Remove Configuration Tag from deploy.xml

    Update the deploy.xml file to remove the <configuration> tag, retaining only the <files> and <objects> sections:
    xml
    Copy code
    <deploy>

        <files>

            <path>~/FileCabinet/*</path>

        </files>

        <objects>

            <path>~/Objects/*</path>

        </objects>

    </deploy>

    4. Add SuiteApp Metadata

    Update the manifest.xml file with SuiteApp details:
    xml
    Copy code
    <manifest projecttype=”SUITEAPP”>

        <publisherid>com.example</publisherid>

        <projectid>mysuiteapp</projectid>

        <projectname>MySuiteApp</projectname>

        <projectversion>1.0.0</projectversion>

        <frameworkversion>1.0.0</frameworkversion>

    </manifest>

    5. Update Code and Script References

    Replace all /SuiteScripts references in your code and script objects with /SuiteApps/com.example.mysuiteapp.

    6. Validate and Deploy

    Run suitecloud project:validate to ensure the project meets SuiteApp standards.

    Deploy to a test account using suitecloud project:deploy -i in interactive mode.

    Considerations

    1. Deploy All Objects

    Always deploy all objects using the deploy.xml file to prevent accidental deletion of existing objects. Deploying specific objects will delete all others not listed in deploy.xml.

    2. Avoid Special Characters in Project IDs

    Ensure the projectid in manifest.xml does not include special characters. For example, my_suiteapp_project will fail. Use a valid format like mysuiteapp.

    3. Already existing entities

    When deploying a SuiteApp to an account, if a certain entity (record, field, list, etc)   already exists in that account, deployment will fail. In order to fix that, either the entity needs to be deleted from the account, or the particular object needs to be removed from the code. The former is recommended. 

    Common Challenges and Solutions

    Object Dependencies

    • Ensure all custom records, scripts, and lists are included in the project.
    • Use suitecloud project:adddependencies to identify missing dependencies.

    Installation Script Issues

    • Test installation scripts in a sandbox to avoid deployment failures.
    • Use logs to debug any issues.

    Compliance with SuiteApp Standards

    • Follow NetSuite’s guidelines for SuiteApp certification.
    • Validate the project using suitecloud project:validate.

    Conclusion

    Converting an ACP project to a SuiteApp SDF project unlocks the potential for wider distribution and scalability. While the process involves additional steps and considerations, adhering to best practices ensures a seamless transition.

    By following the steps and addressing challenges proactively, you can transform your ACP project into a robust SuiteApp ready for distribution.

    Picture of About the Author

    About the Author

    Usman Majied
    Senior Software Engineer - Folio3

    Usman Majied is a passionate tech enthusiast who likes to take on challenging tasks. He likes to read books, play physical games, workout, and play video games to blow off steam.

    Get In Touch With Our Experts

      I have read and agree to the Privacy Policy of Folio3
      I agree to be contacted by Phone or Email by Folio3

      Get in touch with the

      Award-Winning

      End-to-end NetSuite Servicing Agency

      Tell us how may we assist you!