INTRODUCTION TO EXTENSIONS
This Chapter describes the Extensions functionality in Compiere.
EXTENSIONS
In addition to the internal application dictionary based customization capability; Compiere also provides the ability to extend the application. In contrast to other applications, client extensions are possible in a hosted environment and are maintained during upgrades.
Information Structure
If the information structure is not sufficient, users can add fields to any record with its presentation and validation rules. Data entry can be made mandatory, if certain conditions apply. The entry validation can be based on lists, tables, or functions like callouts.
Scripting
Compiere Scripting allows the user to extend the functionality using Java syntax. It is also used for conversion.
Call Out
Functional extensions are implemented via 'callout' technology. Clients can provide additional functionality in Java or even native C functionality, e.g. for additional validation or data feeds. Callouts can be invoked before or after data entry in any field. Compiere ensures that callouts cannot crash or corrupt the system.
Rules
The advanced user can extend and in certain areas modify the rule base. Rules are organized in packets making sure that transaction integrity is maintained. Rule extensions could be used for generating statistical entries or special reporting needs.
Currently, rules are used for creating accounting transactions and for pricing.
Application Extensions Framework
The current framework will allow Partners to create application extensions that include both reference data and code, and can be distributed to their customers through Compiere.
Procedure for Implementation of Application Extensions
Elements that could be packaged as part of application extensions include: localizations, translations, industry solutions, customer solutions, etc. These elements can be developed and packaged independently, while Compiere will continue to be the provider of the distribution and installation mechanisms.
Important: Those who intend to use this feature must contact Compiere before attempting to register application extensions.
The steps for partners to generate application extensions:
- Register application (using Compiere window Entity Type)
- Develop application
- Create application .car file (using Compiere window Entity Type)
- Upload application file to Compiere
For customers to install the application extension:
- Buy application from Compiere marketplace
- Download application .car file
- Install application
Register an Application Extension
Use the following steps to register for Application Extensions:
Contact Compiere using the Contact Us page from our website or by sending an e-mail to info@compiere.com before trying to register your new application extension.

Afterwards, log into Compiere as the System Administrator role.
Open the Entity Type window (Application Dictionary => Entity Type) and create a new record.
Important: Be careful not to modify the entities C, D, CPRO or XUOM.
Complete all the mandatory fields. For entity type, notice that names beginning with "C" are reserved for Compiere and you must use four characters.
Comments about optional fields:
- Version: The version of your extension. Usually 1.0 for the first version.
- Prerequisite version: The Compiere Core version that is required for this extension, e.g. 3.0.3. You need to use the exact text as defined for the entity type D
- Prerequisite applications: The entity type of the applications that need to be installed in order to install this extension. For example, set it to CPRO if the extension must be applied on top of the professional edition.
- Classpath: List of additional jar files required for this extension.
- Model package: Specific model package from the jar files listed in the classpath field.
You do not need to enter any information on the Version, Modification, or Migration Step tabs.
Ensure that your System window contains your up to date information for your system and web store email/password information
Click "Register Application" to send your request to Compiere.

Important: If an entity type with the same name has already been registered you'll get an error "Error: Already registered: XXXX". You will have to create a new record with the new entity type. Verify with Compiere that the new entity type that you plan to use is available.
At the prompt, click 'Ok' to start process.
Leave the defaults in place and click 'Ok' to continue.
At this point the status will be pending approval from Compiere. A Compiere representative should contact you soon to confirm the registration or to ask any additional questions.
Creation of Application .car file
Use the following steps to create the Application.car file:
Make all the application dictionary changes using the entity type that you registered in the previous step.
Generate jar files for the custom code required by your extension.
After having your new entity type approved by Compiere, login to Compiere with the System Administrator role and query the entity type that you registered in the previous step and click "Create Application File."
At the prompt, click 'Ok' to start process.
Next, Provide the directory for the jar file directory.
The car file will be generated in the COMPIERE_HOME/data directory with the name compiere_'<entityType>'.car
Installation - Application
Use the following steps to install the Application:
After obtaining the car file for the application extension, copy it to the directory COMPIERE_HOME/data.
Execute RUN_Setup (see Appendix A for details on the setup information.)
Important: Be sure to have internet connection available to be able to get the license terms for the application extensions that you plan to install.
When you get to the window to select the applications, besides the application extension that you need to install, also select the option Reinstall/Migrate for Compiere Core 3.0.3 or later.
Then continue with the Migration steps as usual.