API Change Documentation
Overview
This document provides detailed information about API and stack changes introduced in the latest Etendo releases. It serves as a reference for developers and system administrators to understand which components have been updated, deprecated, or removed, and how these changes may impact custom developments.
If you are planning to upgrade your environment, make sure to also review the official upgrade guide: Upgrade Etendo to Any Version.
Etendo 26
Platform Stack Upgrade
Java SE
-
Minimum Version Required:
17.0.14— Release NotesBreaking Change: Java 17 is Now Mandatory
Starting with Etendo 26.1.0, Java 17 is the only supported Java version. The
-Pjava.version=11compatibility flag introduced in Etendo 25 has been completely removed.Any environment still running Java 11 will be blocked from building. You must install and configure Java 17 or higher before upgrading to Etendo 26.
Action Required for Custom Developments
If you have custom modules with
BuildValidationorModuleScriptclasses, recompile them with Java 17 before upgrading. These classes run duringupdate.databaseand fail at runtime if compiled with Java 11 due to bytecode incompatibility.Terminal./gradlew compile.modulescript -Dmodule=<javapackage> ./gradlew compile.buildvalidation -Dmodule=<javapackage>This applies only to custom modules. Core Etendo modules are already compiled with Java 17.
PostgreSQL
- New Version Supported:
17 - JDBC Driver:
42.5.4->42.7.8— Changelog
PostgreSQL 17 is supported from this release. No action is required if you stay on a currently supported version. If you upgrade the database engine, review the PostgreSQL 17 release notes for breaking changes.
Etendo Gradle Plugin
- New Version Required:
2.3.0or higher — Release Notes - The
-Pjava.version=11flag has been removed. Java 17 is now enforced with no bypass.
DBSourceManager
- New Version:
1.1.0->1.2.0 - Changes:
- Gradle wrapper upgraded from
7.3.2to8.12.1. - Added PostgreSQL 16 platform support (
PostgreSql16Platform). - New
ExcludedConstraintsystem for managing partitioned tables and complex database schemas. - Improved partition table handling during database export.
- All bundled JARs removed from
lib/; dependencies are now resolved from the project classpath.
- Gradle wrapper upgraded from
Third-Party Libraries
Updated
-
org.postgresql:postgresql42.5.4->42.7.8— compatible upgrade. Review the changelog if you use driver-specific features. -
org.mozilla:rhino1.7.13->1.8.0 -
org.mozilla:rhino-engine1.7.13->1.8.0— Rhino ReleasesWarning
If you have custom JavaScript executed via the Rhino engine, test it for compatibility with version 1.8.0. This upgrade includes changes to ECMAScript compliance and internal APIs.
-
org.antlr:antlr2.7.7->org.antlr:antlr-complete3.5.3— ANTLR 3 DocsWarning
This is a major version upgrade (ANTLR 2 to ANTLR 3). If you use ANTLR APIs directly in custom code, you need to migrate. The package structure and API have changed significantly.
-
org.codehaus.woodstox:wstx-asl3.0.2->4.0.6— Woodstox Releases — major version upgrade for the XML stream processing library. Review if you use Woodstox APIs directly. -
com.etendoerp:dbsm1.1.0->1.2.0— see DBSourceManager (DBSM) above.
Artifact Coordinates Migrated to Upstream
Several libraries previously re-packaged under com.etendoerp are now resolved from their official upstream Maven Central coordinates. If your modules declare any of these as explicit dependencies, update the artifact coordinates. No functional changes.
| Previous | New | Version |
|---|---|---|
com.etendoerp:yuiant 1.0 |
com.etendoerp:YUIAnt 1.0.0 |
Artifact ID case change |
com.etendoerp:jettison 1.3 |
org.codehaus.jettison:jettison 1.3 |
Same version |
com.etendoerp:wstx-asl 3.0.2 |
org.codehaus.woodstox:wstx-asl 4.0.6 |
Version upgraded |
com.etendoerp:slf4j-api 1.7.25 |
org.slf4j:slf4j-api 1.7.25 |
Same version |
com.etendoerp:antlr 2.7.7 |
org.antlr:antlr-complete 3.5.3 |
Version upgraded |
com.etendoerp:rhino-engine 1.7.13 |
org.mozilla:rhino-engine 1.8.0 |
Version upgraded |
New
The following libraries are new additions to the platform classpath. No action is required unless your custom modules declare conflicting versions.
org.apache.poi:ooxml-schemas1.4— Documentationorg.hamcrest:hamcrest-all1.3— Documentationjunit:junit4.12— Documentation
Removed
-
org.apache.commons:commons-compress1.27.1Warning
If your custom modules depend on
commons-compress, add it as an explicit dependency in your module'sbuild.gradle. -
org.eclipse.jdt:ecj3.23.0(Eclipse Compiler for Java) com.etendoerp:ant-nodeps1.0.0com.etendoerp:catalina-ant1.0.0org.apache.poi:ooxml-schemas1.4
Database Schema Changes
The following changes are applied automatically during update.database:
| Table | Change | Details |
|---|---|---|
AD_HEARTBEAT_LOG |
Columns removed | ACTIVITY_RATE, COMPLEXITY_RATE, ANT_VERSION |
AD_HEARTBEAT_LOG |
Column added | STATUS |
AD_SYSTEM_INFO |
Columns added | License_Edition, Subscription_Type, Subscription_Start_Date, Subscription_End_Date, Concurrent_Global_System_Users, Instance_Number, WEB_Service_Access, Customer_Name |
C_ExtBP_Config |
Table removed | CRM Connector main configuration table (and all its columns) |
C_ExtBP_Config_Property |
Table removed | CRM Connector property mappings table |
C_ExtBP_Config_Prop_Opt |
Table removed | CRM Connector property accepted values table |
C_ExtBP_Config_Filter |
Table removed | CRM Connector filters table |
C_ExtBP_Config_Filter_Opt |
Table removed | CRM Connector filter option values table |
AD_Org |
Columns removed | C_Extbp_Enabled, C_Extbp_Config_ID |
AD_ClientInfo |
Column removed | C_Extbp_Config_ID |
See PR #977 for full details on the CRM removal.
Removed Java Classes
The following event handler classes in the org.openbravo.event package have been deleted as part of the CRM Connector removal. Any custom module that extends, imports, or directly invokes these classes must remove those references:
ExternalBusinessPartnerConfigColspanExternalBusinessPartnerConfigFilterEventHandlerExternalBusinessPartnerConfigPropertyEventHandlerExternalBusinessPartnerConfigurationEventHandler
Other Changes
- Secure Web Services Key Generation: The
generate.sws.keysAnt target is now called automatically duringinstall.source, reducing manual configuration steps for secure web services.
Etendo 25
Platform Stack Upgrade
Java SE
- New Version Supported:
17.0.14 -
Release Notes:
-
Java SE 12.x
-
Java SE 13.x
-
Java SE 14.x
-
Java SE 15.x
-
Java SE 16.x
-
Java SE 17 (LTS)
-
PostgreSQL
- New Version Supported:
16.8.1 -
Release Notes:
-
PostgreSQL 16.x
-
PostgreSQL 15.x
-
Gradle
Warning
To update the Gradle wrapper in an existing environment , you must run:
For more detailed migration guidelines, refer to Upgrading Gradle Wrapper
- New Version Supported:
8.12.1 -
Release Notes:
Apache Tomcat
- New Version Supported:
9.0.98 - Release Notes: Apache Tomcat 9
Etendo Gradle Plugin
- New Version Supported:
2.0.0or higher -
Release Notes:
- Etendo Gradle Plugin - Release Notes
-
New Gradle Plugin Task:
This new task deletes directories created by theexpandCoretask. -
Compatibility Flag
This new flag forces the use of Java 11 with version 25Q1.
Etendo ISO
Note
The Etendo 25 ISOs are currently based on Ubuntu Live Server 22.04.5 amd64 image.
For more information, visit Etendo ISO Release Notes.
Third-Party Libraries
All libraries previously located in /lib/runtime as JAR files have been updated to Gradle dependencies now defined in the artifacts.list.COMPILATION.gradle file at the root of the project.
Updated
-
dbsourcemanager.jar->com.etendoerp.dbsmversion1.1.0-
Release Notes:
- Changes to use new version of Apache Commons Lang 3 library.
- Changes to use new version of Apache Commons Collections 4 library.
- Changes in deprecated or removed features used in Java 17.
- Added support for PostgreSQL 16.
-
-
commons-collections.commons-collections3.2.2->4.4-
Release Notes:
-
API Changes - Migration from Apache Commons Collections
3.2.2to4.4:Starting with Etendo 25.1.0, Apache Commons Collections has been upgraded from 3.2.2 to 4.4. This version introduces a new package structure. Classes previously imported from
org.apache.commons.collectionsmust now be updated toorg.apache.commons.collections4. -
Migration Instructions:
Update all import statements and references to reflect the new package structure:
// Before (Apache Commons Collections 3.2.2) import org.apache.commons.collections.CollectionUtils; // After (Apache Commons Collections 4.4) import org.apache.commons.collections4.CollectionUtils;Additionally, review your code for deprecated, removed, or modified methods to ensure full compatibility with the updated library.
Info
For detailed migration guidelines, please refer to the Apache Commons Collections 4.4 documentation.
-
-
org.apache.commons:commons-lang32.6->3.17.0-
Release Notes:
-
API Changes - Migration from Apache Commons Lang
2.6to3.17Starting in Etendo 25.1.0, Apache Commons Lang has been upgraded from version 2.6 to 3.17. As part of this upgrade, the package structure has changed. Classes previously imported from
org.apache.commons.lang.*must now be updated to useorg.apache.commons.lang3.*. -
Migration Instructions
Update your import statements to reflect the new package structure:
// Before (Apache Commons Lang 2.6) import org.apache.commons.lang.StringUtils; // After (Apache Commons Lang 3.17) import org.apache.commons.lang3.StringUtils;Additionally, review your code for deprecated or modified methods and ensure compatibility with the updated library.
-
Additional Notes
The previous version of the library remains available for backward compatibility but will be removed in future releases.
Warning
We strongly recommend migrating all custom developments to Apache Commons Lang 3.17 to ensure long-term support and compatibility.
Info
For detailed migration guidelines, refer to the Apache Commons Lang 3 migration notes.
-
-
org.hibernate.common.hibernate-commons-annotations5.1.0.Final->5.1.2.Final- Release Notes:
-
org.hibernate:hibernate-core5.4.2.Final->5.6.15.Final -
net.sf.jasperreports.jasperreports-fonts6.0.0->6.17.0 -
net.sf.jasperreports.jasperreports6.0.0->6.17.0- Release Notes:
-
org.apache.poi.poi3.10.1->5.4.0-
Release Notes:
- Apache POI 5.4.0 (2025-01-08)
- Apache POI 5.3.0 (2024-07-02)
- Apache POI 5.2.5 (2023-11-25)
- Apache POI 5.2.4 (2023-09-28)
- Apache POI 5.2.3 (2023-05-22)
- Apache POI 5.2.2 (2023-01-19)
- Apache POI 5.2.1 (2022-09-09)
- Apache POI 5.2.0 (2022-01-14)
- Apache POI 5.1.0 (2021-08-07)
- Apache POI 5.0.0 (2021-02-08)
- Apache POI 4.1.2 (2019-12-16)
- Apache POI 4.1.1 (2019-07-20)
- Apache POI 4.1.0 (2019-04-22)
- Apache POI 4.0.1 (2018-11-24)
- Apache POI 4.0.0 (2018-09-07)
For older versions, you can check: - Apache POI Release Archive (source & binaries) - Full changelog overview
-
-
Apache POI 5.x Migration Guide
This guide outlines the necessary changes to migrate projects using Apache POI 3.x/4.x to version 5.x, including how to replace deprecated classes, methods, and constants removed in recent versions.
-
Replacing Deprecated Constants (
CellType)In POI 5.x, the
Cell.CELL_TYPE_*constants are replaced by theCellTypeenum.Example:
// Before cell.getCellType() == Cell.CELL_TYPE_STRING; // After cell.getCellType() == CellType.STRING;Key Mappings:
Old Constant New Constant Cell.CELL_TYPE_STRINGCellType.STRINGCell.CELL_TYPE_NUMERICCellType.NUMERICCell.CELL_TYPE_BOOLEANCellType.BOOLEANCell.CELL_TYPE_FORMULACellType.FORMULACell.CELL_TYPE_BLANKCellType.BLANKRequired Import:
-
Updating Cell Styles
Alignment
Old Constant New Constant CellStyle.ALIGN_LEFTHorizontalAlignment.LEFTCellStyle.ALIGN_CENTERHorizontalAlignment.CENTERCellStyle.ALIGN_RIGHTHorizontalAlignment.RIGHT// Before style.setAlignment(CellStyle.ALIGN_CENTER); // After style.setAlignment(HorizontalAlignment.CENTER);Fill Patterns
// Before style.setFillPattern(CellStyle.SOLID_FOREGROUND); // After style.setFillPattern(FillPatternType.SOLID_FOREGROUND);Borders
-
Fonts API Changes
The
Font.setBoldweight()method is deprecated.
Now, you should useFont.setBold(boolean).Example:
-
Formula Evaluation API Changes:
// Before switch (cellValue.getCellType()) { case Cell.CELL_TYPE_NUMERIC: } // After switch (cellValue.getCellType()) { case NUMERIC: }Evaluating formulas:
FormulaEvaluator evaluator = workbook.getCreationHelper().createFormulaEvaluator(); CellValue cellValue = evaluator.evaluate(cell);Complete Example:
-
Additional Best Practices
Avoid creating new
XSSFWorkbook()unnecessarily. Instead, reuse:Use modern Map API:
-
Full Migration Example
-
Test your migrated code carefully. Some subtle behavioral changes may exist in formula evaluation and styling.
Official Resources
-
-
commons-beanutils.commons-beanutils1.8.3->1.9.4 commons-codec.commons-codec1.1.1->1.17.1commons-digester.commons-digester1.8.1->2.1commons-fileupload.commons-fileupload1.4->1.5commons-io.commons-io2.4->2.16.1com.sun.istack.istack-commons-runtime3.0.7->4.2.0
Info
Refer to each library’s release notes for more detailed information on changes and how they might affect your system.
New
-
org.apache.commons.commons-text1.10.0 -
org.apache.commons.commons-math33.6.1 -
org.codehaus.castor.castor-core1.4.1 -
org.codehaus.castor:castor-xml1.4.1 -
com.lowagie:itext2.1.7
Removed
itext-pdfa-5.5.0.jaritextpdf-5.5.0.jarjcommon-1.0.15.jarjxl-2.6.10.jar
Database Schema Changes
The following changes are applied automatically during update.database as part of 25Q4 patch releases (March 2026). See PR #977 for full details.
Removed Tables
The following tables and all associated columns, tabs, and Application Dictionary entries have been completely removed from core. Any custom module that directly queries or references these Hibernate entities must be updated:
| Table | Hibernate Entity Class | Description |
|---|---|---|
C_ExtBP_Config |
ExternalBusinessPartnerConfig |
CRM Connector main configuration |
C_ExtBP_Config_Property |
ExternalBusinessPartnerConfigProperty |
CRM Connector property mappings |
C_ExtBP_Config_Prop_Opt |
ExternalBusinessPartnerConfigPropertyOption |
CRM Connector property accepted values |
C_ExtBP_Config_Filter |
ExternalBusinessPartnerConfigFilter |
CRM Connector filters |
C_ExtBP_Config_Filter_Opt |
ExternalBusinessPartnerConfigFilterOption |
CRM Connector filter option values |
Removed Columns
| Table | Column | Description |
|---|---|---|
AD_Org |
C_Extbp_Enabled |
Enable CRM Connector flag |
AD_Org |
C_Extbp_Config_ID |
CRM Connector Configuration reference |
AD_ClientInfo |
C_Extbp_Config_ID |
CRM Connector Configuration reference |
Removed Java Classes
The following event handler classes in the org.openbravo.event package have been deleted. Any custom module that extends, imports, or directly invokes these classes must remove those references:
ExternalBusinessPartnerConfigColspanExternalBusinessPartnerConfigFilterEventHandlerExternalBusinessPartnerConfigPropertyEventHandlerExternalBusinessPartnerConfigurationEventHandler
Action Required for Custom Modules
If your custom modules reference any of the removed tables (C_ExtBP_Config*), columns (C_Extbp_Enabled, C_Extbp_Config_ID), or Java event handler classes listed above, remove or update those references before upgrading to the release that includes this change.
This work is licensed under CC BY-SA 2.5 ES by Futit Services S.L..