Parent doc:
upgrade-migration-guide-to-im-7-3-0.md
Confluence mirror: IM 7.2 → 7.3.0 — Apache Camel 4.1.0 → 4.18.1 — Breaking Changes
6. Apache Camel 4.1.0 → 4.18.1 LTS
Impact: HIGH | Type: DSL, Properties, API, Behavior
This upgrade spans 17 minor versions, each with breaking changes. Organized by category.
Coverage by the IM 7.3.0 upgrade assistant
The script (part of the IM 7.3.0 upgrade assistant) covers 66 of 70 (~94%) customer-facing breaking changes from §6 below. The 4 uncovered items are inherently un-detectable behavioral defaults — no source-level signal to match.
|
Section |
Items |
Covered |
Method |
|---|---|---|---|
|
§6.1 Property prefixes |
6 |
6 |
Property regex + case-flip transforms |
|
§6.2 XML DSL |
10 |
10 |
Regex + XML DOM walker |
|
§6.3 YAML/kamelet |
(out of scope) |
— |
IM uses XML routes only; convert kamelets manually if any |
|
§6.4 Simple operators |
5 |
5 |
Regex |
|
§6.5 File defaults |
3 |
3 |
Advisories |
|
§6.6 Data formats |
10 |
10 |
Regex + advisories |
|
§6.7 Health checks |
4 |
3 |
Advisories (1 inherent gap: SupervisingRouteController defaults) |
|
§6.8 Exchange API |
10 |
9 |
Regex (ACTIVE_SPAN) + 7 advisories (1 inherent gap: stream buffer size) |
|
§6.9 Secrets manager |
2 |
2 |
Regex (delimiter) + property advisory (engine) |
|
§6.10 REST DSL |
7 |
5 |
Bundled |
|
§6.11 Removed components |
7 |
7 |
URI/element route advisories |
|
§6.12 Deprecated components |
5 |
5 |
URI/element route advisories |
|
§6.13 Template/Script |
1 |
1 |
Advisory (silent breaker) |
|
§6.14 IM-internal |
6 |
— |
Out of scope (IM framework code, not customer integrations) |
|
Total (customer-facing) |
70 |
66 (~94%) |
|
6.1 Property Prefix Changes
|
Old Prefix |
New Prefix |
Version |
Notes |
|---|---|---|---|
|
|
|
Deprecated 4.5, removed 4.13 |
All prefixed properties must migrate |
|
|
|
4.4 |
Route controller properties |
|
|
|
4.5 |
Backlog tracing |
|
|
|
4.2 |
Debugger toggle |
|
|
(removed) |
4.11 |
Option no longer supported |
|
|
|
4.14 |
Server management |
IM Impact — properties migrated in default-application.properties and application.properties:
-
camel.springboot.main-run-controller→camel.main.main-run-controller -
camel.springboot.xml-routes→camel.main.xml-routes -
camel.springboot.xml-rests→camel.main.xml-rests -
camel.springboot.use-mdc-logging→camel.main.use-mdc-logging -
camel.springboot.stream-caching-spool-enabled→camel.main.stream-caching-spool-enabled -
camel.springboot.shutdown-timeout→camel.main.shutdown-timeout -
camel.springboot.jmx-enabled→camel.main.jmx-enabled -
camel.springboot.jmx-management-statistics-level→camel.main.jmx-management-statistics-level
6.2 XML DSL Changes (affect customer routes)
|
Change |
Version |
Impact |
|---|---|---|
|
Throttle EIP completely reworked |
4.3 |
Customer routes using |
|
Resequence EIP attributes |
4.3 |
Customer routes using |
|
|
4.10 |
Customer routes may break |
|
|
4.4 |
Customer routes may break |
|
|
4.4 |
Customer routes may break |
|
|
4.10 |
Customer routes may break |
|
Bean |
4.6 |
Customer routes defining beans inline may break |
|
Load balancer names changed (see table below) |
4.7 |
Customer routes may break |
|
|
4.10 |
Customer routes using fail-over load balancer may break |
|
|
4.12 |
REST DSL routes |
Throttle EIP Rework (4.3): Changed from "total requests per time period" to "concurrent requests" model.
<!-- Old: 10 requests per 1000ms -->
<throttle><constant>10</constant></throttle>
<!-- New: 10 CONCURRENT requests (not per-second!) -->
<throttle><constant>10</constant></throttle>
The timePeriodMillis option should be removed. This is a fundamental semantic change.
XPath/XQuery headerName Change (4.4):
<!-- Old -->
<xpath headerName="myHeader">/foo/bar</xpath>
<!-- New -->
<xpath source="header:myHeader">/foo/bar</xpath>
Load Balancer Renames (4.7):
|
Old Name |
New Name |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.3 YAML DSL / Kamelet Changes (affect customer kamelets)
|
Change |
Version |
Impact |
|---|---|---|
|
Kebab-case removed entirely |
4.13 |
Customer kamelets WILL break |
|
|
4.6 |
YAML routes |
|
Bean |
4.6 |
YAML routes defining beans inline may break |
|
|
4.15 |
YAML data format config |
|
|
4.18 |
YAML route config |
|
|
4.10 |
Kamelets now inherit route error handler |
|
Kamelet endpoint parameters now parsed in raw mode |
4.16 |
URI-encoding behavior change for sensitive parameters (passwords, keys) |
|
Kamelet routes no longer registered as JMX MBeans by default |
4.5 |
Kamelet visibility/metrics in JMX |
Kebab-case → camelCase mapping:
|
Old (kebab-case) |
New (camelCase) |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
IM Impact: All .kamelet.yaml files migrated (set-header → setHeader, set-body → setBody).
6.4 Simple Language Operator Removals (affect customer routes)
Camel 4.18 removed these deprecated binary operators:
|
Old Operator |
New Operator |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Customer Action Required: Scan all XML route files for these operators.
6.5 File Component Behavior Changes (affect customer routes)
|
Change |
Version |
Impact |
|---|---|---|
|
|
4.13 |
File polling behavior changes — |
|
|
4.7 |
Idempotent file consumers |
|
File name header includes relative paths with |
4.10 |
File processing routes |
Customer Action Required: If using maxMessagesPerPoll with sorting, explicitly set eagerMaxMessagesPerPoll=false.
6.6 Data Format Changes
|
Change |
Version |
Impact |
|---|---|---|
|
|
4.12 |
JSON/XML unmarshalling now preserves key order |
|
Jackson option |
4.9 |
Affects multi-byte character handling |
|
CSV |
4.15 |
CSV data format config |
|
CSV |
4.15 |
CSV header config |
|
Flatpack |
4.15 |
Flatpack config |
|
JAXB/SOAP |
4.15 |
JAXB/SOAP config |
|
SOAP |
4.15 |
SOAP config |
|
Crypto |
4.15 |
Crypto data format config |
|
SwiftMx |
4.15 |
SwiftMx data format config |
|
XML Security |
4.15 |
xmlSecurity data format config |
6.7 Health Check Changes
|
Change |
Version |
|---|---|
|
Routes with |
4.7 |
|
SupervisingRouteController: |
4.7 |
|
FTP producer health checks added |
4.17 |
|
Health/metrics paths: |
4.14 |
6.8 Exchange API Changes
|
Change |
Version |
|---|---|
|
|
4.4 |
|
Intercepted endpoint: header → exchange property |
4.5 |
|
|
4.11 |
|
|
4.9 |
|
|
4.8 |
|
|
4.12 |
|
Stream buffer size: 4096 → 16384 bytes |
4.8 |
|
WireTap deep-copies |
4.7 |
|
WireTap |
4.4 |
|
JMS default header filter strategy now removes |
4.9 |
6.9 Secrets Manager Syntax Change (4.9)
# Old
{{hashicorp:secret:database/username}}
{{aws:database/username}}
# New
{{hashicorp:secret:database#username}}
{{aws:database#username}}
Additionally (Camel 4.7): the camel.vault.hashicorp.engine property and CAMEL_HASHICORP_VAULT_ENGINE environment variable were removed. Use the new hashicorp:engine:secret:… URI syntax instead — the engine is now part of the secret reference, not configured separately.
6.10 REST DSL Changes
|
Change |
Version |
|---|---|
|
|
4.5 |
|
|
4.5 |
|
Property placeholders in REST DSL now resolved eagerly at endpoint build time |
4.5 |
|
Swagger 2.0 support removed, only OpenAPI v3 |
4.5 |
|
OpenAPI specification now generated once at startup instead of on-demand per request |
4.5 |
|
REST OpenAPI Atlassian |
4.6 |
|
Contract-first uses individual routers per endpoint |
4.18 |
6.11 Removed Camel Components
|
Component |
Removed In |
|---|---|
|
|
4.4 |
|
|
4.4 |
|
|
4.9 |
|
|
4.9 |
|
|
4.9 |
|
|
4.9 |
|
|
4.11 |
6.12 Deprecated Camel Components
|
Component |
Deprecated In |
|---|---|
|
|
4.7 |
|
|
4.8 |
|
|
4.17 |
|
|
4.18 |
|
|
4.18 |
6.13 Template / Script Component Security (4.13 — BREAKING)
Camel 4.13 introduced a security-driven default change: most language and template components no longer permit headers to drive the template/script content unless the endpoint explicitly opts in.
|
Change |
Affected components |
|---|---|
|
Header-driven templates now require |
All template components (e.g., |
|
Header-driven scripts now require |
Language/script components (e.g., |
Customer impact: Any customer route or kamelet that relies on a header (for example CamelTemplateBody, CamelTemplateResource, CamelLanguageScript, or any custom header) to feed template/script content will silently stop processing the header and fall back to the configured static content. Routes do not throw — output is just wrong.
Customer action: Search for any ?allowTemplateFromHeader= parameters that may need adjustment, and add ?allowTemplateFromHeader=true to any endpoint URI where header-driven templates/scripts are intentional.
6.14 IM-Specific Camel Code Changes
Internal-only — customers can skip this section. These items live inside IM's own framework code (
pricefx-integrationmodule) and were applied in the IM 7.3.0 library upgrade before it shipped. They are listed here for IM framework developers validating the upgrade. No customer action required.
-
XmlWithNamespaceSplitter: Tokenizer API changed —TokenizeLanguage→TokenizerExpression+ExpressionReifier. -
CxfPayloadProcessor: CXF payload handling changed —CxfPayloadimport fromorg.apache.camel.component.cxf.common. -
New
serializeCxfPayload()method for explicit DOM serialization. -
RouteDeploymentError: Error message format changed —"because of Multiple consumers"→"Multiple consumers". -
PfxEventConsumer: Custom exponential backoff removed — Camel 4.x has built-in backoff viaScheduledPollConsumer. -
JSch/Groovy exclusions removed from
camel-jsch,camel-ftp,camel-groovy— Camel 4.18 manages these internally.