This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-jbang-examples.git


The following commit(s) were added to refs/heads/main by this push:
     new 2a47d66  chore: normalize YAML DSL routes to canonical (explicit) form
2a47d66 is described below

commit 2a47d6618fb16a9a59033b876bb1739769464b6c
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 20 22:47:43 2026 +0200

    chore: normalize YAML DSL routes to canonical (explicit) form
    
    Normalize 23 example files to use canonical YAML DSL syntax:
    - URIs use expanded parameters as key/value blocks
    - Expressions use explicit form (expression: simple: expression:)
    - Log EIP uses message property instead of shorthand
    - Remove auto-generated IDs (route-1133, setHeader-4262, etc.)
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 artemis/consumer.camel.yaml                        |  13 +-
 artemis/producer.camel.yaml                        |  14 +-
 circuit-breaker/route.camel.yaml                   |  17 +-
 cron-log/cron-log.camel.yaml                       |  13 +-
 edi-x12-as2/camel/fake.camel.yaml                  |  41 ++-
 ftp/ftp.camel.yaml                                 |   9 +-
 groovy/groovy.camel.yaml                           |  31 +-
 keycloak-ldap-migration/ldap-migration.camel.yaml  | 388 +++++++++++----------
 mqtt/mqtt.camel.yaml                               |  12 +-
 openai/pii-redaction/pii-redaction.camel.yaml      |  23 +-
 openapi/client/petstore-client.camel.yaml          |  26 +-
 routes/routes.camel.yaml                           |  11 +-
 .../analyzer/error-analyzer.camel.yaml             |  93 ++---
 .../correlator/infinispan.camel.yaml               | 110 +++---
 .../correlator/logs-mapper.camel.yaml              |  20 +-
 .../correlator/traces-mapper.camel.yaml            |  21 +-
 .../first-iteration/analyzer.camel.yaml            |  66 ++--
 .../first-iteration/load-generator.camel.yaml      |  48 +--
 .../log-generator/log-generator.camel.yaml         |  63 ++--
 .../ui-console/jms-file-storage.camel.yaml         |  13 +-
 sql/sql.camel.yaml                                 |  35 +-
 timer-log/timer-log.camel.yaml                     |  13 +-
 xslt/consumer.camel.yaml                           |   6 +-
 23 files changed, 619 insertions(+), 467 deletions(-)

diff --git a/artemis/consumer.camel.yaml b/artemis/consumer.camel.yaml
index 40f3974..55dc3c8 100644
--- a/artemis/consumer.camel.yaml
+++ b/artemis/consumer.camel.yaml
@@ -1,4 +1,9 @@
-- from:
-    uri: jms:numbers
-    steps:
-      - log: ${body}
+- route:
+    from:
+      uri: jms
+      parameters:
+        destinationName: numbers
+      steps:
+        - log:
+            message: "${body}"
+
diff --git a/artemis/producer.camel.yaml b/artemis/producer.camel.yaml
index 88de4c4..3d8741a 100644
--- a/artemis/producer.camel.yaml
+++ b/artemis/producer.camel.yaml
@@ -1,8 +1,16 @@
 - route:
     from:
-      uri: timer:start
+      uri: timer
+      parameters:
+        timerName: start
       steps:
         - setBody:
-            simple: '{"orderId": ${random(1000)}, "item": "widget", 
"quantity": ${random(10)}}'
+            expression:
+              simple:
+                expression: '{"orderId": ${random(1000)}, "item": "widget", 
"quantity":
+                  ${random(10)}}'
         - to:
-            uri: jms:numbers
+            uri: jms
+            parameters:
+              destinationName: numbers
+
diff --git a/circuit-breaker/route.camel.yaml b/circuit-breaker/route.camel.yaml
index f2de22f..79b2898 100644
--- a/circuit-breaker/route.camel.yaml
+++ b/circuit-breaker/route.camel.yaml
@@ -1,26 +1,27 @@
 - route:
     from:
-      uri: timer:start
+      uri: timer
+      parameters:
+        timerName: start
+        period: 1000
       steps:
         - setBody:
             expression:
               constant:
                 expression: Hello Camel
         - circuitBreaker:
-            resilience4jConfiguration:
-              minimumNumberOfCalls: 10
-              failureRateThreshold: 50
-              waitDurationInOpenState: 20
             steps:
+              - resilience4jConfiguration:
+                  minimumNumberOfCalls: 10
+                  waitDurationInOpenState: 20
               - filter:
                   expression:
                     simple:
-                      expression: ${random(10)} > 2
+                      expression: "${random(10)} > 2"
                   steps:
                     - throwException:
                         message: Forced error
                         exceptionType: java.lang.IllegalArgumentException
         - log:
             message: "${body} (CircuitBreaker is open: 
${exchangeProperty.CamelCircuitBreakerResponseShortCircuited})"
-      parameters:
-        period: 1000
+
diff --git a/cron-log/cron-log.camel.yaml b/cron-log/cron-log.camel.yaml
index c31bdb1..a620a36 100644
--- a/cron-log/cron-log.camel.yaml
+++ b/cron-log/cron-log.camel.yaml
@@ -1,10 +1,15 @@
 - route:
     id: cron-log
     from:
-      uri: timer:cron
+      uri: timer
       parameters:
-        period: "5000"
+        timerName: cron
+        period: 5000
       steps:
         - setBody:
-            simple: "Scheduled task running at ${date:now:HH:mm:ss}"
-        - log: "${body}"
+            expression:
+              simple:
+                expression: "Scheduled task running at ${date:now:HH:mm:ss}"
+        - log:
+            message: "${body}"
+
diff --git a/edi-x12-as2/camel/fake.camel.yaml 
b/edi-x12-as2/camel/fake.camel.yaml
index 61ee09c..240e271 100644
--- a/edi-x12-as2/camel/fake.camel.yaml
+++ b/edi-x12-as2/camel/fake.camel.yaml
@@ -1,28 +1,41 @@
 - route:
     from:
-      uri: as2://server/listen
+      uri: as2
       parameters:
-        serverPortNumber: 8081
+        apiName: server
+        methodName: listen
         requestUriPattern: /acme/gateway
+        serverPortNumber: 8081
       steps:
-        - log: |
-           Received functional ack:
-           ${body}
-
+        - log:
+            message: |
+              Received functional ack:
+              ${body}
 - route:
     from:
-      uri: rest:get:tpm
+      uri: rest
+      parameters:
+        method: get
+        path: tpm
       steps:
-        - log: Verified agreement between ${header.receiver} and 
${header.sender}
-
+        - log:
+            message: "Verified agreement between ${header.receiver} and 
${header.sender}"
 - route:
     from:
-      uri: rest:post:tracker
+      uri: rest
+      parameters:
+        method: post
+        path: tracker
       steps:
-        - log: Tracked ${body}
-
+        - log:
+            message: "Tracked ${body}"
 - route:
     from:
-      uri: rest:post:erp/purchase_orders
+      uri: rest
+      parameters:
+        method: post
+        path: erp/purchase_orders
       steps:
-        - log: Processed ${body}
\ No newline at end of file
+        - log:
+            message: "Processed ${body}"
+
diff --git a/ftp/ftp.camel.yaml b/ftp/ftp.camel.yaml
index ff0cd4f..f0f7a5e 100644
--- a/ftp/ftp.camel.yaml
+++ b/ftp/ftp.camel.yaml
@@ -1,9 +1,11 @@
 - route:
-    id: route-1133
     from:
-      uri: jms:cheese
+      uri: jms
+      parameters:
+        destinationName: cheese
       steps:
-        - log: "Incoming: ${body}"
+        - log:
+            message: "Incoming: ${body}"
         - to:
             uri: ftp
             parameters:
@@ -12,3 +14,4 @@
               password: admin
               port: 2221
               username: admin
+
diff --git a/groovy/groovy.camel.yaml b/groovy/groovy.camel.yaml
index 99e062c..c183a83 100644
--- a/groovy/groovy.camel.yaml
+++ b/groovy/groovy.camel.yaml
@@ -1,32 +1,25 @@
 - route:
-    id: route-1681
     from:
-      id: from-1133
       uri: once
       parameters:
         name: validate
       steps:
         - setHeader:
-            id: setHeader-4262
-            constant:
-              expression: [email protected]
             name: contactEmail
+            expression:
+              constant:
+                expression: [email protected]
         - choice:
-            id: choice-1178
-            otherwise:
-              id: otherwise-1234
-              steps:
-                - log:
-                    id: log-3646
-                    message: "Invalid email: ${header.contactEmail}"
             when:
-              - id: when-1441
+              - expression:
+                  groovy:
+                    expression: |-
+                      import 
org.apache.commons.validator.routines.EmailValidator
+                      
EmailValidator.getInstance().isValid(request.headers['contactEmail'])
                 steps:
                   - log:
-                      id: log-2349
                       message: "Valid contact: ${header.contactEmail}"
-                groovy:
-                  expression: >-
-                    import org.apache.commons.validator.routines.EmailValidator
-
-                    
EmailValidator.getInstance().isValid(request.headers['contactEmail'])
+            otherwise:
+              steps:
+                - log:
+                    message: "Invalid email: ${header.contactEmail}"
diff --git a/keycloak-ldap-migration/ldap-migration.camel.yaml 
b/keycloak-ldap-migration/ldap-migration.camel.yaml
index 5481fb3..842d10a 100644
--- a/keycloak-ldap-migration/ldap-migration.camel.yaml
+++ b/keycloak-ldap-migration/ldap-migration.camel.yaml
@@ -20,216 +20,232 @@
 
 # Configure Keycloak component
 - beans:
-  - name: keycloak
-    type: org.apache.camel.component.keycloak.KeycloakComponent
-    properties:
-      serverUrl: "{{keycloak.server.url}}"
-      realm: "{{keycloak.realm}}"
-      username: "{{keycloak.username}}"
-      password: "{{keycloak.password}}"
-
-# Startup route to initialize LDAP DirContext
+    - name: keycloak
+      type: "org.apache.camel.component.keycloak.KeycloakComponent"
+      properties:
+        password: "{{keycloak.password}}"
+        serverUrl: "{{keycloak.server.url}}"
+        realm: "{{keycloak.realm}}"
+        username: "{{keycloak.username}}"
 - route:
     id: ldap-context-initializer
     from:
-      uri: "timer:init?repeatCount=1&delay=100"
+      uri: timer
+      parameters:
+        timerName: init
+        repeatCount: 1
+        delay: 100
       steps:
         - log:
-            message: "Initializing LDAP context..."
+            message: Initializing LDAP context...
         - script:
-            groovy: |
-              import javax.naming.*
-              import javax.naming.directory.*
-
-              try {
-                def env = new Hashtable()
-                env.put(Context.INITIAL_CONTEXT_FACTORY, 
"com.sun.jndi.ldap.LdapCtxFactory")
-                env.put(Context.PROVIDER_URL, 
camelContext.resolvePropertyPlaceholders("{{ldap.server.url}}"))
-                env.put(Context.SECURITY_AUTHENTICATION, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.authentication}}"))
-
-                // Add credentials if not using anonymous authentication
-                def authType = 
camelContext.resolvePropertyPlaceholders("{{ldap.security.authentication}}")
-                if (!"none".equals(authType)) {
-                  env.put(Context.SECURITY_PRINCIPAL, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.principal}}"))
-                  env.put(Context.SECURITY_CREDENTIALS, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.credentials}}"))
-                }
-
-                log.info("Creating LDAP context with URL: 
${env.get(Context.PROVIDER_URL)}")
-                def ldapContext = new InitialDirContext(env)
-
-                // Bind to registry
-                camelContext.registry.bind("ldapserver", ldapContext)
-                log.info("LDAP context successfully bound to registry as 
'ldapserver'")
-
-                // Verify it was bound
-                def boundContext = 
camelContext.registry.lookupByName("ldapserver")
-                if (boundContext != null) {
-                  log.info("Verified: LDAP context is available in registry")
-                } else {
-                  log.error("Error: LDAP context not found in registry after 
binding!")
-                }
-              } catch (Exception e) {
-                log.error("Failed to initialize LDAP context: ${e.message}", e)
-                throw e
-              }
-
-# Main route for LDAP to Keycloak migration
+            expression:
+              groovy:
+                expression: |
+                  import javax.naming.*
+                  import javax.naming.directory.*
+
+                  try {
+                    def env = new Hashtable()
+                    env.put(Context.INITIAL_CONTEXT_FACTORY, 
"com.sun.jndi.ldap.LdapCtxFactory")
+                    env.put(Context.PROVIDER_URL, 
camelContext.resolvePropertyPlaceholders("{{ldap.server.url}}"))
+                    env.put(Context.SECURITY_AUTHENTICATION, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.authentication}}"))
+
+                    // Add credentials if not using anonymous authentication
+                    def authType = 
camelContext.resolvePropertyPlaceholders("{{ldap.security.authentication}}")
+                    if (!"none".equals(authType)) {
+                      env.put(Context.SECURITY_PRINCIPAL, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.principal}}"))
+                      env.put(Context.SECURITY_CREDENTIALS, 
camelContext.resolvePropertyPlaceholders("{{ldap.security.credentials}}"))
+                    }
+
+                    log.info("Creating LDAP context with URL: 
${env.get(Context.PROVIDER_URL)}")
+                    def ldapContext = new InitialDirContext(env)
+
+                    // Bind to registry
+                    camelContext.registry.bind("ldapserver", ldapContext)
+                    log.info("LDAP context successfully bound to registry as 
'ldapserver'")
+
+                    // Verify it was bound
+                    def boundContext = 
camelContext.registry.lookupByName("ldapserver")
+                    if (boundContext != null) {
+                      log.info("Verified: LDAP context is available in 
registry")
+                    } else {
+                      log.error("Error: LDAP context not found in registry 
after binding!")
+                    }
+                  } catch (Exception e) {
+                    log.error("Failed to initialize LDAP context: 
${e.message}", e)
+                    throw e
+                  }
 - route:
     id: ldap-to-keycloak-migration
     from:
-      uri: "timer:migrate?repeatCount=1&delay=2000"
+      uri: timer
+      parameters:
+        timerName: migrate
+        repeatCount: 1
+        delay: 2000
       steps:
         - log:
-            message: "Checking if LDAP context is available..."
+            message: Checking if LDAP context is available...
         - script:
-            groovy: |
-              def ldapCtx = camelContext.registry.lookupByName("ldapserver")
-              if (ldapCtx == null) {
-                throw new IllegalStateException("LDAP context not initialized. 
Please check ldap-context-initializer route.")
-              }
-              log.info("LDAP context found in registry, proceeding with 
migration...")
+            expression:
+              groovy:
+                expression: |
+                  def ldapCtx = 
camelContext.registry.lookupByName("ldapserver")
+                  if (ldapCtx == null) {
+                    throw new IllegalStateException("LDAP context not 
initialized. Please check ldap-context-initializer route.")
+                  }
+                  log.info("LDAP context found in registry, proceeding with 
migration...")
         - log:
-            message: "Starting LDAP to Keycloak user migration..."
+            message: Starting LDAP to Keycloak user migration...
         - log:
-            message: "Searching LDAP with filter: {{ldap.search.filter}}, 
base: {{ldap.search.base}}"
-
-        # Search LDAP for users
+            message: "Searching LDAP with filter: {{ldap.search.filter}}, 
base:\
+              \ {{ldap.search.base}}"
         - setBody:
-            constant: "{{ldap.search.filter}}"
+            expression:
+              constant:
+                expression: "{{ldap.search.filter}}"
         - to:
-            uri: "ldap:ldapserver?base={{ldap.search.base}}"
+            uri: ldap
+            parameters:
+              dirContextName: ldapserver
+              base: "{{ldap.search.base}}"
         - log:
             message: "Found ${body.size()} users in LDAP"
-
-        # Transform LDAP SearchResults to Keycloak UserRepresentation
         - script:
-            groovy: |
-              import javax.naming.directory.SearchResult
-              import javax.naming.directory.Attributes
-              import org.keycloak.representations.idm.UserRepresentation
-
-              // Get LDAP search results from exchange body
-              def searchResults = request.body
-              def users = []
-
-              searchResults.each { SearchResult result ->
-                Attributes attrs = result.attributes
-
-                // Create Keycloak user representation
-                def user = new UserRepresentation()
-
-                // Map LDAP attributes to Keycloak user fields
-                // Username (required) - from uid, cn, or sAMAccountName
-                def username = attrs.get("uid")?.get() ?:
-                               attrs.get("cn")?.get() ?:
-                               attrs.get("sAMAccountName")?.get()
-                if (username) {
-                  user.username = username.toString()
-                }
-
-                // Email
-                def mail = attrs.get("mail")?.get()
-                if (mail) {
-                  user.email = mail.toString()
-                }
-
-                // First name - from givenName
-                def givenName = attrs.get("givenName")?.get()
-                if (givenName) {
-                  user.firstName = givenName.toString()
-                }
-
-                // Last name - from sn (surname)
-                def sn = attrs.get("sn")?.get()
-                if (sn) {
-                  user.lastName = sn.toString()
-                }
-
-                // Enable user by default
-                user.enabled = true
-
-                // Add custom attributes if configured
-                def customAttrs = [:]
-
-                // Organizational Unit
-                def ou = attrs.get("ou")?.get()
-                if (ou) {
-                  customAttrs.put("ldap_ou", [ou.toString()])
-                }
-
-                // Distinguished Name (for reference)
-                def dn = result.nameInNamespace
-                if (dn) {
-                  customAttrs.put("ldap_dn", [dn])
-                }
-
-                // Description
-                def description = attrs.get("description")?.get()
-                if (description) {
-                  customAttrs.put("description", [description.toString()])
-                }
-
-                // Telephone number
-                def telephoneNumber = attrs.get("telephoneNumber")?.get()
-                if (telephoneNumber) {
-                  customAttrs.put("phoneNumber", [telephoneNumber.toString()])
-                }
-
-                if (!customAttrs.isEmpty()) {
-                  user.attributes = customAttrs
-                }
-
-                // Add required actions if configured
-                def requirePasswordUpdate = 
camelContext.resolvePropertyPlaceholders("{{keycloak.user.requirePasswordUpdate}}")
-                if ("true".equals(requirePasswordUpdate)) {
-                  user.requiredActions = ["UPDATE_PASSWORD"]
-                }
-
-                users.add(user)
-              }
-
-              // Set transformed users as message body
-              request.body = users
-
-        # Set headers for bulk user creation
+            expression:
+              groovy:
+                expression: |
+                  import javax.naming.directory.SearchResult
+                  import javax.naming.directory.Attributes
+                  import org.keycloak.representations.idm.UserRepresentation
+
+                  // Get LDAP search results from exchange body
+                  def searchResults = request.body
+                  def users = []
+
+                  searchResults.each { SearchResult result ->
+                    Attributes attrs = result.attributes
+
+                    // Create Keycloak user representation
+                    def user = new UserRepresentation()
+
+                    // Map LDAP attributes to Keycloak user fields
+                    // Username (required) - from uid, cn, or sAMAccountName
+                    def username = attrs.get("uid")?.get() ?:
+                                   attrs.get("cn")?.get() ?:
+                                   attrs.get("sAMAccountName")?.get()
+                    if (username) {
+                      user.username = username.toString()
+                    }
+
+                    // Email
+                    def mail = attrs.get("mail")?.get()
+                    if (mail) {
+                      user.email = mail.toString()
+                    }
+
+                    // First name - from givenName
+                    def givenName = attrs.get("givenName")?.get()
+                    if (givenName) {
+                      user.firstName = givenName.toString()
+                    }
+
+                    // Last name - from sn (surname)
+                    def sn = attrs.get("sn")?.get()
+                    if (sn) {
+                      user.lastName = sn.toString()
+                    }
+
+                    // Enable user by default
+                    user.enabled = true
+
+                    // Add custom attributes if configured
+                    def customAttrs = [:]
+
+                    // Organizational Unit
+                    def ou = attrs.get("ou")?.get()
+                    if (ou) {
+                      customAttrs.put("ldap_ou", [ou.toString()])
+                    }
+
+                    // Distinguished Name (for reference)
+                    def dn = result.nameInNamespace
+                    if (dn) {
+                      customAttrs.put("ldap_dn", [dn])
+                    }
+
+                    // Description
+                    def description = attrs.get("description")?.get()
+                    if (description) {
+                      customAttrs.put("description", [description.toString()])
+                    }
+
+                    // Telephone number
+                    def telephoneNumber = attrs.get("telephoneNumber")?.get()
+                    if (telephoneNumber) {
+                      customAttrs.put("phoneNumber", 
[telephoneNumber.toString()])
+                    }
+
+                    if (!customAttrs.isEmpty()) {
+                      user.attributes = customAttrs
+                    }
+
+                    // Add required actions if configured
+                    def requirePasswordUpdate = 
camelContext.resolvePropertyPlaceholders("{{keycloak.user.requirePasswordUpdate}}")
+                    if ("true".equals(requirePasswordUpdate)) {
+                      user.requiredActions = ["UPDATE_PASSWORD"]
+                    }
+
+                    users.add(user)
+                  }
+
+                  // Set transformed users as message body
+                  request.body = users
         - setHeader:
             name: CamelKeycloakRealmName
-            constant: "{{keycloak.target.realm}}"
+            expression:
+              constant:
+                expression: "{{keycloak.target.realm}}"
         - setHeader:
             name: CamelKeycloakContinueOnError
-            constant: true
-
-        # Bulk create users in Keycloak
+            expression:
+              constant:
+                expression: "true"
         - to:
-            uri: "keycloak:admin?operation=bulkCreateUsers"
-
-        # Log migration results
+            uri: keycloak
+            parameters:
+              label: admin
+              operation: bulkCreateUsers
         - script:
-            groovy: |
-              def result = request.body
-
-              println ""
-              println "=" * 80
-              println "LDAP to Keycloak Migration Results"
-              println "=" * 80
-              println "Total users processed: ${result.total}"
-              println "Successfully created:  ${result.success}"
-              println "Failed:                ${result.failed}"
-              println "=" * 80
-
-              if (result.results) {
-                println "\nDetailed Results:"
-                println "-" * 80
-                result.results.each { userResult ->
-                  def status = userResult.status == "success" ? "✓" : "✗"
-                  println "${status} ${userResult.username?.padRight(30)} - 
${userResult.status}"
-                  if (userResult.error) {
-                    println "  Error: ${userResult.error}"
+            expression:
+              groovy:
+                expression: |
+                  def result = request.body
+
+                  println ""
+                  println "=" * 80
+                  println "LDAP to Keycloak Migration Results"
+                  println "=" * 80
+                  println "Total users processed: ${result.total}"
+                  println "Successfully created:  ${result.success}"
+                  println "Failed:                ${result.failed}"
+                  println "=" * 80
+
+                  if (result.results) {
+                    println "\nDetailed Results:"
+                    println "-" * 80
+                    result.results.each { userResult ->
+                      def status = userResult.status == "success" ? "✓" : "✗"
+                      println "${status} ${userResult.username?.padRight(30)} 
- ${userResult.status}"
+                      if (userResult.error) {
+                        println "  Error: ${userResult.error}"
+                      }
+                    }
+                    println "-" * 80
                   }
-                }
-                println "-" * 80
-              }
 
-              println ""
-              println "Migration completed!"
-              println ""
+                  println ""
+                  println "Migration completed!"
+                  println ""
+
diff --git a/mqtt/mqtt.camel.yaml b/mqtt/mqtt.camel.yaml
index 46bc670..78598d6 100644
--- a/mqtt/mqtt.camel.yaml
+++ b/mqtt/mqtt.camel.yaml
@@ -1,9 +1,10 @@
 - route:
     from:
-      uri: kamelet:mqtt5-source
+      uri: kamelet
       parameters:
-        topic: "{{mqtt.topic}}"
+        templateId: mqtt5-source
         brokerUrl: "{{mqtt.broker.url}}"
+        topic: "{{mqtt.topic}}"
       steps:
         - transform:
             expression:
@@ -13,11 +14,12 @@
             when:
               - expression:
                   simple:
-                    expression: ${body} > 20
+                    expression: "${body} > 20"
                 steps:
                   - log:
-                      message: Warm temperature at ${body}
+                      message: "Warm temperature at ${body}"
             otherwise:
               steps:
                 - log:
-                    message: Cold temperature at ${body}
+                    message: "Cold temperature at ${body}"
+
diff --git a/openai/pii-redaction/pii-redaction.camel.yaml 
b/openai/pii-redaction/pii-redaction.camel.yaml
index d2b64a7..14685bf 100644
--- a/openai/pii-redaction/pii-redaction.camel.yaml
+++ b/openai/pii-redaction/pii-redaction.camel.yaml
@@ -1,14 +1,21 @@
 - route:
     from:
-      uri: "direct:pii-redaction"
+      uri: direct
+      parameters:
+        name: pii-redaction
       steps:
         - to:
-            uri: "openai:chat-completion"
+            uri: openai
             parameters:
+              operation: chat-completion
+              jsonSchema: resource:classpath:pii.schema.json
+              systemMessage: "You are a strict data privacy compliance 
assistant.\
+                \ Your goal is to analyze the user input, redact all PII, and 
return\
+                \ the results in the specified JSON format. RULES: 1. ONLY 
redact\
+                \ specific identifiers, 2. DO NOT redact generic titles, 
roles,\
+                \ or common nouns unless they are part of a proper noun. 3. 
Preserve\
+                \ the grammatical structure of the sentence."
               temperature: 0.15
-              jsonSchema: "resource:classpath:pii.schema.json"
-              systemMessage: "You are a strict data privacy compliance 
assistant. Your goal is to analyze the user input, redact all PII, and return 
the results in the specified JSON format. RULES: 1. ONLY redact specific 
identifiers, 2. DO NOT redact generic titles, roles, or common nouns unless 
they are part of a proper noun. 3. Preserve the grammatical structure of the 
sentence."
-
 - route:
     from:
       uri: stream
@@ -19,4 +26,8 @@
             uri: direct
             parameters:
               name: pii-redaction
-        - to: "stream:out"
+        - to:
+            uri: stream
+            parameters:
+              kind: out
+
diff --git a/openapi/client/petstore-client.camel.yaml 
b/openapi/client/petstore-client.camel.yaml
index 658dd4e..f152552 100644
--- a/openapi/client/petstore-client.camel.yaml
+++ b/openapi/client/petstore-client.camel.yaml
@@ -1,26 +1,32 @@
 - route:
     from:
-      uri: "file://examples/"
+      uri: file
       parameters:
+        directoryName: examples/
         noop: true
       steps:
         - convertBodyTo:
-            type: "java.lang.String"
-            charset: "UTF8"
+            type: java.lang.String
+            charset: UTF8
         - setHeader:
-            name: "petId"
+            name: petId
             expression:
-              simple: "${file:onlyname.noext}"
+              simple:
+                expression: "${file:onlyname.noext}"
         - setHeader:
-            name: "Content-Type"
+            name: Content-Type
             expression:
-              constant: "application/json"
+              constant:
+                expression: application/json
         - to:
-            uri: "log:info"
+            uri: log
             parameters:
+              loggerName: info
               showHeaders: true
         - to:
-            uri: "kamelet:rest-openapi-sink"
+            uri: kamelet
             parameters:
-              specification: '{{openapi.specification.url}}'
+              templateId: rest-openapi-sink
               operation: addPet
+              specification: "{{openapi.specification.url}}"
+
diff --git a/routes/routes.camel.yaml b/routes/routes.camel.yaml
index 1bb2939..a15415f 100644
--- a/routes/routes.camel.yaml
+++ b/routes/routes.camel.yaml
@@ -1,12 +1,17 @@
 - route:
     id: greeting-route
     from:
-      uri: timer:start
+      uri: timer
       parameters:
+        timerName: start
         period: 1000
       steps:
         - setBody:
-            simple: I'm ${routeId}
+            expression:
+              simple:
+                expression: "I'm ${routeId}"
         - bean:
             ref: greeter
-        - log: ${body}
+        - log:
+            message: "${body}"
+
diff --git a/smart-log-analyzer/analyzer/error-analyzer.camel.yaml 
b/smart-log-analyzer/analyzer/error-analyzer.camel.yaml
index 406f570..ea84554 100644
--- a/smart-log-analyzer/analyzer/error-analyzer.camel.yaml
+++ b/smart-log-analyzer/analyzer/error-analyzer.camel.yaml
@@ -1,74 +1,85 @@
-# Analyzes error logs by retrieving OpenTelemetry events from Infinispan
-# and sending them to an LLM for root cause analysis and recommendations
 - route:
     id: error-log-analyzer
     from:
-      uri: jms:{{camel.jms.queue.error-logs}}
+      uri: jms
+      parameters:
+        destinationName: "{{camel.jms.queue.error-logs}}"
       steps:
         - log:
-            loggingLevel: INFO
             message: Received ERROR log for analysis
         - setVariable:
             name: traceId
-            simple: ${body}
+            expression:
+              simple:
+                expression: "${body}"
         - log:
-            loggingLevel: INFO
             message: "Retrieving all events for traceId: ${variable.traceId}"
         - setHeader:
             name: CamelInfinispanKey
-            simple: otel-${variable.traceId}
+            expression:
+              simple:
+                expression: "otel-${variable.traceId}"
         - to:
-            uri: infinispan:events
+            uri: infinispan
             parameters:
+              cacheName: events
               operation: GET
         - choice:
-            otherwise:
-              steps:
-                - log:
-                    loggingLevel: WARN
-                    message: "No events found in Infinispan for traceId: 
${variable.traceId}"
             when:
-              - steps:
+              - expression:
+                  simple:
+                    expression: "${body} != null && ${body} != ''"
+                steps:
                   - setVariable:
                       name: recordCount
-                      jq:
-                        expression: length
-                        resultType: java.lang.String
+                      expression:
+                        jq:
+                          resultType: java.lang.String
+                          expression: length
                   - log:
-                      message: Sending ${variable.recordCount} records to LLM 
for analysis
+                      message: "Sending ${variable.recordCount} records to LLM 
for\
+                        \ analysis"
                   - setVariable:
                       name: eventsJson
-                      simple: ${body}
+                      expression:
+                        simple:
+                          expression: "${body}"
                   - setBody:
-                      simple: >
-                        Analyze the following OpenTelemetry logs and traces for
-                        traceId ${variable.traceId}.
-
-                        Identify the root cause of the error, explain what
-                        happened, and suggest possible fixes.
-
-
-                        Events (sorted by timestamp):
+                      expression:
+                        simple:
+                          expression: |
+                            Analyze the following OpenTelemetry logs and 
traces for traceId ${variable.traceId}.
+                            Identify the root cause of the error, explain what 
happened, and suggest possible fixes.
 
-                        ${variable.eventsJson}
+                            Events (sorted by timestamp):
+                            ${variable.eventsJson}
                   - to:
-                      uri: openai:chat-completion
+                      uri: openai
                       parameters:
-                        systemMessage: >
-                          You are an expert DevOps engineer and log analyst.
-                          Analyze OpenTelemetry logs and traces to identify
-                          errors, their root causes, and provide actionable
-                          recommendations. Be concise and focus on the error.
-                          You want to build a tree of calls by associating each
-                          span with its parent,  where parentSpanId corresponds
-                          to the parent caller’s spanId.
+                        operation: chat-completion
+                        systemMessage: "You are an expert DevOps engineer and 
log\
+                          \ analyst. Analyze OpenTelemetry logs and traces to 
identify\
+                          \ errors, their root causes, and provide actionable 
recommendations.\
+                          \ Be concise and focus on the error. You want to 
build\
+                          \ a tree of calls by associating each span with its 
parent,\
+                          \  where parentSpanId corresponds to the parent 
caller’\
+                          s spanId."
                   - log:
                       message: "LLM Analysis for traceId ${variable.traceId}: 
${body}"
                   - setHeader:
                       name: traceId
-                      simple: "${variable.traceId}"
+                      expression:
+                        simple:
+                          expression: "${variable.traceId}"
                   - to:
-                      uri: jms:{{camel.jms.queue.analysis-result}}
+                      uri: jms
+                      parameters:
+                        destinationName: "{{camel.jms.queue.analysis-result}}"
                   - log:
                       message: "Sent analysis result to queue for traceId: 
${variable.traceId}"
-                simple: ${body} != null && ${body} != ''
+            otherwise:
+              steps:
+                - log:
+                    message: "No events found in Infinispan for traceId: 
${variable.traceId}"
+                    loggingLevel: WARN
+
diff --git a/smart-log-analyzer/correlator/infinispan.camel.yaml 
b/smart-log-analyzer/correlator/infinispan.camel.yaml
index 29a400d..c057864 100644
--- a/smart-log-analyzer/correlator/infinispan.camel.yaml
+++ b/smart-log-analyzer/correlator/infinispan.camel.yaml
@@ -1,104 +1,130 @@
-# Stores OpenTelemetry records in Infinispan cache, grouped by traceId
-# and marks ERROR events for deferred processing
 - route:
-    id: route-1200
     from:
-      id: from-9847
       uri: direct
       parameters:
         name: store
       steps:
         - log:
             id: log-record
-            loggingLevel: DEBUG
             message: "Processing record: ${body}"
+            loggingLevel: DEBUG
         - setVariable:
-            jq:
-              expression: .traceId
-              resultType: java.lang.String
             name: traceId
+            expression:
+              jq:
+                resultType: java.lang.String
+                expression: .traceId
         - filter:
             expression:
-              simple: ${variable.traceId} != null && ${variable.traceId} != ''
+              simple:
+                expression: "${variable.traceId} != null && 
${variable.traceId}\
+                  \ != ''"
             steps:
               - claimCheck:
-                  key: currentRecord
                   operation: Set
+                  key: currentRecord
               - setHeader:
                   name: CamelInfinispanKey
-                  simple: otel-${variable.traceId}
+                  expression:
+                    simple:
+                      expression: "otel-${variable.traceId}"
               - to:
-                  uri: infinispan:events
+                  uri: infinispan
                   parameters:
+                    cacheName: events
                     operation: GET
               - choice:
-                  otherwise:
-                    steps:
-                      - claimCheck:
-                          key: currentRecord
-                          operation: Get
-                      - setBody:
-                          jq:
-                            expression: "[.]"
-                            resultType: java.lang.String
                   when:
-                    - steps:
+                    - expression:
+                        simple:
+                          expression: "${body} != null && ${body} != ''"
+                      steps:
                         - setVariable:
                             name: existingRecords
-                            simple: ${body}
+                            expression:
+                              simple:
+                                expression: "${body}"
                         - claimCheck:
-                            key: currentRecord
                             operation: Get
+                            key: currentRecord
                         - setBody:
+                            expression:
+                              jq:
+                                resultType: java.lang.String
+                                expression: "(variable(\"existingRecords\") | 
fromjson)\
+                                  \ + [.] | sort_by(.timeUnixNano)"
+                  otherwise:
+                    steps:
+                      - claimCheck:
+                          operation: Get
+                          key: currentRecord
+                      - setBody:
+                          expression:
                             jq:
-                              expression: (variable("existingRecords") | 
fromjson) + [.] |
-                                sort_by(.timeUnixNano)
                               resultType: java.lang.String
-                      simple: ${body} != null && ${body} != ''
+                              expression: "[.]"
               - setHeader:
                   name: CamelInfinispanKey
-                  simple: otel-${variable.traceId}
+                  expression:
+                    simple:
+                      expression: "otel-${variable.traceId}"
               - setHeader:
                   name: CamelInfinispanValue
-                  simple: ${body}
+                  expression:
+                    simple:
+                      expression: "${body}"
               - to:
-                  uri: infinispan:events
+                  uri: infinispan
                   parameters:
+                    cacheName: events
                     operation: PUT
               - claimCheck:
-                  key: currentRecord
                   operation: GetAndRemove
+                  key: currentRecord
               - log:
                   id: log-stored
                   message: "Stored record for traceId: ${variable.traceId}"
               - choice:
                   when:
-                    - steps:
+                    - expression:
+                        jq:
+                          expression: (.severityText // "" | ascii_downcase) ==
+                            "error" or .status == "2"
+                      steps:
                         - log:
-                            message: "Adding ERROR log to events-to-process 
cache for traceId:
-                              ${variable.traceId}"
+                            message: "Adding ERROR log to events-to-process 
cache\
+                              \ for traceId: ${variable.traceId}"
                         - setHeader:
                             name: CamelInfinispanKey
-                            simple: ${variable.traceId}
+                            expression:
+                              simple:
+                                expression: "${variable.traceId}"
                         - setHeader:
                             name: CamelInfinispanValue
-                            simple: ${variable.traceId}
+                            expression:
+                              simple:
+                                expression: "${variable.traceId}"
                         - to:
-                            uri: infinispan:events-to-process
+                            uri: infinispan
                             parameters:
+                              cacheName: events-to-process
                               operation: PUTIFABSENT
-                      jq:
-                        expression: (.severityText // "" | ascii_downcase) == 
"error" or .status == "2"
 - route:
     id: route-expired-events
     from:
-      uri: infinispan:events-to-process
+      uri: infinispan
       parameters:
+        cacheName: events-to-process
         eventTypes: CLIENT_CACHE_ENTRY_EXPIRED
       steps:
         - setBody:
-            simple: ${header.CamelInfinispanKey}
+            expression:
+              simple:
+                expression: "${header.CamelInfinispanKey}"
         - log:
             message: "Expired cache entry received, sending to JMS queue: 
${body}"
         - to:
-            uri: jms:{{camel.jms.queue.error-logs}}
+            uri: jms
+            parameters:
+              destinationName: "{{camel.jms.queue.error-logs}}"
+
diff --git a/smart-log-analyzer/correlator/logs-mapper.camel.yaml 
b/smart-log-analyzer/correlator/logs-mapper.camel.yaml
index f4f85df..a8c9d72 100644
--- a/smart-log-analyzer/correlator/logs-mapper.camel.yaml
+++ b/smart-log-analyzer/correlator/logs-mapper.camel.yaml
@@ -1,27 +1,28 @@
 - route:
     id: log-consumer
     from:
-      uri: kafka:{{camel.kafka.topic.logs}}
+      uri: kafka
       parameters:
+        topic: "{{camel.kafka.topic.logs}}"
         autoOffsetReset: earliest
         groupId: correlator
       steps:
         - log:
+            message: "Received log from Kafka \\n ${body}"
             loggingLevel: DEBUG
-            message: Received log from Kafka \n ${body}
         - split:
             id: split-logs
             expression:
               jsonpath:
-                expression: $.resourceLogs[*].scopeLogs[*].logRecords[*]
-                writeAsString: true
+                writeAsString: "true"
+                expression: "$.resourceLogs[*].scopeLogs[*].logRecords[*]"
             steps:
               - setHeader:
                   id: set-logs-header
+                  name: logs
                   expression:
                     simple:
-                      expression: ${body}
-                  name: logs
+                      expression: "${body}"
               - setBody:
                   id: set-dummy-xml
                   expression:
@@ -32,14 +33,15 @@
                   steps:
                     - to:
                         id: kaoto-datamapper-xslt
-                        uri: xslt-saxon:kaoto-datamapper-4a94acc3.xsl
+                        uri: xslt-saxon
                         parameters:
+                          resourceUri: kaoto-datamapper-4a94acc3.xsl
                           allowStAX: true
               - log:
-                  loggingLevel: DEBUG
                   message: "Mapped output: ${body}"
+                  loggingLevel: DEBUG
               - to:
-                  id: to-2266
                   uri: direct
                   parameters:
                     name: store
+
diff --git a/smart-log-analyzer/correlator/traces-mapper.camel.yaml 
b/smart-log-analyzer/correlator/traces-mapper.camel.yaml
index 27c6f67..bdc2ca7 100644
--- a/smart-log-analyzer/correlator/traces-mapper.camel.yaml
+++ b/smart-log-analyzer/correlator/traces-mapper.camel.yaml
@@ -1,27 +1,28 @@
 - route:
     id: trace-consumer
     from:
-      uri: kafka:{{camel.kafka.topic.spans}}
+      uri: kafka
       parameters:
+        topic: "{{camel.kafka.topic.spans}}"
         autoOffsetReset: earliest
         groupId: correlator
       steps:
         - log:
+            message: "Received trace from Kafka\\n${body}"
             loggingLevel: DEBUG
-            message: Received trace from Kafka\n${body}
         - split:
             id: split-spans
             expression:
               jsonpath:
-                expression: $.resourceSpans[*].scopeSpans[*].spans[*]
-                writeAsString: true
+                writeAsString: "true"
+                expression: "$.resourceSpans[*].scopeSpans[*].spans[*]"
             steps:
               - setHeader:
                   id: set-traces-header
+                  name: traces
                   expression:
                     simple:
-                      expression: ${body}
-                  name: traces
+                      expression: "${body}"
               - setBody:
                   id: set-dummy-xml-1
                   expression:
@@ -31,15 +32,15 @@
                   id: kaoto-datamapper-8f5bb2dd
                   steps:
                     - to:
-                        id: kaoto-datamapper-xslt-1526
-                        uri: xslt-saxon:kaoto-datamapper-8f5bb2dd.xsl
+                        uri: xslt-saxon
                         parameters:
+                          resourceUri: kaoto-datamapper-8f5bb2dd.xsl
                           allowStAX: true
               - log:
-                  loggingLevel: DEBUG
                   message: "Mapped output: ${body}"
+                  loggingLevel: DEBUG
               - to:
-                  id: to-22661
                   uri: direct
                   parameters:
                     name: store
+
diff --git a/smart-log-analyzer/first-iteration/analyzer.camel.yaml 
b/smart-log-analyzer/first-iteration/analyzer.camel.yaml
index 01cc80d..76c5a5e 100644
--- a/smart-log-analyzer/first-iteration/analyzer.camel.yaml
+++ b/smart-log-analyzer/first-iteration/analyzer.camel.yaml
@@ -1,62 +1,66 @@
-# Consumes log events from Kafka, aggregates by traceId, and sends
-# to LLM for analysis when an ERROR level event is detected
+- beans:
+    - name: stringAggregationStrategy
+      type: "org.apache.camel.processor.aggregate.StringAggregationStrategy"
 - route:
     id: log-event-consumer
     from:
-      uri: kafka:log-events
+      uri: kafka
       parameters:
+        topic: log-events
         autoOffsetReset: earliest
         brokers: localhost:9092
         groupId: log-analyzer
       steps:
         - log:
-            loggingLevel: DEBUG
             message: "Received event from Kafka: ${body}"
+            loggingLevel: DEBUG
         - setVariable:
             name: traceId
-            jq:
-              expression: .traceId
-              resultType: java.lang.String
+            expression:
+              jq:
+                resultType: java.lang.String
+                expression: .traceId
         - setVariable:
             name: level
-            jq:
-              expression: .level
-              resultType: java.lang.String
+            expression:
+              jq:
+                resultType: java.lang.String
+                expression: .level
         - aggregate:
+            aggregationStrategy: "#stringAggregationStrategy"
+            completionTimeout: 30000
             correlationExpression:
               simple:
-                expression: ${variable.traceId}
-            aggregationStrategy: "#stringAggregationStrategy"
+                expression: "${variable.traceId}"
             completionPredicate:
               simple:
-                expression: ${variable.level} == 'ERROR'
-            completionTimeout: 30000
+                expression: "${variable.level} == 'ERROR'"
             steps:
               - log:
-                  message: "Aggregation completed for traceId: 
${variable.traceId} - sending to LLM"
+                  message: "Aggregation completed for traceId: 
${variable.traceId}\
+                    \ - sending to LLM"
               - setVariable:
                   name: eventsJson
-                  simple: ${body}
+                  expression:
+                    simple:
+                      expression: "${body}"
               - setBody:
-                  simple: >
-                    Analyze the following log events for traceId 
${variable.traceId}.
-
-                    An ERROR was detected. Identify the root cause, explain 
what
-                    happened in the sequence of events, and suggest possible 
fixes.
-
-                    Events: ${variable.eventsJson}
+                  expression:
+                    simple:
+                      expression: |
+                        Analyze the following log events for traceId 
${variable.traceId}.
+                        An ERROR was detected. Identify the root cause, 
explain what happened in the sequence of events, and suggest possible fixes.
+                        Events: ${variable.eventsJson}
               - to:
-                  uri: openai:chat-completion
+                  uri: openai
                   parameters:
+                    operation: chat-completion
                     apiKey: not-needed
                     baseUrl: http://localhost:11434/v1
                     model: granite4:3b
-                    systemMessage: >
-                      Analyze log events to identify errors, their root 
causes, and
-                      provide actionable recommendations. Be concise and focus
-                      on the error chain and sequence of events.
+                    systemMessage: "Analyze log events to identify errors, 
their\
+                      \ root causes, and provide actionable recommendations. 
Be\
+                      \ concise and focus on the error chain and sequence of 
events."
               - log:
                   message: "LLM Analysis for traceId ${variable.traceId}: 
${body}"
-- beans:
-    - name: stringAggregationStrategy
-      type: org.apache.camel.processor.aggregate.StringAggregationStrategy
\ No newline at end of file
+
diff --git a/smart-log-analyzer/first-iteration/load-generator.camel.yaml 
b/smart-log-analyzer/first-iteration/load-generator.camel.yaml
index 3a8f248..ac052c0 100644
--- a/smart-log-analyzer/first-iteration/load-generator.camel.yaml
+++ b/smart-log-analyzer/first-iteration/load-generator.camel.yaml
@@ -1,48 +1,56 @@
 - route:
     id: event-generator
     from:
-      uri: timer:eventGenerator
+      uri: timer
       parameters:
+        timerName: eventGenerator
         period: 5000
       steps:
-        # Generate a new traceId for each timer event
         - setVariable:
             name: traceId
-            simple: "${random(10000,99999)}-${date:now:yyyyMMddHHmmssSSS}"
-
-        # Send first INFO event
+            expression:
+              simple:
+                expression: 
"${random(10000,99999)}-${date:now:yyyyMMddHHmmssSSS}"
         - setBody:
-            simple: |
-              {"traceId": "${variable.traceId}", "level": "INFO", "message": 
"Application started processing request", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
+            expression:
+              simple:
+                expression: |
+                  {"traceId": "${variable.traceId}", "level": "INFO", 
"message": "Application started processing request", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
         - to:
-            uri: kafka:log-events
+            uri: kafka
             parameters:
+              topic: log-events
               brokers: localhost:9092
-
-        # Send second INFO event
         - setBody:
-            simple: |
-              {"traceId": "${variable.traceId}", "level": "INFO", "message": 
"Request validation completed successfully", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
+            expression:
+              simple:
+                expression: |
+                  {"traceId": "${variable.traceId}", "level": "INFO", 
"message": "Request validation completed successfully", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
         - to:
-            uri: kafka:log-events
+            uri: kafka
             parameters:
+              topic: log-events
               brokers: localhost:9092
-
-        # 30% chance of generating an ERROR event
         - choice:
             when:
-              - simple: "${random(1,10)} <= 3"
+              - expression:
+                  simple:
+                    expression: "${random(1,10)} <= 3"
                 steps:
                   - setBody:
-                      simple: |
-                        {"traceId": "${variable.traceId}", "level": "ERROR", 
"message": "Unexpected error occurred during processing", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
+                      expression:
+                        simple:
+                          expression: |
+                            {"traceId": "${variable.traceId}", "level": 
"ERROR", "message": "Unexpected error occurred during processing", "timestamp": 
"${date:now:yyyy-MM-dd'T'HH:mm:ss.SSSZ}"}
                   - to:
-                      uri: kafka:log-events
+                      uri: kafka
                       parameters:
+                        topic: log-events
                         brokers: localhost:9092
                   - log:
                       message: "ERROR event sent for traceId: 
${variable.traceId}"
             otherwise:
               steps:
                 - log:
-                    message: "No error generated for traceId: 
${variable.traceId}"
\ No newline at end of file
+                    message: "No error generated for traceId: 
${variable.traceId}"
+
diff --git a/smart-log-analyzer/log-generator/log-generator.camel.yaml 
b/smart-log-analyzer/log-generator/log-generator.camel.yaml
index dcd316f..898890b 100644
--- a/smart-log-analyzer/log-generator/log-generator.camel.yaml
+++ b/smart-log-analyzer/log-generator/log-generator.camel.yaml
@@ -1,87 +1,84 @@
-# Simulates order processing with random success/failure outcomes (30% failure 
rate)
-# to generate realistic log data for testing the error analyzer
 - route:
     id: order-processor
     from:
-      uri: timer:orderProcessor
+      uri: timer
       parameters:
-        period: "{{timer.order.period:2000}}"
+        timerName: orderProcessor
         fixedRate: true
+        period: "{{timer.order.period:2000}}"
       steps:
-
-        # Generate random order ID
         - setVariable:
             name: orderId
-            simple: "ORD-${random(10000,99999)}"
-
-        # Log: Order received
+            expression:
+              simple:
+                expression: "ORD-${random(10000,99999)}"
         - log:
             message: "Received new order ${variable.orderId} from customer 
${random(1000,9999)}"
-            loggingLevel: INFO
             logName: com.example.order.OrderService
-
-        # Log: Validation
         - log:
-            message: "Validating order ${variable.orderId}: checking inventory 
and pricing"
-            loggingLevel: INFO
+            message: "Validating order ${variable.orderId}: checking inventory 
and\
+              \ pricing"
             logName: com.example.order.ValidationService
-
-        # Simulate random processing outcomes (30% failure rate)
         - choice:
             when:
-              - simple: "${random(0,100)} < 30"
+              - expression:
+                  simple:
+                    expression: "${random(0,100)} < 30"
                 steps:
-                  # Simulate different error types
                   - choice:
                       when:
-                        - simple: "${random(0,100)} < 33"
+                        - expression:
+                            simple:
+                              expression: "${random(0,100)} < 33"
                           steps:
                             - log:
                                 message: "Connecting to database for order 
${variable.orderId}"
-                                loggingLevel: INFO
                                 logName: com.example.order.DatabaseService
                             - throwException:
-                                message: "Database connection failed: 
Connection refused to postgres:5432 while processing order ${variable.orderId}"
+                                message: "Database connection failed: 
Connection\
+                                  \ refused to postgres:5432 while processing 
order\
+                                  \ ${variable.orderId}"
                                 exceptionType: java.lang.RuntimeException
-                        - simple: "${random(0,100)} < 66"
+                        - expression:
+                            simple:
+                              expression: "${random(0,100)} < 66"
                           steps:
                             - log:
                                 message: "Initiating payment for order 
${variable.orderId}"
-                                loggingLevel: INFO
                                 logName: com.example.payment.PaymentGateway
                             - throwException:
-                                message: "Network timeout while connecting to 
payment gateway api.stripe.com for order ${variable.orderId}"
+                                message: "Network timeout while connecting to 
payment\
+                                  \ gateway api.stripe.com for order 
${variable.orderId}"
                                 exceptionType: java.lang.RuntimeException
                       otherwise:
                         steps:
                           - log:
-                              message: "Verifying user authentication for 
order ${variable.orderId}"
-                              loggingLevel: INFO
+                              message: "Verifying user authentication for 
order\
+                                \ ${variable.orderId}"
                               logName: com.example.auth.AuthService
                           - throwException:
-                              message: "Authentication failed: Invalid JWT 
token signature for order ${variable.orderId}"
+                              message: "Authentication failed: Invalid JWT 
token\
+                                \ signature for order ${variable.orderId}"
                               exceptionType: java.lang.RuntimeException
             otherwise:
               steps:
                 - log:
                     message: "Payment processed successfully for order 
${variable.orderId}"
-                    loggingLevel: INFO
                     logName: com.example.payment.PaymentGateway
                 - log:
                     message: "Order ${variable.orderId} completed successfully"
-                    loggingLevel: INFO
                     logName: com.example.order.OrderService
-
-# Periodic health check logging for system monitoring
 - route:
     id: health-checker
     from:
-      uri: timer:healthCheck
+      uri: timer
       parameters:
-        period: 5000
+        timerName: healthCheck
         fixedRate: true
+        period: 5000
       steps:
         - log:
             message: "Health check: All systems operational"
             loggingLevel: DEBUG
             logName: com.example.health.HealthChecker
+
diff --git a/smart-log-analyzer/ui-console/jms-file-storage.camel.yaml 
b/smart-log-analyzer/ui-console/jms-file-storage.camel.yaml
index b426959..1aca29b 100644
--- a/smart-log-analyzer/ui-console/jms-file-storage.camel.yaml
+++ b/smart-log-analyzer/ui-console/jms-file-storage.camel.yaml
@@ -1,14 +1,21 @@
 - route:
     id: jms-to-file-storage
     from:
-      uri: jms:{{camel.jms.queue.analysis-result}}
+      uri: jms
+      parameters:
+        destinationName: "{{camel.jms.queue.analysis-result}}"
       steps:
         - log:
             message: "Received message from JMS queue: ${body}"
         - setHeader:
             name: CamelFileName
-            simple: ${header.traceId}.txt
+            expression:
+              simple:
+                expression: "${header.traceId}.txt"
         - to:
-            uri: file:{{analyzer.storage.root}}
+            uri: file
+            parameters:
+              directoryName: "{{analyzer.storage.root}}"
         - log:
             message: "Saved content for traceId: ${header.traceId}"
+
diff --git a/sql/sql.camel.yaml b/sql/sql.camel.yaml
index 54fcc87..e7a18a2 100644
--- a/sql/sql.camel.yaml
+++ b/sql/sql.camel.yaml
@@ -1,20 +1,41 @@
 - route:
     from:
-      uri: timer:create?repeatCount=1&delay=500
+      uri: timer
+      parameters:
+        timerName: create
+        repeatCount: 1
+        delay: 500
       steps:
         - to:
-            uri: sql:CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, 
name varchar(20), byear integer);
+            uri: sql
+            parameters:
+              query: "CREATE TABLE IF NOT EXISTS users(id integer PRIMARY KEY, 
name\
+                \ varchar(20), byear integer);"
 - route:
     from:
-      uri: timer:insert?repeatCount=1&delay=1000
+      uri: timer
+      parameters:
+        timerName: insert
+        repeatCount: 1
+        delay: 1000
       steps:
         - to:
-            uri: sql:INSERT INTO users(id, name, byear) VALUES(1, 'Camel', 
2025) ON CONFLICT DO NOTHING;
+            uri: sql
+            parameters:
+              query: "INSERT INTO users(id, name, byear) VALUES(1, 'Camel', 
2025)\
+                \ ON CONFLICT DO NOTHING;"
 - route:
     from:
-      uri: timer:select?repeatCount=1&delay=2000
+      uri: timer
+      parameters:
+        timerName: select
+        repeatCount: 1
+        delay: 2000
       steps:
         - to:
-            uri: sql:SELECT * FROM users
+            uri: sql
+            parameters:
+              query: SELECT * FROM users
         - log:
-            message: ${body}
+            message: "${body}"
+
diff --git a/timer-log/timer-log.camel.yaml b/timer-log/timer-log.camel.yaml
index cdff71b..638582c 100644
--- a/timer-log/timer-log.camel.yaml
+++ b/timer-log/timer-log.camel.yaml
@@ -1,10 +1,15 @@
 - route:
     id: timer-log
     from:
-      uri: timer:tick
+      uri: timer
       parameters:
-        period: "1000"
+        timerName: tick
+        period: 1000
       steps:
         - setBody:
-            simple: "Hello Camel! (message 
#${exchangeProperty.CamelTimerCounter})"
-        - log: "${body}"
+            expression:
+              simple:
+                expression: "Hello Camel! (message 
#${exchangeProperty.CamelTimerCounter})"
+        - log:
+            message: "${body}"
+
diff --git a/xslt/consumer.camel.yaml b/xslt/consumer.camel.yaml
index 6ee1127..eace713 100644
--- a/xslt/consumer.camel.yaml
+++ b/xslt/consumer.camel.yaml
@@ -1,7 +1,8 @@
 - route:
     from:
-      uri: file://input
+      uri: file
       parameters:
+        directoryName: input
         fileName: account.xml
         noop: true
       steps:
@@ -10,4 +11,5 @@
             parameters:
               resourceUri: stylesheet.xsl
         - log:
-            message: Transformed data:\n ${prettyBody}
+            message: "Transformed data:\\n ${prettyBody}"
+

Reply via email to