conductor-oss / conductor-oss/conductor

Spring Boot 4 compatibility: server artifacts hard-reference Boot-3-only FQCNs (Jackson2ObjectMapperBuilderCustomizer, DataSourceAutoConfiguration)

Open
#1,280 9 comments 3 reactions 2 assignees View on GitHub

@bradyyie is already working on this.

Since Aug 15, 2026.

bug dependencies
Dominant language
Java
Stars
32.2k
Forks
1k
Avg merge
2d 5h
Merged PRs (30d)
41

Description

The feature, motivation and pitch

Describe the problem

We embed the Conductor server modules (conductor-core, conductor-rest, conductor-postgres-persistence, conductor-scheduler-*) inside our own Spring Boot application. After upgrading the host application to Spring Boot 4.1 (Spring Framework 7 / Jackson 3), the application fails at startup, because the published Conductor artifacts were compiled against Spring Boot 3-only class locations that no longer exist in Boot 4.x:

  1. conductor-commoncom.netflix.conductor.common.config.ObjectMapperBuilderConfiguration:
// common/src/main/java/com/netflix/conductor/common/config/ObjectMapperBuilderConfiguration.java
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; // L15

@Bean
public Jackson2ObjectMapperBuilderCustomizer conductorJackson2ObjectMapperBuilderCustomizer() { ... } // L28

In Boot 4.x this SPI was moved out of spring-boot-autoconfigure into the optional spring-boot-jackson2 compatibility module under a new package (org.springframework.boot.jackson2.autoconfigure.Jackson2ObjectMapperBuilderCustomizer). Adding spring-boot-jackson2 therefore does not satisfy the already-compiled reference — the old FQCN no longer exists on any classpath → NoClassDefFoundError at context startup. On top of that, spring-boot-jackson2 is deprecated since Boot 4.0 as an explicit stop-gap, with removal expected around the Spring Framework 7.1 timeline — so there is no long-term path on the consumer side.

  1. conductor-postgres-persistence and conductor-sqlite-persistence:
// postgres-persistence/.../config/PostgresConfiguration.java (L29, L47)
// sqlite-persistence/.../config/SqliteConfiguration.java (L29, L55)
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@Import(DataSourceAutoConfiguration.class)

In Boot 4.x, DataSourceAutoConfiguration moved to org.springframework.boot.jdbc.autoconfigure.DataSourceAutoConfiguration (auto-configurations were split into per-technology modules), so the class-literal @Import fails at startup (TypeNotPresentException).

All of the above references are still present on current main (checked July 2026).

Impact

The Conductor server modules cannot be embedded in any Spring Boot 4.x / Spring Framework 7 / Jackson 3 application. Consumers embedding the server are effectively pinned to Spring Boot 3.x — a line that is now entirely out of OSS support (3.5, the last 3.x minor, reached OSS end-of-life on June 30, 2026; only 4.0 and 4.1 currently receive open-source patches).

Question / request

Are there any plans for Spring Boot 4 compatibility on the server side? Even without migrating the server itself off its current Boot 3.x baseline, making the published artifacts consumable from Boot 4.x host applications (i.e. avoiding hard references to Boot-version-specific FQCNs) would unblock embedding scenarios.

For context: the client side is already covered — conductor-oss/java-sdk#115 added the dedicated conductor-client-spring-boot4 module. This issue concerns only the server/common artifacts.

Environment

  • Conductor: 3.30.x
  • Host application: Spring Boot 4.1.x, Java 25
  • Embedded modules: conductor-core, conductor-rest, conductor-postgres-persistence, conductor-scheduler-core, conductor-scheduler-postgres-persistence

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.