Skip to content

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

Upgrade Etendo to Any Version

Platform Stack Upgrade

Java SE

  • Minimum Version Required: 17.0.14Release Notes

    Breaking Change: Java 17 is Now Mandatory

    Starting with Etendo 26.1.0, Java 17 is the only supported Java version. The -Pjava.version=11 compatibility 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 BuildValidation or ModuleScript classes, recompile them with Java 17 before upgrading. These classes run during update.database and 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.8Changelog

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.0 or higher — Release Notes
  • The -Pjava.version=11 flag 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.2 to 8.12.1.
    • Added PostgreSQL 16 platform support (PostgreSql16Platform).
    • New ExcludedConstraint system 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.

Third-Party Libraries

Updated

  • org.postgresql:postgresql 42.5.4 -> 42.7.8 — compatible upgrade. Review the changelog if you use driver-specific features.

  • org.mozilla:rhino 1.7.13 -> 1.8.0

  • org.mozilla:rhino-engine 1.7.13 -> 1.8.0Rhino Releases

    Warning

    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:antlr 2.7.7 -> org.antlr:antlr-complete 3.5.3ANTLR 3 Docs

    Warning

    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-asl 3.0.2 -> 4.0.6Woodstox Releases — major version upgrade for the XML stream processing library. Review if you use Woodstox APIs directly.

  • com.etendoerp:dbsm 1.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.


Removed

  • org.apache.commons:commons-compress 1.27.1

    Warning

    If your custom modules depend on commons-compress, add it as an explicit dependency in your module's build.gradle.

  • org.eclipse.jdt:ecj 3.23.0 (Eclipse Compiler for Java)

  • com.etendoerp:ant-nodeps 1.0.0
  • com.etendoerp:catalina-ant 1.0.0
  • org.apache.poi:ooxml-schemas 1.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:

  • ExternalBusinessPartnerConfigColspan
  • ExternalBusinessPartnerConfigFilterEventHandler
  • ExternalBusinessPartnerConfigPropertyEventHandler
  • ExternalBusinessPartnerConfigurationEventHandler

Other Changes

  • Secure Web Services Key Generation: The generate.sws.keys Ant target is now called automatically during install.source, reducing manual configuration steps for secure web services.

Etendo 25

Upgrade Etendo to Any Version

Platform Stack Upgrade

Java SE


PostgreSQL


Gradle

Warning

To update the Gradle wrapper in an existing environment , you must run:

Terminal
    ./gradlew wrapper --gradle-version 8.12.1 

For more detailed migration guidelines, refer to Upgrading Gradle Wrapper


Apache Tomcat


Etendo Gradle Plugin

  • New Version Supported: 2.0.0 or higher
  • Release Notes:

    • Etendo Gradle Plugin - Release Notes
    • New Gradle Plugin Task:

      Terminal
      ./gradlew cleanExpandCore
      
      This new task deletes directories created by the expandCore task.

    • Compatibility Flag

      Terminal
      -Pjava.version=11
      
      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.dbsm version 1.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-collections 3.2.2 -> 4.4

    • Release Notes:

    • API Changes - Migration from Apache Commons Collections 3.2.2 to 4.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.collections must now be updated to org.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-lang3 2.6 -> 3.17.0

  • org.hibernate.common.hibernate-commons-annotations 5.1.0.Final -> 5.1.2.Final

  • org.hibernate:hibernate-core 5.4.2.Final -> 5.6.15.Final

  • net.sf.jasperreports.jasperreports-fonts 6.0.0 -> 6.17.0

  • net.sf.jasperreports.jasperreports 6.0.0 -> 6.17.0

  • org.apache.poi.poi 3.10.1 -> 5.4.0

  • 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.

    1. Replacing Deprecated Constants (CellType)

      In POI 5.x, the Cell.CELL_TYPE_* constants are replaced by the CellType enum.

      Example:

      // Before
      cell.getCellType() == Cell.CELL_TYPE_STRING;
      
      // After
      cell.getCellType() == CellType.STRING;
      

      Key Mappings:

      Old Constant New Constant
      Cell.CELL_TYPE_STRING CellType.STRING
      Cell.CELL_TYPE_NUMERIC CellType.NUMERIC
      Cell.CELL_TYPE_BOOLEAN CellType.BOOLEAN
      Cell.CELL_TYPE_FORMULA CellType.FORMULA
      Cell.CELL_TYPE_BLANK CellType.BLANK

      Required Import:

      import org.apache.poi.ss.usermodel.CellType;
      
    2. Updating Cell Styles

      Alignment

      Old Constant New Constant
      CellStyle.ALIGN_LEFT HorizontalAlignment.LEFT
      CellStyle.ALIGN_CENTER HorizontalAlignment.CENTER
      CellStyle.ALIGN_RIGHT HorizontalAlignment.RIGHT
      // Before
      style.setAlignment(CellStyle.ALIGN_CENTER);
      
      // After
      style.setAlignment(HorizontalAlignment.CENTER);
      
      import org.apache.poi.ss.usermodel.HorizontalAlignment;
      

      Fill Patterns

      // Before
      style.setFillPattern(CellStyle.SOLID_FOREGROUND);
      
      // After
      style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
      
      import org.apache.poi.ss.usermodel.FillPatternType;
      

      Borders

      // Before
      setBorderBottom((short) 1);
      
      // After
      setBorderBottom(BorderStyle.THIN);
      
      import org.apache.poi.ss.usermodel.BorderStyle;
      
    3. Fonts API Changes

      The Font.setBoldweight() method is deprecated.
      Now, you should use Font.setBold(boolean).

      Example:

      // Before
      font.setBoldweight(Font.BOLDWEIGHT_BOLD);
      
      // After
      font.setBold(true);
      
      // Before
      font.setBoldweight(Font.BOLDWEIGHT_NORMAL);
      
      // After
      font.setBold(false);
      
    4. 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:

      CellValue cellValue = evaluator.evaluate(cell);
      switch (cellValue.getCellType()) {
          case STRING:
              return cellValue.getStringValue();
          // other cases...
      }
      
    5. Additional Best Practices

      Avoid creating new XSSFWorkbook() unnecessarily. Instead, reuse:

      Workbook workbook = cell.getSheet().getWorkbook();
      

      Use modern Map API:

      // Instead of containsKey + put
      map.computeIfAbsent(key, k -> new ArrayList<>());
      
    6. Full Migration Example

      // Before
      cellFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
      style.setAlignment(CellStyle.ALIGN_RIGHT);
      style.setFillPattern(CellStyle.SOLID_FOREGROUND);
      
      // After
      cellFont.setBold(true);
      style.setAlignment(HorizontalAlignment.RIGHT);
      style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
      
    7. Test your migrated code carefully. Some subtle behavioral changes may exist in formula evaluation and styling.

  • commons-beanutils.commons-beanutils 1.8.3 -> 1.9.4

  • commons-codec.commons-codec 1.1.1 -> 1.17.1
  • commons-digester.commons-digester 1.8.1 -> 2.1
  • commons-fileupload.commons-fileupload 1.4 -> 1.5
  • commons-io.commons-io 2.4 -> 2.16.1
  • com.sun.istack.istack-commons-runtime 3.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


Removed

  • itext-pdfa-5.5.0.jar
  • itextpdf-5.5.0.jar
  • jcommon-1.0.15.jar
  • jxl-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:

  • ExternalBusinessPartnerConfigColspan
  • ExternalBusinessPartnerConfigFilterEventHandler
  • ExternalBusinessPartnerConfigPropertyEventHandler
  • ExternalBusinessPartnerConfigurationEventHandler

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..