IDempiere workshop 2026

From iDempiere en

Brainstorming

At the beginning of the workshop we did a brainstorming about things to talk about in the workshop.


AI:

  • AI for users
  • Security
  • Guardrails
  • Skills/MCP for documentation

Howto

  • write documentation (with ai)
  • write unit tests
  • monitor state of sql queries, processes, database
  • load tests
  • fitnesse/playwright (zk fixed ids?)

UI

  • integrate zk into iDempiere
  • better theme support
  • Marble theme
  • free new components
  • Murilo’s improvements to his UI

POS interest group

BI

  • semantic layer for reporting
  • HTML support in a PrintFormat (Murilo advises his FreeMarker solution for that)
  • Pivot print persists
  • XLS export as numbers (instead of formula)
  • internal/external MCP

functional

  • MFG II manufacturing - capacity planning
  • iDempiere as a framework
  • close orders/documents as a process or in a info window
  • plugin versus core

marketing


workshop day 1

UI

What do we need to do to implement marble or other themes?

Carlos: We mixed css inside java. Murilo has done work in this area. Norbert wants to define ui in json. He has an example where he uses badges or other zk view components. We discussed if there is a way and if it is useful to mix the application and and json. What Carlos takes out is that he wants a field not shown as one of our fixed components (e.g. a number as a text field) but in another way (as a progress bar or so). Thomas example of the cards in his logistics board is similiar and already can be done using the html field. For Norberts case we want a json typ field attached to a json schema (IDEMPIERE-6059).

Norbert also likes to improve the tag (label) functionality. tags are not shown in the normal data window. Carlos said the same is true for PostIts.

Carlos says the first step is to enable to use themes (css). (IDEMPIERE-7105) clean up the code. Norbert thinks that can be automated by ai.

Second step is: How can we enable easily layout changes in the UI. (zul) (IDEMPIERE-xxxx)

Try to cover the components zk gives us.

Mohamed asked what is the goal of this work - the goal is to empower users in a ux group to have the flexibility to change the ui and ux as they like.

Murilo did a demonstration of the UI/UX of an implementation he did. Most of his work was done as forms and so can not be used for all windows or for community but it showed nicely what is possible.

He also showed his plugin for freemarker templates. It is an easy way to create very nice reports in html and pdf.

(btw... Thomas did something similar using JasperReports but what Murilo did seems more matured and at the end more powerful. If you prefer to work with JapserReports to be able to edit the reports in Jasper Studio you can have a look at it.)

He also showed a nice workflow to create freemarker forms using ai. Murilo wanted to add an ai interface later to do that automatically. Markus Bozem said we need an plugin to provide an ai interface. (IDEMPIERE-xxxx)

Mahmuda (from Sysnova) started a discussion to create an UI/UX user group and a mattermost channel for it. She wants to lead this group. NOTE: Carlos suggests to add a mattermost channel -> https://mattermost.idempiere.org/idempiere/channels/uiux


small issues before the break

We talked about some small things from the list:

manufacturing

  • Manufacturing: Deepak, Zuri, Peter had a kind of group to be in charge of libero manufacturing. They have to create one single joined version and make it compatible with vanilla iDempiere. Mahmuda wants to join this group. NOTE: Carlos suggests to add a mattermost channel -> https://mattermost.idempiere.org/idempiere/channels/mfg

POS group

AI

Hengsin asked to enable developers to use Vibe Coding to create code. We discussed about the definition of vibe coding.

Hengsin builded a small number of developer skills in the past. https://github.com/hengsin/idempiere-skills

Markus Bozem wants to create skills and write all informations about idempiere conventions in coding. Norbert added that we need also mcp files that may be based on skills.

For example an skill that creates a new column can get a description to look into the database to identify patterns to create new columns.

Mahmuda did a picture to show us a possible layaered approach to get skills.

  • An MCP Layer
  • idempiere core knowlwedge
  • Vibe Coding Chats, including user skills
  • a human in the loop
  • published

inbetween each layer we need security.

Murilo talked about someone who uses a separate webservice to access iDempiere through rest interfaces that uses like skills.

Mahmuda explains how generic AI and agentic AI can work here. The agenticv AI get information from *.md files, RAG (rules, knowledge database) and a data repository. You can have several LLMs using that like hiring employees. Then you need an "HR-UI" that gives guard rails to the agents and looks over them.

We should care to see where we need an mcp and where skills.

We do need a common repository with skills and mcps.

Carlos wanted to talk about migration scripts. They are very hard to review. An idea is if coderabbit can summarize the migration scripts to help.

We also have to analyze 2packs. We havo to know what to check in the 2Pack and in the SQL. (E.g. validations that lead to a password table or such.)

We have to think how an mcp takes centralized ids. Norbert proposed to have a dry-run before you really take the ids for your public code.

centralized IDs / 2Pack

Thomas asked why we do not use 2Pack instead of migration scripts. Carlos wants to talk about that in the friday meeting with Hengsin and Deepak.

Do we want to stop using centralized ids. Hengsin said on matterpost that it may be possible to use uuids in a 2pack to not need centralized ids any more. That needs a ticket to analyze (IDEMPIERE-xxxx)

We may change from 2Pack in *.xml to *.yaml. Care about PostgreSQL/Oracle code. (IDEMPIERE-xxxx)

Nicolas says that we have to implement a test to assure that when we change 2Pack that it works in all old versions of iDempiere.

UI again: json defined

Murilo showed a PoC to use JSON files and a predefined UI definition to automatically create new fields and new UI elements in an iDempiere window. As it is based on json it is very flexible. That was very niced and showed interesting ideas.

Carlos said this is a tool that could replace or mimic the Attribute Set Editor.

We had concerns about performance. Deepak has concerned about search and reports. Carlos says he has concerns about rest filters (they also do not use json fields). json fields have to be searchable because users expect that.

Carlos says that we can use Attribute Set Instance to implement that. That is another approach.

Nicolas talked about where the definitions can be and if they can be overridden. If the schema is defined in column we can override it in field and in customization. We can have a table to define the schemas. We may create schemas based on context. We can create a detail table for this data. (IDEMPIERE-xxxx)

AI for business users

Thomas wanted to talk about how to use AI for business cases. Evan has the example that they read their supplier's price lists and read the data into the erp. Thomas uses AI to read incoming order emails.

Another kind of usage is to have an end user interface to gather information and reporting. This can work like a chat window. Thomas has a PoC for a reporting window and Norbert has also a nice working solution in the quickinfo panel.

Up to now there is no common community approach for these things.


workshop day 2

documentation

We talked about if we want to enforce tickets to be documented. Carlos explains he tend to balance benefit/cost when allowing to move ahead a pull request without documentation.

The documentation is now moved from the wiki to docusaurus. Diego explained that we need to strenghten docusaurus because AI likes to read these .md files and it can be our authorative doc for the project. Carlos likes to have a space where users can add things very fast and easy. IT also can be a playfield for not-finished documentation.

Marco and others like the recent changes list shown in the wiki, which is missing in docusaurus.

Carlos says that google docs may be a better tool for that.

Actions to be taken:

  • We need to discuss to create subfolder in the docusaurus and how to create categories.
  • improve rules for documentation

related records

This feature is about the detail zoom button.

Norbert has a solution that materializes the lists of related records.

Deepak has a ticket to filter which tables can be zoomed.

Thomas want to filter the list, e.g. to see only orders of the last two years.

We want to open a ticket IDEMPIERE-xxxx

pivot print / reporting

Deepak has an idea to save the settings of pivot table output. IDEMPIERE-xxxx

He also likes to allow excel templates to define how excel reports look like. IDEMPIERE-xxxx

Here we mentioned also the plugin for freemarker templates from Murilo.

iDempiere fast track

Mohamed talked about his first impressions and we discussed how to explain what iDempiere is and how to start working with it. Carlos showed Crispians blog post and talked about what it means.

Mohamed gave the example to show an example of a kanban of requests to show iDempiere as an crm.

One solution is that we want to improve the test data in garden world. (IDEMPIERE-4297 already closed - create a new ticket?) Our ideas were:

  • more data
  • more historic documents to allow reporting
  • print formats are ugly
  • show a logo in reports

Norbert has a script to create random sales and purchase orders.

Juan Carlos wants to contribute data into a seed server but he is not experienced in creating 2packs.

Diego and Rifat offered to find out how we can do that technically. we want to export it as 2pack. Carlos says it can be possible to take the 2pack and create migration scripts later to bring it into seed.

Diego says that iDempiere out of the box is overwhelming for new users.

More test data for all functionality is also demanded for unit tests and to help with bug reporter's test cases. In Compiere theg Garden World data was meant to show every single function in the ERP.

Juan Carlos reminds of his ticket to add more columns for reporting of dimensions like brand, product class, etc. (IDENMPIERE-xxxx ???)

dynamic validation

Evan talked about that his customers can see their invoices through REST and now it can be filtered by an sql term so they can only see their own data.

Juan Carlos sais that in Compiere it is possible to do a list of access tables for customers. He may find documantation about that and create a proposal.

monitor resource intensive SQL/Process

Nicolas proposed that. Now we can use debug to see all queries in the log file. This is hard to work with.

Carlos has increased the log level of postgres to see all queries and its time. That fills your disk very quickly.

Deepak used PgBadger. This is a good tool.

Juan Carlos has the idea to add a comment in iDempiere with the process id or more data. That may help to find the process that created the sql that you see in Postgres logs.

Carlos sometimes uses a breakpoint in the convert class to find out where in the code a single sql query is done.

In the OSGI console you can set the debug property in iDempiere even in a running production system.

Load Test

Mahmuda says that at Sysnova they have installations with a very big number of concurrent users and they use load balancers. They do load tests and she wants to talk about that.

We can use REST to do mass documents.

to use JMeter you have to start the server so that it creates fixed ids. There is a jvm variable to switch that on.

Carlos says there is a problem with a sequences lock. If you create too many documents cuncurrently it breaks after 2 minutes. A solution for that is to use uuid as document numbers. There is already an open ticket for that (IDEMPIERE-xxxx ???).

playwright

https://playwright.dev/ works similar like selenium.

With fixed ids in zk it works much faster. When Thomas aked why these are not used by default Carlos explains two reasons: zk is slower because it has to call a function in iDempiere's model to create the id. And second there may be collisions when two components accidentally create the same id. If this happens it is a bug but not all of them are solved.

Murilo showed his screenshot runner: https://github.com/muriloht/idempiere-screenshot-runner

Diego uses PlayWright a lot. He proposes to move all test cases to playwright. We can try that on a test server with fixed zk ids. IDEMPIERE-xxxx

Noone wants to use fitnesse any more.

semantic layer

Thomas and Norbert did talks in the conference about a similar concept. Mahmuda also likes that.

Thomas said that it will be good to agree on a set of dimensions and facts to work with. That helps to unify reporting and also helps AI when we add that to the official documentation.

We like to add materialized views IDEMPIERE-xxxx

Juan Carlos wants to add the possibility to create a "materialized" table on another postgres server.

MCP

There are projects for mcp for developers and for users. internal/external. We do not like this naming.

framework

What is the idempiere framework and what not?

Carlos explained which work has to be done to take more things out of core. There is still a lot of work to do. For example we need different installers (using for example profiles). It will also make contributions harder if we split the codebase into several repositories.

Diego showed some work he did in a group of people based on starting ideas from Murilo to define the things that belong to a framework.

Carlos counted which tables are part of the framework like users, countries, sessions, etc. It is hard to split columns inside tables.

Simpler is to extract is jasperreports or the report engine.

Marketing

At some point we should find a better name for iDempiere as a framework.

Excel export has problems with number

There is a bug in the excel export so that it does not create numbers in the number format but as text.

Mahmuda reported this bug and Thomas had also seen it. We could not reproduce it here in the workshop. So we think it must be solved already and the bug was in iDempiere 11 and vefore.

We use Keikai for our internal spreadsheet report. We realized that in the actual version the reports in KeiKai (the included spreadsheet in the report window) are read-only. Diego says according to the ticket from Hengsin this is by intention. The spreadsheet inside InfoWindows is writable. Carlos idea is to make that configurable (IDEMPIERE-XXXX).

closing orders in batch

Mahmuda asked how we do that. We showed the process "order batch process" that can get parameters to filter documents and close them. As an alternative we showed an InfoWindow that allows to filter documents manually and then runs a process to close.

consignment

How to get help from the community

Carlos talked about how to ask questions in mattermost and forums.

https://www.catb.org/~esr/faqs/smart-questions.html

Widgets and Quick Info

Diego did a place in Docusaurus with a list of 2Packs. These widgets are a smart way to do some things and here we can share them.

https://docs.idempiere.org/docs/category/widgets--quick-info

MFG 2

Some people of the community plan to work on manufacturing 2. They are in a mattermost channel.

BI mattermost channel

There is a new channel for the BI interest group.

How to use Skills / How to work with claude code

Markus did a demonstration for Carlos and us how he uses ai skills.

There is a starting point for skills to work with iDempiere from hengsin: https://github.com/hengsin/idempiere-skills

There is also an mcp server to access data from an iDempiere Server: https://github.com/hengsin/idempiere-mcp/

Carlos and Thomas were interested how to set up guardrails for AI.

Diego showed us how the skills work.

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