Migrating from: IM 8.0.x (Spring Boot 3.5.15 / Camel 4.18.2 / Groovy 4.0.30 / Jackson 2 / Java 21)
Migrating to: IM 8.1.0 (Spring Boot 4.1.0 / Camel 4.22.0 / Groovy 5.0.8 / Jackson 3 / Java 25)
This is the landing page for the IM 8.0.x → 8.1.0 upgrade. The full analysis is split across
4 detail docs — pick the one that matches what you need from the
Quick Navigation table. The actionable
Customer Migration Checklist lives on this page.
-
Customer integrators — start with Customer-facing breaking changes, then the two deep dives
for Groovy and Jackson, then walk the checklist. -
IM framework developers — Library upgrade details is the generated evidence for every
classpath change.
Why this upgrade is large. Camel 4.19 dropped support for Spring Boot 3. Moving to Camel 4.22
therefore forces Spring Boot 4, which forces Spring Framework 7, Spring Security 7, Jakarta EE 11
and Tomcat 11. Camel's own alignment then brings Groovy 5. These cannot be taken separately.
Quick Navigation
|
Topic |
Audience |
Document |
|---|---|---|
|
Customer-facing breaking changes (§3.1 – §3.24) |
Customer integrators |
|
|
Groovy 4 → 5 migration |
Customer integrators |
|
|
Jackson 2 → 3 migration |
Customer integrators |
|
|
Apache Camel 4.18 → 4.22 migration |
Customer integrators |
|
|
Library upgrade details (full classpath inventory) |
IM team + integrators |
|
Impact at a glance
-
Customer integrations — 24 breaking changes: 6 HIGH · 11 MEDIUM · 7 LOW.
HIGH items: Groovy 5 silent behaviour changes (§3.1), sandbox Jackson package change (§3.2),
deadcatch (IOException)around JSON parsing (§3.3), camel-cxfoperationNameheader rename
(§3.4), WS-Security libraries removed (§3.5), camel-mail header recipients now opt-in (§3.6). -
The dangerous category is SILENT. Eleven of the 24 items produce no error at all — the route
deploys, runs, and behaves differently. Deploying your integrations is not a sufficient test for
those; use the search patterns in each deep dive. -
Platform totals: 424 runtime dependencies changed version, 50 added, 49 removed,
68 major-version jumps. Generated inventory in
library-upgrade-details.md. -
Much of the platform change is absorbed by IM — Spring Boot 4's module split, Spring Security 7's
removed APIs, Jakarta EE 11, Tomcat 11 and the Jackson 3 migration of IM's own code and the Pricefx
API client. See What IM handles for you at the end of the breaking-changes doc.
Customer Migration Checklist
Use this as a sequenced punch list when upgrading an instance from IM 8.0.x to 8.1.0.
Before the upgrade
- Raise a ticket first if you use WS-Security on any SOAP service (UsernameToken, signing,
encryption, SAML) — the libraries are no longer on the classpath (§3.5). This needs an image
change, not a configuration change. - Search customer Groovy scripts for:
com.fasterxml.jackson.databind/.coreimports (§3.2) — switch totools.jackson.*.
Leavecom.fasterxml.jackson.annotationalone — that package is unchanged.catch (IOException/catch (JsonProcessingExceptionaround JSON parsing (§3.3) —
now dead code; catchtools.jackson.core.JacksonException.if (file)style truthiness checks onFile/Path(§3.1) — now means "exists on disk".- Classes that
extends HashMap/implements Mapand also declare fields (§3.1) — property
access now prefers the field over the map entry. findIndexValues(returnsIteratornow) andchop(no longer pads) (§3.1).- Custom
mod()methods used via%(§3.1). @CompileStaticscripts — overload selection and generics checking both changed (§3.1, §3.9).new ObjectMapper()followed byconfigure/registerModule/setDateFormat(§3.10) —
rebuild withJsonMapper.builder(); dropJavaTimeModule.TextNode(§3.10) — renamed toStringNode.javax.annotation.*imports (§3.24) — move tojakarta.annotation.*.- Duplicate
importlines (§3.7) — now a compile error. - Classes named
Duration,Period,Instant,Clockin the default package (§3.8).
- Search customer routes for:
header.operationName/ literal"operationName"on CXF routes (§3.4) — rename to
CamelCxfOperationName, and re-set it after any JMS/HTTP hop.<setHeader name="To">(andFrom/Subject/Reply-To) feeding ansmtp:endpoint
(§3.6) — adduseHeaderRecipients=trueetc. to the endpoint URI.copyTo/moveTo/deletemail headers (§3.19) — nowCamelMail*prefixed.<toD>/<enrich>whose URI can contain{{...}}at runtime (§3.15) — no longer resolved.xslt-saxonendpoints using Java extension functions or external DTDs (§3.16) — set
secureProcessing=false.CamelFileNameused after zip/tar unmarshal to rebuild directories (§3.17) — use
zipFileName/CamelTarFileEntryName.pojoRequest=trueonaws2-s3listObjects(§3.20) — switch to the V2 request/response types.- Removed components:
serviceCall,stomp:,github:,camel-cloud(§3.18) — DEPLOY-FAIL. csimpleexpressions (§3.18) — deprecated, migrate tosimple.
- Review JSON expectations — if a downstream system or your tests depend on JSON property
order, note that thejacksondataformat now sorts alphabetically (§3.11). Pricefx API traffic
is unaffected — IM preserves the old order there. - Review deeply nested JSON — the default nesting limit dropped from 1000 to 500 (§3.14).
- Review Spring property overrides in your instance configuration against the Spring Boot 4
release notes — removed/renamed properties are the main way the internal upgrade can reach you. - Take a backup: connection definitions, property files, custom routes and kamelets, Groovy
scripts and deployed classes, and database state.
During the upgrade
- Deploy IM 8.1.0 to a non-production environment first.
- Apply the rewrites identified in the pre-upgrade scan.
- Deploy every customer route, mapper, filter and Groovy class — DEPLOY-FAIL items (duplicate
imports, removed components, sandbox rejections, generics errors) all surface here.
After the upgrade — verification steps
- Application starts cleanly — no unresolved placeholders, no unknown-property warnings.
- Health endpoint returns UP.
- Exercise every connection end-to-end — at least one route per credential.
- Run a representative sample of Groovy scripts with real data and compare output, not just
deploy them. The SILENT items (§3.1, §3.11, §3.12, §3.15) can only be caught this way.
Pay particular attention to scripts using closures that capture external variables — the
sandbox and the Groovy 5 compiler interact most tightly there. - Send one mail through each mail route and confirm it reached the intended recipient (§3.6).
- Invoke each SOAP operation and confirm dispatch still routes correctly (§3.4).
- Compare a sample of produced JSON against IM 8.0.x output if a downstream system is
order-sensitive (§3.11). - Check monitoring dashboards — the
routeIdmetric tag is now always present and JMX
Throughputis smoothed (§3.22). - Performance smoke test on the Java 25 runtime.
Rollback plan
If a critical issue surfaces post-upgrade and cannot be hotfixed:
-
Stop traffic to the IM 8.1.0 instance.
-
Redeploy the previous IM 8.0.x image / artifact.
-
Restore rewritten route/property/script files from the pre-upgrade backup — note that scripts
rewritten for Jackson 3 (tools.jacksonimports) and for the sandbox whitelist will not run
on IM 8.0.x, so the originals are required. -
Re-enable traffic and verify health.
-
File a defect with reproducer details before retrying.
Keep the pre-upgrade script backup until you are confident. Unlike the 7.3.0 upgrade, several of
the required rewrites here are not backward compatible — atools.jacksonimport is invalid on
IM 8.0.x.
Migration tooling
A migration script for the IM upgrade service is planned for this upgrade, following the pattern of
the upgrade assistant used for 7.3.0. It will run in two modes:
-
Analysis (read-only) — scans customer routes, Groovy scripts and properties, and reports the
detected items from the checklist above without modifying anything. -
Modification — applies the safe, regex- and XML-matchable rewrites:
com.fasterxml.jackson
→tools.jacksonimports,TextNode→StringNode,header.operationName→
header.CamelCxfOperationName,copyTo/moveTo/deletemail header renames, and
javax.annotation→jakarta.annotation.
The SILENT items — File truthiness, Map property resolution, JSON property order, catch (IOException) dead blocks — cannot be safely automated because the correct rewrite depends on
what the script intended. Those remain manual review items, and the analysis mode will flag them.