Using Solution Central > If You Are a Developer > Best Practices for Developers
Best Practices for Developers
This topic details the best practices that developers can follow while developing a solution, creating a group ID and an artifact ID, versioning extensions, updating project dependencies, defining user permissions, and testing a solution’s functionality and deployment.
Developing Solutions 
The Best Practices for Developing Solutions topic in the ThingWorx Help Center provides an overview and an overall guidance for building solutions. Once you package and publish your solution to Solution Central, you will no longer be able to edit your project entities. This ensures that changes that may alter your core code base are not made in the production environment. It is, therefore, recommended that you build a solution that allows you to dynamically set values downstream for environments and customizations with the help of configuration tables. Configuration tables enable you to store values that do not change often. See the Configuration Tables topic in the ThingWorx Help Center for details.
Creating Group IDs and Artifact IDs 
A group ID is used to group related solutions together, while an artifact ID helps identify a given solution within its group. Group IDs and artifact IDs should follow the Maven convention. Once a group ID or an artifact ID has been created for a solution, it cannot be changed.
Guidelines for creating a group ID
A group ID must include only letters (capital or lowercase), digits (0-9), periods, hyphens, or underscores.
The first character must be a lowercase letter.
The last character must be a letter (capital or lowercase) or a digit (0-9).
Length must be between 2 and 100 characters.
Do not use the following names: legacy, CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
Do not use com.ptc or com.ptc.<abc>.
* 
Your project must have a unique name regardless of its group ID.
Guidelines for creating an artifact ID
An artifact ID must include only letters (capital or lowercase), digits (0-9), hyphens, or underscores.
It can be up to 100 characters long.
Do not duplicate an artifact ID already used in the ThingWorx platform.
Do not use the following names: CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.
Versioning Extensions 
The version of the extension is a required attribute whose value must follow the <major>.<minor>.<patch> format, where each part of the version is numeric.
Updating Project Dependencies 
Avoid creating cyclic dependencies between solutions as they can restrict publishing of the solution. An example of a cyclic dependency: Solution A depends on Solution B, Solution B depends on Solution C, while Solution C depends on Solution A.
Defining User Permissions 
The Configuring Visibility and Permissions for ThingWorx Entities topic in the ThingWorx Help Center provides guidelines for defining visibility and permissions for entities. The following pointers describe user handling in Solution Central:
If you assign a project to a user, the user becomes a part of the published solution. If you do not wish to have this user in the published solution, remove the assigned user from the project before attempting to publish the solution.
If you add an entity to a project, the entity becomes a part of the published solution. If this entity has permissions set at a user group or user level, but this user or group does not have the project assigned to them, while you publish, Solution Central informs you that the solution is dependent on these users or user groups and adds them to the project for you. If you do not wish to have this user or group in the published solution, remove the assigned user or group from the entity before attempting to publish the solution.
Testing Solutions 
To test your solution’s functionality and deployment process, replicate the production deployment steps and environment in a QA environment. Ensure you have a QA ThingWorx Platform instance registered with Solution Central to which you can deploy your solutions and verify their functionality.
Was this helpful?