Creating Modules
Introduction
Follow these guidelines when developing modules for the Marketplace:
-  
Create a folder named USE_ME, and add the microflows and pages that are relevant for the user.
 -  
Create an empty folder with the version number as its name, which will appear in Studio Pro's App Explorer.
 -  
For Java dependencies, follow these guidelines:
-  
In versions Mendix 10.3.0 and above, use managed dependencies where possible.
 -  
In versions below 10.3, ensure that Java dependencies are put in the
userlibfolder. You should also put any unmanaged dependencies, that is, non-publicly-available .jar files, in the userlib folder.- When putting .jar files in the userlib folder, make sure that the name includes a version number (for example, 
org.apache.commons.io-2.3.0.jar), and that it is accompanied by a blank{jarfile-including-version}.{module_name}.RequiredLibfile. This is so users know where the .jar files come from. For example, for the MyModule component, this would beorg.apache.commons.io-2.3.0.jar.MyModule.RequiredLib. 
 - When putting .jar files in the userlib folder, make sure that the name includes a version number (for example, 
 
   -  
 -  
Verify that the module's Java actions compile correctly. The easiest way to check is to create a deployment package, as it will clean the deployment folder and rebuild the app. For more information, see Environments.
 -  
Reduce the use of layouts and use snippets instead. This results in fewer module dependencies, and reduces the number of potential errors, such as missing layouts.
 -  
Implement user roles and security.
 -  
Creating a new release or module export only while the security level of the app containing the module is set to Production.
 -  
The status must be Complete for the following access: page, microflow, OData, entity, and dataset.
 -  
For example pages and microflows to be copied to another module, select the Exclude from project option for the document. This encourages duplication and reduces dependency errors.
 -  
Do not rename entities and attributes when creating new versions, as data in these entities will get lost. Replacing an existing module is based on the entity names.
 -  
The module must include the English language.