Docs
  • Solver
  • Models
    • Field Service Routing
    • Employee Shift Scheduling
    • Pick-up and Delivery Routing
    • Task Scheduling
  • Platform
Start Free Trial
  • Timefold Solver SNAPSHOT
  • Upgrading
  • Upgrading
  • Upgrade from OptaPlanner
  • Edit this Page

Timefold Solver SNAPSHOT

  • Getting started
    • Overview
    • Build as a service
    • Embed as a library
      • Hello World guide
      • Quarkus guide
      • Spring Boot guide
  • Build with Timefold
    • Domain modeling
      • Guide
      • Building blocks
      • Common patterns
    • Constraints and score
      • Overview
      • Score calculation
      • Understanding the score
      • Load balancing and fairness
      • Performance tips and tricks
    • Running the Solver
      • Overview
      • As a service
        • REST API
        • Model configuration overrides
        • Model enrichment
        • Demo data
        • Exposing metrics
        • Service consumer guide
      • As a library
        • Configuring Timefold Solver
        • Constraint weights
        • Quarkus integration
        • Spring Boot integration
        • JPA/JAXB/JSON integration
    • Responding to change
      • Continuous planning
      • Real-time planning
      • Non-disruptive replanning
      • Assignment Recommendation API
    • Diagnosing the Solver
      • Benchmarking
      • Solver diagnostics
    • Use cases
      • Vehicle routing (guide)
      • More examples on GitHub
    • Optimization algorithms
      • Overview
      • Construction heuristics
      • Local search
      • Exhaustive search
    • Moves
      • Move Selector reference
      • Custom Moves
        • Move definition
        • Neighborhoods API
  • Deploy to Timefold Platform
    • Overview
    • Guide
    • Platform model metadata
    • Using metrics
  • Upgrading
    • New and noteworthy
    • Upgrading
      • Upgrading Timefold Solver: Overview
      • Upgrade from Timefold Solver 1.x to 2.x
      • Upgrade from OptaPlanner
    • Migration guides
      • Variable Listeners to Custom Shadow Variables
      • Chained planning variable to planning list variable
  • Commercial editions
    • Overview
    • Installation
    • Performance improvements
    • Score analysis
    • Recommendation API
    • Nearby selection
    • Multithreaded solving
    • Partitioned search
    • Constraint profiling
    • Multistage moves
    • Throttling best solution events
    • License management
  • Additional resources
    • FAQ
    • GitHub

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.

The script below upgrades your OptaPlanner project to the latest Timefold Solver version, which is SNAPSHOT. This is a significant jump and might require additional migrations. Check out our other guide for more details on how to upgrade to the 2.x range.
  • Maven

  • Gradle

mvn org.openrewrite.maven:rewrite-maven-plugin:6.28.1:run -Drewrite.recipeArtifactCoordinates=ai.timefold.solver:timefold-solver-migration:SNAPSHOT -Drewrite.activeRecipes=ai.timefold.solver.migration.ToLatest
curl https://raw.githubusercontent.com/TimefoldAI/timefold-solver/refs/tags/vSNAPSHOT/tools/migration/upgrade-timefold.gradle > upgrade-timefold.gradle ; gradle -Dorg.gradle.jvmargs=-Xmx2G --init-script upgrade-timefold.gradle rewriteRun -DtimefoldSolverVersion=SNAPSHOT ; 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:

  • Java 17 is the minimum, and Java 21 and 25 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 persistence- 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.

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