Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
  • Platform
Try models
  • Timefold Solver 1.22.1
  • Upgrading Timefold Solver
  • Upgrade from OptaPlanner
  • Edit this Page
  • latest
    • latest
    • 0.8.x

Timefold Solver 1.22.1

    • Introduction
    • PlanningAI Concepts
    • Getting Started
      • Overview
      • Hello World Quick Start Guide
      • Quarkus Quick Start Guide
      • Spring Boot Quick Start Guide
      • Vehicle Routing Quick Start Guide
    • Using Timefold Solver
      • Using Timefold Solver: Overview
      • Configuring Timefold Solver
      • Modeling planning problems
      • Running Timefold Solver
      • Benchmarking and tweaking
    • Constraints and Score
      • Constraints and Score: Overview
      • Score calculation
      • Understanding the score
      • Adjusting constraints at runtime
      • Load balancing and fairness
      • Performance tips and tricks
    • Optimization algorithms
      • Optimization Algorithms: Overview
      • Construction heuristics
      • Local search
      • Exhaustive search
      • Move Selector reference
    • Responding to change
    • Integration
    • Design patterns
    • FAQ
    • New and noteworthy
    • Upgrading Timefold Solver
      • Upgrading Timefold Solver: Overview
      • Upgrade to the latest version
      • Upgrade from OptaPlanner
      • Backwards compatibility
    • Enterprise Edition

Upgrade from OptaPlanner

In spring of 2024, Red Hat announced end of life for OptaPlanner. Timefold Solver is a faster, feature-rich, and actively developed fork of OptaPlanner by the same team.

1. Automatic upgrade

Upgrading from OptaPlanner to Timefold Solver only takes two minutes. Run the command below to upgrade your java, build and other code automatically.

  • Maven

  • Gradle

mvn org.openrewrite.maven:rewrite-maven-plugin:6.7.0:run -Drewrite.recipeArtifactCoordinates=ai.timefold.solver:timefold-solver-migration:1.22.1 -Drewrite.activeRecipes=ai.timefold.solver.migration.ToLatest
curl https://raw.githubusercontent.com/TimefoldAI/timefold-solver/refs/tags/v1.22.1/migration/upgrade-timefold.gradle > upgrade-timefold.gradle ; gradle -Dorg.gradle.jvmargs=-Xmx2G --init-script upgrade-timefold.gradle rewriteRun -DtimefoldSolverVersion=1.22.1 ; rm upgrade-timefold.gradle

Our automatic migrations will not change the version of your frameworks. If you run into compatibility issues, please consult the integration guides for Spring or Quarkus.

Having done that, do a test run of the solver and commit the changes. If it doesn’t work, just revert it instead and submit an issue. We’ll fix it with the highest priority.

Timefold Solver 1.x does not support scoreDRL, nor is it upgraded automatically. If you’re still using scoreDRL from OptaPlanner 7.x, please upgrade to Constraint Streams first.

2. Manual upgrade

Timefold Solver 1.x is backward compatible with OptaPlanner 8.x, except for the following changes:

  • Minimum Java 17 (LTS). Java 21 (LTS) and the latest Java version are also supported.

  • The Maven/Gradle GAVs changed:

    • The groupId changed from org.optaplanner to ai.timefold.solver.

    • The artifactIds changed from optaplanner-* to timefold-solver-*.

    • ArtifactIds containing peristence- changed from optaplanner-persistence-* to timefold-solver-*.

      • For example, optaplanner-persistence-jackson changed to timefold-solver-jackson.

  • The import statements changed accordingly:

    • import org.optaplanner…​; changed to import ai.timefold.solver…​;.

    • import org.optaplanner.persistence…​; changed to import ai.timefold.solver…​; too.

  • The JEE dependencies changed from javax to jakarta to accommodate Spring 3 and Quarkus 3.

    • This is the same difference as between OptaPlanner 8.x and OptaPlanner 9.x.

  • The OptaPlannerJacksonModule class is now called TimefoldJacksonModule.

  • The deprecated scoreDRL support is removed, because Drools with its transitive dependencies have been removed entirely.

  • The unsecure module persistence-xstream is removed, because of old, unresolved CVEs in XStream.

  • The deprecated, undocumented ScoreHibernateType has been removed because of Jakarta. Use JPA’s ScoreConverter instead.

  • © 2025 Timefold BV
  • Timefold.ai
  • Documentation
  • Changelog
  • Send feedback
  • Privacy
  • Legal
    • Light mode
    • Dark mode
    • System default