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
- Account Customization Projects (ACP)
- 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:
- You want to distribute the solution to multiple accounts.
- The customization needs to be monetized as a product.
- 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.
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.