Flowable 7 to 8 upgrade

Flowable 8.0 moves the engines onto Spring Framework 7, Spring Boot 4 and Jackson 3, and drops JUnit 3 and 4 support. This page explains what changes, what to test and how to sequence the upgrade safely.

On this page

Why a Flowable 7 to 8 upgrade is a platform-wide change

Flowable 8.0 requires Spring Framework 7 and Spring Boot 4, and the release notes state there is no backward compatibility for Spring Boot 3. A Java team running Flowable 7.x therefore cannot upgrade the engine alone: the application stack moves with it. Treat the engine upgrade as a change to the whole application platform, not as a library bump. Flowable 8.0.0 was released on February 27, 2026, after 7.2.0 on August 21, 2025 and 7.1.0 on October 7, 2024, so teams on the 7.x line have had a series of minor releases to plan around before this one.

The supported path is described in the Flowable 8.0.0 release notes, which list the Spring and Boot upgrade, the move to Jackson 3 with a Jackson 2 compatibility layer, and the removal of JUnit 3 and 4 support. Read the Flowable 8.0.0 release notes before estimating work, and confirm which 7.x release your application is currently on, since the upgrade sequence starts from there. Your first decision is whether your current Spring Boot 3 application can reach Spring Boot 4 in a single step, or whether it needs an intermediate stage on Flowable 7.x while the rest of the application catches up.

What changes in Flowable 8.0 and what each change requires

This table lists the four changes in the Flowable 8.0.0 release notes and the Java 17 and Jakarta baseline inherited from version 7. Read each row as a question for your own build: which framework versions, JSON libraries and test runners does your application depend on today, and which of them must move before or with the engine.

ChangeImpact on a Flowable 7 applicationAction to confirm in your build
Spring Framework 7 and Spring Boot 4Flowable 8.0.0 drops Spring Boot 3 compatibility, so the application's Spring Boot parent and starters must move to a 4.x line with the engine.Confirm the Spring Boot version your build inherits, every Spring starter it pulls in, and any Spring Boot 3 only library that cannot run on Spring Framework 7.
Jackson 3 as the default JSON libraryJackson 3 becomes the default, with a Jackson 2 compatibility layer. Scripts, expressions and JSON variables that call Jackson 2 APIs may fail or behave differently.List every custom delegate, script and expression that touches JSON, and confirm whether the team will use the Jackson 2 compatibility mode first or move to Jackson 3 directly.
Removal of JUnit 3 and 4 supportFlowable 8.0.0 no longer runs process test suites written against JUnit 3 or 4, so existing tests fail to execute after the upgrade.Count the test classes still using JUnit 3 or 4 annotations and runners, and confirm the JUnit 5 approach the team will adopt before the engine upgrade.
Java 17 and Jakarta EE baseline from version 7Version 7.0.0 moved to Java 17, Spring Boot 3 and Jakarta EE. Version 8 builds on that baseline, so an application still on Java 8 or javax packages has not reached the 8.0 starting point.Confirm the JDK your runtime images and CI agents use, and confirm the application has already completed the javax to Jakarta namespace change from version 6.

Which parts of the stack move together

Flowable 8.0.0 moves the platform to Spring Framework 7 and Spring Boot 4, and the release notes state there is no backward compatibility for Spring Boot 3. That means the Flowable starters, your Spring Boot parent version and any Spring-managed beans or configuration classes must move in the same change set. A team that keeps Spring Boot 3 while bumping the Flowable artifacts will not get a clean start, and a team that upgrades Spring Boot first will hit Flowable 7 starters that do not match it. The Flowable Spring Boot docs list support for Spring Boot 4.x starters for the engines and the REST application, so confirm the exact starter coordinates for your chosen modules.

  • Parent and starter versions: Change the Spring Boot parent, the Flowable BOM or starter versions and the Spring Framework version together in one build change.
  • Configuration classes: Review any custom @Configuration classes that override engine beans, especially identity service or delegate registration.
  • Actuator endpoint: After the upgrade, confirm that the /actuator/flowable endpoint that monitors running processes is exposed and that your management settings still allow it.
  • Embedded and REST deployments: Servlet container and REST application hosts follow the same Spring baseline, so check them in the same window.
  • Java and Jakarta baseline: Check that your runtime and Jakarta dependencies match what the new Spring line requires before the first test run.

Confirm the supported Spring Boot and Java versions against the Flowable 8.0.0 release notes before you fix the target baseline.",

How to prepare before touching the engine version

Most Flowable 7 to 8 upgrade delays come from work done before the version number changes. The five items below give your team a fixed inventory and a tested recovery path, so the engine and application changes can be sequenced with known risk rather than discovered during the upgrade.

Inventory JSON-touching models

List every BPMN, CMMN and DMN model, delegate, script task and expression that reads or writes JSON variables. Flowable 8 uses Jackson 3 as the default JSON library and keeps a Jackson 2 compatibility layer, so each item needs an owner and a decision: migrate now, or run under the compatibility mode first. Record the package imports used in custom Java code, since those are the lines that break at compile time.

Inventory JUnit 3 and 4 suites

Count every process test class that extends JUnit 3 test cases or uses JUnit 4 runners and rules. Flowable 8 removes support for both, so these suites will not run after the engine change. Mark which tests exercise deployments with @Deployment resources and which depend on engine rules, so the team can plan the move to JUnit 5 and keep a green baseline on Flowable 7 before the switch.

Back up and rehearse restore

Take a full backup of the Flowable database, including running process instances, history and the job tables, and restore it into a separate environment. Time the restore and confirm that the engine starts against the restored data on the current version. A backup that has never been restored is an assumption, and the restore rehearsal is the only evidence that recovery works before the schema changes.

Match the test environment database

Build the test environment on the same database product and version family as production, chosen from the types the configuration docs list: H2, MySQL, Oracle, PostgreSQL, DB2 or Microsoft SQL Server. Behavior differs by database, so an H2 test run does not prove a production upgrade. Confirm the MySQL version as well, because versions below 5.6.4 lack millisecond precision, which affects timer and history comparisons.

Confirm identity service overrides

Find every custom identity service, such as a subclass of IdmIdentityServiceImpl or an implementation of the IdmIdentityService interface, and any LDAP integration built from the reference implementation. Check each one against the Spring Framework 7 and Spring Boot 4 baseline, since bean wiring and dependency changes can break an override silently. Document which override controls user and group lookup so that the post-upgrade test plan covers it directly.

Sequence the application and engine upgrades

The sequence moves the tests and the application baseline first, so each later change is checked against a known-good state, and leaves the Flowable 8.0.0 engine swap until the application can prove its behavior on 7.x.

  1. Freeze the current baseline and capture evidence

    Before changing code, the team records the running Flowable version, Spring Boot version, Java version, database type and schema version, and exports a representative set of deployed process, CMMN and DMN definitions. The owner of the application signs off a list of critical flows and the expected outcomes for each. Done means the baseline is stored in version control and a full database backup has been taken and restore-tested, so that the rollback point at this step is a verified backup and the unchanged application build.

  2. Migrate the test suite to JUnit 5

    Flowable 8.0.0 removes support for JUnit 3 and 4, so the process tests must run on JUnit 5 before the engine moves. The team converts test classes to the Flowable test support on JUnit 5, keeps @Deployment resources unchanged, and runs the suite on the current Flowable 7.x build until every test passes with the same results as before. Done means the full suite is green on 7.x. Rollback point: the pre-migration commit, since the test changes do not alter production code.

  3. Move the application to the Spring Boot 4 baseline on 7.x

    The team upgrades Spring Framework and Spring Boot in the application while still on the Flowable 7.x engine, where the team can verify each change. Flowable 8.0.0 has no backward compatibility for Spring Boot 3, so this step must complete before the engine change. Developers resolve compile errors, starter and property renames, and actuator changes, then run the full test suite and start the application in a staging environment. Done means the application starts, the suite passes and the staging smoke tests match the baseline. Rollback point: the pre-step branch and its build artifact, which still run on Spring Boot 3.

  4. Handle the Jackson 3 change with the compatibility layer

    Flowable 8 uses Jackson 3 as its default JSON library and provides a Jackson 2 compatibility layer. The team first enables the compatibility layer so that existing scripts, expressions, JSON variables and REST payloads keep working, then runs the tests that touch JSON. Migrating code to Jackson 3 packages is a separate, later change tracked in its own plan. Done means JSON-dependent process tests and REST contract tests pass with the compatibility layer enabled. Rollback point: the step's commit, which can be reverted without touching the database.

  5. Upgrade the Flowable 8.0.0 engine dependency

    With the application on the Spring Boot 4 baseline and the test suite passing, the team changes the Flowable dependency and starter versions to 8.0.0 in a feature branch and builds the application. Engine configuration properties and any custom identity service, delegate or listener code are checked against the 8.0.0 release notes. The database schema upgrade is run only as the approach agreed in the schema plan, whether automatic at startup or by a DBA script. Done means the build succeeds, the suite passes against 8.0.0 and the staging application starts cleanly. Rollback point: the 7.x application artifact plus the pre-upgrade database backup, because the schema change may not be reversible by redeploying the old build alone.

  6. Run database and process-instance checks

    In a staging copy of production data, the team confirms that the schema version matches the engine, that the async executor acquires and releases locks as expected across nodes, and that a sample of running process, case and decision instances can continue, complete or be queried. Failed jobs and history rows are counted before and after. Done means the counts reconcile with the baseline from the first step and every critical flow from the sign-off list completes in staging. Rollback point: the staging restore from the step one backup, which lets the team rerun the checks.

  7. Deploy in a controlled production window

    The team deploys the verified build to production with the database backup taken immediately before the change, a monitored start of each node, and a documented decision owner who can stop the rollout. After deployment, operators confirm node health, the monitoring endpoint reports running instances, timers fire, and the critical flows complete with the same outcomes as the baseline. Done means the sign-off list is checked in production and the owner accepts the result in writing. Rollback point: the 7.x artifact and the backup taken before the change, with the rollback decision defined in advance.

Testing and rollback for a stateful engine

Rolling back a Flowable 8 upgrade is harder than rolling back a stateless application, because the engine's state lives in the database rather than in the deployed artifact. Running process instances, pending timers, async jobs and the history tables all persist across a redeploy. If the new engine has already written to the schema, restoring the previous WAR or container image does not return the data to the state the old engine expects. Your rollback plan therefore has to be written around the database first and the application second.

The plan must state, for each environment, whether the schema change is applied automatically when the engine starts or by a DBA running scripts, and who owns each step. It should name the backup or snapshot taken immediately before the upgrade, the point at which that backup stops being a valid restore target, and whether the previous engine version can read rows the new version has written. Confirm the schema upgrade behavior, and any version mismatch errors, against the Flowable configuration docs rather than assuming it from the release notes. Test the rollback itself on a copy of production data, not only the forward upgrade.

Test suites should cover more than the happy path. Run deployments of every process, case and decision definition that is in use, and confirm that running instances continue after the engine restarts. Exercise timers and async jobs across at least two nodes so lock expiry and job pickup behave as they did before. Call the REST API from every client you operate, comparing response shapes and date handling. Finally, run each model that touches JSON variables or scripts, since those are where the Jackson 3 changes are most likely to surface. Record the results so you can judge a failed run against a known baseline.

What makes a Flowable 8 upgrade take longer

The table lists the factors that most often stretch a Flowable 7 to 8 upgrade and the direction each one pushes the effort. Use it to size your own estimate by counting each item in your estate before asking a partner or your team for a quote.

Effort driverWhy it changes the workDirection and how to keep it down
Number of process and CMMN modelsEach deployed BPMN or CMMN model must load and run on the new engine, and models using changed expressions or features need review.Rises with model count. Group models by domain so test runs can cover each group in turn.
Custom delegates and scripts using JSONDelegates, listeners and expressions that read or write JSON move to Jackson 3, so every JSON touchpoint needs a check.Rises with JSON-heavy code. Start with the jackson2 compatibility mode and inventory all JSON access first.
JUnit 3 and 4 test volumeFlowable 8 removes JUnit 3 and 4 support, so every process test must be rewritten before the suite can run.Rises with the number of legacy tests. Convert tests to JUnit 5 in the 7.x line while the old suite still passes.
Custom identity servicesImplementations of IdmIdentityService or overrides of IdmIdentityServiceImpl must be re-checked against the engine and Spring changes.Rises with custom code depth. Confirm the interface behavior in the 8.0.0 release notes and retest group and user lookups.
REST API clientsConsumers of the REST API depend on request shapes, response formats and JSON handling, so each client needs regression checks.Rises with the number of external callers. Keep a contract test suite that every client team runs before cutover.
Database types and environmentsEach supported database type and each environment (development, test, staging, production) needs its own schema check and upgrade run.Rises with every extra database and environment. Confirm your database type against the configuration docs and standardize environments where possible.
Running instances that must survive the changeActive process and case instances carry state and variables that must still work after the engine and Spring baseline change.Rises with the volume of in-flight work. Plan a drain window or test migration of live instances against a production copy.
Application stack beyond FlowableSpring Boot 4, Spring Framework 7 and Jakarta baseline changes can reach other libraries in the same application.Rises with the number of shared dependencies. Map the full dependency tree before setting the upgrade order.

Questions teams ask before upgrading to Flowable 8

How much does a Flowable 7 to 8 upgrade cost?

No fixed price applies, because the quote follows from the written scope. The main cost drivers are the number of Flowable applications, how many use BPMN, CMMN and DMN engines, how much custom code touches the engine (delegates, listeners, scripts and expressions), how many test suites must move off JUnit 3 or 4, and how many environments need upgrading. The work is mostly one-time, but ongoing support or upgrades after the move can be contracted as a retainer. Ask for a quote that lists each application, each upgrade step, the test work, environment changes, and what the client team will do itself so you can compare options like for like.

How long does the upgrade take?

Duration depends on scope more than on the version number. The Flowable 8.0.0 release was published on February 27, 2026, but your timeline depends on how many applications share the engine, how much code depends on the Spring Boot 4 and Jackson 3 changes, how large the test estate is, and how often your release train allows production changes. Plan the work in phases and ask any partner to show the phases, dependencies and the points where your own team must approve or test before the work can continue.

What must our team provide before the upgrade starts?

Expect to provide four things: read access to the repositories that hold process, case and decision models plus application code, non-production environments that match production closely enough to run the engines, representative test data that covers the process paths you rely on, and named owners who can make decisions on behavior changes. Also confirm who holds database access for schema changes and who signs off production releases. Missing owners are one of the most common causes of delay, so agree these roles in the written scope.

Can our internal team do the Flowable 8 upgrade alone?

Yes, if your team has Java and Spring experience, can work with the Flowable engine APIs, and can run the tests that prove behavior is unchanged. The upgrade requires Spring Framework 7 and Spring Boot 4, a Jackson 3 move with a Jackson 2 compatibility layer, and removal of JUnit 3 and 4 support, so the team needs to be comfortable with those changes. Many teams keep ownership internally and bring in an outside partner for specific gaps, such as test migration or database work. Compare the effort of your own team against the written scope before deciding.

Can we keep Spring Boot 3 and only upgrade Flowable?

No. The Flowable 8.0.0 release notes state that the upgrade moves to Spring Framework 7 and Spring Boot 4, with no backward compatibility for Spring Boot 3. Applications on Spring Boot 3 must move their Spring Boot baseline along with the engine. Plan this as one change set, and check every other library on your classpath that depends on the Spring version, because those dependencies can block the move even when Flowable itself is ready.

How does the JUnit move affect our timing?

Flowable 8 removes support for JUnit 3 and 4, so any process test suite still on those versions must be rewritten before or alongside the engine upgrade. The effort depends on how many test classes use the old runner, how many use Flowable test support, and how many rely on deployment resources. Because tests are the evidence that process behavior is unchanged, plan the test move early, keep the suite green on the current version first, and treat the test rewrite as a prerequisite rather than a final step.

What does the Camunda or Activiti migration have to do with this upgrade?

They are separate projects, but they can overlap. Flowable's engineering blog states that Camunda 7 and Activiti data can be migrated to Flowable in place, including active process instances and history, and offers the free Flowable LEAP tool to report ahead of time what a migration involves. If you are moving from Camunda 7 or Activiti, decide the target version first, because the Flowable 8 baseline changes the Spring and test stack that the migrated application will run on. Run the LEAP report early so the migration scope is visible before sequencing the two efforts.

When staying on Flowable 7.x for a while makes sense

Staying on Flowable 7.x is a reasonable decision for a team that cannot yet move its Spring Boot 3 application to a Spring Boot 4 and Jackson 3 baseline, provided the team treats that choice as a dated decision with an owner rather than a default. Flowable 8.0.0 has no backward compatibility for Spring Boot 3, so a 7.x application stays on Spring Boot 3, Spring Framework 6 and its current Jackson 2 usage until the application itself moves. In practice this means the team keeps its own dependency patching, base image and JDK updates on the 7.x line, and it does not pick up any change that depends on the Spring Boot 4 stack.

Before deciding, confirm the project's maintenance status for the 7.x line directly against the Flowable release notes and the flowable/flowable-engine repository, including whether security fixes are still published for 7.x and for how long. Record the answer, the date you checked it, and who checked it. Also confirm which 7.x patch release your application should be on, since a team that stays on 7.x often lags several minor releases. The sibling Flowable 7.1 to 7.2 upgrade is only a related step on the 7.x line and does not remove the need for the 8.0 decision, so keep it separate in your plan.

Write the decision down as a short record with four parts: the reason the application cannot move now, the 7.x version it is pinned to, the security and maintenance check you accepted, and a revisit trigger. Useful triggers include the end of support for 7.x, a required library or platform update that drops Spring Boot 3, a planned Jackson 3 migration for scripts and expressions, or a rewrite of the process test suite. Assign an owner and a review date, and make sure the test suite plan for the eventual JUnit 5 move is already scheduled so the staying period does not become indefinite.

How DeployOpen delivers the Flowable upgrade

The sequence below takes a Flowable 7.x estate to 8.0 in a controlled order, so that test coverage, Spring and Jackson changes, and engine upgrades each reach a verified state before the next one starts. Every step closes with a written output the client can check.

  1. Inventory the application and its Flowable footprint

    DeployOpen reviews the Spring Boot, Java and Flowable versions in use, the engine modules and starters, the REST clients, custom delegates and listeners, scripts and expressions, JSON variables, and the test suites. We also record which databases and identity services the engines use. The output is a written inventory with each item tagged by the upgrade change it touches, such as Spring Framework 7, Spring Boot 4, Jackson 3 or the JUnit 3 and 4 removal. The client confirms the inventory matches production before work continues.

  2. Confirm the target baseline with the release notes

    DeployOpen checks the Flowable 8.0.0 release notes against the inventory, noting the Spring Framework 7 and Spring Boot 4 baseline, the absence of Spring Boot 3 compatibility, the Jackson 3 default with its Jackson 2 compatibility layer, and the removal of JUnit 3 and 4 support. Where a dependency or behavior is unclear, we record the question and confirm it with the Flowable project or in a test build. The output is an agreed target matrix of Java, Spring, Jackson, JUnit and Flowable versions that the client signs off in the statement of work.

  3. Move the test suites before the engine changes

    Because JUnit 3 and 4 support is removed in 8.0, DeployOpen rewrites process tests on the current 7.x line first, moving them to JUnit 5 with the Flowable test extensions and keeping @Deployment resources intact. Tests are run against the 7.x application until they pass unchanged, so any later failure can be attributed to the upgrade rather than the test rewrite. The output is a green 7.x suite running on JUnit 5 and a list of tests that still depend on removed behavior.

  4. Upgrade the application stack in a branch

    DeployOpen moves the application to the Spring Boot 4 and Spring Framework 7 baseline in a separate branch, updating the Jakarta and dependency changes and resolving compile errors in custom delegates, listeners and configuration classes. Jackson usage in scripts, expressions and JSON variables is handled under the compatibility layer first, with the package and method changes tracked as a separate work item. The output is a building application on the target baseline with a documented list of every change made outside the Flowable engine itself.

  5. Verify the engine behavior on a production-like copy

    DeployOpen runs the upgraded application against a restored copy of the production database, covering process start and completion, timers and async jobs, CMMN case transitions, DMN decisions, REST responses and identity integration. We compare outputs against the 7.x baseline recorded earlier and log every difference. Database schema changes are applied to the copy and checked for errors before any real environment is touched. The output is a signed regression report with each difference either fixed or accepted by the client.

  6. Sequence the rollout and schema changes

    DeployOpen plans the cutover order for application nodes, the database schema upgrade and any client-side REST changes, using the async executor's lock behavior to avoid two versions processing the same jobs. The plan states which step is reversible, where backups are taken and who approves each stage. The output is a runbook with rollback points and named owners, reviewed by the client's operations team before the change window is scheduled.

  7. Deploy, monitor and hand over

    DeployOpen carries out the agreed rollout in the client's infrastructure, watches job execution, failed jobs, monitoring endpoints and logs during the first working period, and confirms the engines start cleanly on each node. We then deliver the updated documentation, test suite, runbook and change record. The output is a closed change with written handover and the client's acceptance of the production state.

  8. Support the upgrade through optional retainers

    After handover, the client can keep DeployOpen on a retainer for ongoing support, patch review, later Flowable releases and periodic regression runs against new versions. Retainer scope, response expectations and any reporting are agreed in writing, and the upgrade itself stays under a fixed-scope agreement with its own deliverables. The output is a support arrangement the client can start, pause or end on the terms in the contract.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.