From iDempiere en

The basics

What are the differences between iDempiere, ADempiere, Compiere, Openbravo and Odoo?

Long story short:

  • iDempiere is community open source that evolved from Compiere and ADempiere to state-of-the-art architecture and tools (OSGi, mercurial, maven - initially buckminster, zk6/7/8, etc). iDempiere forked ADempiere at 2011 and since then is consistently evolving and making releases.
  • ADempiere is community open source that forked Compiere to preserve the open source status of the application
  • Openbravo forked Compiere, it's commercial open source aka open core
  • Compiere is ERP created by Jorg Janke, it was very successful until it became commercial open source aka open core
  • Odoo (formerly known as OpenERP, and before as TinyERP) is a different flavor of ERP unrelated to the *mpiere family, it's also commercial open source aka open core
  • The *mpiere family is Java based whereas Odoo is Python based.
  • Odoo is said to be the simpler ERP to use, whereas the *mpiere is more complex and require a more huge learning curve. But the payoff is the *mpiere has a heavy arsenal of functionality and features as well framework power (in the case of using OSGi).
  • You can read another expert's account of it here: Blog of Chuck Boecking.

Installation and configuration

Where to download iDempiere?

  • if you're interested in using the software, but not compiling then installers are for you
  • if you're interested in looking the source code and compiling by yourself then source code is for you

How to install iDempiere?

There are several installation guides for iDempiere, the most up to date is probably Installing iDempiere for ubuntu, but it has been used to install also on windows (just correlating to the corresponding commands)

How to get started?

  • First time users: it's recommended to play with GardenWorld demo company, learn the basics about entering documents, completing, and getting the results from inventory, AR/AP balances, banks and accounting
  • Technical savvy users: it's recommended to learn how to use iDempiere framework, to extend or develop new things. iDempiere can be used as a complete superfast framework development, you can do complete applications on a site running without opening Eclipse

Is there a demo of iDempiere available online?

Yes, there are several test/demo sites which you can use to get used to iDempiere or the test and report issues.


Upgrading from 1.0c to_2.0

See Upgrade from 1.0c to_2.0

Changing the interface

Basic usage

How can I find out what error has occured?

Importing data




Where can I find that button process?

On iDempiere many of the processes that you were used to find in a window were moved to a toolbar gear button, please check NF1.0_WindowTabToolbarButton


Why does my chart of account is incomplete after creating a new client?

The Initial Client Setup Process just creates the accounts marked as default on the provided CoA, in a posterior step you must import the rest of accounts in the created client.

Why importing CoA is throwing errors when creating a new client?

A well prepared CoA must be correctly formatted, must contain ALL the default accounts required, and must not contain duplicates.

The easiest way to verify that is using the CoA editor (a desktop swing version to review CoA) originally contributed by Daniel Tamn. Sources for iDempiere can be found at this link, a runnable version can be downloaded from this link

Sales Process

Purchasing Process


Payments / Receipts


Internal Reporting Engine


Which version of Jasper is compatible?

It depends on the iDempiere version:

  • r2 and actual development (as of oct-29/2014) jasper version integrated is 5.1.2 and recommended iReport is 5.1.0
  • zk7 branch (aka r3) uses jasper version integrated is 5.6.1 and recommended iReport is 5.6.0


Hacker's Questions

How to create automatic line numbers?

Q: I created a new kind of table with a subtable and I want automatic created line numbers like for example in orders or invoices.

Answer 1

See into the sourcecode at [org.adempiere.base/src/org/compiere/model/MInvoiceLine.java] in method beforeSave().

Answer 2

For my Examples it is said I created a table to calculate interests. The header table is called "BAY_InterestCalculation". The subtable is called "BAY_InterestCalculationLine".

I inserted the following code into my own model class [MBAYInterestCalculationLine].

 protected boolean beforeSave(boolean newRecord) {
 	// Get Line No
 	if (getLine() == 0) {
 		String sql = "SELECT COALESCE(MAX(Line),0)+10 FROM " + Table_Name
 				+ " WHERE " + COLUMNNAME_BAY_InterestCalculation_ID + "=?";
 		int ii = DB.getSQLValue(get_TrxName(), sql,
 	return super.beforeSave(newRecord);

Answer 3

For my Examples it is said I created a table to calculate interests. The header table is called "BAY_InterestCalculation". The subtable is called "BAY_InterestCalculationLine".

In the window "Table & Column" I go to the definition of the "Line" column and give the following "standard logic":

 @SQL=SELECT NVL(MAX(Line),0)+10 AS DefaultValue FROM BAY_InterestCalculationLine WHERE BAY_InterestCalculation_ID=@BAY_InterestCalculation_ID@

This solution does not need an own model class. It works before the line is created in the database and so the new line number is shown in a new created line record. This may introduce run conditions when multi users are creating records. To be more sure that line numbers are unique you better use Answer 2 (This is how Jorg Janke did it). To be really sure you should add a suitable unique constraint on the database.

Nothing keeps you from combining both approaches. :-)

How to query objects with the Query class?

The Query class is the recommended way to fetch objects. It uses the persistence layer and its cache and it uses a translation layer to be database independent.

see http://www.adempiere.com/ADempiere_Best_Practices#How_to_use_Adempiere_Query_class.3F

How can I help?

Where now?

I've found a bug or have a feature request. Where do I post it?

Recommended approach:

  • Bug
  • Feature Request
    • Validate in forums your need, usually community help you to find if:
      • there are better ways to do the same
      • if is a implementation specific request (customization)
      • country specific request (localization)
      • uncommon need (recommended maybe as a plugin)
      • common need (recommended to be implemented in core)
    • Open a JIRA ticket describing the feature request as exhaustive as possible, if you have idea about how to implement it is worthy also to describe it, if you already implemented it, then attach a patch to the request

I'm getting a strange error. What now?

I tried that but it didn't work

I have a question not answered here. Where do I go next?

Still no luck. Where can I ask for help?

Recommended reading

Books about iDempiere

There are books for Adempiere and Compiere that are mostly applicable to iDempiere, you can buy and read:

Cookies help us deliver our services. By using our services, you agree to our use of cookies.