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.