OrqueIO 2.x Spring Boot 4 migration guide

When Spring Boot 4.0.0 dropped, we had a choice: wait for the dust to settle or dive in headfirst. We chose the latter.

OrqueIO is a workflow automation platform forked from Camunda 7, optimized for modern cloud-native deployments. Our users depend on us for production-critical business processes. So when we decided to adopt Spring Boot 4, we knew we were signing up for a significant undertaking.

The result? OrqueIO 2.0.0 , our first release built on Spring Boot 4. We’re now maintaining two parallel version lines:

  • 2.x for Spring Boot 4
  • 1.x for Spring Boot 3.x (because we don’t abandon our users 🙂)

Here’s what the migration actually looked like.

Why Upgrade to OrqueIO 2.0.0?

Spring Boot 4 represents the most significant architectural change to the framework in years. The modularization effort makes the framework more maintainable, reduces startup time, and improves native compilation support with GraalVM.

For OrqueIO, staying current with Spring Boot ensures compatibility with the broader ecosystem and allows us to leverage these improvements directly. Users benefit from smaller deployment artifacts, better performance, and alignment with Jakarta EE 11.

There’s also a practical consideration: Spring Boot 3.x is entering maintenance mode. New features, optimizations, and community focus will center on the 4.x line. Organizations planning long-term projects should factor this into their technology decisions.

Core Requirements & Platform Updates

  • Java Baseline: A minimum of Java 17 is required, with Java 21/25 recommended for optimal performance and access to the latest features like Virtual Threads.
  • Spring Framework 7: Spring Boot 4 is built on top of Spring Framework 7, aligning the entire ecosystem with modern standards.
  • Jakarta EE 11: The framework moves to a Jakarta EE 11 baseline, requiring a Servlet 6.1 compatible server and Jakarta Persistence API 3.2.0 baseline. Support for Undertow has been dropped as it is not yet compatible.

The big picture: what Changed in OrqueIO 2.0.0

1. Modularization Impact

Spring Boot 4 restructured the framework into dedicated modules. For OrqueIO, this affected several integration points:

  • Health indicators for the process engine and job executor
  • OAuth2 security configuration
  • JPA/Hibernate auto-configuration
  • Test infrastructure

Each of these areas required updates to align with the new module structure. The changes are internal to OrqueIO — users interact with the same APIs as before.

2.Package Relocations

Spring Boot 4 reorganized its package structure:

text
org.springframework.boot.autoconfigure.* 
    → org.springframework.boot.<module>.autoconfigure.*
org.springframework.boot.actuate.health.* 
    → org.springframework.boot.health.contributor.*
org.springframework.boot.test.* 
    → org.springframework.boot.<module>.test.*

OrqueIO 2.0.0 has been updated to use the new packages throughout. Applications using OrqueIO’s public APIs are unaffected by these internal changes.

Upgrading OrqueIO from 1.x to 2.0.0

1. Dependency Update

Update your OrqueIO version in pom.xml:

xml
<dependency>
    <groupId>io.orqueio.bpm.springboot</groupId>
    <artifactId>orqueio-bpm-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

2. Property Migration

Spring Boot 4 renames or removes some configuration properties. To identify affected properties in your application, add the properties migrator temporarily:

xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-properties-migrator</artifactId>
    <scope>runtime</scope>
</dependency>

This module analyzes your configuration at startup, prints diagnostics for deprecated properties, and temporarily migrates them at runtime. Review the output, update your configuration accordingly, then remove this dependency.

Also, make sure to check the spring boot 4 migration guide on the project wiki that provides detailed upgrade instructions. And the release notes for the list of “new and noteworthy” features.

3. Staying on OrqueIO 1.x

If you’re not ready to upgrade, OrqueIO 1.x continues to receive development and maintenance updates and remains fully supported on the latest Spring Boot 3.5.x version. You can upgrade to 2.x when your timeline allows.

How We Upgraded OrqueIO to spring boot 4:

This section documents the internal changes we made to OrqueIO’s codebase. These modifications are already included in OrqueIO 2.0.0 .

Join The Writer's Circle event

For developers maintaining similar Spring Boot integrations or those curious about the technical details, here’s what we encountered.

1. The Health Indicators:

Health indicator packages moved to a dedicated module.

The Error:

text
package org.springframework.boot.actuate.health does not exist

OrqueIO includes custom health indicators for the process engine and job executor. They all broke simultaneously.

The Fix:

java
// Before (Spring Boot 3.x)
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
import org.springframework.boot.actuate.health.Health;
import org.springframework.boot.actuate.health.HealthIndicator;
import org.springframework.boot.actuate.health.Status;
// After (Spring Boot 4.x)
import org.springframework.boot.health.contributor.AbstractHealthIndicator;
import org.springframework.boot.health.contributor.Health;
import org.springframework.boot.health.contributor.HealthIndicator;
import org.springframework.boot.health.contributor.Status;

And we added the new dependency:

xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-health</artifactId>
</dependency>

2. Removed Constants

Some constants were removed without direct replacements.

The Error:

text
package org.springframework.boot.autoconfigure.security;

cannot find symbol: variable DEFAULT_FILTER_ORDER

Solution:

java
// Spring Boot 3.x
filterRegistration.setOrder(SecurityProperties.DEFAULT_FILTER_ORDER + 1);

// Spring Boot 4.x
private static final int SECURITY_FILTER_ORDER = -100;
filterRegistration.setOrder(SECURITY_FILTER_ORDER + 1);

3. Test Infrastructure Changes

Spring Boot 4 relocates several test-related classes and changes some behaviors.

Import Changes:

Spring Boot 3.5 vs 4 comparison
Spring Boot 3.5 vs 4

TestRestTemplate Configuration:

TestRestTemplate is no longer auto-configured. Add the annotation explicitly:

java
@SpringBootTest
@AutoConfigureTestRestTemplate
public class MyIntegrationTest {
    
    @Autowired
    private TestRestTemplate restTemplate;
}

Required Dependencies:

xml
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-webmvc-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-resttestclient</artifactId>
    <scope>test</scope>
</dependency>

Conclusion

Spring Boot 4 represents a maturation of the framework. The modular architecture may require upfront migration effort, but it results in a cleaner dependency graph and better alignment with modern deployment practices.

For teams evaluating the upgrade, the key question isn’t whether to migrate, but when. Spring Boot 3.x will enter maintenance mode, and the ecosystem , libraries, tools, and community knowledge , will increasingly center on version 4.x.

OrqueIO 2.0.0 is available now for teams ready to adopt Spring Boot 4. For those who need more time, our 1.x line continues to receive updates. Either way, we hope this guide helps you plan your path forward.

Recommendations

  • Read the migration guide first — The Spring Boot 4.0 Migration Guide covers most changes.
  • Track package relocations — Maintain a reference document of old-to-new import mappings.
  • Address test changes early — Test infrastructure has the most numerous changes.
Read on Medium