You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2023/12/18 20:10:33 UTC

(camel-karavan) branch main updated: Fix #989

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

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


The following commit(s) were added to refs/heads/main by this push:
     new 24fca714 Fix #989
24fca714 is described below

commit 24fca7146425556a875983638f7b747b1566c4dc
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Mon Dec 18 15:10:20 2023 -0500

    Fix #989
---
 karavan-core/src/core/api/CamelDefinitionApi.ts    |  83 +--
 .../src/core/api/CamelDefinitionYamlStep.ts        | 109 ++--
 karavan-core/src/core/model/CamelDefinition.ts     | 675 +++++++++++----------
 karavan-core/src/core/model/CamelMetadata.ts       | 629 ++++++++++---------
 karavan-core/test/errorHandler1.yaml               |  12 +-
 karavan-core/test/findStep.yaml                    |  20 +-
 karavan-core/test/plain-try-catch.yaml             |  14 +-
 karavan-core/test/plain4.yaml                      |   2 +-
 karavan-core/test/routes1.yaml                     |  20 +-
 .../designer/route/element/DslElementHeader.tsx    |   3 +-
 karavan-designer/src/designer/utils/CamelUi.tsx    |   8 +-
 karavan-generator/pom.xml                          |   6 +-
 .../camel/karavan/generator/AbstractGenerator.java |  32 +-
 karavan-space/src/designer/KaravanDesigner.tsx     |   1 +
 karavan-space/src/designer/beans/BeanCard.tsx      |   4 +-
 .../src/designer/beans/BeanProperties.tsx          |   8 +-
 karavan-space/src/designer/beans/BeansDesigner.tsx |  12 +-
 .../src/designer/icons/ComponentIcons.tsx          |   5 +-
 karavan-space/src/designer/rest/RestCard.tsx       |   7 +-
 .../src/designer/rest/RestConfigurationCard.tsx    |   4 +-
 karavan-space/src/designer/rest/RestDesigner.tsx   |  13 +-
 karavan-space/src/designer/rest/RestMethodCard.tsx |   4 +-
 karavan-space/src/designer/route/RouteDesigner.tsx |   4 +-
 .../src/designer/route/element/DslElement.css      |  14 -
 .../src/designer/route/element/DslElement.tsx      |   2 +-
 .../designer/route/element/DslElementHeader.tsx    |   5 +-
 .../route/property/ComponentParameterField.tsx     |   4 +-
 .../designer/route/property/DslPropertyField.css   |   6 +
 .../designer/route/property/DslPropertyField.tsx   |   4 +-
 .../route/property/KameletPropertyField.tsx        |   4 +-
 karavan-space/src/designer/utils/CamelUi.tsx       |   8 +-
 .../DslPropertyField.css => utils/ElementIcon.css} |  19 +-
 karavan-space/src/designer/utils/ElementIcons.tsx  |  81 +++
 .../main/webui/src/designer/KaravanDesigner.tsx    |   1 +
 .../src/main/webui/src/designer/beans/BeanCard.tsx |   4 +-
 .../webui/src/designer/beans/BeanProperties.tsx    |   8 +-
 .../webui/src/designer/beans/BeansDesigner.tsx     |  12 +-
 .../webui/src/designer/icons/ComponentIcons.tsx    |   5 +-
 .../src/main/webui/src/designer/rest/RestCard.tsx  |   7 +-
 .../src/designer/rest/RestConfigurationCard.tsx    |   4 +-
 .../main/webui/src/designer/rest/RestDesigner.tsx  |  13 +-
 .../webui/src/designer/rest/RestMethodCard.tsx     |   4 +-
 .../webui/src/designer/route/RouteDesigner.tsx     |   4 +-
 .../src/designer/route/element/DslElement.css      |  14 -
 .../src/designer/route/element/DslElement.tsx      |   2 +-
 .../designer/route/element/DslElementHeader.tsx    |   5 +-
 .../route/property/ComponentParameterField.tsx     |   4 +-
 .../designer/route/property/DslPropertyField.css   |   6 +
 .../designer/route/property/DslPropertyField.tsx   |   4 +-
 .../route/property/KameletPropertyField.tsx        |   4 +-
 .../src/main/webui/src/designer/utils/CamelUi.tsx  |   8 +-
 .../main/webui/src/designer/utils/ElementIcon.css  |  19 +-
 .../main/webui/src/designer/utils/ElementIcons.tsx |  81 +++
 53 files changed, 1168 insertions(+), 863 deletions(-)

diff --git a/karavan-core/src/core/api/CamelDefinitionApi.ts b/karavan-core/src/core/api/CamelDefinitionApi.ts
index ea782fb0..041ac9dd 100644
--- a/karavan-core/src/core/api/CamelDefinitionApi.ts
+++ b/karavan-core/src/core/api/CamelDefinitionApi.ts
@@ -32,6 +32,7 @@ import {
     ClaimCheckDefinition,
     ContextScanDefinition,
     ConvertBodyDefinition,
+    ConvertHeaderDefinition,
     DataFormatDefinition,
     DelayDefinition,
     DynamicRouterDefinition,
@@ -97,6 +98,7 @@ import {
     SetBodyDefinition,
     SetExchangePatternDefinition,
     SetHeaderDefinition,
+    SetHeadersDefinition,
     SetPropertyDefinition,
     SortDefinition,
     SplitDefinition,
@@ -120,12 +122,10 @@ import {
     WhenDefinition,
     WhenSkipSendToEndpointDefinition,
     WireTapDefinition,
-    ApplicationDefinition,
     BeanConstructorDefinition,
     BeanConstructorsDefinition,
     BeanPropertiesDefinition,
     BeanPropertyDefinition,
-    BeansDefinition,
     ComponentScanDefinition,
     RegistryBeanDefinition,
     BlacklistServiceCallServiceFilterConfiguration,
@@ -207,6 +207,7 @@ import {
     GroovyExpression,
     HeaderExpression,
     Hl7TerserExpression,
+    JavaExpression,
     JavaScriptExpression,
     JoorExpression,
     JqExpression,
@@ -290,6 +291,9 @@ export class CamelDefinitionApi {
         if (element?.convertBodyTo !== undefined) { 
             def.convertBodyTo = CamelDefinitionApi.createConvertBodyDefinition(element.convertBodyTo); 
         }
+        if (element?.convertHeaderTo !== undefined) { 
+            def.convertHeaderTo = CamelDefinitionApi.createConvertHeaderDefinition(element.convertHeaderTo); 
+        }
         if (element?.delay !== undefined) { 
             def.delay = CamelDefinitionApi.createDelayDefinition(element.delay); 
         }
@@ -392,6 +396,9 @@ export class CamelDefinitionApi {
         if (element?.setHeader !== undefined) { 
             def.setHeader = CamelDefinitionApi.createSetHeaderDefinition(element.setHeader); 
         }
+        if (element?.setHeaders !== undefined) { 
+            def.setHeaders = CamelDefinitionApi.createSetHeadersDefinition(element.setHeaders); 
+        }
         if (element?.setProperty !== undefined) { 
             def.setProperty = CamelDefinitionApi.createSetPropertyDefinition(element.setProperty); 
         }
@@ -568,6 +575,12 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createConvertHeaderDefinition = (element: any): ConvertHeaderDefinition => { 
+        const def = element ? new ConvertHeaderDefinition({...element}) : new ConvertHeaderDefinition();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        return def;
+    }
+
     static createDataFormatDefinition = (element: any): DataFormatDefinition => { 
         const def = element ? new DataFormatDefinition({...element}) : new DataFormatDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -643,6 +656,9 @@ export class CamelDefinitionApi {
         if (element?.hl7terser !== undefined) { 
             def.hl7terser = CamelDefinitionApi.createHl7TerserExpression(element.hl7terser); 
         }
+        if (element?.java !== undefined) { 
+            def.java = CamelDefinitionApi.createJavaExpression(element.java); 
+        }
         if (element?.joor !== undefined) { 
             def.joor = CamelDefinitionApi.createJoorExpression(element.joor); 
         }
@@ -1215,15 +1231,15 @@ export class CamelDefinitionApi {
     static createRouteDefinition = (element: any): RouteDefinition => { 
         const def = element ? new RouteDefinition({...element}) : new RouteDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
-        if (element?.from !== undefined) { 
-            def.from = CamelDefinitionApi.createFromDefinition(element.from); 
-        }
         if (element?.inputType !== undefined) { 
             def.inputType = CamelDefinitionApi.createInputTypeDefinition(element.inputType); 
         }
         if (element?.outputType !== undefined) { 
             def.outputType = CamelDefinitionApi.createOutputTypeDefinition(element.outputType); 
         }
+        if (element?.from !== undefined) { 
+            def.from = CamelDefinitionApi.createFromDefinition(element.from); 
+        }
         return def;
     }
 
@@ -1315,6 +1331,13 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createSetHeadersDefinition = (element: any): SetHeadersDefinition => { 
+        const def = element ? new SetHeadersDefinition({...element}) : new SetHeadersDefinition();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        def.headers = element && element?.headers ? element?.headers.map((x:any) => CamelDefinitionApi.createSetHeaderDefinition(x)) :[];
+        return def;
+    }
+
     static createSetPropertyDefinition = (element: any): SetPropertyDefinition => { 
         const def = element ? new SetPropertyDefinition({...element}) : new SetPropertyDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -1611,20 +1634,6 @@ export class CamelDefinitionApi {
         return def;
     }
 
-    static createApplicationDefinition = (element: any): ApplicationDefinition => { 
-        const def = element ? new ApplicationDefinition({...element}) : new ApplicationDefinition();
-        def.uuid = element?.uuid ? element.uuid : def.uuid; 
-        def.bean = element && element?.bean ? element?.bean.map((x:any) => CamelDefinitionApi.createRegistryBeanDefinition(x)) :[];
-        def.componentScan = element && element?.componentScan ? element?.componentScan.map((x:any) => CamelDefinitionApi.createComponentScanDefinition(x)) :[];
-        def.rest = element && element?.rest ? element?.rest.map((x:any) => CamelDefinitionApi.createRestDefinition(x)) :[];
-        def.restConfiguration = element && element?.restConfiguration ? element?.restConfiguration.map((x:any) => CamelDefinitionApi.createRestConfigurationDefinition(x)) :[];
-        def.route = element && element?.route ? element?.route.map((x:any) => CamelDefinitionApi.createRouteDefinition(x)) :[];
-        def.routeConfiguration = element && element?.routeConfiguration ? element?.routeConfiguration.map((x:any) => CamelDefinitionApi.createRouteConfigurationDefinition(x)) :[];
-        def.routeTemplate = element && element?.routeTemplate ? element?.routeTemplate.map((x:any) => CamelDefinitionApi.createRouteTemplateDefinition(x)) :[];
-        def.templatedRoute = element && element?.templatedRoute ? element?.templatedRoute.map((x:any) => CamelDefinitionApi.createTemplatedRouteDefinition(x)) :[];
-        return def;
-    }
-
     static createBeanConstructorDefinition = (element: any): BeanConstructorDefinition => { 
         const def = element ? new BeanConstructorDefinition({...element}) : new BeanConstructorDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -1654,20 +1663,6 @@ export class CamelDefinitionApi {
         return def;
     }
 
-    static createBeansDefinition = (element: any): BeansDefinition => { 
-        const def = element ? new BeansDefinition({...element}) : new BeansDefinition();
-        def.uuid = element?.uuid ? element.uuid : def.uuid; 
-        def.bean = element && element?.bean ? element?.bean.map((x:any) => CamelDefinitionApi.createRegistryBeanDefinition(x)) :[];
-        def.restConfiguration = element && element?.restConfiguration ? element?.restConfiguration.map((x:any) => CamelDefinitionApi.createRestConfigurationDefinition(x)) :[];
-        def.rest = element && element?.rest ? element?.rest.map((x:any) => CamelDefinitionApi.createRestDefinition(x)) :[];
-        def.routeConfiguration = element && element?.routeConfiguration ? element?.routeConfiguration.map((x:any) => CamelDefinitionApi.createRouteConfigurationDefinition(x)) :[];
-        def.routeTemplate = element && element?.routeTemplate ? element?.routeTemplate.map((x:any) => CamelDefinitionApi.createRouteTemplateDefinition(x)) :[];
-        def.templatedRoute = element && element?.templatedRoute ? element?.templatedRoute.map((x:any) => CamelDefinitionApi.createTemplatedRouteDefinition(x)) :[];
-        def.route = element && element?.route ? element?.route.map((x:any) => CamelDefinitionApi.createRouteDefinition(x)) :[];
-        def.componentScan = element && element?.componentScan ? element?.componentScan.map((x:any) => CamelDefinitionApi.createComponentScanDefinition(x)) :[];
-        return def;
-    }
-
     static createComponentScanDefinition = (element: any): ComponentScanDefinition => { 
         const def = element ? new ComponentScanDefinition({...element}) : new ComponentScanDefinition();
         def.uuid = element?.uuid ? element.uuid : def.uuid; 
@@ -2396,6 +2391,9 @@ export class CamelDefinitionApi {
         if (element?.hl7terser !== undefined) { 
             def.hl7terser = CamelDefinitionApi.createHl7TerserExpression(element.hl7terser); 
         }
+        if (element?.java !== undefined) { 
+            def.java = CamelDefinitionApi.createJavaExpression(element.java); 
+        }
         if (element?.joor !== undefined) { 
             def.joor = CamelDefinitionApi.createJoorExpression(element.joor); 
         }
@@ -2474,6 +2472,15 @@ export class CamelDefinitionApi {
         return def;
     }
 
+    static createJavaExpression = (element: any): JavaExpression => { 
+        if (element && typeof element === 'string') {
+            element = {expression: element};
+        }
+        const def = element ? new JavaExpression({...element}) : new JavaExpression();
+        def.uuid = element?.uuid ? element.uuid : def.uuid; 
+        return def;
+    }
+
     static createJavaScriptExpression = (element: any): JavaScriptExpression => { 
         if (element && typeof element === 'string') {
             element = {expression: element};
@@ -2829,8 +2836,8 @@ export class CamelDefinitionApi {
         if (element?.bearer !== undefined) { 
             def.bearer = CamelDefinitionApi.createBearerTokenDefinition(element.bearer); 
         }
-        if (element?.mutualTls !== undefined) { 
-            def.mutualTls = CamelDefinitionApi.createMutualTLSDefinition(element.mutualTls); 
+        if (element?.mutualTLS !== undefined) { 
+            def.mutualTLS = CamelDefinitionApi.createMutualTLSDefinition(element.mutualTLS); 
         }
         if (element?.oauth2 !== undefined) { 
             def.oauth2 = CamelDefinitionApi.createOAuth2Definition(element.oauth2); 
@@ -3066,6 +3073,7 @@ export class CamelDefinitionApi {
             case 'ClaimCheckDefinition': return CamelDefinitionApi.createClaimCheckDefinition(newBody);
             case 'ContextScanDefinition': return CamelDefinitionApi.createContextScanDefinition(newBody);
             case 'ConvertBodyDefinition': return CamelDefinitionApi.createConvertBodyDefinition(newBody);
+            case 'ConvertHeaderDefinition': return CamelDefinitionApi.createConvertHeaderDefinition(newBody);
             case 'DataFormatDefinition': return CamelDefinitionApi.createDataFormatDefinition(newBody);
             case 'DelayDefinition': return CamelDefinitionApi.createDelayDefinition(newBody);
             case 'DynamicRouterDefinition': return CamelDefinitionApi.createDynamicRouterDefinition(newBody);
@@ -3131,6 +3139,7 @@ export class CamelDefinitionApi {
             case 'SetBodyDefinition': return CamelDefinitionApi.createSetBodyDefinition(newBody);
             case 'SetExchangePatternDefinition': return CamelDefinitionApi.createSetExchangePatternDefinition(newBody);
             case 'SetHeaderDefinition': return CamelDefinitionApi.createSetHeaderDefinition(newBody);
+            case 'SetHeadersDefinition': return CamelDefinitionApi.createSetHeadersDefinition(newBody);
             case 'SetPropertyDefinition': return CamelDefinitionApi.createSetPropertyDefinition(newBody);
             case 'SortDefinition': return CamelDefinitionApi.createSortDefinition(newBody);
             case 'SplitDefinition': return CamelDefinitionApi.createSplitDefinition(newBody);
@@ -3154,12 +3163,10 @@ export class CamelDefinitionApi {
             case 'WhenDefinition': return CamelDefinitionApi.createWhenDefinition(newBody);
             case 'WhenSkipSendToEndpointDefinition': return CamelDefinitionApi.createWhenSkipSendToEndpointDefinition(newBody);
             case 'WireTapDefinition': return CamelDefinitionApi.createWireTapDefinition(newBody);
-            case 'ApplicationDefinition': return CamelDefinitionApi.createApplicationDefinition(newBody);
             case 'BeanConstructorDefinition': return CamelDefinitionApi.createBeanConstructorDefinition(newBody);
             case 'BeanConstructorsDefinition': return CamelDefinitionApi.createBeanConstructorsDefinition(newBody);
             case 'BeanPropertiesDefinition': return CamelDefinitionApi.createBeanPropertiesDefinition(newBody);
             case 'BeanPropertyDefinition': return CamelDefinitionApi.createBeanPropertyDefinition(newBody);
-            case 'BeansDefinition': return CamelDefinitionApi.createBeansDefinition(newBody);
             case 'ComponentScanDefinition': return CamelDefinitionApi.createComponentScanDefinition(newBody);
             case 'RegistryBeanDefinition': return CamelDefinitionApi.createRegistryBeanDefinition(newBody);
             case 'BlacklistServiceCallServiceFilterConfiguration': return CamelDefinitionApi.createBlacklistServiceCallServiceFilterConfiguration(newBody);
@@ -3241,6 +3248,7 @@ export class CamelDefinitionApi {
             case 'GroovyExpression': return CamelDefinitionApi.createGroovyExpression(newBody);
             case 'HeaderExpression': return CamelDefinitionApi.createHeaderExpression(newBody);
             case 'Hl7TerserExpression': return CamelDefinitionApi.createHl7TerserExpression(newBody);
+            case 'JavaExpression': return CamelDefinitionApi.createJavaExpression(newBody);
             case 'JavaScriptExpression': return CamelDefinitionApi.createJavaScriptExpression(newBody);
             case 'JoorExpression': return CamelDefinitionApi.createJoorExpression(newBody);
             case 'JqExpression': return CamelDefinitionApi.createJqExpression(newBody);
@@ -3311,6 +3319,7 @@ export class CamelDefinitionApi {
             case 'GroovyExpression': return CamelDefinitionApi.createGroovyExpression(newBody);
             case 'HeaderExpression': return CamelDefinitionApi.createHeaderExpression(newBody);
             case 'Hl7TerserExpression': return CamelDefinitionApi.createHl7TerserExpression(newBody);
+            case 'JavaExpression': return CamelDefinitionApi.createJavaExpression(newBody);
             case 'JoorExpression': return CamelDefinitionApi.createJoorExpression(newBody);
             case 'JqExpression': return CamelDefinitionApi.createJqExpression(newBody);
             case 'JavaScriptExpression': return CamelDefinitionApi.createJavaScriptExpression(newBody);
diff --git a/karavan-core/src/core/api/CamelDefinitionYamlStep.ts b/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
index b87c31d4..1c43b10c 100644
--- a/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
+++ b/karavan-core/src/core/api/CamelDefinitionYamlStep.ts
@@ -33,6 +33,7 @@ import {
     ClaimCheckDefinition,
     ContextScanDefinition,
     ConvertBodyDefinition,
+    ConvertHeaderDefinition,
     DataFormatDefinition,
     DelayDefinition,
     DynamicRouterDefinition,
@@ -98,6 +99,7 @@ import {
     SetBodyDefinition,
     SetExchangePatternDefinition,
     SetHeaderDefinition,
+    SetHeadersDefinition,
     SetPropertyDefinition,
     SortDefinition,
     SplitDefinition,
@@ -121,12 +123,10 @@ import {
     WhenDefinition,
     WhenSkipSendToEndpointDefinition,
     WireTapDefinition,
-    ApplicationDefinition,
     BeanConstructorDefinition,
     BeanConstructorsDefinition,
     BeanPropertiesDefinition,
     BeanPropertyDefinition,
-    BeansDefinition,
     ComponentScanDefinition,
     RegistryBeanDefinition,
     BlacklistServiceCallServiceFilterConfiguration,
@@ -208,6 +208,7 @@ import {
     GroovyExpression,
     HeaderExpression,
     Hl7TerserExpression,
+    JavaExpression,
     JavaScriptExpression,
     JoorExpression,
     JqExpression,
@@ -468,6 +469,13 @@ export class CamelDefinitionYamlStep {
                def.removeProperty = CamelDefinitionYamlStep.readRemovePropertyDefinition(element.removeProperty); 
             } 
         } 
+        if (element?.convertHeaderTo !== undefined) { 
+            if (Array.isArray(element.convertHeaderTo)) { 
+               def.convertHeaderTo = CamelDefinitionYamlStep.readConvertHeaderDefinition(element.convertHeaderTo[0]); 
+            } else { 
+               def.convertHeaderTo = CamelDefinitionYamlStep.readConvertHeaderDefinition(element.convertHeaderTo); 
+            } 
+        } 
         if (element?.pausable !== undefined) { 
             if (Array.isArray(element.pausable)) { 
                def.pausable = CamelDefinitionYamlStep.readPausableDefinition(element.pausable[0]); 
@@ -587,6 +595,13 @@ export class CamelDefinitionYamlStep {
                def.rollback = CamelDefinitionYamlStep.readRollbackDefinition(element.rollback); 
             } 
         } 
+        if (element?.setHeaders !== undefined) { 
+            if (Array.isArray(element.setHeaders)) { 
+               def.setHeaders = CamelDefinitionYamlStep.readSetHeadersDefinition(element.setHeaders[0]); 
+            } else { 
+               def.setHeaders = CamelDefinitionYamlStep.readSetHeadersDefinition(element.setHeaders); 
+            } 
+        } 
         if (element?.process !== undefined) { 
             if (Array.isArray(element.process)) { 
                def.process = CamelDefinitionYamlStep.readProcessDefinition(element.process[0]); 
@@ -877,6 +892,13 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readConvertHeaderDefinition = (element: any): ConvertHeaderDefinition => {
+        
+        let def = element ? new ConvertHeaderDefinition({...element}) : new ConvertHeaderDefinition();
+
+        return def;
+    }
+
     static readDataFormatDefinition = (element: any): DataFormatDefinition => {
         
         let def = element ? new DataFormatDefinition({...element}) : new DataFormatDefinition();
@@ -1102,6 +1124,13 @@ export class CamelDefinitionYamlStep {
                def.groovy = CamelDefinitionYamlStep.readGroovyExpression(element.groovy); 
             } 
         } 
+        if (element?.java !== undefined) { 
+            if (Array.isArray(element.java)) { 
+               def.java = CamelDefinitionYamlStep.readJavaExpression(element.java[0]); 
+            } else { 
+               def.java = CamelDefinitionYamlStep.readJavaExpression(element.java); 
+            } 
+        } 
         if (element?.csimple !== undefined) { 
             if (Array.isArray(element.csimple)) { 
                def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple[0]); 
@@ -1969,13 +1998,6 @@ export class CamelDefinitionYamlStep {
                def.outputType = CamelDefinitionYamlStep.readOutputTypeDefinition(element.outputType); 
             } 
         } 
-        if (element?.from !== undefined) { 
-            if (Array.isArray(element.from)) { 
-               def.from = CamelDefinitionYamlStep.readFromDefinition(element.from[0]); 
-            } else { 
-               def.from = CamelDefinitionYamlStep.readFromDefinition(element.from); 
-            } 
-        } 
         if (element?.inputType !== undefined) { 
             if (Array.isArray(element.inputType)) { 
                def.inputType = CamelDefinitionYamlStep.readInputTypeDefinition(element.inputType[0]); 
@@ -1983,6 +2005,13 @@ export class CamelDefinitionYamlStep {
                def.inputType = CamelDefinitionYamlStep.readInputTypeDefinition(element.inputType); 
             } 
         } 
+        if (element?.from !== undefined) { 
+            if (Array.isArray(element.from)) { 
+               def.from = CamelDefinitionYamlStep.readFromDefinition(element.from[0]); 
+            } else { 
+               def.from = CamelDefinitionYamlStep.readFromDefinition(element.from); 
+            } 
+        } 
 
         return def;
     }
@@ -2128,6 +2157,14 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readSetHeadersDefinition = (element: any): SetHeadersDefinition => {
+        
+        let def = element ? new SetHeadersDefinition({...element}) : new SetHeadersDefinition();
+        def.headers = element && element?.headers ? element?.headers.map((x:any) => CamelDefinitionYamlStep.readSetHeaderDefinition(x)) :[]; 
+
+        return def;
+    }
+
     static readSetPropertyDefinition = (element: any): SetPropertyDefinition => {
         
         let def = element ? new SetPropertyDefinition({...element}) : new SetPropertyDefinition();
@@ -2684,21 +2721,6 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
-    static readApplicationDefinition = (element: any): ApplicationDefinition => {
-        
-        let def = element ? new ApplicationDefinition({...element}) : new ApplicationDefinition();
-        def.rest = element && element?.rest ? element?.rest.map((x:any) => CamelDefinitionYamlStep.readRestDefinition(x)) :[]; 
-        def.routeTemplate = element && element?.routeTemplate ? element?.routeTemplate.map((x:any) => CamelDefinitionYamlStep.readRouteTemplateDefinition(x)) :[]; 
-        def.route = element && element?.route ? element?.route.map((x:any) => CamelDefinitionYamlStep.readRouteDefinition(x)) :[]; 
-        def.restConfiguration = element && element?.restConfiguration ? element?.restConfiguration.map((x:any) => CamelDefinitionYamlStep.readRestConfigurationDefinition(x)) :[]; 
-        def.templatedRoute = element && element?.templatedRoute ? element?.templatedRoute.map((x:any) => CamelDefinitionYamlStep.readTemplatedRouteDefinition(x)) :[]; 
-        def.routeConfiguration = element && element?.routeConfiguration ? element?.routeConfiguration.map((x:any) => CamelDefinitionYamlStep.readRouteConfigurationDefinition(x)) :[]; 
-        def.bean = element && element?.bean ? element?.bean.map((x:any) => CamelDefinitionYamlStep.readRegistryBeanDefinition(x)) :[]; 
-        def.componentScan = element && element?.componentScan ? element?.componentScan.map((x:any) => CamelDefinitionYamlStep.readComponentScanDefinition(x)) :[]; 
-
-        return def;
-    }
-
     static readBeanConstructorDefinition = (element: any): BeanConstructorDefinition => {
         
         let def = element ? new BeanConstructorDefinition({...element}) : new BeanConstructorDefinition();
@@ -2736,21 +2758,6 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
-    static readBeansDefinition = (element: any): BeansDefinition => {
-        
-        let def = element ? new BeansDefinition({...element}) : new BeansDefinition();
-        def.rest = element && element?.rest ? element?.rest.map((x:any) => CamelDefinitionYamlStep.readRestDefinition(x)) :[]; 
-        def.routeTemplate = element && element?.routeTemplate ? element?.routeTemplate.map((x:any) => CamelDefinitionYamlStep.readRouteTemplateDefinition(x)) :[]; 
-        def.route = element && element?.route ? element?.route.map((x:any) => CamelDefinitionYamlStep.readRouteDefinition(x)) :[]; 
-        def.restConfiguration = element && element?.restConfiguration ? element?.restConfiguration.map((x:any) => CamelDefinitionYamlStep.readRestConfigurationDefinition(x)) :[]; 
-        def.templatedRoute = element && element?.templatedRoute ? element?.templatedRoute.map((x:any) => CamelDefinitionYamlStep.readTemplatedRouteDefinition(x)) :[]; 
-        def.routeConfiguration = element && element?.routeConfiguration ? element?.routeConfiguration.map((x:any) => CamelDefinitionYamlStep.readRouteConfigurationDefinition(x)) :[]; 
-        def.bean = element && element?.bean ? element?.bean.map((x:any) => CamelDefinitionYamlStep.readRegistryBeanDefinition(x)) :[]; 
-        def.componentScan = element && element?.componentScan ? element?.componentScan.map((x:any) => CamelDefinitionYamlStep.readComponentScanDefinition(x)) :[]; 
-
-        return def;
-    }
-
     static readComponentScanDefinition = (element: any): ComponentScanDefinition => {
         
         let def = element ? new ComponentScanDefinition({...element}) : new ComponentScanDefinition();
@@ -3910,6 +3917,13 @@ export class CamelDefinitionYamlStep {
                def.groovy = CamelDefinitionYamlStep.readGroovyExpression(element.groovy); 
             } 
         } 
+        if (element?.java !== undefined) { 
+            if (Array.isArray(element.java)) { 
+               def.java = CamelDefinitionYamlStep.readJavaExpression(element.java[0]); 
+            } else { 
+               def.java = CamelDefinitionYamlStep.readJavaExpression(element.java); 
+            } 
+        } 
         if (element?.csimple !== undefined) { 
             if (Array.isArray(element.csimple)) { 
                def.csimple = CamelDefinitionYamlStep.readCSimpleExpression(element.csimple[0]); 
@@ -3977,6 +3991,13 @@ export class CamelDefinitionYamlStep {
         return def;
     }
 
+    static readJavaExpression = (element: any): JavaExpression => {
+        if (element && typeof element === 'string') element = {expression: element};
+        let def = element ? new JavaExpression({...element}) : new JavaExpression();
+
+        return def;
+    }
+
     static readJavaScriptExpression = (element: any): JavaScriptExpression => {
         if (element && typeof element === 'string') element = {expression: element};
         let def = element ? new JavaScriptExpression({...element}) : new JavaScriptExpression();
@@ -4349,11 +4370,11 @@ export class CamelDefinitionYamlStep {
                def.basicAuth = CamelDefinitionYamlStep.readBasicAuthDefinition(element.basicAuth); 
             } 
         } 
-        if (element?.mutualTls !== undefined) { 
-            if (Array.isArray(element.mutualTls)) { 
-               def.mutualTls = CamelDefinitionYamlStep.readMutualTLSDefinition(element.mutualTls[0]); 
+        if (element?.mutualTLS !== undefined) { 
+            if (Array.isArray(element.mutualTLS)) { 
+               def.mutualTLS = CamelDefinitionYamlStep.readMutualTLSDefinition(element.mutualTLS[0]); 
             } else { 
-               def.mutualTls = CamelDefinitionYamlStep.readMutualTLSDefinition(element.mutualTls); 
+               def.mutualTLS = CamelDefinitionYamlStep.readMutualTLSDefinition(element.mutualTLS); 
             } 
         } 
         if (element?.bearer !== undefined) { 
@@ -4805,6 +4826,7 @@ export class CamelDefinitionYamlStep {
             case 'circuitBreaker': return CamelDefinitionYamlStep.readCircuitBreakerDefinition(newBody);
             case 'claimCheck': return CamelDefinitionYamlStep.readClaimCheckDefinition(newBody);
             case 'convertBodyTo': return CamelDefinitionYamlStep.readConvertBodyDefinition(newBody);
+            case 'convertHeaderTo': return CamelDefinitionYamlStep.readConvertHeaderDefinition(newBody);
             case 'delay': return CamelDefinitionYamlStep.readDelayDefinition(newBody);
             case 'dynamicRouter': return CamelDefinitionYamlStep.readDynamicRouterDefinition(newBody);
             case 'enrich': return CamelDefinitionYamlStep.readEnrichDefinition(newBody);
@@ -4839,6 +4861,7 @@ export class CamelDefinitionYamlStep {
             case 'setBody': return CamelDefinitionYamlStep.readSetBodyDefinition(newBody);
             case 'setExchangePattern': return CamelDefinitionYamlStep.readSetExchangePatternDefinition(newBody);
             case 'setHeader': return CamelDefinitionYamlStep.readSetHeaderDefinition(newBody);
+            case 'setHeaders': return CamelDefinitionYamlStep.readSetHeadersDefinition(newBody);
             case 'setProperty': return CamelDefinitionYamlStep.readSetPropertyDefinition(newBody);
             case 'sort': return CamelDefinitionYamlStep.readSortDefinition(newBody);
             case 'split': return CamelDefinitionYamlStep.readSplitDefinition(newBody);
diff --git a/karavan-core/src/core/model/CamelDefinition.ts b/karavan-core/src/core/model/CamelDefinition.ts
index 232e7498..13d6a8fd 100644
--- a/karavan-core/src/core/model/CamelDefinition.ts
+++ b/karavan-core/src/core/model/CamelDefinition.ts
@@ -29,6 +29,7 @@ export class ProcessorDefinition extends CamelElement {
     circuitBreaker?: CircuitBreakerDefinition;
     claimCheck?: ClaimCheckDefinition;
     convertBodyTo?: ConvertBodyDefinition | string;
+    convertHeaderTo?: ConvertHeaderDefinition;
     delay?: DelayDefinition;
     dynamicRouter?: DynamicRouterDefinition;
     enrich?: EnrichDefinition;
@@ -63,6 +64,7 @@ export class ProcessorDefinition extends CamelElement {
     setBody?: SetBodyDefinition;
     setExchangePattern?: SetExchangePatternDefinition | string;
     setHeader?: SetHeaderDefinition;
+    setHeaders?: SetHeadersDefinition;
     setProperty?: SetPropertyDefinition;
     sort?: SortDefinition;
     split?: SplitDefinition;
@@ -124,6 +126,9 @@ export class OutputAwareFromDefinition extends CamelElement {
 
 export class AggregateDefinition extends CamelElement {
     stepName?: string = 'aggregate';
+    id?: string = 'aggregate-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     correlationExpression?: ExpressionSubElementDefinition;
     completionPredicate?: ExpressionSubElementDefinition;
     completionTimeoutExpression?: ExpressionSubElementDefinition;
@@ -151,9 +156,6 @@ export class AggregateDefinition extends CamelElement {
     discardOnAggregationFailure?: boolean;
     forceCompletionOnStop?: boolean;
     completeAllOnStop?: boolean;
-    disabled?: boolean;
-    id?: string = 'aggregate-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<AggregateDefinition>) {
         super('AggregateDefinition');
@@ -163,13 +165,13 @@ export class AggregateDefinition extends CamelElement {
 
 export class BeanDefinition extends CamelElement {
     stepName?: string = 'bean';
+    id?: string = 'bean-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     ref?: string;
     method?: string;
     beanType?: string;
     scope?: string;
-    disabled?: boolean;
-    id?: string = 'bean-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<BeanDefinition>) {
         super('BeanDefinition');
         Object.assign(this, init);
@@ -178,11 +180,11 @@ export class BeanDefinition extends CamelElement {
 
 export class CatchDefinition extends CamelElement {
     stepName?: string = 'doCatch';
-    exception?: string[] = [];
-    onWhen?: WhenDefinition;
-    disabled?: boolean;
     id?: string = 'doCatch-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    exception?: string[] = [];
+    onWhen?: WhenDefinition;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<CatchDefinition>) {
         super('CatchDefinition');
@@ -192,12 +194,12 @@ export class CatchDefinition extends CamelElement {
 
 export class ChoiceDefinition extends CamelElement {
     stepName?: string = 'choice';
+    id?: string = 'choice-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     when?: WhenDefinition[] = [];
     otherwise?: OtherwiseDefinition;
     precondition?: boolean;
-    disabled?: boolean;
-    id?: string = 'choice-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ChoiceDefinition>) {
         super('ChoiceDefinition');
         Object.assign(this, init);
@@ -206,13 +208,13 @@ export class ChoiceDefinition extends CamelElement {
 
 export class CircuitBreakerDefinition extends CamelElement {
     stepName?: string = 'circuitBreaker';
+    id?: string = 'circuitBreaker-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     configuration?: string;
     resilience4jConfiguration?: Resilience4jConfigurationDefinition;
     faultToleranceConfiguration?: FaultToleranceConfigurationDefinition;
     onFallback?: OnFallbackDefinition;
-    disabled?: boolean;
-    id?: string = 'circuitBreaker-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<CircuitBreakerDefinition>) {
         super('CircuitBreakerDefinition');
@@ -222,14 +224,14 @@ export class CircuitBreakerDefinition extends CamelElement {
 
 export class ClaimCheckDefinition extends CamelElement {
     stepName?: string = 'claimCheck';
+    id?: string = 'claimCheck-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     operation?: string;
     key?: string;
     filter?: string;
     aggregationStrategy?: string;
     aggregationStrategyMethodName?: string;
-    disabled?: boolean;
-    id?: string = 'claimCheck-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ClaimCheckDefinition>) {
         super('ClaimCheckDefinition');
         Object.assign(this, init);
@@ -249,18 +251,33 @@ export class ContextScanDefinition extends CamelElement {
 
 export class ConvertBodyDefinition extends CamelElement {
     stepName?: string = 'convertBodyTo';
+    id?: string = 'convertBodyTo-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     type: string = '';
     mandatory?: boolean;
     charset?: string;
-    disabled?: boolean;
-    id?: string = 'convertBodyTo-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ConvertBodyDefinition>) {
         super('ConvertBodyDefinition');
         Object.assign(this, init);
     }
 }
 
+export class ConvertHeaderDefinition extends CamelElement {
+    stepName?: string = 'convertHeaderTo';
+    id?: string = 'convertHeaderTo-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
+    name: string = '';
+    type: string = '';
+    mandatory?: boolean;
+    charset?: string;
+    public constructor(init?: Partial<ConvertHeaderDefinition>) {
+        super('ConvertHeaderDefinition');
+        Object.assign(this, init);
+    }
+}
+
 export class DataFormatDefinition extends CamelElement {
     stepName?: string = 'dataFormat';
     id?: string = 'dataFormat-' + uuidv4().substring(0,4);
@@ -272,13 +289,13 @@ export class DataFormatDefinition extends CamelElement {
 
 export class DelayDefinition extends CamelElement {
     stepName?: string = 'delay';
+    id?: string = 'delay-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     asyncDelayed?: boolean;
     callerRunsWhenRejected?: boolean;
     executorService?: string;
-    disabled?: boolean;
-    id?: string = 'delay-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<DelayDefinition>) {
         super('DelayDefinition');
         Object.assign(this, init);
@@ -287,13 +304,13 @@ export class DelayDefinition extends CamelElement {
 
 export class DynamicRouterDefinition extends CamelElement {
     stepName?: string = 'dynamicRouter';
+    id?: string = 'dynamicRouter-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     uriDelimiter?: string;
     ignoreInvalidEndpoints?: boolean;
     cacheSize?: number;
-    disabled?: boolean;
-    id?: string = 'dynamicRouter-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<DynamicRouterDefinition>) {
         super('DynamicRouterDefinition');
         Object.assign(this, init);
@@ -302,6 +319,9 @@ export class DynamicRouterDefinition extends CamelElement {
 
 export class EnrichDefinition extends CamelElement {
     stepName?: string = 'enrich';
+    id?: string = 'enrich-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     aggregationStrategy?: string;
     aggregationStrategyMethodName?: string;
@@ -311,9 +331,6 @@ export class EnrichDefinition extends CamelElement {
     cacheSize?: number;
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
-    disabled?: boolean;
-    id?: string = 'enrich-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<EnrichDefinition>) {
         super('EnrichDefinition');
         Object.assign(this, init);
@@ -343,6 +360,7 @@ export class ExpressionSubElementDefinition extends CamelElement {
     groovy?: GroovyExpression | string;
     header?: HeaderExpression | string;
     hl7terser?: Hl7TerserExpression | string;
+    java?: JavaExpression | string;
     joor?: JoorExpression | string;
     jq?: JqExpression | string;
     js?: JavaScriptExpression | string;
@@ -367,6 +385,7 @@ export class ExpressionSubElementDefinition extends CamelElement {
 
 export class FaultToleranceConfigurationDefinition extends CamelElement {
     stepName?: string = 'faultToleranceConfiguration';
+    id?: string = 'faultToleranceConfiguration-' + uuidv4().substring(0,4);
     circuitBreaker?: string;
     delay?: string;
     successThreshold?: number;
@@ -380,7 +399,6 @@ export class FaultToleranceConfigurationDefinition extends CamelElement {
     bulkheadMaxConcurrentCalls?: number;
     bulkheadWaitingTaskQueue?: number;
     bulkheadExecutorService?: string;
-    id?: string = 'faultToleranceConfiguration-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<FaultToleranceConfigurationDefinition>) {
         super('FaultToleranceConfigurationDefinition');
         Object.assign(this, init);
@@ -389,11 +407,11 @@ export class FaultToleranceConfigurationDefinition extends CamelElement {
 
 export class FilterDefinition extends CamelElement {
     stepName?: string = 'filter';
-    expression?: ExpressionDefinition;
-    statusPropertyName?: string;
-    disabled?: boolean;
     id?: string = 'filter-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
+    statusPropertyName?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<FilterDefinition>) {
         super('FilterDefinition');
@@ -403,9 +421,9 @@ export class FilterDefinition extends CamelElement {
 
 export class FinallyDefinition extends CamelElement {
     stepName?: string = 'doFinally';
-    disabled?: boolean;
     id?: string = 'doFinally-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<FinallyDefinition>) {
         super('FinallyDefinition');
@@ -415,9 +433,9 @@ export class FinallyDefinition extends CamelElement {
 
 export class FromDefinition extends CamelElement {
     stepName?: string = 'from';
-    uri: string = '';
     id?: string = 'from-' + uuidv4().substring(0,4);
     description?: string;
+    uri: string = '';
     parameters?: any = {};
     steps: CamelElement[] = [];
     public constructor(init?: Partial<FromDefinition>) {
@@ -447,15 +465,15 @@ export class GlobalOptionsDefinition extends CamelElement {
 
 export class IdempotentConsumerDefinition extends CamelElement {
     stepName?: string = 'idempotentConsumer';
+    id?: string = 'idempotentConsumer-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     idempotentRepository: string = '';
     eager?: boolean;
     completionEager?: boolean;
     skipDuplicate?: boolean;
     removeOnFailure?: boolean;
-    disabled?: boolean;
-    id?: string = 'idempotentConsumer-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<IdempotentConsumerDefinition>) {
         super('IdempotentConsumerDefinition');
@@ -465,10 +483,10 @@ export class IdempotentConsumerDefinition extends CamelElement {
 
 export class InputTypeDefinition extends CamelElement {
     stepName?: string = 'inputType';
-    urn: string = '';
-    validate?: boolean;
     id?: string = 'inputType-' + uuidv4().substring(0,4);
     description?: string;
+    urn: string = '';
+    validate?: boolean;
     public constructor(init?: Partial<InputTypeDefinition>) {
         super('InputTypeDefinition');
         Object.assign(this, init);
@@ -477,9 +495,9 @@ export class InputTypeDefinition extends CamelElement {
 
 export class InterceptDefinition extends CamelElement {
     stepName?: string = 'intercept';
-    disabled?: boolean;
     id?: string = 'intercept-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<InterceptDefinition>) {
         super('InterceptDefinition');
@@ -489,10 +507,10 @@ export class InterceptDefinition extends CamelElement {
 
 export class InterceptFromDefinition extends CamelElement {
     stepName?: string = 'interceptFrom';
-    uri?: string;
-    disabled?: boolean;
     id?: string = 'interceptFrom-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    uri?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<InterceptFromDefinition>) {
         super('InterceptFromDefinition');
@@ -502,12 +520,12 @@ export class InterceptFromDefinition extends CamelElement {
 
 export class InterceptSendToEndpointDefinition extends CamelElement {
     stepName?: string = 'interceptSendToEndpoint';
+    id?: string = 'interceptSendToEndpoint-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     uri: string = '';
     skipSendToOriginalEndpoint?: string;
     afterUri?: string;
-    disabled?: boolean;
-    id?: string = 'interceptSendToEndpoint-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<InterceptSendToEndpointDefinition>) {
         super('InterceptSendToEndpointDefinition');
@@ -527,10 +545,10 @@ export class KameletDefinition extends CamelElement {
 
 export class LoadBalanceDefinition extends CamelElement {
     stepName?: string = 'loadBalance';
-    disabled?: boolean;
-    inheritErrorHandler?: boolean;
     id?: string = 'loadBalance-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    inheritErrorHandler?: boolean;
     customLoadBalancer?: CustomLoadBalancerDefinition | string;
     failover?: FailoverLoadBalancerDefinition;
     random?: RandomLoadBalancerDefinition;
@@ -547,14 +565,14 @@ export class LoadBalanceDefinition extends CamelElement {
 
 export class LogDefinition extends CamelElement {
     stepName?: string = 'log';
+    id?: string = 'log-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     message: string = '';
     loggingLevel?: string;
     logName?: string;
     marker?: string;
     logger?: string;
-    disabled?: boolean;
-    id?: string = 'log-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<LogDefinition>) {
         super('LogDefinition');
         Object.assign(this, init);
@@ -563,13 +581,13 @@ export class LogDefinition extends CamelElement {
 
 export class LoopDefinition extends CamelElement {
     stepName?: string = 'loop';
+    id?: string = 'loop-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     copy?: boolean;
     doWhile?: boolean;
     breakOnShutdown?: boolean;
-    disabled?: boolean;
-    id?: string = 'loop-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<LoopDefinition>) {
         super('LoopDefinition');
@@ -579,9 +597,9 @@ export class LoopDefinition extends CamelElement {
 
 export class MarshalDefinition extends CamelElement {
     stepName?: string = 'marshal';
-    disabled?: boolean;
     id?: string = 'marshal-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     asn1?: ASN1DataFormat | string;
     avro?: AvroDataFormat | string;
     barcode?: BarcodeDataFormat;
@@ -630,6 +648,9 @@ export class MarshalDefinition extends CamelElement {
 
 export class MulticastDefinition extends CamelElement {
     stepName?: string = 'multicast';
+    id?: string = 'multicast-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     aggregationStrategy?: string;
     aggregationStrategyMethodName?: string;
     aggregationStrategyMethodAllowNull?: boolean;
@@ -642,9 +663,6 @@ export class MulticastDefinition extends CamelElement {
     executorService?: string;
     onPrepare?: string;
     shareUnitOfWork?: boolean;
-    disabled?: boolean;
-    id?: string = 'multicast-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<MulticastDefinition>) {
         super('MulticastDefinition');
@@ -654,6 +672,9 @@ export class MulticastDefinition extends CamelElement {
 
 export class OnCompletionDefinition extends CamelElement {
     stepName?: string = 'onCompletion';
+    id?: string = 'onCompletion-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     mode?: string;
     onCompleteOnly?: boolean;
     onFailureOnly?: boolean;
@@ -661,9 +682,6 @@ export class OnCompletionDefinition extends CamelElement {
     executorService?: string;
     useOriginalMessage?: boolean;
     onWhen?: WhenDefinition;
-    disabled?: boolean;
-    id?: string = 'onCompletion-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<OnCompletionDefinition>) {
         super('OnCompletionDefinition');
@@ -673,6 +691,9 @@ export class OnCompletionDefinition extends CamelElement {
 
 export class OnExceptionDefinition extends CamelElement {
     stepName?: string = 'onException';
+    id?: string = 'onException-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     exception?: string[] = [];
     onWhen?: WhenDefinition;
     retryWhile?: ExpressionSubElementDefinition;
@@ -684,9 +705,6 @@ export class OnExceptionDefinition extends CamelElement {
     onExceptionOccurredRef?: string;
     useOriginalMessage?: boolean;
     useOriginalBody?: boolean;
-    disabled?: boolean;
-    id?: string = 'onException-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<OnExceptionDefinition>) {
         super('OnExceptionDefinition');
@@ -696,10 +714,10 @@ export class OnExceptionDefinition extends CamelElement {
 
 export class OnFallbackDefinition extends CamelElement {
     stepName?: string = 'onFallback';
-    fallbackViaNetwork?: boolean;
-    disabled?: boolean;
     id?: string = 'onFallback-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    fallbackViaNetwork?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<OnFallbackDefinition>) {
         super('OnFallbackDefinition');
@@ -722,9 +740,9 @@ export class OptimisticLockRetryPolicyDefinition extends CamelElement {
 
 export class OtherwiseDefinition extends CamelElement {
     stepName?: string = 'otherwise';
-    disabled?: boolean;
     id?: string = 'otherwise-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<OtherwiseDefinition>) {
         super('OtherwiseDefinition');
@@ -737,7 +755,6 @@ export class OutputDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     id?: string = 'output-' + uuidv4().substring(0,4);
-    inheritErrorHandler?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<OutputDefinition>) {
         super('OutputDefinition');
@@ -747,10 +764,10 @@ export class OutputDefinition extends CamelElement {
 
 export class OutputTypeDefinition extends CamelElement {
     stepName?: string = 'outputType';
-    urn: string = '';
-    validate?: boolean;
     id?: string = 'outputType-' + uuidv4().substring(0,4);
     description?: string;
+    urn: string = '';
+    validate?: boolean;
     public constructor(init?: Partial<OutputTypeDefinition>) {
         super('OutputTypeDefinition');
         Object.assign(this, init);
@@ -770,11 +787,11 @@ export class PackageScanDefinition extends CamelElement {
 
 export class PausableDefinition extends CamelElement {
     stepName?: string = 'pausable';
-    consumerListener: string = '';
-    untilCheck: string = '';
-    disabled?: boolean;
     id?: string = 'pausable-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    consumerListener: string = '';
+    untilCheck: string = '';
     public constructor(init?: Partial<PausableDefinition>) {
         super('PausableDefinition');
         Object.assign(this, init);
@@ -783,9 +800,9 @@ export class PausableDefinition extends CamelElement {
 
 export class PipelineDefinition extends CamelElement {
     stepName?: string = 'pipeline';
-    disabled?: boolean;
     id?: string = 'pipeline-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<PipelineDefinition>) {
         super('PipelineDefinition');
@@ -795,10 +812,10 @@ export class PipelineDefinition extends CamelElement {
 
 export class PolicyDefinition extends CamelElement {
     stepName?: string = 'policy';
-    ref: string = '';
-    disabled?: boolean;
     id?: string = 'policy-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    ref: string = '';
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<PolicyDefinition>) {
         super('PolicyDefinition');
@@ -808,6 +825,9 @@ export class PolicyDefinition extends CamelElement {
 
 export class PollEnrichDefinition extends CamelElement {
     stepName?: string = 'pollEnrich';
+    id?: string = 'pollEnrich-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     aggregationStrategy?: string;
     aggregationStrategyMethodName?: string;
@@ -816,9 +836,6 @@ export class PollEnrichDefinition extends CamelElement {
     timeout?: string;
     cacheSize?: number;
     ignoreInvalidEndpoint?: boolean;
-    disabled?: boolean;
-    id?: string = 'pollEnrich-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<PollEnrichDefinition>) {
         super('PollEnrichDefinition');
         Object.assign(this, init);
@@ -827,10 +844,10 @@ export class PollEnrichDefinition extends CamelElement {
 
 export class ProcessDefinition extends CamelElement {
     stepName?: string = 'process';
-    ref: string = '';
-    disabled?: boolean;
     id?: string = 'process-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    ref: string = '';
     public constructor(init?: Partial<ProcessDefinition>) {
         super('ProcessDefinition');
         Object.assign(this, init);
@@ -859,6 +876,9 @@ export class PropertyExpressionDefinition extends CamelElement {
 
 export class RecipientListDefinition extends CamelElement {
     stepName?: string = 'recipientList';
+    id?: string = 'recipientList-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     delimiter?: string;
     aggregationStrategy?: string;
@@ -875,9 +895,6 @@ export class RecipientListDefinition extends CamelElement {
     onPrepare?: string;
     cacheSize?: number;
     shareUnitOfWork?: boolean;
-    disabled?: boolean;
-    id?: string = 'recipientList-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<RecipientListDefinition>) {
         super('RecipientListDefinition');
         Object.assign(this, init);
@@ -886,6 +903,7 @@ export class RecipientListDefinition extends CamelElement {
 
 export class RedeliveryPolicyDefinition extends CamelElement {
     stepName?: string = 'redeliveryPolicy';
+    id?: string = 'redeliveryPolicy-' + uuidv4().substring(0,4);
     maximumRedeliveries?: number;
     redeliveryDelay?: string;
     asyncDelayedRedelivery?: boolean;
@@ -910,7 +928,6 @@ export class RedeliveryPolicyDefinition extends CamelElement {
     delayPattern?: string;
     allowRedeliveryWhileStopping?: boolean;
     exchangeFormatterRef?: string;
-    id?: string = 'redeliveryPolicy-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<RedeliveryPolicyDefinition>) {
         super('RedeliveryPolicyDefinition');
         Object.assign(this, init);
@@ -919,10 +936,10 @@ export class RedeliveryPolicyDefinition extends CamelElement {
 
 export class RemoveHeaderDefinition extends CamelElement {
     stepName?: string = 'removeHeader';
-    name: string = '';
-    disabled?: boolean;
     id?: string = 'removeHeader-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    name: string = '';
     public constructor(init?: Partial<RemoveHeaderDefinition>) {
         super('RemoveHeaderDefinition');
         Object.assign(this, init);
@@ -931,11 +948,11 @@ export class RemoveHeaderDefinition extends CamelElement {
 
 export class RemoveHeadersDefinition extends CamelElement {
     stepName?: string = 'removeHeaders';
-    pattern: string = '';
-    excludePattern?: string;
-    disabled?: boolean;
     id?: string = 'removeHeaders-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    pattern: string = '';
+    excludePattern?: string;
     public constructor(init?: Partial<RemoveHeadersDefinition>) {
         super('RemoveHeadersDefinition');
         Object.assign(this, init);
@@ -944,11 +961,11 @@ export class RemoveHeadersDefinition extends CamelElement {
 
 export class RemovePropertiesDefinition extends CamelElement {
     stepName?: string = 'removeProperties';
-    pattern: string = '';
-    excludePattern?: string;
-    disabled?: boolean;
     id?: string = 'removeProperties-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    pattern: string = '';
+    excludePattern?: string;
     public constructor(init?: Partial<RemovePropertiesDefinition>) {
         super('RemovePropertiesDefinition');
         Object.assign(this, init);
@@ -957,10 +974,10 @@ export class RemovePropertiesDefinition extends CamelElement {
 
 export class RemovePropertyDefinition extends CamelElement {
     stepName?: string = 'removeProperty';
-    name: string = '';
-    disabled?: boolean;
     id?: string = 'removeProperty-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    name: string = '';
     public constructor(init?: Partial<RemovePropertyDefinition>) {
         super('RemovePropertyDefinition');
         Object.assign(this, init);
@@ -969,10 +986,10 @@ export class RemovePropertyDefinition extends CamelElement {
 
 export class ResequenceDefinition extends CamelElement {
     stepName?: string = 'resequence';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'resequence-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<ResequenceDefinition>) {
         super('ResequenceDefinition');
@@ -982,6 +999,7 @@ export class ResequenceDefinition extends CamelElement {
 
 export class Resilience4jConfigurationDefinition extends CamelElement {
     stepName?: string = 'resilience4jConfiguration';
+    id?: string = 'resilience4jConfiguration-' + uuidv4().substring(0,4);
     circuitBreaker?: string;
     config?: string;
     failureRateThreshold?: number;
@@ -1002,7 +1020,6 @@ export class Resilience4jConfigurationDefinition extends CamelElement {
     timeoutExecutorService?: string;
     timeoutDuration?: number;
     timeoutCancelRunningFuture?: boolean;
-    id?: string = 'resilience4jConfiguration-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<Resilience4jConfigurationDefinition>) {
         super('Resilience4jConfigurationDefinition');
         Object.assign(this, init);
@@ -1020,12 +1037,12 @@ export class RestContextRefDefinition extends CamelElement {
 
 export class ResumableDefinition extends CamelElement {
     stepName?: string = 'resumable';
+    id?: string = 'resumable-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     resumeStrategy: string = '';
     loggingLevel?: string;
     intermittent?: boolean;
-    disabled?: boolean;
-    id?: string = 'resumable-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ResumableDefinition>) {
         super('ResumableDefinition');
         Object.assign(this, init);
@@ -1034,12 +1051,12 @@ export class ResumableDefinition extends CamelElement {
 
 export class RollbackDefinition extends CamelElement {
     stepName?: string = 'rollback';
+    id?: string = 'rollback-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     message?: string;
     markRollbackOnly?: boolean;
     markRollbackOnlyLast?: boolean;
-    disabled?: boolean;
-    id?: string = 'rollback-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<RollbackDefinition>) {
         super('RollbackDefinition');
         Object.assign(this, init);
@@ -1048,8 +1065,8 @@ export class RollbackDefinition extends CamelElement {
 
 export class RouteBuilderDefinition extends CamelElement {
     stepName?: string = 'routeBuilder';
-    ref: string = '';
     id?: string = 'routeBuilder-' + uuidv4().substring(0,4);
+    ref: string = '';
     public constructor(init?: Partial<RouteBuilderDefinition>) {
         super('RouteBuilderDefinition');
         Object.assign(this, init);
@@ -1067,6 +1084,8 @@ export class RouteConfigurationContextRefDefinition extends CamelElement {
 
 export class RouteConfigurationDefinition extends CamelElement {
     stepName?: string = 'routeConfiguration';
+    id?: string;
+    description?: string;
     errorHandler?: ErrorHandlerDefinition;
     intercept?: InterceptDefinition[] = [];
     interceptFrom?: InterceptFromDefinition[] = [];
@@ -1074,7 +1093,6 @@ export class RouteConfigurationDefinition extends CamelElement {
     onException?: OnExceptionDefinition[] = [];
     onCompletion?: OnCompletionDefinition[] = [];
     precondition?: string;
-    id?: string;
     public constructor(init?: Partial<RouteConfigurationDefinition>) {
         super('RouteConfigurationDefinition');
         Object.assign(this, init);
@@ -1092,20 +1110,22 @@ export class RouteContextRefDefinition extends CamelElement {
 
 export class RouteDefinition extends CamelElement {
     stepName?: string = 'route';
+    id?: string = 'route-' + uuidv4().substring(0,4);
+    description?: string;
     group?: string;
     nodePrefixId?: string;
     routeConfigurationId?: string;
-    precondition?: string;
+    autoStartup?: boolean;
+    startupOrder?: number;
     trace?: boolean;
     messageHistory?: boolean;
     logMask?: boolean;
-    autoStartup?: boolean;
-    startupOrder?: number;
-    id?: string = 'route-' + uuidv4().substring(0,4);
-    description?: string;
-    from: FromDefinition = new FromDefinition();
+    shutdownRoute?: string;
+    shutdownRunningTask?: string;
+    precondition?: string;
     inputType?: InputTypeDefinition;
     outputType?: OutputTypeDefinition;
+    from: FromDefinition = new FromDefinition();
     public constructor(init?: Partial<RouteDefinition>) {
         super('RouteDefinition');
         Object.assign(this, init);
@@ -1128,9 +1148,9 @@ export class RouteTemplateBeanDefinition extends CamelElement {
 
 export class RouteTemplateDefinition extends CamelElement {
     stepName?: string = 'routeTemplate';
-    route?: RouteDefinition;
     id: string = 'routeTemplate-' + uuidv4().substring(0,4);
     description?: string;
+    route?: RouteDefinition;
     beans?: RouteTemplateBeanDefinition[] = [];
     from?: FromDefinition;
     parameters?: RouteTemplateParameterDefinition[] = [];
@@ -1154,13 +1174,13 @@ export class RouteTemplateParameterDefinition extends CamelElement {
 
 export class RoutingSlipDefinition extends CamelElement {
     stepName?: string = 'routingSlip';
+    id?: string = 'routingSlip-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     uriDelimiter?: string;
     ignoreInvalidEndpoints?: boolean;
     cacheSize?: number;
-    disabled?: boolean;
-    id?: string = 'routingSlip-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<RoutingSlipDefinition>) {
         super('RoutingSlipDefinition');
         Object.assign(this, init);
@@ -1172,7 +1192,6 @@ export class SagaActionUriDefinition extends CamelElement {
     description?: string;
     disabled?: boolean;
     id?: string = 'sagaActionUri-' + uuidv4().substring(0,4);
-    inheritErrorHandler?: boolean;
     parameters?: any = {};
     uri: string = '';
     public constructor(init?: Partial<SagaActionUriDefinition>) {
@@ -1183,6 +1202,9 @@ export class SagaActionUriDefinition extends CamelElement {
 
 export class SagaDefinition extends CamelElement {
     stepName?: string = 'saga';
+    id?: string = 'saga-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     sagaService?: string;
     propagation?: string;
     completionMode?: string;
@@ -1190,9 +1212,6 @@ export class SagaDefinition extends CamelElement {
     compensation?: string;
     completion?: string;
     option?: PropertyExpressionDefinition[] = [];
-    disabled?: boolean;
-    id?: string = 'saga-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<SagaDefinition>) {
         super('SagaDefinition');
@@ -1202,11 +1221,11 @@ export class SagaDefinition extends CamelElement {
 
 export class SamplingDefinition extends CamelElement {
     stepName?: string = 'sample';
-    samplePeriod?: string;
-    messageFrequency?: number;
-    disabled?: boolean;
     id?: string = 'sample-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    samplePeriod?: string;
+    messageFrequency?: number;
     public constructor(init?: Partial<SamplingDefinition>) {
         super('SamplingDefinition');
         Object.assign(this, init);
@@ -1215,10 +1234,10 @@ export class SamplingDefinition extends CamelElement {
 
 export class ScriptDefinition extends CamelElement {
     stepName?: string = 'script';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'script-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
     public constructor(init?: Partial<ScriptDefinition>) {
         super('ScriptDefinition');
         Object.assign(this, init);
@@ -1227,10 +1246,10 @@ export class ScriptDefinition extends CamelElement {
 
 export class SetBodyDefinition extends CamelElement {
     stepName?: string = 'setBody';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'setBody-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
     public constructor(init?: Partial<SetBodyDefinition>) {
         super('SetBodyDefinition');
         Object.assign(this, init);
@@ -1239,10 +1258,10 @@ export class SetBodyDefinition extends CamelElement {
 
 export class SetExchangePatternDefinition extends CamelElement {
     stepName?: string = 'setExchangePattern';
-    pattern?: string;
-    disabled?: boolean;
     id?: string = 'setExchangePattern-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    pattern?: string;
     public constructor(init?: Partial<SetExchangePatternDefinition>) {
         super('SetExchangePatternDefinition');
         Object.assign(this, init);
@@ -1251,24 +1270,36 @@ export class SetExchangePatternDefinition extends CamelElement {
 
 export class SetHeaderDefinition extends CamelElement {
     stepName?: string = 'setHeader';
-    name: string = '';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'setHeader-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    name: string = '';
+    expression?: ExpressionDefinition;
     public constructor(init?: Partial<SetHeaderDefinition>) {
         super('SetHeaderDefinition');
         Object.assign(this, init);
     }
 }
 
+export class SetHeadersDefinition extends CamelElement {
+    stepName?: string = 'setHeaders';
+    id?: string = 'setHeaders-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
+    headers?: SetHeaderDefinition[] = [];
+    public constructor(init?: Partial<SetHeadersDefinition>) {
+        super('SetHeadersDefinition');
+        Object.assign(this, init);
+    }
+}
+
 export class SetPropertyDefinition extends CamelElement {
     stepName?: string = 'setProperty';
-    name: string = '';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'setProperty-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    name: string = '';
+    expression?: ExpressionDefinition;
     public constructor(init?: Partial<SetPropertyDefinition>) {
         super('SetPropertyDefinition');
         Object.assign(this, init);
@@ -1277,11 +1308,11 @@ export class SetPropertyDefinition extends CamelElement {
 
 export class SortDefinition extends CamelElement {
     stepName?: string = 'sort';
-    expression?: ExpressionDefinition;
-    comparator?: string;
-    disabled?: boolean;
     id?: string = 'sort-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
+    comparator?: string;
     public constructor(init?: Partial<SortDefinition>) {
         super('SortDefinition');
         Object.assign(this, init);
@@ -1290,6 +1321,9 @@ export class SortDefinition extends CamelElement {
 
 export class SplitDefinition extends CamelElement {
     stepName?: string = 'split';
+    id?: string = 'split-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     delimiter?: string;
     aggregationStrategy?: string;
@@ -1304,9 +1338,6 @@ export class SplitDefinition extends CamelElement {
     executorService?: string;
     onPrepare?: string;
     shareUnitOfWork?: boolean;
-    disabled?: boolean;
-    id?: string = 'split-' + uuidv4().substring(0,4);
-    description?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<SplitDefinition>) {
         super('SplitDefinition');
@@ -1316,9 +1347,9 @@ export class SplitDefinition extends CamelElement {
 
 export class StepDefinition extends CamelElement {
     stepName?: string = 'step';
-    disabled?: boolean;
     id?: string = 'step-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<StepDefinition>) {
         super('StepDefinition');
@@ -1328,9 +1359,9 @@ export class StepDefinition extends CamelElement {
 
 export class StopDefinition extends CamelElement {
     stepName?: string = 'stop';
-    disabled?: boolean;
     id?: string = 'stop-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     public constructor(init?: Partial<StopDefinition>) {
         super('StopDefinition');
         Object.assign(this, init);
@@ -1376,6 +1407,8 @@ export class TemplatedRouteParameterDefinition extends CamelElement {
 
 export class ThreadPoolProfileDefinition extends CamelElement {
     stepName?: string = 'threadPoolProfile';
+    id?: string = 'threadPoolProfile-' + uuidv4().substring(0,4);
+    description?: string;
     defaultProfile?: boolean;
     poolSize?: number;
     maxPoolSize?: number;
@@ -1384,8 +1417,6 @@ export class ThreadPoolProfileDefinition extends CamelElement {
     maxQueueSize?: number;
     allowCoreThreadTimeOut?: boolean;
     rejectedPolicy?: string;
-    id?: string = 'threadPoolProfile-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ThreadPoolProfileDefinition>) {
         super('ThreadPoolProfileDefinition');
         Object.assign(this, init);
@@ -1394,6 +1425,9 @@ export class ThreadPoolProfileDefinition extends CamelElement {
 
 export class ThreadsDefinition extends CamelElement {
     stepName?: string = 'threads';
+    id?: string = 'threads-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     executorService?: string;
     poolSize?: number;
     maxPoolSize?: number;
@@ -1404,9 +1438,6 @@ export class ThreadsDefinition extends CamelElement {
     threadName?: string;
     rejectedPolicy?: string;
     callerRunsWhenRejected?: string;
-    disabled?: boolean;
-    id?: string = 'threads-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ThreadsDefinition>) {
         super('ThreadsDefinition');
         Object.assign(this, init);
@@ -1415,16 +1446,15 @@ export class ThreadsDefinition extends CamelElement {
 
 export class ThrottleDefinition extends CamelElement {
     stepName?: string = 'throttle';
+    id?: string = 'throttle-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     correlationExpression?: ExpressionSubElementDefinition;
     executorService?: string;
-    timePeriodMillis?: string;
     asyncDelayed?: boolean;
     callerRunsWhenRejected?: boolean;
     rejectExecution?: boolean;
-    disabled?: boolean;
-    id?: string = 'throttle-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ThrottleDefinition>) {
         super('ThrottleDefinition');
         Object.assign(this, init);
@@ -1433,12 +1463,12 @@ export class ThrottleDefinition extends CamelElement {
 
 export class ThrowExceptionDefinition extends CamelElement {
     stepName?: string = 'throwException';
+    id?: string = 'throwException-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     message?: string;
     exceptionType?: string;
     ref?: string;
-    disabled?: boolean;
-    id?: string = 'throwException-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ThrowExceptionDefinition>) {
         super('ThrowExceptionDefinition');
         Object.assign(this, init);
@@ -1447,11 +1477,11 @@ export class ThrowExceptionDefinition extends CamelElement {
 
 export class ToDefinition extends CamelElement {
     stepName?: string = 'to';
-    uri: string = '';
-    disabled?: boolean;
-    pattern?: string;
     id?: string = 'to-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    uri: string = '';
+    pattern?: string;
     parameters?: any = {};
     public constructor(init?: Partial<ToDefinition>) {
         super('ToDefinition');
@@ -1461,15 +1491,15 @@ export class ToDefinition extends CamelElement {
 
 export class ToDynamicDefinition extends CamelElement {
     stepName?: string = 'toD';
+    id?: string = 'toD-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     uri: string = '';
     pattern?: string;
     cacheSize?: number;
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
-    disabled?: boolean;
-    id?: string = 'toD-' + uuidv4().substring(0,4);
-    description?: string;
     parameters?: any = {};
     public constructor(init?: Partial<ToDynamicDefinition>) {
         super('ToDynamicDefinition');
@@ -1479,10 +1509,10 @@ export class ToDynamicDefinition extends CamelElement {
 
 export class TransactedDefinition extends CamelElement {
     stepName?: string = 'transacted';
-    ref?: string;
-    disabled?: boolean;
     id?: string = 'transacted-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    ref?: string;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<TransactedDefinition>) {
         super('TransactedDefinition');
@@ -1492,12 +1522,12 @@ export class TransactedDefinition extends CamelElement {
 
 export class TransformDefinition extends CamelElement {
     stepName?: string = 'transform';
+    id?: string = 'transform-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     expression?: ExpressionDefinition;
     fromType?: string;
     toType?: string;
-    disabled?: boolean;
-    id?: string = 'transform-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<TransformDefinition>) {
         super('TransformDefinition');
         Object.assign(this, init);
@@ -1506,9 +1536,9 @@ export class TransformDefinition extends CamelElement {
 
 export class TryDefinition extends CamelElement {
     stepName?: string = 'doTry';
-    disabled?: boolean;
     id?: string = 'doTry-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
     doCatch?: CatchDefinition[] = [];
     doFinally?: FinallyDefinition;
     steps?: CamelElement[] = [];
@@ -1520,10 +1550,10 @@ export class TryDefinition extends CamelElement {
 
 export class UnmarshalDefinition extends CamelElement {
     stepName?: string = 'unmarshal';
-    allowNullBody?: boolean;
-    disabled?: boolean;
     id?: string = 'unmarshal-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    allowNullBody?: boolean;
     asn1?: ASN1DataFormat | string;
     avro?: AvroDataFormat | string;
     barcode?: BarcodeDataFormat;
@@ -1572,11 +1602,11 @@ export class UnmarshalDefinition extends CamelElement {
 
 export class ValidateDefinition extends CamelElement {
     stepName?: string = 'validate';
-    expression?: ExpressionDefinition;
-    predicateExceptionFactory?: string;
-    disabled?: boolean;
     id?: string = 'validate-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
+    predicateExceptionFactory?: string;
     public constructor(init?: Partial<ValidateDefinition>) {
         super('ValidateDefinition');
         Object.assign(this, init);
@@ -1594,10 +1624,10 @@ export class ValueDefinition extends CamelElement {
 
 export class WhenDefinition extends CamelElement {
     stepName?: string = 'when';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'when-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<WhenDefinition>) {
         super('WhenDefinition');
@@ -1607,10 +1637,10 @@ export class WhenDefinition extends CamelElement {
 
 export class WhenSkipSendToEndpointDefinition extends CamelElement {
     stepName?: string = 'whenSkipSendToEndpoint';
-    expression?: ExpressionDefinition;
-    disabled?: boolean;
     id?: string = 'whenSkipSendToEndpoint-' + uuidv4().substring(0,4);
     description?: string;
+    disabled?: boolean;
+    expression?: ExpressionDefinition;
     steps?: CamelElement[] = [];
     public constructor(init?: Partial<WhenSkipSendToEndpointDefinition>) {
         super('WhenSkipSendToEndpointDefinition');
@@ -1620,6 +1650,9 @@ export class WhenSkipSendToEndpointDefinition extends CamelElement {
 
 export class WireTapDefinition extends CamelElement {
     stepName?: string = 'wireTap';
+    id?: string = 'wireTap-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     copy?: boolean;
     dynamicUri?: boolean;
     onPrepare?: string;
@@ -1630,9 +1663,6 @@ export class WireTapDefinition extends CamelElement {
     ignoreInvalidEndpoint?: boolean;
     allowOptimisedComponents?: boolean;
     autoStartComponents?: boolean;
-    disabled?: boolean;
-    id?: string = 'wireTap-' + uuidv4().substring(0,4);
-    description?: string;
     parameters?: any = {};
     public constructor(init?: Partial<WireTapDefinition>) {
         super('WireTapDefinition');
@@ -1640,22 +1670,6 @@ export class WireTapDefinition extends CamelElement {
     }
 }
 
-export class ApplicationDefinition extends CamelElement {
-    stepName?: string = 'application';
-    bean?: RegistryBeanDefinition[] = [];
-    componentScan?: ComponentScanDefinition[] = [];
-    rest?: RestDefinition[] = [];
-    restConfiguration?: RestConfigurationDefinition[] = [];
-    route?: RouteDefinition[] = [];
-    routeConfiguration?: RouteConfigurationDefinition[] = [];
-    routeTemplate?: RouteTemplateDefinition[] = [];
-    templatedRoute?: TemplatedRouteDefinition[] = [];
-    public constructor(init?: Partial<ApplicationDefinition>) {
-        super('ApplicationDefinition');
-        Object.assign(this, init);
-    }
-}
-
 export class BeanConstructorDefinition extends CamelElement {
     stepName?: string = 'beanConstructor';
     index?: number;
@@ -1695,22 +1709,6 @@ export class BeanPropertyDefinition extends CamelElement {
     }
 }
 
-export class BeansDefinition extends CamelElement {
-    stepName?: string = 'beans';
-    bean?: RegistryBeanDefinition[] = [];
-    restConfiguration?: RestConfigurationDefinition[] = [];
-    rest?: RestDefinition[] = [];
-    routeConfiguration?: RouteConfigurationDefinition[] = [];
-    routeTemplate?: RouteTemplateDefinition[] = [];
-    templatedRoute?: TemplatedRouteDefinition[] = [];
-    route?: RouteDefinition[] = [];
-    componentScan?: ComponentScanDefinition[] = [];
-    public constructor(init?: Partial<BeansDefinition>) {
-        super('BeansDefinition');
-        Object.assign(this, init);
-    }
-}
-
 export class ComponentScanDefinition extends CamelElement {
     stepName?: string = 'componentScan';
     basePackage?: string;
@@ -1722,6 +1720,8 @@ export class ComponentScanDefinition extends CamelElement {
 
 export class RegistryBeanDefinition extends CamelElement {
     stepName?: string = 'registryBean';
+    builderClass?: string;
+    builderMethod?: string;
     constructors?: any = {};
     destroyMethod?: string;
     factoryBean?: string;
@@ -1887,6 +1887,7 @@ export class PassThroughServiceCallServiceFilterConfiguration extends CamelEleme
 
 export class ServiceCallConfigurationDefinition extends CamelElement {
     stepName?: string = 'serviceCallConfiguration';
+    id?: string = 'serviceCallConfiguration-' + uuidv4().substring(0,4);
     expression?: ExpressionDefinition;
     uri?: string;
     component?: string;
@@ -1896,7 +1897,6 @@ export class ServiceCallConfigurationDefinition extends CamelElement {
     serviceChooserRef?: string;
     loadBalancerRef?: string;
     expressionRef?: string;
-    id?: string = 'serviceCallConfiguration-' + uuidv4().substring(0,4);
     blacklistServiceFilter?: BlacklistServiceCallServiceFilterConfiguration;
     combinedServiceFilter?: CombinedServiceCallServiceFilterConfiguration;
     customServiceFilter?: CustomServiceCallServiceFilterConfiguration;
@@ -1910,6 +1910,9 @@ export class ServiceCallConfigurationDefinition extends CamelElement {
 
 export class ServiceCallDefinition extends CamelElement {
     stepName?: string = 'serviceCall';
+    id?: string = 'serviceCall-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     name: string = '';
     expression?: ExpressionDefinition;
     uri?: string;
@@ -1921,9 +1924,6 @@ export class ServiceCallDefinition extends CamelElement {
     serviceChooserRef?: string;
     loadBalancerRef?: string;
     expressionRef?: string;
-    disabled?: boolean;
-    id?: string = 'serviceCall-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<ServiceCallDefinition>) {
         super('ServiceCallDefinition');
         Object.assign(this, init);
@@ -2032,9 +2032,9 @@ export class StreamResequencerConfig extends CamelElement {
 
 export class ASN1DataFormat extends CamelElement {
     dataFormatName?: string = 'asn1';
+    id?: string = 'asn1-' + uuidv4().substring(0,4);
     unmarshalType?: string;
     usingIterator?: boolean;
-    id?: string = 'asn1-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ASN1DataFormat>) {
         super('ASN1DataFormat');
         Object.assign(this, init);
@@ -2043,6 +2043,7 @@ export class ASN1DataFormat extends CamelElement {
 
 export class AvroDataFormat extends CamelElement {
     dataFormatName?: string = 'avro';
+    id?: string = 'avro-' + uuidv4().substring(0,4);
     instanceClassName?: string;
     library?: string;
     objectMapper?: string;
@@ -2063,7 +2064,6 @@ export class AvroDataFormat extends CamelElement {
     contentTypeHeader?: boolean;
     schemaResolver?: string;
     autoDiscoverSchemaResolver?: boolean;
-    id?: string = 'avro-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<AvroDataFormat>) {
         super('AvroDataFormat');
         Object.assign(this, init);
@@ -2072,11 +2072,11 @@ export class AvroDataFormat extends CamelElement {
 
 export class BarcodeDataFormat extends CamelElement {
     dataFormatName?: string = 'barcode';
+    id?: string = 'barcode-' + uuidv4().substring(0,4);
     barcodeFormat?: string;
     imageType?: string;
     width?: number;
     height?: number;
-    id?: string = 'barcode-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<BarcodeDataFormat>) {
         super('BarcodeDataFormat');
         Object.assign(this, init);
@@ -2085,10 +2085,10 @@ export class BarcodeDataFormat extends CamelElement {
 
 export class Base64DataFormat extends CamelElement {
     dataFormatName?: string = 'base64';
+    id?: string = 'base64-' + uuidv4().substring(0,4);
     lineLength?: number;
     lineSeparator?: string;
     urlSafe?: boolean;
-    id?: string = 'base64-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<Base64DataFormat>) {
         super('Base64DataFormat');
         Object.assign(this, init);
@@ -2097,12 +2097,12 @@ export class Base64DataFormat extends CamelElement {
 
 export class BindyDataFormat extends CamelElement {
     dataFormatName?: string = 'bindy';
+    id?: string = 'bindy-' + uuidv4().substring(0,4);
     type?: string;
     classType?: string;
     allowEmptyStream?: boolean;
     unwrapSingleInstance?: boolean;
     locale?: string;
-    id?: string = 'bindy-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<BindyDataFormat>) {
         super('BindyDataFormat');
         Object.assign(this, init);
@@ -2111,6 +2111,7 @@ export class BindyDataFormat extends CamelElement {
 
 export class CBORDataFormat extends CamelElement {
     dataFormatName?: string = 'cbor';
+    id?: string = 'cbor-' + uuidv4().substring(0,4);
     objectMapper?: string;
     useDefaultObjectMapper?: boolean;
     unmarshalType?: string;
@@ -2121,7 +2122,6 @@ export class CBORDataFormat extends CamelElement {
     allowJmsType?: boolean;
     enableFeatures?: string;
     disableFeatures?: string;
-    id?: string = 'cbor-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<CBORDataFormat>) {
         super('CBORDataFormat');
         Object.assign(this, init);
@@ -2130,6 +2130,7 @@ export class CBORDataFormat extends CamelElement {
 
 export class CryptoDataFormat extends CamelElement {
     dataFormatName?: string = 'crypto';
+    id?: string = 'crypto-' + uuidv4().substring(0,4);
     algorithm?: string;
     keyRef?: string;
     cryptoProvider?: string;
@@ -2137,9 +2138,8 @@ export class CryptoDataFormat extends CamelElement {
     algorithmParameterRef?: string;
     bufferSize?: number;
     macAlgorithm?: string;
-    shouldAppendHmac?: boolean;
+    shouldAppendHMAC?: boolean;
     inline?: boolean;
-    id?: string = 'crypto-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<CryptoDataFormat>) {
         super('CryptoDataFormat');
         Object.assign(this, init);
@@ -2148,6 +2148,7 @@ export class CryptoDataFormat extends CamelElement {
 
 export class CsvDataFormat extends CamelElement {
     dataFormatName?: string = 'csv';
+    id?: string = 'csv-' + uuidv4().substring(0,4);
     formatRef?: string;
     formatName?: string;
     commentMarkerDisabled?: boolean;
@@ -2177,7 +2178,6 @@ export class CsvDataFormat extends CamelElement {
     useOrderedMaps?: boolean;
     recordConverterRef?: string;
     captureHeaderRecord?: boolean;
-    id?: string = 'csv-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<CsvDataFormat>) {
         super('CsvDataFormat');
         Object.assign(this, init);
@@ -2186,8 +2186,8 @@ export class CsvDataFormat extends CamelElement {
 
 export class CustomDataFormat extends CamelElement {
     dataFormatName?: string = 'custom';
-    ref: string = '';
     id?: string = 'custom-' + uuidv4().substring(0,4);
+    ref: string = '';
     public constructor(init?: Partial<CustomDataFormat>) {
         super('CustomDataFormat');
         Object.assign(this, init);
@@ -2244,6 +2244,7 @@ export class DataFormatsDefinition extends CamelElement {
 
 export class FhirJsonDataFormat extends CamelElement {
     dataFormatName?: string = 'fhirJson';
+    id?: string = 'fhirJson-' + uuidv4().substring(0,4);
     fhirVersion?: string;
     fhirContext?: string;
     prettyPrint?: boolean;
@@ -2262,7 +2263,6 @@ export class FhirJsonDataFormat extends CamelElement {
     suppressNarratives?: boolean;
     dontStripVersionsFromReferencesAtPaths?: string;
     contentTypeHeader?: boolean;
-    id?: string = 'fhirJson-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<FhirJsonDataFormat>) {
         super('FhirJsonDataFormat');
         Object.assign(this, init);
@@ -2271,6 +2271,7 @@ export class FhirJsonDataFormat extends CamelElement {
 
 export class FhirXmlDataFormat extends CamelElement {
     dataFormatName?: string = 'fhirXml';
+    id?: string = 'fhirXml-' + uuidv4().substring(0,4);
     fhirVersion?: string;
     fhirContext?: string;
     prettyPrint?: boolean;
@@ -2289,7 +2290,6 @@ export class FhirXmlDataFormat extends CamelElement {
     suppressNarratives?: boolean;
     dontStripVersionsFromReferencesAtPaths?: string;
     contentTypeHeader?: boolean;
-    id?: string = 'fhirXml-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<FhirXmlDataFormat>) {
         super('FhirXmlDataFormat');
         Object.assign(this, init);
@@ -2298,6 +2298,7 @@ export class FhirXmlDataFormat extends CamelElement {
 
 export class FlatpackDataFormat extends CamelElement {
     dataFormatName?: string = 'flatpack';
+    id?: string = 'flatpack-' + uuidv4().substring(0,4);
     definition?: string;
     fixed?: boolean;
     delimiter?: string;
@@ -2306,7 +2307,6 @@ export class FlatpackDataFormat extends CamelElement {
     ignoreExtraColumns?: boolean;
     textQualifier?: string;
     parserFactoryRef?: string;
-    id?: string = 'flatpack-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<FlatpackDataFormat>) {
         super('FlatpackDataFormat');
         Object.assign(this, init);
@@ -2315,11 +2315,11 @@ export class FlatpackDataFormat extends CamelElement {
 
 export class GrokDataFormat extends CamelElement {
     dataFormatName?: string = 'grok';
+    id?: string = 'grok-' + uuidv4().substring(0,4);
     pattern: string = '';
     flattened?: boolean;
     allowMultipleMatchesPerLine?: boolean;
     namedOnly?: boolean;
-    id?: string = 'grok-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<GrokDataFormat>) {
         super('GrokDataFormat');
         Object.assign(this, init);
@@ -2337,8 +2337,8 @@ export class GzipDeflaterDataFormat extends CamelElement {
 
 export class HL7DataFormat extends CamelElement {
     dataFormatName?: string = 'hl7';
-    validate?: boolean;
     id?: string = 'hl7-' + uuidv4().substring(0,4);
+    validate?: boolean;
     public constructor(init?: Partial<HL7DataFormat>) {
         super('HL7DataFormat');
         Object.assign(this, init);
@@ -2347,8 +2347,8 @@ export class HL7DataFormat extends CamelElement {
 
 export class IcalDataFormat extends CamelElement {
     dataFormatName?: string = 'ical';
-    validating?: boolean;
     id?: string = 'ical-' + uuidv4().substring(0,4);
+    validating?: boolean;
     public constructor(init?: Partial<IcalDataFormat>) {
         super('IcalDataFormat');
         Object.assign(this, init);
@@ -2357,6 +2357,7 @@ export class IcalDataFormat extends CamelElement {
 
 export class JacksonXMLDataFormat extends CamelElement {
     dataFormatName?: string = 'jacksonXml';
+    id?: string = 'jacksonXml-' + uuidv4().substring(0,4);
     xmlMapper?: string;
     prettyPrint?: boolean;
     unmarshalType?: string;
@@ -2373,7 +2374,6 @@ export class JacksonXMLDataFormat extends CamelElement {
     enableFeatures?: string;
     disableFeatures?: string;
     contentTypeHeader?: boolean;
-    id?: string = 'jacksonXml-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JacksonXMLDataFormat>) {
         super('JacksonXMLDataFormat');
         Object.assign(this, init);
@@ -2382,14 +2382,15 @@ export class JacksonXMLDataFormat extends CamelElement {
 
 export class JaxbDataFormat extends CamelElement {
     dataFormatName?: string = 'jaxb';
+    id?: string = 'jaxb-' + uuidv4().substring(0,4);
     contextPath: string = '';
     contextPathIsClassName?: boolean;
     schema?: string;
     schemaSeverityLevel?: string;
     prettyPrint?: boolean;
     objectFactory?: boolean;
-    ignoreJaxbElement?: boolean;
-    mustBeJaxbElement?: boolean;
+    ignoreJAXBElement?: boolean;
+    mustBeJAXBElement?: boolean;
     filterNonXmlChars?: boolean;
     encoding?: string;
     fragment?: boolean;
@@ -2402,7 +2403,6 @@ export class JaxbDataFormat extends CamelElement {
     jaxbProviderProperties?: string;
     contentTypeHeader?: boolean;
     accessExternalSchemaProtocols?: string;
-    id?: string = 'jaxb-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JaxbDataFormat>) {
         super('JaxbDataFormat');
         Object.assign(this, init);
@@ -2411,9 +2411,9 @@ export class JaxbDataFormat extends CamelElement {
 
 export class JsonApiDataFormat extends CamelElement {
     dataFormatName?: string = 'jsonApi';
+    id?: string = 'jsonApi-' + uuidv4().substring(0,4);
     dataFormatTypes?: string;
     mainFormatType?: string;
-    id?: string = 'jsonApi-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JsonApiDataFormat>) {
         super('JsonApiDataFormat');
         Object.assign(this, init);
@@ -2422,6 +2422,7 @@ export class JsonApiDataFormat extends CamelElement {
 
 export class JsonDataFormat extends CamelElement {
     dataFormatName?: string = 'json';
+    id?: string = 'json-' + uuidv4().substring(0,4);
     objectMapper?: string;
     useDefaultObjectMapper?: boolean;
     autoDiscoverObjectMapper?: boolean;
@@ -2444,7 +2445,6 @@ export class JsonDataFormat extends CamelElement {
     namingStrategy?: string;
     contentTypeHeader?: boolean;
     dateFormatPattern?: string;
-    id?: string = 'json-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JsonDataFormat>) {
         super('JsonDataFormat');
         Object.assign(this, init);
@@ -2453,8 +2453,8 @@ export class JsonDataFormat extends CamelElement {
 
 export class LZFDataFormat extends CamelElement {
     dataFormatName?: string = 'lzf';
-    usingParallelCompression?: boolean;
     id?: string = 'lzf-' + uuidv4().substring(0,4);
+    usingParallelCompression?: boolean;
     public constructor(init?: Partial<LZFDataFormat>) {
         super('LZFDataFormat');
         Object.assign(this, init);
@@ -2463,12 +2463,12 @@ export class LZFDataFormat extends CamelElement {
 
 export class MimeMultipartDataFormat extends CamelElement {
     dataFormatName?: string = 'mimeMultipart';
+    id?: string = 'mimeMultipart-' + uuidv4().substring(0,4);
     multipartSubType?: string;
     multipartWithoutAttachment?: boolean;
     headersInline?: boolean;
     includeHeaders?: string;
     binaryContent?: boolean;
-    id?: string = 'mimeMultipart-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<MimeMultipartDataFormat>) {
         super('MimeMultipartDataFormat');
         Object.assign(this, init);
@@ -2477,6 +2477,7 @@ export class MimeMultipartDataFormat extends CamelElement {
 
 export class PGPDataFormat extends CamelElement {
     dataFormatName?: string = 'pgp';
+    id?: string = 'pgp-' + uuidv4().substring(0,4);
     keyUserid?: string;
     signatureKeyUserid?: string;
     password?: string;
@@ -2491,7 +2492,6 @@ export class PGPDataFormat extends CamelElement {
     compressionAlgorithm?: number;
     hashAlgorithm?: number;
     signatureVerificationOption?: string;
-    id?: string = 'pgp-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<PGPDataFormat>) {
         super('PGPDataFormat');
         Object.assign(this, init);
@@ -2500,9 +2500,10 @@ export class PGPDataFormat extends CamelElement {
 
 export class ParquetAvroDataFormat extends CamelElement {
     dataFormatName?: string = 'parquetAvro';
+    id?: string = 'parquetAvro-' + uuidv4().substring(0,4);
     compressionCodecName?: string;
     unmarshalType?: string;
-    id?: string = 'parquetAvro-' + uuidv4().substring(0,4);
+    lazyLoad?: boolean;
     public constructor(init?: Partial<ParquetAvroDataFormat>) {
         super('ParquetAvroDataFormat');
         Object.assign(this, init);
@@ -2511,6 +2512,7 @@ export class ParquetAvroDataFormat extends CamelElement {
 
 export class ProtobufDataFormat extends CamelElement {
     dataFormatName?: string = 'protobuf';
+    id?: string = 'protobuf-' + uuidv4().substring(0,4);
     instanceClass?: string;
     objectMapper?: string;
     useDefaultObjectMapper?: boolean;
@@ -2532,7 +2534,6 @@ export class ProtobufDataFormat extends CamelElement {
     autoDiscoverSchemaResolver?: boolean;
     contentTypeFormat?: string;
     contentTypeHeader?: boolean;
-    id?: string = 'protobuf-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ProtobufDataFormat>) {
         super('ProtobufDataFormat');
         Object.assign(this, init);
@@ -2550,13 +2551,13 @@ export class RssDataFormat extends CamelElement {
 
 export class SoapDataFormat extends CamelElement {
     dataFormatName?: string = 'soap';
+    id?: string = 'soap-' + uuidv4().substring(0,4);
     contextPath: string = '';
     encoding?: string;
     elementNameStrategyRef?: string;
     version?: string;
     namespacePrefixRef?: string;
     schema?: string;
-    id?: string = 'soap-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<SoapDataFormat>) {
         super('SoapDataFormat');
         Object.assign(this, init);
@@ -2565,8 +2566,8 @@ export class SoapDataFormat extends CamelElement {
 
 export class SwiftMtDataFormat extends CamelElement {
     dataFormatName?: string = 'swiftMt';
-    writeInJson?: boolean;
     id?: string = 'swiftMt-' + uuidv4().substring(0,4);
+    writeInJson?: boolean;
     public constructor(init?: Partial<SwiftMtDataFormat>) {
         super('SwiftMtDataFormat');
         Object.assign(this, init);
@@ -2575,11 +2576,11 @@ export class SwiftMtDataFormat extends CamelElement {
 
 export class SwiftMxDataFormat extends CamelElement {
     dataFormatName?: string = 'swiftMx';
+    id?: string = 'swiftMx-' + uuidv4().substring(0,4);
     writeConfigRef?: string;
     writeInJson?: boolean;
     readMessageId?: string;
     readConfigRef?: string;
-    id?: string = 'swiftMx-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<SwiftMxDataFormat>) {
         super('SwiftMxDataFormat');
         Object.assign(this, init);
@@ -2597,11 +2598,11 @@ export class SyslogDataFormat extends CamelElement {
 
 export class TarFileDataFormat extends CamelElement {
     dataFormatName?: string = 'tarFile';
+    id?: string = 'tarFile-' + uuidv4().substring(0,4);
     usingIterator?: boolean;
     allowEmptyDirectory?: boolean;
     preservePathElements?: boolean;
     maxDecompressedSize?: number;
-    id?: string = 'tarFile-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<TarFileDataFormat>) {
         super('TarFileDataFormat');
         Object.assign(this, init);
@@ -2610,10 +2611,10 @@ export class TarFileDataFormat extends CamelElement {
 
 export class ThriftDataFormat extends CamelElement {
     dataFormatName?: string = 'thrift';
+    id?: string = 'thrift-' + uuidv4().substring(0,4);
     instanceClass?: string;
     contentTypeFormat?: string;
     contentTypeHeader?: boolean;
-    id?: string = 'thrift-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ThriftDataFormat>) {
         super('ThriftDataFormat');
         Object.assign(this, init);
@@ -2622,9 +2623,9 @@ export class ThriftDataFormat extends CamelElement {
 
 export class TidyMarkupDataFormat extends CamelElement {
     dataFormatName?: string = 'tidyMarkup';
+    id?: string = 'tidyMarkup-' + uuidv4().substring(0,4);
     dataObjectType?: string;
     omitXmlDeclaration?: boolean;
-    id?: string = 'tidyMarkup-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<TidyMarkupDataFormat>) {
         super('TidyMarkupDataFormat');
         Object.assign(this, init);
@@ -2633,6 +2634,7 @@ export class TidyMarkupDataFormat extends CamelElement {
 
 export class UniVocityCsvDataFormat extends CamelElement {
     dataFormatName?: string = 'univocityCsv';
+    id?: string = 'univocityCsv-' + uuidv4().substring(0,4);
     delimiter?: string;
     quoteAllFields?: boolean;
     quote?: string;
@@ -2650,7 +2652,6 @@ export class UniVocityCsvDataFormat extends CamelElement {
     comment?: string;
     lazyLoad?: boolean;
     asMap?: boolean;
-    id?: string = 'univocityCsv-' + uuidv4().substring(0,4);
     univocityHeader?: UniVocityHeader[] = [];
     public constructor(init?: Partial<UniVocityCsvDataFormat>) {
         super('UniVocityCsvDataFormat');
@@ -2660,6 +2661,7 @@ export class UniVocityCsvDataFormat extends CamelElement {
 
 export class UniVocityFixedDataFormat extends CamelElement {
     dataFormatName?: string = 'univocityFixed';
+    id?: string = 'univocityFixed-' + uuidv4().substring(0,4);
     padding?: string;
     skipTrailingCharsUntilNewline?: boolean;
     recordEndsOnNewline?: boolean;
@@ -2676,7 +2678,6 @@ export class UniVocityFixedDataFormat extends CamelElement {
     comment?: string;
     lazyLoad?: boolean;
     asMap?: boolean;
-    id?: string = 'univocityFixed-' + uuidv4().substring(0,4);
     univocityHeader?: UniVocityHeader[] = [];
     public constructor(init?: Partial<UniVocityFixedDataFormat>) {
         super('UniVocityFixedDataFormat');
@@ -2695,6 +2696,7 @@ export class UniVocityHeader extends CamelElement {
 
 export class UniVocityTsvDataFormat extends CamelElement {
     dataFormatName?: string = 'univocityTsv';
+    id?: string = 'univocityTsv-' + uuidv4().substring(0,4);
     escapeChar?: string;
     nullValue?: string;
     skipEmptyLines?: boolean;
@@ -2709,7 +2711,6 @@ export class UniVocityTsvDataFormat extends CamelElement {
     comment?: string;
     lazyLoad?: boolean;
     asMap?: boolean;
-    id?: string = 'univocityTsv-' + uuidv4().substring(0,4);
     univocityHeader?: UniVocityHeader[] = [];
     public constructor(init?: Partial<UniVocityTsvDataFormat>) {
         super('UniVocityTsvDataFormat');
@@ -2719,6 +2720,7 @@ export class UniVocityTsvDataFormat extends CamelElement {
 
 export class XMLSecurityDataFormat extends CamelElement {
     dataFormatName?: string = 'xmlSecurity';
+    id?: string = 'xmlSecurity-' + uuidv4().substring(0,4);
     xmlCipherAlgorithm?: string;
     passPhrase?: string;
     passPhraseByte?: string;
@@ -2731,7 +2733,6 @@ export class XMLSecurityDataFormat extends CamelElement {
     digestAlgorithm?: string;
     mgfAlgorithm?: string;
     addKeyValueForEncryptedKey?: boolean;
-    id?: string = 'xmlSecurity-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<XMLSecurityDataFormat>) {
         super('XMLSecurityDataFormat');
         Object.assign(this, init);
@@ -2740,6 +2741,7 @@ export class XMLSecurityDataFormat extends CamelElement {
 
 export class YAMLDataFormat extends CamelElement {
     dataFormatName?: string = 'yaml';
+    id?: string = 'yaml-' + uuidv4().substring(0,4);
     library?: string;
     unmarshalType?: string;
     _constructor?: string;
@@ -2752,7 +2754,6 @@ export class YAMLDataFormat extends CamelElement {
     typeFilter?: YAMLTypeFilterDefinition[] = [];
     maxAliasesForCollections?: number;
     allowRecursiveKeys?: boolean;
-    id?: string = 'yaml-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<YAMLDataFormat>) {
         super('YAMLDataFormat');
         Object.assign(this, init);
@@ -2771,8 +2772,8 @@ export class YAMLTypeFilterDefinition extends CamelElement {
 
 export class ZipDeflaterDataFormat extends CamelElement {
     dataFormatName?: string = 'zipDeflater';
-    compressionLevel?: string;
     id?: string = 'zipDeflater-' + uuidv4().substring(0,4);
+    compressionLevel?: string;
     public constructor(init?: Partial<ZipDeflaterDataFormat>) {
         super('ZipDeflaterDataFormat');
         Object.assign(this, init);
@@ -2781,11 +2782,11 @@ export class ZipDeflaterDataFormat extends CamelElement {
 
 export class ZipFileDataFormat extends CamelElement {
     dataFormatName?: string = 'zipFile';
+    id?: string = 'zipFile-' + uuidv4().substring(0,4);
     usingIterator?: boolean;
     allowEmptyDirectory?: boolean;
     preservePathElements?: boolean;
     maxDecompressedSize?: number;
-    id?: string = 'zipFile-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ZipFileDataFormat>) {
         super('ZipFileDataFormat');
         Object.assign(this, init);
@@ -2794,6 +2795,7 @@ export class ZipFileDataFormat extends CamelElement {
 
 export class DeadLetterChannelDefinition extends CamelElement {
     stepName?: string = 'deadLetterChannel';
+    id?: string = 'deadLetterChannel-' + uuidv4().substring(0,4);
     deadLetterUri: string = '';
     deadLetterHandleNewException?: boolean;
     redeliveryPolicy?: RedeliveryPolicyDefinition;
@@ -2808,7 +2810,6 @@ export class DeadLetterChannelDefinition extends CamelElement {
     onPrepareFailureRef?: string;
     retryWhileRef?: string;
     executorServiceRef?: string;
-    id?: string = 'deadLetterChannel-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<DeadLetterChannelDefinition>) {
         super('DeadLetterChannelDefinition');
         Object.assign(this, init);
@@ -2817,6 +2818,7 @@ export class DeadLetterChannelDefinition extends CamelElement {
 
 export class DefaultErrorHandlerDefinition extends CamelElement {
     stepName?: string = 'defaultErrorHandler';
+    id?: string = 'defaultErrorHandler-' + uuidv4().substring(0,4);
     redeliveryPolicy?: RedeliveryPolicyDefinition;
     useOriginalMessage?: boolean;
     useOriginalBody?: boolean;
@@ -2829,7 +2831,6 @@ export class DefaultErrorHandlerDefinition extends CamelElement {
     onPrepareFailureRef?: string;
     retryWhileRef?: string;
     executorServiceRef?: string;
-    id?: string = 'defaultErrorHandler-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<DefaultErrorHandlerDefinition>) {
         super('DefaultErrorHandlerDefinition');
         Object.assign(this, init);
@@ -2838,6 +2839,7 @@ export class DefaultErrorHandlerDefinition extends CamelElement {
 
 export class JtaTransactionErrorHandlerDefinition extends CamelElement {
     stepName?: string = 'jtaTransactionErrorHandler';
+    id?: string = 'jtaTransactionErrorHandler-' + uuidv4().substring(0,4);
     transactedPolicyRef?: string;
     rollbackLoggingLevel?: string;
     redeliveryPolicy?: RedeliveryPolicyDefinition;
@@ -2852,7 +2854,6 @@ export class JtaTransactionErrorHandlerDefinition extends CamelElement {
     onPrepareFailureRef?: string;
     retryWhileRef?: string;
     executorServiceRef?: string;
-    id?: string = 'jtaTransactionErrorHandler-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JtaTransactionErrorHandlerDefinition>) {
         super('JtaTransactionErrorHandlerDefinition');
         Object.assign(this, init);
@@ -2870,8 +2871,8 @@ export class NoErrorHandlerDefinition extends CamelElement {
 
 export class RefErrorHandlerDefinition extends CamelElement {
     stepName?: string = 'refErrorHandler';
-    ref: string = '';
     id?: string = 'refErrorHandler-' + uuidv4().substring(0,4);
+    ref: string = '';
     public constructor(init?: Partial<RefErrorHandlerDefinition>) {
         super('RefErrorHandlerDefinition');
         Object.assign(this, init);
@@ -2880,6 +2881,7 @@ export class RefErrorHandlerDefinition extends CamelElement {
 
 export class SpringTransactionErrorHandlerDefinition extends CamelElement {
     stepName?: string = 'springTransactionErrorHandler';
+    id?: string = 'springTransactionErrorHandler-' + uuidv4().substring(0,4);
     transactedPolicyRef?: string;
     rollbackLoggingLevel?: string;
     redeliveryPolicy?: RedeliveryPolicyDefinition;
@@ -2894,7 +2896,6 @@ export class SpringTransactionErrorHandlerDefinition extends CamelElement {
     onPrepareFailureRef?: string;
     retryWhileRef?: string;
     executorServiceRef?: string;
-    id?: string = 'springTransactionErrorHandler-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<SpringTransactionErrorHandlerDefinition>) {
         super('SpringTransactionErrorHandlerDefinition');
         Object.assign(this, init);
@@ -2903,10 +2904,10 @@ export class SpringTransactionErrorHandlerDefinition extends CamelElement {
 
 export class CSimpleExpression extends CamelElement {
     expressionName?: string = 'csimple';
+    id?: string = 'csimple-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'csimple-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<CSimpleExpression>) {
         super('CSimpleExpression');
         Object.assign(this, init);
@@ -2915,10 +2916,10 @@ export class CSimpleExpression extends CamelElement {
 
 export class ConstantExpression extends CamelElement {
     expressionName?: string = 'constant';
+    id?: string = 'constant-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'constant-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ConstantExpression>) {
         super('ConstantExpression');
         Object.assign(this, init);
@@ -2927,12 +2928,12 @@ export class ConstantExpression extends CamelElement {
 
 export class DatasonnetExpression extends CamelElement {
     expressionName?: string = 'datasonnet';
+    id?: string = 'datasonnet-' + uuidv4().substring(0,4);
     expression: string = '';
     bodyMediaType?: string;
     outputMediaType?: string;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'datasonnet-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<DatasonnetExpression>) {
         super('DatasonnetExpression');
         Object.assign(this, init);
@@ -2941,9 +2942,9 @@ export class DatasonnetExpression extends CamelElement {
 
 export class ExchangePropertyExpression extends CamelElement {
     expressionName?: string = 'exchangeProperty';
+    id?: string = 'exchangeProperty-' + uuidv4().substring(0,4);
     expression: string = '';
     trim?: boolean;
-    id?: string = 'exchangeProperty-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<ExchangePropertyExpression>) {
         super('ExchangePropertyExpression');
         Object.assign(this, init);
@@ -2959,6 +2960,7 @@ export class ExpressionDefinition extends CamelElement {
     groovy?: GroovyExpression | string;
     header?: HeaderExpression | string;
     hl7terser?: Hl7TerserExpression | string;
+    java?: JavaExpression | string;
     joor?: JoorExpression | string;
     jq?: JqExpression | string;
     js?: JavaScriptExpression | string;
@@ -2983,10 +2985,10 @@ export class ExpressionDefinition extends CamelElement {
 
 export class GroovyExpression extends CamelElement {
     expressionName?: string = 'groovy';
+    id?: string = 'groovy-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'groovy-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<GroovyExpression>) {
         super('GroovyExpression');
         Object.assign(this, init);
@@ -2995,9 +2997,9 @@ export class GroovyExpression extends CamelElement {
 
 export class HeaderExpression extends CamelElement {
     expressionName?: string = 'header';
+    id?: string = 'header-' + uuidv4().substring(0,4);
     expression: string = '';
     trim?: boolean;
-    id?: string = 'header-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<HeaderExpression>) {
         super('HeaderExpression');
         Object.assign(this, init);
@@ -3006,24 +3008,38 @@ export class HeaderExpression extends CamelElement {
 
 export class Hl7TerserExpression extends CamelElement {
     expressionName?: string = 'hl7terser';
+    id?: string = 'hl7terser-' + uuidv4().substring(0,4);
     expression: string = '';
     headerName?: string;
     propertyName?: string;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'hl7terser-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<Hl7TerserExpression>) {
         super('Hl7TerserExpression');
         Object.assign(this, init);
     }
 }
 
+export class JavaExpression extends CamelElement {
+    expressionName?: string = 'java';
+    id?: string = 'java-' + uuidv4().substring(0,4);
+    expression: string = '';
+    preCompile?: boolean;
+    singleQuotes?: boolean;
+    resultType?: string;
+    trim?: boolean;
+    public constructor(init?: Partial<JavaExpression>) {
+        super('JavaExpression');
+        Object.assign(this, init);
+    }
+}
+
 export class JavaScriptExpression extends CamelElement {
     expressionName?: string = 'js';
+    id?: string = 'js-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'js-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JavaScriptExpression>) {
         super('JavaScriptExpression');
         Object.assign(this, init);
@@ -3032,12 +3048,12 @@ export class JavaScriptExpression extends CamelElement {
 
 export class JoorExpression extends CamelElement {
     expressionName?: string = 'joor';
+    id?: string = 'joor-' + uuidv4().substring(0,4);
     expression: string = '';
     preCompile?: boolean;
     singleQuotes?: boolean;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'joor-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JoorExpression>) {
         super('JoorExpression');
         Object.assign(this, init);
@@ -3046,12 +3062,12 @@ export class JoorExpression extends CamelElement {
 
 export class JqExpression extends CamelElement {
     expressionName?: string = 'jq';
+    id?: string = 'jq-' + uuidv4().substring(0,4);
     expression: string = '';
     headerName?: string;
     propertyName?: string;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'jq-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JqExpression>) {
         super('JqExpression');
         Object.assign(this, init);
@@ -3060,6 +3076,7 @@ export class JqExpression extends CamelElement {
 
 export class JsonPathExpression extends CamelElement {
     expressionName?: string = 'jsonpath';
+    id?: string = 'jsonpath-' + uuidv4().substring(0,4);
     expression: string = '';
     suppressExceptions?: boolean;
     allowSimple?: boolean;
@@ -3071,7 +3088,6 @@ export class JsonPathExpression extends CamelElement {
     propertyName?: string;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'jsonpath-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<JsonPathExpression>) {
         super('JsonPathExpression');
         Object.assign(this, init);
@@ -3080,10 +3096,10 @@ export class JsonPathExpression extends CamelElement {
 
 export class LanguageExpression extends CamelElement {
     expressionName?: string = 'language';
+    id?: string = 'language-' + uuidv4().substring(0,4);
     language: string = '';
     expression: string = '';
     trim?: boolean;
-    id?: string = 'language-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<LanguageExpression>) {
         super('LanguageExpression');
         Object.assign(this, init);
@@ -3092,6 +3108,7 @@ export class LanguageExpression extends CamelElement {
 
 export class MethodCallExpression extends CamelElement {
     expressionName?: string = 'method';
+    id?: string = 'method-' + uuidv4().substring(0,4);
     ref?: string;
     method?: string;
     beanType?: string;
@@ -3099,7 +3116,6 @@ export class MethodCallExpression extends CamelElement {
     validate?: boolean;
     resultType?: string;
     trim?: boolean;
-    id?: string = 'method-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<MethodCallExpression>) {
         super('MethodCallExpression');
         Object.assign(this, init);
@@ -3108,10 +3124,10 @@ export class MethodCallExpression extends CamelElement {
 
 export class MvelExpression extends CamelElement {
     expressionName?: string = 'mvel';
+    id?: string = 'mvel-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'mvel-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<MvelExpression>) {
         super('MvelExpression');
         Object.assign(this, init);
@@ -3120,10 +3136,10 @@ export class MvelExpression extends CamelElement {
 
 export class OgnlExpression extends CamelElement {
     expressionName?: string = 'ognl';
+    id?: string = 'ognl-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'ognl-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<OgnlExpression>) {
         super('OgnlExpression');
         Object.assign(this, init);
@@ -3132,10 +3148,10 @@ export class OgnlExpression extends CamelElement {
 
 export class PythonExpression extends CamelElement {
     expressionName?: string = 'python';
+    id?: string = 'python-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'python-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<PythonExpression>) {
         super('PythonExpression');
         Object.assign(this, init);
@@ -3144,10 +3160,10 @@ export class PythonExpression extends CamelElement {
 
 export class RefExpression extends CamelElement {
     expressionName?: string = 'ref';
+    id?: string = 'ref-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'ref-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<RefExpression>) {
         super('RefExpression');
         Object.assign(this, init);
@@ -3156,10 +3172,10 @@ export class RefExpression extends CamelElement {
 
 export class SimpleExpression extends CamelElement {
     expressionName?: string = 'simple';
+    id?: string = 'simple-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'simple-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<SimpleExpression>) {
         super('SimpleExpression');
         Object.assign(this, init);
@@ -3168,10 +3184,10 @@ export class SimpleExpression extends CamelElement {
 
 export class SpELExpression extends CamelElement {
     expressionName?: string = 'spel';
+    id?: string = 'spel-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     trim?: boolean;
-    id?: string = 'spel-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<SpELExpression>) {
         super('SpELExpression');
         Object.assign(this, init);
@@ -3180,6 +3196,7 @@ export class SpELExpression extends CamelElement {
 
 export class TokenizerExpression extends CamelElement {
     expressionName?: string = 'tokenize';
+    id?: string = 'tokenize-' + uuidv4().substring(0,4);
     token: string = '';
     endToken?: string;
     inheritNamespaceTagName?: string;
@@ -3192,7 +3209,6 @@ export class TokenizerExpression extends CamelElement {
     headerName?: string;
     propertyName?: string;
     trim?: boolean;
-    id?: string = 'tokenize-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<TokenizerExpression>) {
         super('TokenizerExpression');
         Object.assign(this, init);
@@ -3201,6 +3217,7 @@ export class TokenizerExpression extends CamelElement {
 
 export class XMLTokenizerExpression extends CamelElement {
     expressionName?: string = 'xtokenize';
+    id?: string = 'xtokenize-' + uuidv4().substring(0,4);
     expression: string = '';
     mode?: string;
     group?: number;
@@ -3208,7 +3225,6 @@ export class XMLTokenizerExpression extends CamelElement {
     headerName?: string;
     propertyName?: string;
     trim?: boolean;
-    id?: string = 'xtokenize-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<XMLTokenizerExpression>) {
         super('XMLTokenizerExpression');
         Object.assign(this, init);
@@ -3217,6 +3233,7 @@ export class XMLTokenizerExpression extends CamelElement {
 
 export class XPathExpression extends CamelElement {
     expressionName?: string = 'xpath';
+    id?: string = 'xpath-' + uuidv4().substring(0,4);
     expression: string = '';
     documentType?: string;
     resultType?: string;
@@ -3230,7 +3247,6 @@ export class XPathExpression extends CamelElement {
     headerName?: string;
     propertyName?: string;
     trim?: boolean;
-    id?: string = 'xpath-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<XPathExpression>) {
         super('XPathExpression');
         Object.assign(this, init);
@@ -3239,6 +3255,7 @@ export class XPathExpression extends CamelElement {
 
 export class XQueryExpression extends CamelElement {
     expressionName?: string = 'xquery';
+    id?: string = 'xquery-' + uuidv4().substring(0,4);
     expression: string = '';
     resultType?: string;
     type?: string;
@@ -3247,7 +3264,6 @@ export class XQueryExpression extends CamelElement {
     headerName?: string;
     propertyName?: string;
     trim?: boolean;
-    id?: string = 'xquery-' + uuidv4().substring(0,4);
     public constructor(init?: Partial<XQueryExpression>) {
         super('XQueryExpression');
         Object.assign(this, init);
@@ -3256,8 +3272,8 @@ export class XQueryExpression extends CamelElement {
 
 export class CustomLoadBalancerDefinition extends CamelElement {
     stepName?: string = 'customLoadBalancer';
-    ref: string = '';
     id?: string = 'customLoadBalancer-' + uuidv4().substring(0,4);
+    ref: string = '';
     public constructor(init?: Partial<CustomLoadBalancerDefinition>) {
         super('CustomLoadBalancerDefinition');
         Object.assign(this, init);
@@ -3328,12 +3344,12 @@ export class WeightedLoadBalancerDefinition extends CamelElement {
 
 export class ApiKeyDefinition extends CamelElement {
     stepName?: string = 'apiKey';
+    description?: string;
     name: string = '';
     key: string = '';
     inHeader?: boolean;
     inQuery?: boolean;
     inCookie?: boolean;
-    description?: string;
     public constructor(init?: Partial<ApiKeyDefinition>) {
         super('ApiKeyDefinition');
         Object.assign(this, init);
@@ -3342,8 +3358,8 @@ export class ApiKeyDefinition extends CamelElement {
 
 export class BasicAuthDefinition extends CamelElement {
     stepName?: string = 'basicAuth';
-    key: string = '';
     description?: string;
+    key: string = '';
     public constructor(init?: Partial<BasicAuthDefinition>) {
         super('BasicAuthDefinition');
         Object.assign(this, init);
@@ -3352,9 +3368,9 @@ export class BasicAuthDefinition extends CamelElement {
 
 export class BearerTokenDefinition extends CamelElement {
     stepName?: string = 'bearerToken';
+    description?: string;
     key: string = '';
     format?: string;
-    description?: string;
     public constructor(init?: Partial<BearerTokenDefinition>) {
         super('BearerTokenDefinition');
         Object.assign(this, init);
@@ -3363,22 +3379,23 @@ export class BearerTokenDefinition extends CamelElement {
 
 export class DeleteDefinition extends CamelElement {
     stepName?: string = 'delete';
+    id?: string = 'delete-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'delete-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3390,22 +3407,23 @@ export class DeleteDefinition extends CamelElement {
 
 export class GetDefinition extends CamelElement {
     stepName?: string = 'get';
+    id?: string = 'get-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'get-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3417,22 +3435,23 @@ export class GetDefinition extends CamelElement {
 
 export class HeadDefinition extends CamelElement {
     stepName?: string = 'head';
+    id?: string = 'head-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'head-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3444,8 +3463,8 @@ export class HeadDefinition extends CamelElement {
 
 export class MutualTLSDefinition extends CamelElement {
     stepName?: string = 'mutualTLS';
-    key: string = '';
     description?: string;
+    key: string = '';
     public constructor(init?: Partial<MutualTLSDefinition>) {
         super('MutualTLSDefinition');
         Object.assign(this, init);
@@ -3469,9 +3488,9 @@ export class OAuth2Definition extends CamelElement {
 
 export class OpenIdConnectDefinition extends CamelElement {
     stepName?: string = 'openIdConnect';
+    description?: string;
     key: string = '';
     url: string = '';
-    description?: string;
     public constructor(init?: Partial<OpenIdConnectDefinition>) {
         super('OpenIdConnectDefinition');
         Object.assign(this, init);
@@ -3480,6 +3499,7 @@ export class OpenIdConnectDefinition extends CamelElement {
 
 export class ParamDefinition extends CamelElement {
     stepName?: string = 'param';
+    description?: string;
     name: string = '';
     type?: string;
     defaultValue?: string;
@@ -3490,7 +3510,6 @@ export class ParamDefinition extends CamelElement {
     dataFormat?: string;
     allowableValues?: ValueDefinition[] = [];
     examples?: RestPropertyDefinition[] = [];
-    description?: string;
     public constructor(init?: Partial<ParamDefinition>) {
         super('ParamDefinition');
         Object.assign(this, init);
@@ -3499,22 +3518,23 @@ export class ParamDefinition extends CamelElement {
 
 export class PatchDefinition extends CamelElement {
     stepName?: string = 'patch';
+    id?: string = 'patch-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'patch-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3526,22 +3546,23 @@ export class PatchDefinition extends CamelElement {
 
 export class PostDefinition extends CamelElement {
     stepName?: string = 'post';
+    id?: string = 'post-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'post-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3553,22 +3574,23 @@ export class PostDefinition extends CamelElement {
 
 export class PutDefinition extends CamelElement {
     stepName?: string = 'put';
+    id?: string = 'put-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     to?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     type?: string;
     outType?: string;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     deprecated?: boolean;
     routeId?: string;
-    id?: string = 'put-' + uuidv4().substring(0,4);
-    description?: string;
     param?: ParamDefinition[] = [];
     responseMessage?: ResponseMessageDefinition[] = [];
     security?: SecurityDefinition[] = [];
@@ -3580,6 +3602,7 @@ export class PutDefinition extends CamelElement {
 
 export class ResponseHeaderDefinition extends CamelElement {
     stepName?: string = 'responseHeader';
+    description?: string;
     name: string = '';
     collectionFormat?: string;
     arrayType?: string;
@@ -3587,7 +3610,6 @@ export class ResponseHeaderDefinition extends CamelElement {
     dataFormat?: string;
     allowableValues?: ValueDefinition[] = [];
     example?: string;
-    description?: string;
     public constructor(init?: Partial<ResponseHeaderDefinition>) {
         super('ResponseHeaderDefinition');
         Object.assign(this, init);
@@ -3609,6 +3631,8 @@ export class ResponseMessageDefinition extends CamelElement {
 
 export class RestBindingDefinition extends CamelElement {
     stepName?: string = 'restBinding';
+    id?: string = 'restBinding-' + uuidv4().substring(0,4);
+    description?: string;
     consumes?: string;
     produces?: string;
     bindingMode?: string;
@@ -3616,10 +3640,9 @@ export class RestBindingDefinition extends CamelElement {
     outType?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     component?: string;
-    id?: string = 'restBinding-' + uuidv4().substring(0,4);
-    description?: string;
     public constructor(init?: Partial<RestBindingDefinition>) {
         super('RestBindingDefinition');
         Object.assign(this, init);
@@ -3645,7 +3668,8 @@ export class RestConfigurationDefinition extends CamelElement {
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     inlineRoutes?: boolean;
     jsonDataFormat?: string;
     xmlDataFormat?: string;
@@ -3663,20 +3687,21 @@ export class RestConfigurationDefinition extends CamelElement {
 
 export class RestDefinition extends CamelElement {
     stepName?: string = 'rest';
+    id?: string = 'rest-' + uuidv4().substring(0,4);
+    description?: string;
+    disabled?: boolean;
     path?: string;
     consumes?: string;
     produces?: string;
-    disabled?: boolean;
     bindingMode?: string;
     skipBindingOnErrorCode?: boolean;
     clientRequestValidation?: boolean;
-    enableCors?: boolean;
+    enableCORS?: boolean;
+    enableNoContentResponse?: boolean;
     apiDocs?: boolean;
     tag?: string;
     securityDefinitions?: RestSecuritiesDefinition;
     securityRequirements?: SecurityDefinition[] = [];
-    id?: string = 'rest-' + uuidv4().substring(0,4);
-    description?: string;
     delete?: DeleteDefinition[] = [];
     get?: GetDefinition[] = [];
     head?: HeadDefinition[] = [];
@@ -3704,7 +3729,7 @@ export class RestSecuritiesDefinition extends CamelElement {
     apiKey?: ApiKeyDefinition;
     basicAuth?: BasicAuthDefinition;
     bearer?: BearerTokenDefinition;
-    mutualTls?: MutualTLSDefinition;
+    mutualTLS?: MutualTLSDefinition;
     oauth2?: OAuth2Definition;
     openIdConnect?: OpenIdConnectDefinition;
     public constructor(init?: Partial<RestSecuritiesDefinition>) {
diff --git a/karavan-core/src/core/model/CamelMetadata.ts b/karavan-core/src/core/model/CamelMetadata.ts
index 9b0c2b13..8722364e 100644
--- a/karavan-core/src/core/model/CamelMetadata.ts
+++ b/karavan-core/src/core/model/CamelMetadata.ts
@@ -151,11 +151,12 @@ export const DataFormats: [string, string, string][] = [
 
 export const CamelDataFormatMetadata: ElementMeta[] = [
     new ElementMeta('asn1', 'ASN1DataFormat', 'ASN.1 File', "Encode and decode data structures using Abstract Syntax Notation One (ASN.1).", 'dataformat,transformation,file', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class to use when unmarshalling.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('usingIterator', 'Using Iterator', "If the asn1 file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('avro', 'AvroDataFormat', 'Avro', "Serialize and deserialize messages using Apache Avro binary data format.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('instanceClassName', 'Instance Class Name', "Class name to use for marshal and unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('library', 'Library', "Which Avro library to use.", 'string', 'ApacheAvro, Jackson', 'ApacheAvro', false, false, false, false, '', '', false),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -176,30 +177,30 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('schemaResolver', 'Schema Resolver', "Optional schema resolver used to lookup schemas for the data in transit.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('barcode', 'BarcodeDataFormat', 'Barcode', "Transform strings to various 1D/2D barcode bitmap formats and back.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('barcodeFormat', 'Barcode Format', "Barcode format such as QR-Code", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('imageType', 'Image Type', "Image type of the barcode such as png", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('width', 'Width', "Width of the barcode", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('height', 'Height', "Height of the barcode", 'number', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('base64', 'Base64DataFormat', 'Base64', "Encode and decode data using Base64.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('lineLength', 'Line Length', "To specific a maximum line length for the encoded data. By default 76 is used.", 'number', '', '76', false, false, false, false, '', '', false),
         new PropertyMeta('lineSeparator', 'Line Separator', "The line separators to use. Uses new line characters (CRLF) by default.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('urlSafe', 'Url Safe', "Instead of emitting '' and '/' we emit '-' and '_' respectively. urlSafe is only applied to encode operations. Decoding seamlessly handles both modes. Is by default false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('bindy', 'BindyDataFormat', 'Bindy', "Marshal and unmarshal Java beans from and to flat payloads (such as CSV, delimited, fixed length formats, or FIX messages).", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('type', 'Type', "Whether to use Csv, Fixed, or KeyValue.", 'string', 'Csv, Fixed, KeyValue', '', true, false, false, false, '', '', false),
         new PropertyMeta('classType', 'Class Type', "Name of model class to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('allowEmptyStream', 'Allow Empty Stream', "Whether to allow empty streams in the unmarshal process. If true, no exception will be thrown when a body without records is provided.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('unwrapSingleInstance', 'Unwrap Single Instance', "When unmarshalling should a single instance be unwrapped and returned instead of wrapped in a java.util.List.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('locale', 'Locale', "To configure a default locale to use, such as us for united states. To use the JVM platform default locale then use the name default", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('cbor', 'CBORDataFormat', 'CBOR', "Unmarshal a CBOR payload to POJO and back.", 'dataformat,transformation,json', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing CBOR ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson CBOR ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
@@ -210,9 +211,9 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('allowJmsType', 'Allow Jms Type', "Used for JMS users to allow the JMSType header from the JMS spec to specify a FQN classname to use to unmarshal to.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('crypto', 'CryptoDataFormat', 'Crypto (Java Cryptographic Extension)', "Encrypt and decrypt messages using Java Cryptography Extension (JCE).", 'dataformat,transformation,security', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('algorithm', 'Algorithm', "The JCE algorithm name indicating the cryptographic algorithm that will be used.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('keyRef', 'Key Ref', "Refers to the secret key to lookup from the register to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('cryptoProvider', 'Crypto Provider', "The name of the JCE Security Provider that should be used.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -220,11 +221,11 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('algorithmParameterRef', 'Algorithm Parameter Ref', "A JCE AlgorithmParameterSpec used to initialize the Cipher. Will lookup the type using the given name as a java.security.spec.AlgorithmParameterSpec type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bufferSize', 'Buffer Size', "The size of the buffer used in the signature process.", 'number', '', '4096', false, false, false, false, '', '', false),
         new PropertyMeta('macAlgorithm', 'Mac Algorithm', "The JCE algorithm name indicating the Message Authentication algorithm.", 'string', '', 'HmacSHA1', false, false, false, false, '', '', false),
-        new PropertyMeta('shouldAppendHmac', 'shouldAppendHmac', "shouldAppendHmac", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('shouldAppendHMAC', 'Should Append HMAC', "Flag indicating that a Message Authentication Code should be calculated and appended to the encrypted data.", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('inline', 'Inline', "Flag indicating that the configured IV should be inlined into the encrypted data stream. Is by default false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('csv', 'CsvDataFormat', 'CSV', "Handle CSV (Comma Separated Values) payloads.", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('formatRef', 'Format Ref', "The reference format to use, it will be updated with the other format options, the default value is CSVFormat.DEFAULT", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('formatName', 'Format Name', "The name of the format to use, the default value is CSVFormat.DEFAULT", 'string', 'DEFAULT, EXCEL, INFORMIX_UNLOAD, INFORMIX_UNLOAD_CSV, MYSQL, RFC4180', 'DEFAULT', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('commentMarkerDisabled', 'Comment Marker Disabled', "Disables the comment marker of the reference format.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
@@ -254,11 +255,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('useOrderedMaps', 'Use Ordered Maps', "Whether the unmarshalling should produce ordered maps (LinkedHashMap) for the lines values instead of lists. It requires to have header (either defined or collected).", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('recordConverterRef', 'Record Converter Ref', "Refers to a custom CsvRecordConverter to lookup from the registry to use.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('captureHeaderRecord', 'Capture Header Record', "Whether the unmarshalling should capture the header record and store it in the message header", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('custom', 'CustomDataFormat', 'Custom', "Delegate to a custom org.apache.camel.spi.DataFormat implementation via Camel registry.", 'dataformat,transformation', [
-        new PropertyMeta('ref', 'Ref', "Reference to the custom org.apache.camel.spi.DataFormat to lookup from the Camel registry.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('ref', 'Ref', "Reference to the custom org.apache.camel.spi.DataFormat to lookup from the Camel registry.", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('dataFormats', 'DataFormatsDefinition', 'Data formats', "Configure data formats.", 'dataformat,transformation', [
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', '', false),
@@ -303,6 +303,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('fhirJson', 'FhirJsonDataFormat', 'FHIR JSon', "Marshall and unmarshall FHIR objects to/from JSON.", 'dataformat,transformation,hl7,json', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', '', false),
         new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements instead of condensing output as much as possible.", 'boolean', '', 'false', false, false, false, false, '', '', false),
@@ -321,9 +322,9 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('suppressNarratives', 'Suppress Narratives', "If set to true (default is false), narratives will not be included in the encoded values.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. This setting has no effect on the parsing process. Multiple elements can be separated by comma when using String parameter. This method provides a finer-grained level of control than setStripVersi [...]
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('fhirXml', 'FhirXmlDataFormat', 'FHIR XML', "Marshall and unmarshall FHIR objects to/from XML.", 'dataformat,transformation,hl7,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('fhirVersion', 'Fhir Version', "The version of FHIR to use. Possible values are: DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5", 'string', 'DSTU2, DSTU2_HL7ORG, DSTU2_1, DSTU3, R4, R5', 'R4', false, false, false, false, '', '', false),
         new PropertyMeta('fhirContext', 'Fhir Context', "To use a custom fhir context. Reference to object of type ca.uhn.fhir.context.FhirContext", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('prettyPrint', 'Pretty Print', "Sets the pretty print flag, meaning that the parser will encode resources with human-readable spacing and newlines between elements instead of condensing output as much as possible.", 'boolean', '', 'false', false, false, false, false, '', '', false),
@@ -342,9 +343,9 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('suppressNarratives', 'Suppress Narratives', "If set to true (default is false), narratives will not be included in the encoded values.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('dontStripVersionsFromReferencesAtPaths', 'Dont Strip Versions From References At Paths', "If supplied value(s), any resource references at the specified paths will have their resource versions encoded instead of being automatically stripped during the encoding process. This setting has no effect on the parsing process. Multiple elements can be separated by comma when using String parameter. This method provides a finer-grained level of control than setStripVersi [...]
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('flatpack', 'FlatpackDataFormat', 'Flatpack', "Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library.", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('definition', 'Definition', "The flatpack pzmap configuration file. Can be omitted in simpler situations, but its preferred to use the pzmap.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('fixed', 'Fixed', "Delimited or fixed. Is by default false = delimited", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('delimiter', 'Delimiter', "The delimiter char (could be ; , or similar)", 'string', '', ',', false, false, false, false, '', '', false),
@@ -353,27 +354,27 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreExtraColumns', 'Ignore Extra Columns', "Allows for lines to be longer than expected and ignores the extra characters.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('textQualifier', 'Text Qualifier', "If the text is qualified with a character. Uses quote character by default.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('parserFactoryRef', 'Parser Factory Ref', "References to a custom parser factory to lookup in the registry", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('grok', 'GrokDataFormat', 'Grok', "Unmarshal unstructured data to objects using Logstash based Grok patterns.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('pattern', 'Pattern', "The grok pattern to match lines of input", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('flattened', 'Flattened', "Turns on flattened mode. In flattened mode the exception is thrown when there are multiple pattern matches with same key.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('allowMultipleMatchesPerLine', 'Allow Multiple Matches Per Line', "If false, every line of input is matched for pattern only once. Otherwise the line can be scanned multiple times when non-terminal pattern is used.", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('namedOnly', 'Named Only', "Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP})", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('gzipDeflater', 'GzipDeflaterDataFormat', 'GZip Deflater', "Compress and decompress messages using java.util.zip.GZIPStream.", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('hl7', 'HL7DataFormat', 'HL7', "Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec.", 'dataformat,transformation,hl7', [
-        new PropertyMeta('validate', 'Validate', "Whether to validate the HL7 message Is by default true.", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('validate', 'Validate', "Whether to validate the HL7 message Is by default true.", 'boolean', '', 'true', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('ical', 'IcalDataFormat', 'iCal', "Marshal and unmarshal iCal (.ics) documents to/from model objects.", 'dataformat,transformation', [
-        new PropertyMeta('validating', 'Validating', "Whether to validate.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('validating', 'Validating', "Whether to validate.", 'boolean', '', 'false', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jacksonXml', 'JacksonXMLDataFormat', 'Jackson XML', "Unmarshal an XML payloads to POJOs and back using XMLMapper extension of Jackson.", 'dataformat,transformation,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('xmlMapper', 'Xml Mapper', "Lookup and use the existing XmlMapper with the given id.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
@@ -390,17 +391,17 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('enableFeatures', 'Enable Features', "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('disableFeatures', 'Disable Features', "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features can be separated by comma", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jaxb', 'JaxbDataFormat', 'JAXB', "Unmarshal XML payloads to POJOs and back using JAXB2 XML marshalling standard.", 'dataformat,transformation,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('contextPath', 'Context Path', "Package name where your JAXB classes are located.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('contextPathIsClassName', 'Context Path Is Class Name', "This can be set to true to mark that the contextPath is referring to a classname and not a package name.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('schema', 'Schema', "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('schemaSeverityLevel', 'Schema Severity Level', "Sets the schema severity level to use when validating against a schema. This level determines the minimum severity error that triggers JAXB to stop continue parsing. The default value of 0 (warning) means that any error (warning, error or fatal error) will trigger JAXB to stop. There are the following three levels: 0=warning, 1=error, 2=fatal error.", 'string', '0, 1, 2', '0', false, false, false, false, '', '', false),
         new PropertyMeta('prettyPrint', 'Pretty Print', "To enable pretty printing output nicely formatted. Is by default false.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('objectFactory', 'Object Factory', "Whether to allow using ObjectFactory classes to create the POJO classes during marshalling. This only applies to POJO classes that has not been annotated with JAXB and providing jaxb.index descriptor files.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('ignoreJaxbElement', 'ignoreJaxbElement', "ignoreJaxbElement", 'boolean', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('mustBeJaxbElement', 'mustBeJaxbElement', "mustBeJaxbElement", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('ignoreJAXBElement', 'Ignore JAXBElement', "Whether to ignore JAXBElement elements - only needed to be set to false in very special use-cases.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('mustBeJAXBElement', 'Must Be JAXBElement', "Whether marhsalling must be java objects with JAXB annotations. And if not then it fails. This option can be set to false to relax that, such as when the data is already in XML format.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('filterNonXmlChars', 'Filter Non Xml Chars', "To ignore non xml characheters and replace them with an empty space.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('fragment', 'Fragment', "To turn on marshalling XML fragment trees. By default JAXB looks for XmlRootElement annotation on given class to operate on whole XML tree. This is useful but not always - sometimes generated code does not have XmlRootElement annotation, sometimes you need unmarshall only part of tree. In that case you can use partial unmarshalling. To enable this behaviours you need set property partClass. Camel will pass this class to JAXB's unmarshaler [...]
@@ -413,14 +414,14 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('jaxbProviderProperties', 'Jaxb Provider Properties', "Refers to a custom java.util.Map to lookup in the registry containing custom JAXB provider properties to be used with the JAXB marshaller.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('accessExternalSchemaProtocols', 'Access External Schema Protocols', "Only in use if schema validation has been enabled. Restrict access to the protocols specified for external reference set by the schemaLocation attribute, Import and Include element. Examples of protocols are file, http, jar:file. false or none to deny all access to external references; a specific protocol, such as file, to give permission to only the protocol; the keyword all to grant permissio [...]
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jsonApi', 'JsonApiDataFormat', 'JSonApi', "Marshal and unmarshal JSON:API resources using JSONAPI-Converter library.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('dataFormatTypes', 'Data Format Types', "The classes to take into account for the marshalling. Multiple classes can be separated by comma.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('mainFormatType', 'Main Format Type', "The class to take into account while unmarshalling.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('json', 'JsonDataFormat', 'JSon', "Marshal POJOs to JSON and back.", 'dataformat,transformation,json', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('autoDiscoverObjectMapper', 'Auto Discover Object Mapper', "If set to true then Jackson will look for an objectMapper to use from the registry", 'boolean', '', 'false', false, false, false, false, '', '', false),
@@ -443,21 +444,21 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('namingStrategy', 'Naming Strategy', "If set then Jackson will use the the defined Property Naming Strategy.Possible values are: LOWER_CAMEL_CASE, LOWER_DOT_CASE, LOWER_CASE, KEBAB_CASE, SNAKE_CASE and UPPER_CAMEL_CASE", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
         new PropertyMeta('dateFormatPattern', 'Date Format Pattern', "To configure the date format while marshall or unmarshall Date fields in JSON using Gson", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('lzf', 'LZFDataFormat', 'LZF Deflate Compression', "Compress and decompress streams using LZF deflate algorithm.", 'dataformat,transformation', [
-        new PropertyMeta('usingParallelCompression', 'Using Parallel Compression', "Enable encoding (compress) using multiple processing cores.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('usingParallelCompression', 'Using Parallel Compression', "Enable encoding (compress) using multiple processing cores.", 'boolean', '', 'false', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('mimeMultipart', 'MimeMultipartDataFormat', 'MIME Multipart', "Marshal Camel messages with attachments into MIME-Multipart messages and back.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('multipartSubType', 'Multipart Sub Type', "Specify the subtype of the MIME Multipart. Default is mixed.", 'string', '', 'mixed', false, false, false, false, '', '', false),
         new PropertyMeta('multipartWithoutAttachment', 'Multipart Without Attachment', "Defines whether a message without attachment is also marshaled into a MIME Multipart (with only one body part). Default is false.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('headersInline', 'Headers Inline', "Defines whether the MIME-Multipart headers are part of the message body (true) or are set as Camel headers (false). Default is false.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('includeHeaders', 'Include Headers', "A regex that defines which Camel headers are also included as MIME headers into the MIME multipart. This will only work if headersInline is set to true. Default is to include no headers", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('binaryContent', 'Binary Content', "Defines whether the content of binary parts in the MIME multipart is binary (true) or Base-64 encoded (false) Default is false.", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('pgp', 'PGPDataFormat', 'PGP', "Encrypt and decrypt messages using Java Cryptographic Extension (JCE) and PGP.", 'dataformat,transformation,security', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('keyUserid', 'Key Userid', "The user ID of the key in the PGP keyring used during encryption. Can also be only a part of a user ID. For example, if the user ID is Test User then you can use the part Test User or to address the user ID.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('signatureKeyUserid', 'Signature Key Userid', "User ID of the key in the PGP keyring used for signing (during encryption) or signature verification (during decryption). During the signature verification process the specified User ID restricts the public keys from the public keyring which can be used for the verification. If no User ID is specified for the signature verficiation then any public key in the public keyring can be used for the verification. Can also b [...]
         new PropertyMeta('password', 'Password', "Password used when opening the private key (not used for encryption).", 'string', '', '', false, false, false, false, '', '', false),
@@ -472,14 +473,15 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('compressionAlgorithm', 'Compression Algorithm', "Compression algorithm; possible values are defined in org.bouncycastle.bcpg.CompressionAlgorithmTags; for example 0 (= UNCOMPRESSED), 1 (= ZIP), 2 (= ZLIB), 3 (= BZIP2). Only relevant for encrypting.", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('hashAlgorithm', 'Hash Algorithm', "Signature hash algorithm; possible values are defined in org.bouncycastle.bcpg.HashAlgorithmTags; for example 2 (= SHA1), 8 (= SHA256), 9 (= SHA384), 10 (= SHA512), 11 (=SHA224). Only relevant for signing.", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('signatureVerificationOption', 'Signature Verification Option', "Controls the behavior for verifying the signature during unmarshaling. There are 4 values possible: optional: The PGP message may or may not contain signatures; if it does contain signatures, then a signature verification is executed. required: The PGP message must contain at least one signature; if this is not the case an exception (PGPException) is thrown. A signature verification is executed. ign [...]
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('parquetAvro', 'ParquetAvroDataFormat', 'Parquet File', "Parquet Avro serialization and de-serialization.", 'dataformat,transformation,file', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('compressionCodecName', 'Compression Codec Name', "Compression codec to use when marshalling.", 'string', '', 'GZIP', false, false, false, false, '', '', false),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class to use when (un)marshalling. If omitted, parquet files are converted into Avro's GenericRecords for unmarshalling and input objects are assumed as GenericRecords for marshalling.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator of records or read all the records at once.", 'boolean', '', 'false', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('protobuf', 'ProtobufDataFormat', 'Protobuf', "Serialize and deserialize Java objects using Google's Protocol buffers.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('objectMapper', 'Object Mapper', "Lookup and use the existing ObjectMapper with the given id when using Jackson.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('useDefaultObjectMapper', 'Use Default Object Mapper', "Whether to lookup and use default Jackson ObjectMapper from the registry.", 'boolean', '', 'true', false, false, false, false, '', '', false),
@@ -501,53 +503,53 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('autoDiscoverSchemaResolver', 'Auto Discover Schema Resolver', "When not disabled, the SchemaResolver will be looked up into the registry", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('contentTypeFormat', 'Content Type Format', "Defines a content type format in which protobuf message will be serialized/deserialized from(to) the Java been. The format can either be native or json for either native protobuf or json fields representation. The default value is native.", 'string', 'native, json', 'native', false, false, false, false, '', '', false),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('rss', 'RssDataFormat', 'RSS', "Transform from ROME SyndFeed Java Objects to XML and vice-versa.", 'dataformat,transformation', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('soap', 'SoapDataFormat', 'SOAP', "Marshal Java objects to SOAP messages and back.", 'dataformat,transformation,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('contextPath', 'Context Path', "Package name where your JAXB classes are located.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('elementNameStrategyRef', 'Element Name Strategy Ref', "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given object and soap action when marshaling the object into a SOAP message. The second is to find an Exception class for a given soap fault name. The following three element strategy class name is provided out of the box. QNameStrategy - Uses a fixed qNa [...]
         new PropertyMeta('version', 'Version', "SOAP version should either be 1.1 or 1.2. Is by default 1.1", 'string', '1.1, 1.2', '1.1', false, false, false, false, '', '', false),
         new PropertyMeta('namespacePrefixRef', 'Namespace Prefix Ref', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('schema', 'Schema', "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('swiftMt', 'SwiftMtDataFormat', 'SWIFT MT', "Encode and decode SWIFT MT messages.", 'dataformat,transformation,swift', [
-        new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('swiftMx', 'SwiftMxDataFormat', 'SWIFT MX', "Encode and decode SWIFT MX messages.", 'dataformat,transformation,swift', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('writeConfigRef', 'Write Config Ref', "Refers to a specific configuration to use when marshalling a message to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('readMessageId', 'Read Message Id', "The type of MX message to produce when unmarshalling an input stream. If not set, it will be automatically detected from the namespace used.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('readConfigRef', 'Read Config Ref', "Refers to a specific configuration to use when unmarshalling an input stream to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('syslog', 'SyslogDataFormat', 'Syslog', "Marshall SyslogMessages to RFC3164 and RFC5424 messages and back.", 'dataformat,transformation,monitoring', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('tarFile', 'TarFileDataFormat', 'Tar File', "Archive files into tarballs or extract files from tarballs.", 'dataformat,transformation,file', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('usingIterator', 'Using Iterator', "If the tar file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "If the tar file has more than one entry, setting this option to true, allows to get the iterator even if the directory is empty", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('preservePathElements', 'Preserve Path Elements', "If the file name contains path elements, setting this option to true, allows the path to be maintained in the tar file.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "Set the maximum decompressed size of a tar file (in bytes). The default value if not specified corresponds to 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable setting a maximum decompressed size.", 'number', '', '1073741824', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('thrift', 'ThriftDataFormat', 'Thrift', "Serialize and deserialize messages using Apache Thrift binary data format.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('instanceClass', 'Instance Class', "Name of class to use when unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('contentTypeFormat', 'Content Type Format', "Defines a content type format in which thrift message will be serialized/deserialized from(to) the Java been. The format can either be native or json for either native binary thrift, json or simple json fields representation. The default value is binary.", 'string', 'binary, json, sjson', 'binary', false, false, false, false, '', '', false),
         new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('tidyMarkup', 'TidyMarkupDataFormat', 'TidyMarkup', "Parse (potentially invalid) HTML into valid HTML or DOM.", 'dataformat,transformation', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('dataObjectType', 'Data Object Type', "What data type to unmarshal as, can either be org.w3c.dom.Node or java.lang.String. Is by default org.w3c.dom.Node", 'string', 'org.w3c.dom.Node, java.lang.String', 'org.w3c.dom.Node', false, false, false, false, '', '', false),
         new PropertyMeta('omitXmlDeclaration', 'Omit Xml Declaration', "When returning a String, do we omit the XML declaration in the top.", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('univocityCsv', 'UniVocityCsvDataFormat', 'uniVocity CSV', "Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers.", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('delimiter', 'Delimiter', "The delimiter of values", 'string', '', ',', false, false, false, false, '', '', false),
         new PropertyMeta('quoteAllFields', 'Quote All Fields', "Whether or not all values must be quoted when writing them.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('quote', 'Quote', "The quote symbol.", 'string', '', '"', false, false, false, false, 'advanced', '', false),
@@ -565,10 +567,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('univocityFixed', 'UniVocityFixedDataFormat', 'uniVocity Fixed Length', "Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers.", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('padding', 'Padding', "The padding character. The default value is a space", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('skipTrailingCharsUntilNewline', 'Skip Trailing Chars Until Newline', "Whether or not the trailing characters until new line must be ignored. The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('recordEndsOnNewline', 'Record Ends On Newline', "Whether or not the record ends on new line. The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
@@ -585,10 +587,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('univocityTsv', 'UniVocityTsvDataFormat', 'uniVocity TSV', "Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers.", 'dataformat,transformation,csv', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('escapeChar', 'Escape Char', "The escape character.", 'string', '', '\\', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('nullValue', 'Null Value', "The string representation of a null value. The default value is null", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('skipEmptyLines', 'Skip Empty Lines', "Whether or not the empty lines must be ignored. The default value is true", 'boolean', '', 'true', false, false, false, false, '', '', false),
@@ -603,10 +605,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('comment', 'Comment', "The comment symbol. The default value is #", 'string', '', '#', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('lazyLoad', 'Lazy Load', "Whether the unmarshalling should produce an iterator that reads the lines on the fly or if all the lines must be read at once. The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('asMap', 'As Map', "Whether the unmarshalling should produce maps for the lines values instead of lists. It requires to have header (either defined or collected). The default value is false", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('univocityHeader', 'univocityHeader', "univocityHeader", 'UniVocityHeader', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('xmlSecurity', 'XMLSecurityDataFormat', 'XML Security', "Encrypt and decrypt XML payloads using Apache Santuario.", 'dataformat,transformation,xml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('xmlCipherAlgorithm', 'Xml Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the XML message content. The available choices are: XMLCipher.TRIPLEDES XMLCipher.AES_128 XMLCipher.AES_128_GCM XMLCipher.AES_192 XMLCipher.AES_192_GCM XMLCipher.AES_256 XMLCipher.AES_256_GCM XMLCipher.SEED_128 XMLCipher.CAMELLIA_128 XMLCipher.CAMELLIA_192 XMLCipher.CAMELLIA_256 The default value is XMLCipher.AES_256_GCM", 'string', 'TRIPLEDES, AES_128, AES [...]
         new PropertyMeta('passPhrase', 'Pass Phrase', "A String used as passPhrase to encrypt/decrypt content. The passPhrase has to be provided. The passPhrase needs to be put together in conjunction with the appropriate encryption algorithm. For example using TRIPLEDES the passPhase can be a Only another 24 Byte key", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('passPhraseByte', 'Pass Phrase Byte', "A byte used as passPhrase to encrypt/decrypt content. The passPhrase has to be provided. The passPhrase needs to be put together in conjunction with the appropriate encryption algorithm. For example using TRIPLEDES the passPhase can be a Only another 24 Byte key", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -619,9 +621,9 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('digestAlgorithm', 'Digest Algorithm', "The digest algorithm to use with the RSA OAEP algorithm. The available choices are: XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 The default value is XMLCipher.SHA1", 'string', 'SHA1, SHA256, SHA512', 'SHA1', false, false, false, false, '', '', false),
         new PropertyMeta('mgfAlgorithm', 'Mgf Algorithm', "The MGF Algorithm to use with the RSA OAEP algorithm. The available choices are: EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 The default value is EncryptionConstants.MGF1_SHA1", 'string', 'MGF1_SHA1, MGF1_SHA256, MGF1_SHA512', 'MGF1_SHA1', false, false, false, false, '', '', false),
         new PropertyMeta('addKeyValueForEncryptedKey', 'Add Key Value For Encrypted Key', "Whether to add the public key used to encrypt the session key as a KeyValue in the EncryptedKey structure or not.", 'boolean', '', 'true', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('yaml', 'YAMLDataFormat', 'YAML', "Marshal and unmarshal Java objects to and from YAML.", 'dataformat,transformation,yaml', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('library', 'Library', "Which yaml library to use. By default it is SnakeYAML", 'string', 'SnakeYAML', 'SnakeYAML', false, false, false, false, '', '', false),
         new PropertyMeta('unmarshalType', 'Unmarshal Type', "Class name of the java type to use when unmarshalling", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('constructor', 'Constructor', "BaseConstructor to construct incoming documents.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -634,18 +636,17 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
         new PropertyMeta('typeFilter', 'Type Filter', "Set the types SnakeYAML is allowed to un-marshall", 'YAMLTypeFilterDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('maxAliasesForCollections', 'Max Aliases For Collections', "Set the maximum amount of aliases allowed for collections.", 'number', '', '50', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('allowRecursiveKeys', 'Allow Recursive Keys', "Set whether recursive keys are allowed.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('zipDeflater', 'ZipDeflaterDataFormat', 'Zip Deflater', "Compress and decompress streams using java.util.zip.Deflater and java.util.zip.Inflater.", 'dataformat,transformation', [
-        new PropertyMeta('compressionLevel', 'Compression Level', "To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is the best compression.", 'string', '-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9', '-1', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('compressionLevel', 'Compression Level', "To specify a specific compression between 0-9. -1 is default compression, 0 is no compression, and 9 is the best compression.", 'string', '-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9', '-1', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('zipFile', 'ZipFileDataFormat', 'Zip File', "Compression and decompress streams using java.util.zip.ZipStream.", 'dataformat,transformation,file', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('usingIterator', 'Using Iterator', "If the zip file has more than one entry, the setting this option to true, allows working with the splitter EIP, to split the data using an iterator in a streaming mode.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('allowEmptyDirectory', 'Allow Empty Directory', "If the zip file has more than one entry, setting this option to true, allows to get the iterator even if the directory is empty", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('preservePathElements', 'Preserve Path Elements', "If the file name contains path elements, setting this option to true, allows the path to be maintained in the zip file.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('maxDecompressedSize', 'Max Decompressed Size', "Set the maximum decompressed size of a zip file (in bytes). The default value if not specified corresponds to 1 gigabyte. An IOException will be thrown if the decompressed size exceeds this amount. Set to -1 to disable setting a maximum decompressed size.", 'number', '', '1073741824', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
 ]
 
@@ -657,6 +658,7 @@ export const Languages: [string, string, string][] = [
     ['groovy','Groovy',"Evaluates a Groovy script."],
     ['header','Header',"Gets a header from the Exchange."],
     ['hl7terser','HL7 Terser',"Get the value of a HL7 message field specified by terse location specification syntax."],
+    ['java','Java',"Evaluates a Java (Java compiled once at runtime) expression."],
     ['joor','jOOR',"Evaluates a jOOR (Java compiled once at runtime) expression."],
     ['jq','JQ',"Evaluates a JQ expression against a JSON message body."],
     ['js','JavaScript',"Evaluates a JavaScript expression."],
@@ -677,29 +679,29 @@ export const Languages: [string, string, string][] = [
 
 export const CamelLanguageMetadata: ElementMeta[] = [
     new ElementMeta('csimple', 'CSimpleExpression', 'CSimple', "Evaluate a compiled simple expression.", 'language,java', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('constant', 'ConstantExpression', 'Constant', "A fixed value set only once during the route startup.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('datasonnet', 'DatasonnetExpression', 'DataSonnet', "To use DataSonnet scripts for message transformations.", 'language,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('bodyMediaType', 'Body Media Type', "The String representation of the message's body MediaType", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('outputMediaType', 'Output Media Type', "The String representation of the MediaType to output", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('exchangeProperty', 'ExchangePropertyExpression', 'ExchangeProperty', "Gets a property from the Exchange.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('expression', 'ExpressionDefinition', 'Expression', "A useful base class for an expression", 'language', [
         new PropertyMeta('constant', 'constant', "constant", 'null', '', '', false, false, false, false, '', '', false),
@@ -709,6 +711,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('groovy', 'groovy', "groovy", 'null', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('header', 'header', "header", 'null', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('hl7terser', 'hl7terser', "hl7terser", 'null', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('java', 'java', "java", 'null', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('joor', 'joor', "joor", 'null', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('jq', 'jq', "jq", 'null', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('js', 'js', "js", 'null', '', '', false, false, false, false, '', '', false),
@@ -727,47 +730,56 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('xtokenize', 'xtokenize', "xtokenize", 'null', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('groovy', 'GroovyExpression', 'Groovy', "Evaluates a Groovy script.", 'language,script', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('header', 'HeaderExpression', 'Header', "Gets a header from the Exchange.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('hl7terser', 'Hl7TerserExpression', 'HL7 Terser', "Get the value of a HL7 message field specified by terse location specification syntax.", 'language,hl7', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
+    ]),
+    new ElementMeta('java', 'JavaExpression', 'Java', "Evaluates a Java (Java compiled once at runtime) expression.", 'language', [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('preCompile', 'Pre Compile', "Whether the expression should be pre compiled once during initialization phase. If this is turned off, then the expression is reloaded and compiled on each evaluation.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('singleQuotes', 'Single Quotes', "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('js', 'JavaScriptExpression', 'JavaScript', "Evaluates a JavaScript expression.", 'language,javascript', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('joor', 'JoorExpression', 'jOOR', "Evaluates a jOOR (Java compiled once at runtime) expression.", 'language', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('preCompile', 'Pre Compile', "Whether the expression should be pre compiled once during initialization phase. If this is turned off, then the expression is reloaded and compiled on each evaluation.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('singleQuotes', 'Single Quotes', "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jq', 'JqExpression', 'JQ', "Evaluates a JQ expression against a JSON message body.", 'language,json', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jsonpath', 'JsonPathExpression', 'JSONPath', "Evaluates a JSONPath expression against a JSON message body.", 'language,json', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('suppressExceptions', 'Suppress Exceptions', "Whether to suppress exceptions such as PathNotFoundException.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('allowSimple', 'Allow Simple', "Whether to allow in inlined Simple exceptions in the JSONPath expression", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
@@ -779,15 +791,15 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('language', 'LanguageExpression', 'Language', "Evaluates a custom language.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('language', 'Language', "The name of the language to use", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('method', 'MethodCallExpression', 'Bean Method', "Calls a Java bean method.", 'language,core,java', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('ref', 'Ref', "Reference to an existing bean (bean id) to lookup in the registry", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('method', 'Method', "Name of method to call", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('beanType', 'Bean Type', "Class name (fully qualified) of the bean to use Will lookup in registry and if there is a single instance of the same type, then the existing bean is used, otherwise a new bean is created (requires a default no-arg constructor).", 'string', '', '', false, false, false, false, '', '', false),
@@ -795,45 +807,45 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('validate', 'Validate', "Whether to validate the bean has the configured method.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('mvel', 'MvelExpression', 'MVEL', "Evaluates a MVEL template.", 'language,java', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('ognl', 'OgnlExpression', 'OGNL', "Evaluates an OGNL expression (Apache Commons OGNL).", 'language,java', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('python', 'PythonExpression', 'Python', "Evaluates a Python expression.", 'language,python', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('ref', 'RefExpression', 'Ref', "Uses an existing expression from the registry.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('simple', 'SimpleExpression', 'Simple', "Evaluates a Camel simple expression.", 'language,core,java', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('spel', 'SpELExpression', 'SpEL', "Evaluates a Spring expression (SpEL).", 'language,spring', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('tokenize', 'TokenizerExpression', 'Tokenize', "Tokenize text payloads using delimiter patterns.", 'language,core', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('token', 'Token', "The (start) token to use as tokenizer, for example you can use the new line token. You can use simple language as the token to support dynamic tokens.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('endToken', 'End Token', "The end token to use as tokenizer if using start/end token pairs. You can use simple language as the token to support dynamic tokens.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('inheritNamespaceTagName', 'Inherit Namespace Tag Name', "To inherit namespaces from a root/parent tag name when using XML You can use simple language as the tag name to support dynamic names.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -846,9 +858,9 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('xtokenize', 'XMLTokenizerExpression', 'XML Tokenize', "Tokenize XML payloads.", 'language,core,xml', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('mode', 'Mode', "The extraction mode. The available extraction modes are: i - injecting the contextual namespace bindings into the extracted token (default) w - wrapping the extracted token in its ancestor context u - unwrapping the extracted token to its child content t - extracting the text content of the specified element", 'string', 'i, w, u, t', 'i', false, false, false, false, '', '', false),
         new PropertyMeta('group', 'Group', "To group N parts together", 'number', '', '', false, false, false, false, '', '', false),
@@ -856,9 +868,9 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('xpath', 'XPathExpression', 'XPath', "Evaluates an XPath expression against an XML payload.", 'language,core,xml', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('documentType', 'Document Type', "Name of class for document type The default value is org.w3c.dom.Document", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class name of the result type (type from output) The default result type is NodeSet", 'string', 'NUMBER, STRING, BOOLEAN, NODESET, NODE', 'NODESET', false, false, false, false, '', '', false),
@@ -872,9 +884,9 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('xquery', 'XQueryExpression', 'XQuery', "Evaluates an XQuery expressions against an XML payload.", 'language,xml', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name of the result type (type from output) The default result type is NodeSet", 'string', '', '', false, false, false, false, '', '', false),
@@ -883,12 +895,14 @@ export const CamelLanguageMetadata: ElementMeta[] = [
         new PropertyMeta('headerName', 'Header Name', "Name of header to use as input, instead of the message body It has as higher precedent than the propertyName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propertyName', 'Property Name', "Name of property to use as input, instead of the message body. It has a lower precedent than the headerName if both are set.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
 ]
 
 export const CamelModelMetadata: ElementMeta[] = [
     new ElementMeta('aggregate', 'AggregateDefinition', 'Aggregate', "Aggregates many messages into a single message", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for aggregation. The Exchange which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the ignoreBadCorrelationKeys option.", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('completionPredicate', 'Completion Predicate', "A Predicate to indicate when an aggregated exchange is complete. If this is not specified and the AggregationStrategy object implements Predicate, the aggregationStrategy object will be used as the completionPredicate.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', '', false),
         new PropertyMeta('completionTimeoutExpression', 'Completion Timeout Expression', "Time in millis that an aggregated exchange should be inactive before its complete (timeout). This option can be set as either a fixed value or using an Expression which allows you to evaluate a timeout dynamically - will use Long as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0. You cannot use this option together with completionInterval, o [...]
@@ -916,84 +930,92 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('discardOnAggregationFailure', 'Discard On Aggregation Failure', "Discards the aggregated message when aggregation failed (an exception was thrown from AggregationStrategy . This means the partly aggregated message is dropped and not sent out of the aggregator. This option cannot be used together with completionFromBatchConsumer.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('forceCompletionOnStop', 'Force Completion On Stop', "Indicates to complete all current aggregated exchanges when the context is stopped", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('completeAllOnStop', 'Complete All On Stop', "Indicates to wait to complete all current and partial (pending) aggregated exchanges when the context is stopped. This also means that we will wait for all pending exchanges which are stored in the aggregation repository to complete so the repository is empty before we can stop. You may want to enable this when using the memory based aggregation repository that is memory based only, and do not store data on disk. When [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('bean', 'BeanDefinition', 'Bean', "Calls a Java bean", 'eip,endpoint', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('ref', 'Ref', "Sets a reference to an exiting bean to use, which is looked up from the registry", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('method', 'Method', "Sets the method name on the bean to use", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('beanType', 'Bean Type', "Sets the class name (fully qualified) of the bean to use", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance  [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'error', [
-        new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', '', false),
+        new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onCatch is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('choice', 'ChoiceDefinition', 'Choice', "Route messages based on a series of predicates", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('when', 'When', "Sets the when nodes", 'WhenDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('otherwise', 'Otherwise', "Sets the otherwise node", 'OtherwiseDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('precondition', 'Precondition', "Indicates whether this Choice EIP is in precondition mode or not. If so its branches (when/otherwise) are evaluated during startup to keep at runtime only the branch that matched.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Route messages in a fault tolerance way using Circuit Breaker", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('configuration', 'Configuration', "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('resilience4jConfiguration', 'Resilience4j Configuration', "Configures the circuit breaker to use Resilience4j with the given configuration.", 'Resilience4jConfigurationDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('faultToleranceConfiguration', 'Fault Tolerance Configuration', "Configures the circuit breaker to use MicroProfile Fault Tolerance with the given configuration.", 'FaultToleranceConfigurationDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('onFallback', 'On Fallback', "The fallback route path to execute that does not go over the network. This should be a static or cached result that can immediately be returned upon failure. If the fallback requires network connection then use onFallbackViaNetwork() .", 'OnFallbackDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('claimCheck', 'ClaimCheckDefinition', 'Claim Check', "The Claim Check EIP allows you to replace message content with a claim check (a unique key), which can be used to retrieve the message content at a later time.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('operation', 'Operation', "The claim check operation to use. The following operations are supported: Get - Gets (does not remove) the claim check by the given key. GetAndRemove - Gets and removes the claim check by the given key. Set - Sets a new (will override if key already exists) claim check with the given key. Push - Sets a new claim check on the stack (does not use key). Pop - Gets the latest claim check from the stack (does not use key).", 'string', 'Get,  [...]
         new PropertyMeta('key', 'Key', "To use a specific key for claim check id (for dynamic keys use simple language syntax as the key).", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('filter', 'Filter', "Specify a filter to control what data gets merged data back from the claim check repository. The following syntax is supported: body - to aggregate the message body attachments - to aggregate all the message attachments headers - to aggregate all the message headers header:pattern - to aggregate all the message headers that matches the pattern. The following pattern rules are applied in this order: exact match, returns true wildcard match (pa [...]
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "To use a custom AggregationStrategy instead of the default implementation. Notice you cannot use both custom aggregation strategy and configure data at the same time.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.AggregationStrategy', false),
         new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('convertBodyTo', 'ConvertBodyDefinition', 'Convert Body To', "Converts the message body to another type", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('mandatory', 'Mandatory', "When mandatory then the conversion must return a value (cannot be null), if this is not possible then NoTypeConversionAvailableException is thrown. Setting this to false could mean conversion is not possible and the value is null.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('charset', 'Charset', "To use a specific charset when converting", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+    ]),
+    new ElementMeta('convertHeaderTo', 'ConvertHeaderDefinition', 'Convert Header To', "Converts the message header to another type", 'eip,transformation', [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('name', 'Name', "Name of message header to convert its value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('mandatory', 'Mandatory', "When mandatory then the conversion must return a value (cannot be null), if this is not possible then NoTypeConversionAvailableException is thrown. Setting this to false could mean conversion is not possible and the value is null.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('charset', 'Charset', "To use a specific charset when converting", 'string', '', '', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('delay', 'DelayDefinition', 'Delay', "Delays processing for a specified length of time", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to define how long time to wait (in millis)", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('asyncDelayed', 'Async Delayed', "Enables asynchronous delay which means the thread will not block while delaying.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool if asyncDelay has been enabled.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('dynamicRouter', 'DynamicRouterDefinition', 'Dynamic Router', "Route messages based on dynamic rules", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to call that returns the endpoint(s) to route to in the dynamic routing. Important: The expression will be called in a while loop fashion, until the expression returns null which means the dynamic router is finished.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('uriDelimiter', 'Uri Delimiter', "Sets the uri delimiter to use", 'string', '', ',', false, false, false, false, '', '', false),
         new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this dynamic router, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('enrich', 'EnrichDefinition', 'Enrich', "Enriches a message with data from a secondary resource", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy', false),
         new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -1003,34 +1025,31 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producer when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as prototype scoped and will be stopp [...]
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise enricher if they are org.apache.camel.spi.SendDynamicAware .", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('filter', 'FilterDefinition', 'Filter', "Filter out messages based using a predicate", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Expression to determine if the message should be filtered or not. If the expression returns an empty value or false then the message is filtered (dropped), otherwise the message is continued being routed.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('statusPropertyName', 'Status Property Name', "Name of exchange property to use for storing the status of the filtering. Setting this allows to know if the filter predicate evaluated as true or false.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression to determine if the message should be filtered or not. If the expression returns an empty value or false then the message is filtered (dropped), otherwise the message is continued being routed.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
+        new PropertyMeta('statusPropertyName', 'Status Property Name', "Name of exchange property to use for storing the status of the filtering. Setting this allows to know if the filter predicate evaluated as true or false.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('doFinally', 'FinallyDefinition', 'Do Finally', "Path traversed when a try, catch, finally block exits", 'error', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('idempotentConsumer', 'IdempotentConsumerDefinition', 'Idempotent Consumer', "Filters out duplicate messages", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression used to calculate the correlation key to use for duplicate check. The Exchange which has the same correlation key is regarded as a duplicate and will be rejected.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('idempotentRepository', 'Idempotent Repository', "Sets the reference name of the message id repository", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('eager', 'Eager', "Sets whether to eagerly add the key to the idempotent repository or wait until the exchange is complete. Eager is default enabled.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('completionEager', 'Completion Eager', "Sets whether to complete the idempotent consumer eager or when the exchange is done. If this option is true to complete eager, then the idempotent consumer will trigger its completion when the exchange reached the end of the block of the idempotent consumer pattern. So if the exchange is continued routed after the block ends, then whatever happens there does not affect the state. If this option is false (default) to not com [...]
         new PropertyMeta('skipDuplicate', 'Skip Duplicate', "Sets whether to skip duplicates or not. The default behavior is to skip duplicates. A duplicate message would have the Exchange property org.apache.camel.Exchange#DUPLICATE_MESSAGE set to a Boolean#TRUE value. A none duplicate message will not have this property set.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('removeOnFailure', 'Remove On Failure', "Sets whether to remove or keep the key on failure. The default behavior is to remove the key on failure.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('kamelet', 'KameletDefinition', 'Kamelet', "To call Kamelets in special situations", 'eip,routing', [
@@ -1039,10 +1058,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('loadBalance', 'LoadBalanceDefinition', 'Load Balance', "Balances message processing among a number of nodes", 'eip,routing', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('inheritErrorHandler', 'Inherit Error Handler', "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you want to use a custom error handler strategy.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('inheritErrorHandler', 'Inherit Error Handler', "Sets whether or not to inherit the configured error handler. The default value is true. You can use this to disable using the inherited error handler for a given DSL such as a load balancer where you want to use a custom error handler strategy.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('customLoadBalancer', 'customLoadBalancer', "customLoadBalancer", 'CustomLoadBalancerDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('failover', 'failover', "failover", 'FailoverLoadBalancerDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('random', 'random', "random", 'RandomLoadBalancerDefinition', '', '', false, false, false, true, '', '', false),
@@ -1053,29 +1072,29 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('log', 'LogDefinition', 'Log', "Logs the defined message to the logger", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('message', 'Message', "Sets the log message (uses simple language)", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('loggingLevel', 'Logging Level', "Sets the logging level. The default value is INFO", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'INFO', false, false, false, false, '', '', false),
         new PropertyMeta('logName', 'Log Name', "Sets the name of the logger", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('marker', 'Marker', "To use slf4j marker", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('logger', 'Logger', "To refer to a custom logger instance to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes a message multiple times", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to define how many times we should loop. Notice the expression is only evaluated once, and should return a number as how many times to loop. A value of zero or negative means no looping. The loop is like a for-loop fashion, if you want a while loop, then the dynamic router may be a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('copy', 'Copy', "If the copy attribute is true, a copy of the input Exchange is used for each iteration. That means each iteration will start from a copy of the same message. By default loop will loop the same exchange all over, so each iteration may have different message content.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('doWhile', 'Do While', "Enables the while loop that loops until the predicate evaluates to false or null.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('breakOnShutdown', 'Break On Shutdown', "If the breakOnShutdown attribute is true, then the loop will not iterate until it reaches the end when Camel is shut down.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('marshal', 'MarshalDefinition', 'Marshal', "Marshals data into a specified format for transmission over a transport or component", 'dataformat,transformation', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', '', false),
@@ -1118,6 +1137,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('multicast', 'MulticastDefinition', 'Multicast', "Routes the same message to multiple paths either sequentially or in parallel.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy', false),
         new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('aggregationStrategyMethodAllowNull', 'Aggregation Strategy Method Allow Null', "If this option is false then the aggregate method is not used if there was no data to enrich. If this option is true then null values is used as the oldExchange (when no data to enrich), when using POJOs as the AggregationStrategy", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
@@ -1130,45 +1152,45 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('executorService', 'Executor Service', "Refers to a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Multicast will by default not share unit of work between the parent exchange and each multicasted exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Route to be executed when Circuit Breaker EIP executes fallback", 'eip,routing', [
-        new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a separate thread-pool, otherwise if the main command were to become latent and fill the thread-pool this would prevent the fallback from running if the two commands share the same pool.", 'boolean', '', 'false', false, false, false, false, 'a [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a separate thread-pool, otherwise if the main command were to become latent and fill the thread-pool this would prevent the fallback from running if the two commands share the same pool.", 'boolean', '', 'false', false, false, false, false, 'a [...]
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Route to be executed when all other choices evaluate to false", 'eip,routing', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('pausable', 'PausableDefinition', 'Pausable', "Pausable EIP to support resuming processing from last known offset.", 'eip,routing', [
-        new PropertyMeta('consumerListener', 'Consumer Listener', "Sets the consumer listener to use", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('untilCheck', 'Until Check', "References to a java.util.function.Predicate to use for until checks. The predicate is responsible for evaluating whether the processing can resume or not. Such predicate should return true if the consumption can resume, or false otherwise. The exact point of when the predicate is called is dependent on the component, and it may be called on either one of the available events. Implementations should not assume the predicate to be cal [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('consumerListener', 'Consumer Listener', "Sets the consumer listener to use", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('untilCheck', 'Until Check', "References to a java.util.function.Predicate to use for until checks. The predicate is responsible for evaluating whether the processing can resume or not. Such predicate should return true if the consumption can resume, or false otherwise. The exact point of when the predicate is called is dependent on the component, and it may be called on either one of the available events. Implementations should not assume the predicate to be cal [...]
     ]),
     new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Routes the message to a sequence of processors.", 'eip,routing', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('policy', 'PolicyDefinition', 'Policy', "Defines a policy the route will use", 'configuration', [
-        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('pollEnrich', 'PollEnrichDefinition', 'Poll Enrich', "Enriches messages with data polled from a secondary resource", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to merge the reply from the external service, into a single outgoing message. By default Camel will use the reply from the external service as outgoing message.", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy', false),
         new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -1177,18 +1199,18 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('timeout', 'Timeout', "Timeout in millis when polling from the external service. The timeout has influence about the poll enrich behavior. It basically operations in three different modes: negative value - Waits until a message is available and then returns it. Warning that this method could block indefinitely if no messages are available. 0 - Attempts to receive a message exchange immediately without waiting and returning null if a message exchange is not availa [...]
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ConsumerCache which is used to cache and reuse consumers when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as prototype scoped and will be stop [...]
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('process', 'ProcessDefinition', 'Process', "Calls a Camel processor", 'eip,endpoint', [
-        new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. Can also be used for creating new beans by their class name by prefixing with #class, eg #class:com.foo.MyClassType. And it is also possible to refer to singleton beans by their type in the registry by prefixing with #type: syntax, eg #type:com.foo.MyClassType", 'string', '', '', true, false, false, false, '', 'org.apache.camel.Processor', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. Can also be used for creating new beans by their class name by prefixing with #class, eg #class:com.foo.MyClassType. And it is also possible to refer to singleton beans by their type in the registry by prefixing with #type: syntax, eg #type:com.foo.MyClassType", 'string', '', '', true, false, false, false, '', 'org.apache.camel.Processor', false),
     ]),
     new ElementMeta('recipientList', 'RecipientListDefinition', 'Recipient List', "Route messages to a number of dynamically specified recipients", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Expression that returns which endpoints (url) to send the message to (the recipients). If the expression return an empty value then the message is not sent to any recipients.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression that returns which endpoints (url) to send the message to (the recipients). If the expression return an empty value then the message is not sent to any recipients.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('delimiter', 'Delimiter', "Delimiter used if the Expression returned multiple endpoints. Can be turned off using the value false. The default value is ,", 'string', '', ',', false, false, false, false, '', '', false),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets the AggregationStrategy to be used to assemble the replies from the recipients, into a single outgoing message from the RecipientList. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy', false),
         new PropertyMeta('aggregationStrategyMethodName', 'Aggregation Strategy Method Name', "This option can be used to explicit declare the method name to use, when using POJOs as the AggregationStrategy.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -1204,69 +1226,69 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be used send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
         new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Recipient List will by default not share unit of work between the parent exchange and each recipient exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('removeHeader', 'RemoveHeaderDefinition', 'Remove Header', "Removes a named header from the message", 'eip,transformation', [
-        new PropertyMeta('name', 'Name', "Name of header to remove", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('name', 'Name', "Name of header to remove", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('removeHeaders', 'RemoveHeadersDefinition', 'Remove Headers', "Removes message headers whose name matches a specified pattern", 'eip,transformation', [
-        new PropertyMeta('pattern', 'Pattern', "Name or pattern of headers to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or patter of headers to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('pattern', 'Pattern', "Name or pattern of headers to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or patter of headers to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('removeProperties', 'RemovePropertiesDefinition', 'Remove Properties', "Removes message exchange properties whose name matches a specified pattern", 'eip,transformation', [
-        new PropertyMeta('pattern', 'Pattern', "Name or pattern of properties to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or pattern of properties to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('pattern', 'Pattern', "Name or pattern of properties to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('excludePattern', 'Exclude Pattern', "Name or pattern of properties to not remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('removeProperty', 'RemovePropertyDefinition', 'Remove Property', "Removes a named property from the message exchange", 'eip,transformation', [
-        new PropertyMeta('name', 'Name', "Name of property to remove.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('name', 'Name', "Name of property to remove.", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('resequence', 'ResequenceDefinition', 'Resequence', "Resequences (re-order) messages based on an expression", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Expression to use for re-ordering the messages, such as a header with a sequence number", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression to use for re-ordering the messages, such as a header with a sequence number", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Resume EIP to support resuming processing from last known offset.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets the resume strategy to use", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('loggingLevel', 'Logging Level', "loggingLevel", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'ERROR', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('intermittent', 'Intermittent', "Sets whether the offsets will be intermittently present or whether they must be present in every exchange", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback by stopping routing the message", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('message', 'Message', "Message to use in rollback exception", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('markRollbackOnly', 'Mark Rollback Only', "Mark the transaction for rollback only (cannot be overruled to commit)", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('markRollbackOnlyLast', 'Mark Rollback Only Last', "Mark only last sub transaction for rollback only. When using sub transactions (if the transaction manager support this)", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('routingSlip', 'RoutingSlipDefinition', 'Routing Slip', "Routes a message through a series of steps that are pre-determined (the slip)", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style. Notice the expression is evaluated once, if you want a more dynamic style, then the dynamic router eip is a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('uriDelimiter', 'Uri Delimiter', "Sets the uri delimiter to use", 'string', '', ',', false, false, false, false, '', '', false),
         new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this routing slip, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as pro [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('saga', 'SagaDefinition', 'Saga', "Enables Sagas on the route", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('sagaService', 'Saga Service', "Refers to the id to lookup in the registry for the specific CamelSagaService to use.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('propagation', 'Propagation', "Set the Saga propagation mode (REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER).", 'string', 'REQUIRED, REQUIRES_NEW, MANDATORY, SUPPORTS, NOT_SUPPORTED, NEVER', 'REQUIRED', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('completionMode', 'Completion Mode', "Determine how the saga should be considered complete. When set to AUTO, the saga is completed when the exchange that initiates the saga is processed successfully, or compensated when it completes exceptionally. When set to MANUAL, the user must complete or compensate the saga using the saga:complete or saga:compensate endpoints.", 'string', 'AUTO, MANUAL', 'AUTO', false, false, false, false, 'advanced', '', false),
@@ -1274,58 +1296,64 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('compensation', 'Compensation', "The compensation endpoint URI that must be called to compensate all changes done in the route. The route corresponding to the compensation URI must perform compensation and complete without error. If errors occur during compensation, the saga service may call again the compensation URI to retry.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('completion', 'Completion', "The completion endpoint URI that will be called when the Saga is completed successfully. The route corresponding to the completion URI must perform completion tasks and terminate without error. If errors occur during completion, the saga service may call again the completion URI to retry.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('option', 'Option', "Allows to save properties of the current exchange in order to re-use them in a compensation/completion callback route. Options are usually helpful e.g. to store and retrieve identifiers of objects that should be deleted in compensating actions. Option values will be transformed into input headers of the compensation/completion exchange.", 'PropertyExpressionDefinition', '', '', false, false, true, true, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('sample', 'SamplingDefinition', 'Sample', "Extract a sample of the messages passing through a route", 'eip,routing', [
-        new PropertyMeta('samplePeriod', 'Sample Period', "Sets the sample period during which only a single Exchange will pass through.", 'string', '', '1000', false, false, false, false, '', '', false),
-        new PropertyMeta('messageFrequency', 'Message Frequency', "Sets the sample message count which only a single Exchange will pass through after this many received.", 'number', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('samplePeriod', 'Sample Period', "Sets the sample period during which only a single Exchange will pass through.", 'string', '', '1000', false, false, false, false, '', '', false),
+        new PropertyMeta('messageFrequency', 'Message Frequency', "Sets the sample message count which only a single Exchange will pass through after this many received.", 'number', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('script', 'ScriptDefinition', 'Script', "Executes a script from a language which does not change the message body.", 'eip,transformation', [
-        new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
     ]),
     new ElementMeta('setBody', 'SetBodyDefinition', 'Set Body', "Sets the contents of the message body", 'eip,transformation', [
-        new PropertyMeta('expression', 'Expression', "Expression that returns the new body to use", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression that returns the new body to use", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
     ]),
     new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the exchange pattern on the message exchange", 'configuration', [
-        new PropertyMeta('pattern', 'Pattern', "Sets the new exchange pattern of the Exchange to be used from this point forward", 'string', 'InOnly, InOut', '', true, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('pattern', 'Pattern', "Sets the new exchange pattern of the Exchange to be used from this point forward", 'string', 'InOnly, InOut', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets the value of a message header", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('name', 'Name', "Name of message header to set a new value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to return the value of the header", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+    ]),
+    new ElementMeta('setHeaders', 'SetHeadersDefinition', 'Set Headers', "Allows to set multiple headers on the message at the same time.", 'eip,transformation', [
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('headers', 'headers', "headers", 'SetHeaderDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('setProperty', 'SetPropertyDefinition', 'Set Property', "Sets a named property on the message exchange", 'eip,transformation', [
-        new PropertyMeta('name', 'Name', "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated exchange property name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('expression', 'Expression', "Expression to return the value of the message exchange property", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('name', 'Name', "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated exchange property name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression to return the value of the message exchange property", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
     ]),
     new ElementMeta('sort', 'SortDefinition', 'Sort', "Sorts the contents of the message", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Optional expression to sort by something else than the message body", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('comparator', 'Comparator', "Sets the comparator to use for sorting", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Optional expression to sort by something else than the message body", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
+        new PropertyMeta('comparator', 'Comparator', "Sets the comparator to use for sorting", 'string', '', '', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a single message into many sub-messages.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression of how to split the message body, such as as-is, using a tokenizer, or using a xpath.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('delimiter', 'Delimiter', "Delimiter used in splitting messages. Can be turned off using the value false. The default value is ,", 'string', '', ',', false, false, false, false, '', '', false),
         new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Sets a reference to the AggregationStrategy to be used to assemble the replies from the split messages, into a single outgoing message from the Splitter. By default Camel will use the original incoming message to the splitter (leave it unchanged). You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy', false),
@@ -1340,23 +1368,23 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Splitter will by default not share unit of work between the parent exchange and each split exchange. This means each split exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('step', 'StepDefinition', 'Step', "Routes the message to a sequence of processors which is grouped together as one logical name", 'eip,routing', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('stop', 'StopDefinition', 'Stop', "Stops the processing of the current message", 'eip,routing', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('threads', 'ThreadsDefinition', 'Threads', "Specifies that all steps after this node are processed asynchronously", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size", 'number', '', '', false, false, false, false, '', '', false),
@@ -1367,78 +1395,74 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('threadName', 'Thread Name', "Sets the thread name to use.", 'string', '', 'Threads', false, false, false, false, '', '', false),
         new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool.", 'string', 'Abort, CallerRuns', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not to use as caller runs as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread pool has no configured rejection handler. Is by default true", 'string', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Controls the rate at which messages are passed to the next node in the route", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to configure the maximum number of messages to throttle per request", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for throttle grouping. The Exchange which has the same correlation key is throttled together.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool (ScheduledExecutorService) by the throttler.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('timePeriodMillis', 'Time Period Millis', "Sets the time period during which the maximum request count is valid for", 'string', '', '1000', false, false, false, false, '', '', false),
         new PropertyMeta('asyncDelayed', 'Async Delayed', "Enables asynchronous delay which means the thread will not block while delaying.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not the caller should run the task when it was rejected by the thread pool. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('rejectExecution', 'Reject Execution', "Whether or not throttler throws the ThrottlerRejectedExecutionException when the exchange exceeds the request limit Is by default false", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('throwException', 'ThrowExceptionDefinition', 'Throw Exception', "Throws an exception", 'error', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('message', 'Message', "To create a new exception instance and use the given message as caused message (supports simple language)", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('exceptionType', 'Exception Type', "The class of the exception to create using the message.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('ref', 'Ref', "Reference to the exception instance to lookup from the registry to throw", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('to', 'ToDefinition', 'To', "Sends the message to a static endpoint", 'eip,routing', [
-        new PropertyMeta('uri', 'Uri', "Sets the uri of the endpoint to send to.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('uri', 'Uri', "Sets the uri of the endpoint to send to.", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('toD', 'ToDynamicDefinition', 'To D', "Sends the message to a dynamic endpoint", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('pattern', 'Pattern', "Sets the optional ExchangePattern used to invoke this endpoint", 'string', 'InOnly, InOut', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('cacheSize', 'Cache Size', "Sets the maximum size used by the org.apache.camel.spi.ProducerCache which is used to cache and reuse producers when using this recipient list, when uris are reused. Beware that when using dynamic endpoints then it affects how well the cache can be utilized. If each dynamic endpoint is unique then its best to turn off caching by setting this to -1, which allows Camel to not cache both the producers and endpoints; they are regarded as p [...]
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore invalid endpoint URIs and skip sending the message.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware .", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when toD is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('transacted', 'TransactedDefinition', 'Transacted', "Enables transaction on the route", 'configuration', [
-        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('transform', 'TransformDefinition', 'Transform', "Transforms the message body based on an expression", 'eip,transformation', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('toType', 'To Type', "To type used as a target data type in the transformation.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('doTry', 'TryDefinition', 'Do Try', "Marks the beginning of a try, catch, finally block", 'error', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('doCatch', 'doCatch', "doCatch", 'CatchDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('doFinally', 'doFinally', "doFinally", 'FinallyDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('unmarshal', 'UnmarshalDefinition', 'Unmarshal', "Converts the message data received from the wire into a format that Apache Camel processors can consume", 'dataformat,transformation', [
-        new PropertyMeta('allowNullBody', 'Allow Null Body', "Indicates whether null is allowed as value of a body to unmarshall.", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('allowNullBody', 'Allow Null Body', "Indicates whether null is allowed as value of a body to unmarshall.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('asn1', 'asn1', "asn1", 'ASN1DataFormat', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('avro', 'avro', "avro", 'AvroDataFormat', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('barcode', 'barcode', "barcode", 'BarcodeDataFormat', '', '', false, false, false, true, '', '', false),
@@ -1481,27 +1505,30 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates a message based on an expression", 'eip,transformation', [
-        new PropertyMeta('expression', 'Expression', "Expression to use for validation as a predicate. The expression should return either true or false. If returning false the message is invalid and an exception is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('predicateExceptionFactory', 'Predicate Exception Factory', "The bean id of custom PredicateExceptionFactory to use for creating the exception when the validation fails. By default, Camel will throw PredicateValidationException. By using a custom factory you can control which exception to throw instead.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression to use for validation as a predicate. The expression should return either true or false. If returning false the message is invalid and an exception is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
+        new PropertyMeta('predicateExceptionFactory', 'Predicate Exception Factory', "The bean id of custom PredicateExceptionFactory to use for creating the exception when the validation fails. By default, Camel will throw PredicateValidationException. By using a custom factory you can control which exception to throw instead.", 'string', '', '', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('when', 'WhenDefinition', 'When', "Triggers a route when the expression evaluates to true", 'eip,routing', [
-        new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether this when should trigger and route the message or not.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether this when should trigger and route the message or not.", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('whenSkipSendToEndpoint', 'WhenSkipSendToEndpointDefinition', 'When Skip Send To Endpoint', "Predicate to determine if the message should be sent or not to the endpoint, when using interceptSentToEndpoint.", 'configuration', [
-        new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether the message should be sent or not to the endpoint", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether the message should be sent or not to the endpoint", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('wireTap', 'WireTapDefinition', 'Wire Tap', "Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('copy', 'Copy', "Uses a copy of the original exchange", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('dynamicUri', 'Dynamic Uri', "Whether the uri is dynamic or static. If the uri is dynamic then the simple language is used to evaluate a dynamic uri to use as the wire-tap destination, for each incoming message. This works similar to how the toD EIP pattern works. If static then the uri is used as-is as the wire-tap destination.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
@@ -1512,12 +1539,12 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('ignoreInvalidEndpoint', 'Ignore Invalid Endpoint', "Whether to ignore invalid endpoint URIs and skip sending the message.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('allowOptimisedComponents', 'Allow Optimised Components', "Whether to allow components to optimise toD if they are org.apache.camel.spi.SendDynamicAware .", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('autoStartComponents', 'Auto Start Components', "Whether to auto startup components when toD is starting up.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('serviceCall', 'ServiceCallDefinition', 'Service Call', "To call remote services", 'eip,routing', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('name', 'Name', "Sets the name of the service to use", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ExpressionDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', false, false, false, false, '', '', false),
@@ -1529,33 +1556,33 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('serviceChooserRef', 'Service Chooser Ref', "Sets a reference to a custom ServiceChooser to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('loadBalancerRef', 'Load Balancer Ref', "Sets a reference to a custom ServiceLoadBalancer to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expressionRef', 'Expression Ref', "Set a reference to a custom Expression to use.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('intercept', 'InterceptDefinition', 'Intercept', "Intercepts a message at each step in the route", 'configuration', [
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages", 'configuration', [
-        new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('interceptSendToEndpoint', 'InterceptSendToEndpointDefinition', 'Intercept Send To Endpoint', "Intercepts messages being sent to an endpoint", 'configuration', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('uri', 'Uri', "Intercept sending to the uri or uri pattern.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('skipSendToOriginalEndpoint', 'Skip Send To Original Endpoint', "If set to true then the message is not sent to the original endpoint. By default (false) the message is both intercepted and then sent to the original endpoint.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('afterUri', 'After Uri', "After sending to the endpoint then send the message to this uri which allows to process its result.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('onCompletion', 'OnCompletionDefinition', 'On Completion', "Route to be executed when normal route processing completes", 'configuration', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('mode', 'Mode', "Sets the on completion mode. The default value is AfterConsumer", 'string', 'AfterConsumer, BeforeConsumer', 'AfterConsumer', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('onCompleteOnly', 'On Complete Only', "Will only synchronize when the org.apache.camel.Exchange completed successfully (no errors).", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('onFailureOnly', 'On Failure Only', "Will only synchronize when the org.apache.camel.Exchange ended with failure (exception or FAULT message).", 'boolean', '', 'false', false, false, false, false, '', '', false),
@@ -1563,12 +1590,12 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input message body when an org.apache.camel.Exchange for this on completion. The original input message is defensively copied, and the copied message body is converted to org.apache.camel.StreamCache if possible (stream caching is enabled, can be disabled globally or on the original route), to ensure the body can be read when the original message is being used later. If the body is converted to  [...]
         new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onCompletion is triggered. To be used for fine grained controlling whether a completion callback should be invoked or not", 'WhenDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('onException', 'OnExceptionDefinition', 'On Exception', "Route to be executed when an exception is thrown", 'error', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('exception', 'Exception', "A set of exceptions to react upon.", 'string', '', '', true, false, true, true, '', '', false),
         new PropertyMeta('onWhen', 'On When', "Sets an additional predicate that should be true before the onException is triggered. To be used for fine grained controlling whether a thrown exception should be intercepted by this exception type or not.", 'WhenDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('retryWhile', 'Retry While', "Sets the retry while predicate. Will continue retrying until predicate returns false.", 'ExpressionSubElementDefinition', '', '', false, false, false, true, 'advanced', '', false),
@@ -1580,12 +1607,11 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onExceptionOccurredRef', 'On Exception Occurred Ref', "Sets a reference to a processor that should be processed just after an exception occurred. Can be used to perform custom logging about the occurred exception at the exact time it happened. Important: Any exception thrown from this processor will be ignored.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
         new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this EIP from the route during build time. Once an EIP has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('routeConfiguration', 'RouteConfigurationDefinition', 'Route Configuration', "Reusable configuration for Camel route(s).", 'configuration', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('errorHandler', 'Error Handler', "Sets the error handler to use, for routes that has not already been configured with an error handler.", 'ErrorHandlerDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('intercept', 'Intercept', "Adds a route for an interceptor that intercepts every processing step.", 'InterceptDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('interceptFrom', 'Intercept From', "Adds a route for an interceptor that intercepts incoming messages on the given endpoint.", 'InterceptFromDefinition', '', '', false, false, true, true, '', '', false),
@@ -1593,30 +1619,31 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onException', 'On Exception', "Exception clause for catching certain exceptions and handling them.", 'OnExceptionDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('onCompletion', 'On Completion', "On completion callback for doing custom routing when the org.apache.camel.Exchange is complete.", 'OnCompletionDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route configuration should be included or not.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('route', 'RouteDefinition', 'Route', "A Camel route", 'configuration', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('group', 'Group', "The group that this route belongs to; could be the name of the RouteBuilder class or be explicitly configured in the XML. May be null.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('nodePrefixId', 'Node Prefix Id', "Sets a prefix to use for all node ids (not route id).", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('routeConfigurationId', 'Route Configuration Id', "The route configuration id or pattern this route should use for configuration. Multiple id/pattern can be separated by comma.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route should be included or not.", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('autoStartup', 'Auto Startup', "Whether to auto start this route", 'boolean', '', 'true', false, false, false, false, '', '', true),
+        new PropertyMeta('startupOrder', 'Startup Order', "To configure the ordering of the routes being started", 'number', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('trace', 'Trace', "Whether tracing is enabled on this route.", 'boolean', '', '', false, false, false, false, '', '', true),
         new PropertyMeta('messageHistory', 'Message History', "Whether message history is enabled on this route.", 'boolean', '', '', false, false, false, false, '', '', true),
         new PropertyMeta('logMask', 'Log Mask', "Whether security mask for Logging is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', '', true),
-        new PropertyMeta('autoStartup', 'Auto Startup', "Whether to auto start this route", 'boolean', '', 'true', false, false, false, false, '', '', true),
-        new PropertyMeta('startupOrder', 'Startup Order', "To configure the ordering of the routes being started", 'number', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('shutdownRoute', 'Shutdown Route', "To control how to shutdown the route.", 'string', 'Default, Defer', '', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('shutdownRunningTask', 'Shutdown Running Task', "To control how to shut down the route.", 'string', 'CompleteCurrentTaskOnly, CompleteAllTasks', '', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('precondition', 'Precondition', "The predicate of the precondition in simple language to evaluate in order to determine if this route should be included or not.", 'string', '', '', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('inputType', 'Input Type', "Declare the expected data type of the input message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .", 'InputTypeDefinition', '', '', false, false, false, tru [...]
+        new PropertyMeta('outputType', 'Output Type', "Declare the expected data type of the output message. If the actual message type is different at runtime, camel look for a required org.apache.camel.spi.Transformer and apply if exists. The type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .", 'OutputTypeDefinition', '', '', false, false, false, [...]
         new PropertyMeta('from', 'from', "from", 'FromDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('inputType', 'inputType', "inputType", 'InputTypeDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('outputType', 'outputType', "outputType", 'OutputTypeDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('routePolicy', 'routePolicy', "routePolicy", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('streamCaching', 'streamCaching', "streamCaching", 'boolean', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('routeTemplate', 'RouteTemplateDefinition', 'Route Template', "Defines a route template (parameterized routes)", 'configuration', [
-        new PropertyMeta('route', 'Route', "To define the route in the template", 'RouteDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('route', 'Route', "To define the route in the template", 'RouteDefinition', '', '', true, false, false, true, '', '', false),
         new PropertyMeta('beans', 'beans', "beans", 'RouteTemplateBeanDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('from', 'from', "from", 'FromDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('parameters', 'parameters', "parameters", 'RouteTemplateParameterDefinition', '', '', false, false, true, true, '', '', false),
@@ -1646,7 +1673,8 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', '', false),
         new PropertyMeta('inlineRoutes', 'Inline Routes', "Inline routes in rest-dsl which are linked using direct endpoints. By default, each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the route linked from rest-dsl). Enabling this allows Camel to optimize and inline this as a single route, however this requires to use direct endpoints, which must be unique per service. This option is default false.", 'boolean', [...]
         new PropertyMeta('jsonDataFormat', 'Json Data Format', "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('xmlDataFormat', 'Xml Data Format', "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', '', '', false, false, false, false, 'advanced', '', false),
@@ -1658,20 +1686,21 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('corsHeaders', 'Cors Headers', "Allows to configure custom CORS headers.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', '', false),
     ]),
     new ElementMeta('rest', 'RestDefinition', 'Rest', "Defines a rest service using the rest-dsl", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "Path of the rest service, such as /foo", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is auto", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. This option will override what may be configured on a parent level. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('tag', 'Tag', "To configure a special tag for the operations within this rest definition.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('securityDefinitions', 'Security Definitions', "Sets the security definitions such as Basic, OAuth2 etc.", 'RestSecuritiesDefinition', '', '', false, false, false, true, 'security', '', false),
         new PropertyMeta('securityRequirements', 'Security Requirements', "Sets the security requirement(s) for all endpoints.", 'SecurityDefinition', '', '', false, false, true, true, 'security', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('delete', 'delete', "delete", 'DeleteDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('get', 'get', "get", 'GetDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('head', 'head', "head", 'HeadDefinition', '', '', false, false, true, true, '', '', false),
@@ -1693,6 +1722,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('springTransactionErrorHandler', 'springTransactionErrorHandler', "springTransactionErrorHandler", 'SpringTransactionErrorHandlerDefinition', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('faultToleranceConfiguration', 'FaultToleranceConfigurationDefinition', 'Fault Tolerance Configuration', "MicroProfile Fault Tolerance Circuit Breaker EIP configuration", 'configuration,eip', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('circuitBreaker', 'Circuit Breaker', "Refers to an existing io.smallrye.faulttolerance.core.circuit.breaker.CircuitBreaker instance to lookup and use from the registry. When using this, then any other circuit breaker options are not in use.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('delay', 'Delay', "Control how long the circuit breaker stays open. The default is 5 seconds.", 'string', '', '5000', false, false, false, false, '', '', false),
         new PropertyMeta('successThreshold', 'Success Threshold', "Controls the number of trial calls which are allowed when the circuit breaker is half-open", 'number', '', '1', false, false, false, false, '', '', false),
@@ -1706,12 +1736,11 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('bulkheadMaxConcurrentCalls', 'Bulkhead Max Concurrent Calls', "Configures the max amount of concurrent calls the bulkhead will support.", 'number', '', '10', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bulkheadWaitingTaskQueue', 'Bulkhead Waiting Task Queue', "Configures the task queue size for holding waiting tasks to be processed by the bulkhead.", 'number', '', '10', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bulkheadExecutorService', 'Bulkhead Executor Service', "References to a custom thread pool to use when bulkhead is enabled.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('from', 'FromDefinition', 'From', "Act as a message source as input to a route", 'eip,routing', [
-        new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('parameters', 'parameters', "parameters", 'object', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', '', false),
     ]),
@@ -1723,10 +1752,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('globalOption', 'Global Option', "A series of global options as key value pairs", 'GlobalOptionDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('inputType', 'InputTypeDefinition', 'Input Type', "Set the expected data type of the input message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} .  [...]
-        new PropertyMeta('urn', 'Urn', "The input type URN.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('urn', 'Urn', "The input type URN.", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('optimisticLockRetryPolicy', 'OptimisticLockRetryPolicyDefinition', 'Optimistic Lock Retry Policy', "To configure optimistic locking", 'configuration', [
         new PropertyMeta('maximumRetries', 'Maximum Retries', "Sets the maximum number of retries", 'number', '', '', false, false, false, false, '', '', false),
@@ -1736,10 +1765,10 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('randomBackOff', 'Random Back Off', "Enables random backoff", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
     ]),
     new ElementMeta('outputType', 'OutputTypeDefinition', 'Output Type', "Set the expected data type of the output message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder [...]
-        new PropertyMeta('urn', 'Urn', "Set output type URN.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this output type.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('urn', 'Urn', "Set output type URN.", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('validate', 'Validate', "Whether if validation is required for this output type.", 'boolean', '', 'false', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('packageScan', 'PackageScanDefinition', 'Package Scan', "Scans for Java org.apache.camel.builder.RouteBuilder classes in java packages", 'configuration', [
         new PropertyMeta('package', 'Package', "Sets the java package names to use for scanning for route builder classes", 'string', '', '', true, false, true, true, '', '', false),
@@ -1747,14 +1776,15 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('includes', 'Includes', "Include finding route builder from these java package names.", 'string', '', '', false, false, true, true, 'advanced', '', false),
     ]),
     new ElementMeta('property', 'PropertyDefinition', 'Property', "A key value pair where the value is a literal value", 'configuration', [
-        new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('key', 'Key', "The name of the property", 'string', '', '', true, false, false, false, '', '', false),
+        new PropertyMeta('value', 'Value', "The property value.", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('propertyExpression', 'PropertyExpressionDefinition', 'Property Expression', "A key value pair where the value is an expression.", 'configuration', [
         new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "Property values as an expression", 'ExpressionDefinition', '', '', true, false, false, true, '', '', false),
     ]),
     new ElementMeta('redeliveryPolicy', 'RedeliveryPolicyDefinition', 'Redelivery Policy', "To configure re-delivery for error handling", 'configuration', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('maximumRedeliveries', 'Maximum Redeliveries', "Sets the maximum redeliveries x = redeliver at most x times 0 = no redeliveries -1 = redeliver forever", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('redeliveryDelay', 'Redelivery Delay', "Sets the initial redelivery delay", 'string', '', '1000', false, false, false, false, '', '', false),
         new PropertyMeta('asyncDelayedRedelivery', 'Async Delayed Redelivery', "Allow asynchronous delayed redelivery. The route, in particular the consumer's component, must support the Asynchronous Routing Engine (e.g. seda).", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
@@ -1779,9 +1809,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('delayPattern', 'Delay Pattern', "Sets the delay pattern with delay intervals.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('allowRedeliveryWhileStopping', 'Allow Redelivery While Stopping', "Controls whether to allow redelivery while stopping/shutting down a route that uses error handling.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('exchangeFormatterRef', 'Exchange Formatter Ref', "Sets the reference of the instance of org.apache.camel.spi.ExchangeFormatter to generate the log message from exchange.", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('resilience4jConfiguration', 'Resilience4jConfigurationDefinition', 'Resilience4j Configuration', "Resilience4j Circuit Breaker EIP configuration", 'configuration,eip', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('circuitBreaker', 'Circuit Breaker', "Refers to an existing io.github.resilience4j.circuitbreaker.CircuitBreaker instance to lookup and use from the registry. When using this, then any other circuit breaker options are not in use.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('config', 'Config', "Refers to an existing io.github.resilience4j.circuitbreaker.CircuitBreakerConfig instance to lookup and use from the registry.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('failureRateThreshold', 'Failure Rate Threshold', "Configures the failure rate threshold in percentage. If the failure rate is equal or greater than the threshold the CircuitBreaker transitions to open and starts short-circuiting calls. The threshold must be greater than 0 and not greater than 100. Default value is 50 percentage.", 'number', '', '50', false, false, false, false, '', '', false),
@@ -1802,14 +1832,13 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('timeoutExecutorService', 'Timeout Executor Service', "References to a custom thread pool to use when timeout is enabled (uses ForkJoinPool#commonPool() by default)", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('timeoutDuration', 'Timeout Duration', "Configures the thread execution timeout. Default value is 1 second.", 'number', '', '1000', false, false, false, false, '', '', false),
         new PropertyMeta('timeoutCancelRunningFuture', 'Timeout Cancel Running Future', "Configures whether cancel is called on the running future. Defaults to true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('restContextRef', 'RestContextRefDefinition', 'Rest Context Ref', "To refer to an XML file with rest services defined using the rest-dsl", 'configuration,rest', [
         new PropertyMeta('ref', 'Ref', "Reference to the rest-dsl", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('routeBuilder', 'RouteBuilderDefinition', 'Route Builder', "To refer to a Java org.apache.camel.builder.RouteBuilder instance to use.", 'configuration', [
-        new PropertyMeta('ref', 'Ref', "Reference to the route builder instance", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('ref', 'Ref', "Reference to the route builder instance", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('routeConfigurationContextRef', 'RouteConfigurationContextRefDefinition', 'Route Configuration Context Ref', "To refer to an XML file with route configuration defined using the xml-dsl", 'configuration', [
         new PropertyMeta('ref', 'Ref', "Reference to the route templates in the xml dsl", 'string', '', '', true, false, false, false, '', '', false),
@@ -1830,6 +1859,8 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('value', 'Value', "The value of the parameter.", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('threadPoolProfile', 'ThreadPoolProfileDefinition', 'Thread Pool Profile', "To configure thread pools", 'configuration', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('defaultProfile', 'Default Profile', "Whether this profile is the default thread pool profile", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('maxPoolSize', 'Max Pool Size', "Sets the maximum pool size", 'number', '', '', false, false, false, false, '', '', false),
@@ -1838,23 +1869,12 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('maxQueueSize', 'Max Queue Size', "Sets the maximum number of tasks in the work queue. Use -1 or Integer.MAX_VALUE for an unbounded queue", 'number', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads is allowed to timeout and therefore can shrink the pool size below the core pool size Is by default true", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool.", 'string', 'Abort, CallerRuns', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('value', 'ValueDefinition', 'Value', "A single value", 'configuration', [
         new PropertyMeta('value', 'Value', "Property value", 'string', '', '', true, false, false, false, '', '', false),
     ]),
-    new ElementMeta('beans', 'BeansDefinition', 'Beans', "A grouping POJO (and related XML root element) that's historically associated with entire application (or its distinguished fragment). This class is not meant to be used with Camel Java DSL, but it's needed to generate XML Schema and MX parser methods.", 'configuration', [
-        new PropertyMeta('bean', 'Bean', "bean", 'RegistryBeanDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('restConfiguration', 'Rest Configuration', "restConfiguration", 'RestConfigurationDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('rest', 'Rest', "rest", 'RestDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('routeConfiguration', 'Route Configuration', "routeConfiguration", 'RouteConfigurationDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('routeTemplate', 'Route Template', "routeTemplate", 'RouteTemplateDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('templatedRoute', 'Templated Route', "templatedRoute", 'TemplatedRouteDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('route', 'Route', "route", 'RouteDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('componentScan', 'componentScan', "componentScan", 'ComponentScanDefinition', '', '', false, false, true, true, '', '', false),
-    ]),
     new ElementMeta('serviceCallConfiguration', 'ServiceCallConfigurationDefinition', 'Service Call Configuration', "Remote service call configuration", 'routing,cloud', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expression', 'Expression', "Configures the Expression using the given configuration.", 'ExpressionDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the simple language expression.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('component', 'Component', "The component to use.", 'string', '', 'http', false, false, false, false, '', '', false),
@@ -1864,7 +1884,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('serviceChooserRef', 'Service Chooser Ref', "Sets a reference to a custom ServiceChooser to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('loadBalancerRef', 'Load Balancer Ref', "Sets a reference to a custom ServiceLoadBalancer to use.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('expressionRef', 'Expression Ref', "Set a reference to a custom Expression to use.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('blacklistServiceFilter', 'blacklistServiceFilter', "blacklistServiceFilter", 'BlacklistServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('combinedServiceFilter', 'combinedServiceFilter', "combinedServiceFilter", 'CombinedServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('customServiceFilter', 'customServiceFilter', "customServiceFilter", 'CustomServiceCallServiceFilterConfiguration', '', '', false, false, false, true, '', '', false),
@@ -1914,6 +1933,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('zipFile', 'zipFile', "zipFile", 'ZipFileDataFormat', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('deadLetterChannel', 'DeadLetterChannelDefinition', 'Dead Letter Channel', "Error handler with dead letter queue.", 'configuration,error', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('deadLetterUri', 'Dead Letter Uri', "The dead letter endpoint uri for the Dead Letter error handler.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('deadLetterHandleNewException', 'Dead Letter Handle New Exception', "Whether the dead letter channel should handle (and ignore) any new exception that may been thrown during sending the message to the dead letter endpoint. The default value is true which means any such kind of exception is handled and ignored. Set this to false to let the exception be propagated back on the org.apache.camel.Exchange . This can be used in situations where you use transactions, and [...]
         new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', '', false),
@@ -1928,9 +1948,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('defaultErrorHandler', 'DefaultErrorHandlerDefinition', 'Default Error Handler', "The default error handler.", 'configuration,error', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('useOriginalMessage', 'Use Original Message', "Will use the original input org.apache.camel.Message (original body and headers) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the [...]
         new PropertyMeta('useOriginalBody', 'Use Original Body', "Will use the original input org.apache.camel.Message body (original body only) when an org.apache.camel.Exchange is moved to the dead letter queue. Notice: this only applies when all redeliveries attempt have failed and the org.apache.camel.Exchange is doomed for failure. Instead of using the current inprogress org.apache.camel.Exchange IN message we use the original IN message instead. This allows you to store the origina [...]
@@ -1943,9 +1963,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('jtaTransactionErrorHandler', 'JtaTransactionErrorHandlerDefinition', 'Jta Transaction Error Handler', "JTA based transactional error handler (requires camel-jta).", 'configuration,error', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', '', false),
         new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', '', false),
@@ -1960,16 +1980,16 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('noErrorHandler', 'NoErrorHandlerDefinition', 'No Error Handler', "To not use an error handler.", 'configuration,error', [
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('refErrorHandler', 'RefErrorHandlerDefinition', 'Ref Error Handler', "References to an existing or custom error handler.", 'configuration,error', [
-        new PropertyMeta('ref', 'Ref', "References to an existing or custom error handler.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('ref', 'Ref', "References to an existing or custom error handler.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('springTransactionErrorHandler', 'SpringTransactionErrorHandlerDefinition', 'Spring Transaction Error Handler', "Spring based transactional error handler (requires camel-spring).", 'configuration,error', [
+        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('transactedPolicyRef', 'Transacted Policy Ref', "The transacted policy to use that is configured for either Spring or JTA based transactions. If no policy has been configured then Camel will attempt to auto-discover.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('rollbackLoggingLevel', 'Rollback Logging Level', "Sets the logging level to use for logging transactional rollback. This option is default WARN.", 'string', 'TRACE, DEBUG, INFO, WARN, ERROR, OFF', 'WARN', false, false, false, false, '', '', false),
         new PropertyMeta('redeliveryPolicy', 'Redelivery Policy', "Sets the redelivery settings", 'RedeliveryPolicyDefinition', '', '', false, false, false, true, '', '', false),
@@ -1984,7 +2004,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('onPrepareFailureRef', 'On Prepare Failure Ref', "Sets a reference to a processor to prepare the org.apache.camel.Exchange before handled by the failure processor / dead letter channel. This allows for example to enrich the message before sending to a dead letter queue.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('retryWhileRef', 'Retry While Ref', "Sets a retry while predicate. Will continue retrying until the predicate evaluates to false.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor', false),
         new PropertyMeta('executorServiceRef', 'Executor Service Ref', "Sets a reference to a thread pool to be used by the error handler", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('expression', 'ExpressionDefinition', 'Expression', "A useful base class for an expression", 'language', [
         new PropertyMeta('constant', 'constant', "constant", 'ConstantExpression', '', '', false, false, false, true, '', '', false),
@@ -1994,6 +2013,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('groovy', 'groovy', "groovy", 'GroovyExpression', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('header', 'header', "header", 'HeaderExpression', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('hl7terser', 'hl7terser', "hl7terser", 'Hl7TerserExpression', '', '', false, false, false, true, '', '', false),
+        new PropertyMeta('java', 'java', "java", 'JavaExpression', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('joor', 'joor', "joor", 'JoorExpression', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('jq', 'jq', "jq", 'JqExpression', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('js', 'js', "js", 'JavaScriptExpression', '', '', false, false, false, true, '', '', false),
@@ -2012,99 +2032,103 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('xtokenize', 'xtokenize', "xtokenize", 'XMLTokenizerExpression', '', '', false, false, false, true, '', '', false),
     ]),
     new ElementMeta('customLoadBalancer', 'CustomLoadBalancerDefinition', 'Custom Load Balancer', "To use a custom load balancer implementation.", 'eip,routing', [
-        new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('ref', 'Ref', "Refers to the custom load balancer to lookup from the registry", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('apiKey', 'ApiKeyDefinition', 'Api Key', "Rest security basic auth definition", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('name', 'Name', "The name of the header or query parameter to be used.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('inHeader', 'In Header', "To use header as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('inQuery', 'In Query', "To use query parameter as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', '', false),
         new PropertyMeta('inCookie', 'In Cookie', "To use a cookie as the location of the API key.", 'boolean', '', 'false', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('basicAuth', 'BasicAuthDefinition', 'Basic Auth', "Rest security basic auth definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('bearerToken', 'BearerTokenDefinition', 'Bearer Token', "Rest security bearer token authentication definition", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('format', 'Format', "A hint to the client to identify how the bearer token is formatted.", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('delete', 'DeleteDefinition', 'Delete', "Rest DELETE command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('get', 'GetDefinition', 'Get', "Rest GET command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('head', 'HeadDefinition', 'Head', "Rest HEAD command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('mutualTLS', 'MutualTLSDefinition', 'Mutual TLS', "Rest security mutual TLS authentication definition", 'rest,security,configuration', [
-        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
     ]),
     new ElementMeta('openIdConnect', 'OpenIdConnectDefinition', 'Open Id Connect', "Rest security OpenID Connect definition", 'rest,security,configuration', [
+        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('key', 'Key', "Key used to refer to this security definition", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('url', 'Url', "OpenId Connect URL to discover OAuth2 configuration values.", 'string', '', '', true, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "A short description for security scheme.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('param', 'ParamDefinition', 'Param', "To specify the rest operation parameters.", 'rest', [
+        new PropertyMeta('description', 'Description', "Sets the parameter description.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('name', 'Name', "Sets the parameter name.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('type', 'Type', "Sets the parameter type.", 'string', 'body, formData, header, path, query', 'path', false, false, false, false, '', '', false),
         new PropertyMeta('defaultValue', 'Default Value', "Sets the parameter default value.", 'string', '', '', false, false, false, false, '', '', false),
@@ -2115,72 +2139,75 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values (enum).", 'ValueDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('examples', 'Examples', "Sets the parameter examples.", 'RestPropertyDefinition', '', '', false, false, true, true, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the parameter description.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('patch', 'PatchDefinition', 'Patch', "Rest PATCH command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('post', 'PostDefinition', 'Post', "Rest POST command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('put', 'PutDefinition', 'Put', "Rest PUT command", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('to', 'To', "The Camel endpoint this REST service will call, such as a direct endpoint to link to an existing route that handles this REST call.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json. This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json This option will override what may be configured on a parent level", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('type', 'Type', "Sets the class name to use for binding from input to POJO for the incoming data This option will override what may be configured on a parent level. The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data This option will override what may be configured on a parent level The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. This option will override what may be configured on a parent level The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do. This option will override what may be configured on a parent level", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. This option will override what may be configured on a parent level The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('apiDocs', 'Api Docs', "Whether to include or exclude this rest operation in API documentation. The default value is true.", 'boolean', '', 'true', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('deprecated', 'Deprecated', "Marks this rest operation as deprecated in OpenApi documentation.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('routeId', 'Route Id', "Sets the id of the route", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('param', 'param', "param", 'ParamDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('responseMessage', 'responseMessage', "responseMessage", 'ResponseMessageDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('security', 'security', "security", 'SecurityDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('responseHeader', 'ResponseHeaderDefinition', 'Response Header', "To specify the rest operation response headers.", 'rest', [
+        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('name', 'Name', "Name of the parameter. This option is mandatory.", 'string', '', '', true, false, false, false, '', '', false),
         new PropertyMeta('collectionFormat', 'Collection Format', "Sets the parameter collection format.", 'string', 'csv, multi, pipes, ssv, tsv', 'csv', false, false, false, false, '', '', false),
         new PropertyMeta('arrayType', 'Array Type', "Sets the parameter array type. Required if data type is array. Describes the type of items in the array.", 'string', '', 'string', false, false, false, false, '', '', false),
@@ -2188,7 +2215,6 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('dataFormat', 'Data Format', "Sets the parameter data format.", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('allowableValues', 'Allowable Values', "Sets the parameter list of allowable values.", 'ValueDefinition', '', '', false, false, true, true, '', '', false),
         new PropertyMeta('example', 'Example', "Sets the example", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Description of the parameter.", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('responseMessage', 'ResponseMessageDefinition', 'Response Message', "To specify the rest operation response messages.", 'rest', [
         new PropertyMeta('code', 'Code', "The response code such as a HTTP status code", 'string', '', '200', false, false, false, false, '', '', false),
@@ -2198,6 +2224,8 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('examples', 'Examples', "Examples of response messages", 'RestPropertyDefinition', '', '', false, false, true, true, '', '', false),
     ]),
     new ElementMeta('restBinding', 'RestBindingDefinition', 'Rest Binding', "To configure rest binding", 'rest', [
+        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', '', false),
         new PropertyMeta('bindingMode', 'Binding Mode', "Sets the binding mode to use. The default value is off", 'string', 'off, auto, json, xml, json_xml', 'off', false, false, false, false, '', '', false),
@@ -2205,10 +2233,9 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('outType', 'Out Type', "Sets the class name to use for binding from POJO to output for the outgoing data The name of the class of the input data. Append a to the end of the name if you want the input to be an array type.", 'string', '', '', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('skipBindingOnErrorCode', 'Skip Binding On Error Code', "Whether to skip binding on output if there is a custom HTTP error code header. This allows to build custom error messages that do not bind to json / xml etc, as success messages otherwise will do.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('clientRequestValidation', 'Client Request Validation', "Whether to enable validation of the client request to check: 1) Content-Type header matches what the Rest DSL consumes; returns HTTP Status 415 if validation error. 2) Accept header matches what the Rest DSL produces; returns HTTP Status 406 if validation error. 3) Missing required data (query parameters, HTTP headers, body); returns HTTP Status 400 if validation error. 4) Parsing error of the message body  [...]
-        new PropertyMeta('enableCors', 'enableCors', "enableCors", 'boolean', '', '', false, false, false, false, '', '', false),
+        new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
+        new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'advanced', '', false),
         new PropertyMeta('component', 'Component', "Sets the component name that this definition will apply to", 'string', '', '', false, false, false, false, 'advanced', '', false),
-        new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', '', false),
-        new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', '', false),
     ]),
     new ElementMeta('restProperty', 'RestPropertyDefinition', 'Rest Property', "A key value pair", 'rest', [
         new PropertyMeta('key', 'Key', "Property key", 'string', '', '', true, false, false, false, '', '', false),
@@ -2218,7 +2245,7 @@ export const CamelModelMetadata: ElementMeta[] = [
         new PropertyMeta('apiKey', 'apiKey', "apiKey", 'ApiKeyDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('basicAuth', 'basicAuth', "basicAuth", 'BasicAuthDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('bearer', 'bearer', "bearer", 'BearerTokenDefinition', '', '', false, false, false, true, '', '', false),
-        new PropertyMeta('mutualTls', 'mutualTls', "mutualTls", 'MutualTLSDefinition', '', '', false, false, false, true, '', '', false),
+        new PropertyMeta('mutualTLS', 'mutualTLS', "mutualTLS", 'MutualTLSDefinition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('oauth2', 'oauth2', "oauth2", 'OAuth2Definition', '', '', false, false, false, true, '', '', false),
         new PropertyMeta('openIdConnect', 'openIdConnect', "openIdConnect", 'OpenIdConnectDefinition', '', '', false, false, false, true, '', '', false),
     ]),
diff --git a/karavan-core/test/errorHandler1.yaml b/karavan-core/test/errorHandler1.yaml
index 4dd8631f..47629d67 100644
--- a/karavan-core/test/errorHandler1.yaml
+++ b/karavan-core/test/errorHandler1.yaml
@@ -1,27 +1,27 @@
 - route:
     id: route-1
     from:
-      uri: kamelet:timer-source
       id: from-1
+      uri: kamelet:timer-source
       parameters:
         period: 1000
         message: '1'
       steps:
         - setBody:
+            id: setBody-1
             expression:
               groovy:
-                expression: 1000 / 0
                 id: groovy-10a6
-            id: setBody-1
+                expression: 1000 / 0
         - log:
-            message: $[body}
             id: log-1
+            message: $[body}
 - routeConfiguration:
+    id: routeConfiguration-1
     errorHandler:
       id: errorHandler-1
       deadLetterChannel:
+        id: deadLetterChannel-1
         deadLetterUri: log:dlq
         useOriginalMessage: true
         level: TRACE
-        id: deadLetterChannel-1
-    id: routeConfiguration-1
diff --git a/karavan-core/test/findStep.yaml b/karavan-core/test/findStep.yaml
index 64bbbbb0..f00aedac 100644
--- a/karavan-core/test/findStep.yaml
+++ b/karavan-core/test/findStep.yaml
@@ -6,8 +6,8 @@
 - route:
     id: route-66bd
     from:
-      uri: kamelet:timer-source
       id: from-6c72
+      uri: kamelet:timer-source
       parameters:
         period: 2000
         message: Hello World
@@ -20,14 +20,15 @@
               - log:
                   id: log-7d33
         - log:
-            message: ${body}
             id: log-0023
+            message: ${body}
         - aggregate:
             id: aggregate-6615
         - choice:
+            id: choice-9b86
             when:
-              - expression: {}
-                id: when-2521
+              - id: when-2521
+                expression: {}
                 steps:
                   - log:
                       id: log-8bc9
@@ -35,22 +36,21 @@
               id: otherwise-4843
               steps:
                 - to:
-                    uri: arangodb
                     id: to-3d1c
-            id: choice-9b86
+                    uri: arangodb
         - split:
-            expression: {}
             id: split-fe40
+            expression: {}
         - saga:
             id: saga-0075
         - to:
-            uri: direct
             id: to-6a8b
+            uri: direct
             parameters:
               sObjectId: hello-world
         - to:
-            uri: salesforce
             id: to-6f22
+            uri: salesforce
             parameters:
               sObjectId: xxx
               sObjectClass: Account
@@ -58,8 +58,8 @@
 - route:
     id: hello-world
     from:
-      uri: direct
       id: from-5a9f
+      uri: direct
       parameters:
         name: hello-world
 - routeConfiguration: {}
diff --git a/karavan-core/test/plain-try-catch.yaml b/karavan-core/test/plain-try-catch.yaml
index 5078c8d6..fabf21f2 100644
--- a/karavan-core/test/plain-try-catch.yaml
+++ b/karavan-core/test/plain-try-catch.yaml
@@ -1,31 +1,31 @@
 - route:
     id: route-1
     from:
-      uri: timer
       id: from-1
+      uri: timer
       parameters:
         name: info
       steps:
         - doTry:
             id: doTry-1
             doCatch:
-              - exception:
+              - id: doCatch-1
+                exception:
                   - java.lang.ArithmeticException
-                id: doCatch-1
                 steps:
                   - log:
-                      message: Exception
                       id: log-1
+                      message: Exception
             doFinally:
               id: doFinally-1
               steps:
                 - log:
-                    message: ${body}
                     id: log-2
+                    message: ${body}
             steps:
               - setBody:
+                  id: setBody-1
                   expression:
                     groovy:
-                      expression: 1000 / 0
                       id: groovy-1
-                  id: setBody-1
+                      expression: 1000 / 0
diff --git a/karavan-core/test/plain4.yaml b/karavan-core/test/plain4.yaml
index feec7cc5..be285031 100644
--- a/karavan-core/test/plain4.yaml
+++ b/karavan-core/test/plain4.yaml
@@ -1,5 +1,5 @@
 - route:
-    autoStartup: false
     id: route-1
+    autoStartup: false
     from:
       id: from-f6d9
diff --git a/karavan-core/test/routes1.yaml b/karavan-core/test/routes1.yaml
index 784cb8f4..6adaa5ee 100644
--- a/karavan-core/test/routes1.yaml
+++ b/karavan-core/test/routes1.yaml
@@ -1,31 +1,31 @@
 - route:
     id: route-ea82
     from:
-      uri: timer
       id: from-1
+      uri: timer
       parameters:
         name: info
       steps:
         - choice:
+            id: choice-1
             when:
-              - expression:
+              - id: when-1
+                expression:
                   simple:
-                    expression: ${headers} != null
                     id: simple-1
-                id: when-1
+                    expression: ${headers} != null
                 steps:
                   - log:
+                      id: log-1
                       message: hello11
                       logName: log11
-                      id: log-1
-              - expression:
+              - id: when-2
+                expression:
                   simple:
-                    expression: ${headers} == null
                     id: simple-2
-                id: when-2
+                    expression: ${headers} == null
                 steps:
                   - log:
+                      id: log-2
                       message: hello22s
                       logName: log22
-                      id: log-2
-            id: choice-1
diff --git a/karavan-designer/src/designer/route/element/DslElementHeader.tsx b/karavan-designer/src/designer/route/element/DslElementHeader.tsx
index 36c25c53..438369ea 100644
--- a/karavan-designer/src/designer/route/element/DslElementHeader.tsx
+++ b/karavan-designer/src/designer/route/element/DslElementHeader.tsx
@@ -105,7 +105,8 @@ export function DslElementHeader(props: Props) {
 
     function hasWideChildrenElement() {
         const [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
-        if (isHorizontal() && stepsChildrenCount > 1) return true;
+        if (props.step.dslName === 'SetHeadersDefinition') return false;
+        else if (isHorizontal() && stepsChildrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && nonStepChildrenCount > 0) return true;
         else if (!hasStepsField && hasNonStepsFields && childrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && childrenCount > 1) return true;
diff --git a/karavan-designer/src/designer/utils/CamelUi.tsx b/karavan-designer/src/designer/utils/CamelUi.tsx
index c9090e18..92858e09 100644
--- a/karavan-designer/src/designer/utils/CamelUi.tsx
+++ b/karavan-designer/src/designer/utils/CamelUi.tsx
@@ -93,7 +93,6 @@ import {
 import React from "react";
 import {TopologyUtils} from "karavan-core/lib/api/TopologyUtils";
 import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
-import {getDesignerIcon} from "../icons/KaravanIcons";
 
 const StepElements: string[] = [
     "AggregateDefinition",
@@ -102,6 +101,7 @@ const StepElements: string[] = [
     "CircuitBreakerDefinition",
     "ClaimCheckDefinition",
     "ConvertBodyDefinition",
+    "ConvertHeaderDefinition",
     "DelayDefinition",
     "DynamicRouterDefinition",
     "EnrichDefinition",
@@ -128,6 +128,7 @@ const StepElements: string[] = [
     "SagaDefinition",
     "SetBodyDefinition",
     "SetHeaderDefinition",
+    "SetHeadersDefinition",
     "SetPropertyDefinition",
     "SortDefinition",
     "ScriptDefinition",
@@ -164,7 +165,6 @@ export class RouteToCreate {
 }
 
 const INTEGRATION_PATTERNS = 'Integration Patterns';
-const connectorNavs = ['routing', "transformation", "error", "configuration", "endpoint", "kamelet", "component"];
 
 const stepConvertMap = new Map<string, string>([
     ["SetBodyDefinition", "SetHeaderDefinition"],
@@ -465,6 +465,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpolygon id='svg_2' points='32.12467002868652,6.015733242034912 32.12467002868652,4.021692276000977 27.047643661499023,4.021692276000977 27.047643661499023,-1.0553351640701294 25.05360221862793,-1.0553350448608398 25.053 [...]
             case "SetHeaderDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
+            case "SetHeadersDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetPropertyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetBodyDefinition":
@@ -477,6 +479,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "ConvertBodyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
+            case "ConvertHeaderDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "TransformDefinition":
                 return "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiB2aWV3Qm94PSIwIDAgMzIgMzIiIGlkPSJpY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZGF0YS1zaGFyZTwvdGl0bGU+PHBhdGggZD0iTTUsMjVWMTUuODI4MWwtMy41ODU5LDMuNTg2TDAsMThsNi02LDYsNi0xLjQxNDEsMS40MTQxTDcsMTUuODI4MVYyNUgxOXYySDdBMi4wMDI0LDIuMDAyNCwwLDAsMSw1LDI1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIvPjxwYXRoIGQ9Ik0yNCwyMmg0YTIuMDAyLD [...]
             case "EnrichDefinition":
diff --git a/karavan-generator/pom.xml b/karavan-generator/pom.xml
index d180e523..41dda932 100644
--- a/karavan-generator/pom.xml
+++ b/karavan-generator/pom.xml
@@ -28,10 +28,10 @@
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
-        <version.camel-core>4.1.0</version.camel-core>
-        <version.camel-kamelet>4.1.0</version.camel-kamelet>
+        <version.camel-core>4.3.0</version.camel-core>
+        <version.camel-kamelet>4.2.0</version.camel-kamelet>
         <camel.k.extension.version>6.7.2</camel.k.extension.version>
-        <version.vertx>4.4.3</version.vertx>
+        <version.vertx>4.5.1</version.vertx>
     </properties>
     <dependencies>
         <dependency>
diff --git a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
index de024364..dc2b48b3 100644
--- a/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
+++ b/karavan-generator/src/main/java/org/apache/camel/karavan/generator/AbstractGenerator.java
@@ -43,7 +43,7 @@ public class AbstractGenerator {
     Logger LOGGER = Logger.getLogger(AbstractGenerator.class.getName());
     protected static boolean print = false;
 
-    protected void print(String line){
+    protected void print(String line) {
         if (print) {
             System.out.println(line);
         }
@@ -56,17 +56,19 @@ public class AbstractGenerator {
         return new JsonObject(buffer).getJsonObject("items").getJsonObject("definitions");
     }
 
-    protected JsonObject getDefinitions(){
+    protected JsonObject getDefinitions() {
         String camelYamlDSL = getCamelYamlDSL();
         return new JsonObject(camelYamlDSL).getJsonObject("items").getJsonObject("definitions");
     }
 
-    protected String getStepNameForClass (String className) {
+    protected String getStepNameForClass(String className) {
         if (className.equals("CatchDefinition")) {
             className = "doCatch";
         } else if (className.equals("ConvertBodyDefinition")) {
             className = "convertBodyTo";
-         } else if (className.equals("TryDefinition")) {
+        } else if (className.equals("ConvertHeaderDefinition")) {
+            className = "convertHeaderTo";
+        } else if (className.equals("TryDefinition")) {
             className = "doTry";
         } else if (className.equals("FinallyDefinition")) {
             className = "doFinally";
@@ -80,15 +82,15 @@ public class AbstractGenerator {
             className = "securityDefinitions";
         } else if (className.endsWith("Definition")) {
             className = className.substring(0, className.length() - 10);
-        } else if (className.endsWith("DataFormat")){
+        } else if (className.endsWith("DataFormat")) {
             return getDataFormatStepNameForClass().get(className);
-        } else if (className.endsWith("Expression")){
+        } else if (className.endsWith("Expression")) {
             return getExpressionStepNameForClass().get(className);
         }
         return deCapitalize(className);
     }
 
-    protected Map<String, String> getDataFormatStepNameForClass(){
+    protected Map<String, String> getDataFormatStepNameForClass() {
         Map<String, String> stepNames = new LinkedHashMap<>();
         JsonObject definitions = getDefinitions();
         JsonObject props = definitions.getJsonObject("org.apache.camel.model.dataformat.DataFormatsDefinition").getJsonObject("properties");
@@ -99,11 +101,11 @@ public class AbstractGenerator {
         return stepNames;
     }
 
-    protected Map<String, String> getExpressionStepNameForClass(){
+    protected Map<String, String> getExpressionStepNameForClass() {
         Map<String, String> stepNames = new LinkedHashMap<>();
         JsonObject definitions = getDefinitions();
         JsonArray props = definitions.getJsonObject("org.apache.camel.model.language.ExpressionDefinition").getJsonArray("anyOf").getJsonObject(0).getJsonArray("oneOf");
-        for (int i =0; i < props.size(); i++) {
+        for (int i = 0; i < props.size(); i++) {
             JsonObject prop = props.getJsonObject(i);
             String key = prop.getJsonObject("properties").getMap().keySet().iterator().next();
             String fullClassName = prop.getJsonObject("properties").getJsonObject(key).getString("$ref");
@@ -113,20 +115,20 @@ public class AbstractGenerator {
         return stepNames;
     }
 
-    private Map<String, JsonObject> getJsonObjectProperties (JsonObject val) {
+    private Map<String, JsonObject> getJsonObjectProperties(JsonObject val) {
         Map<String, JsonObject> properties = new LinkedHashMap<>();
         val.getMap().keySet().forEach(s -> {
             JsonObject value = val.getJsonObject(s);
             if (!value.getMap().isEmpty()) {
                 properties.put(s, val.getJsonObject(s));
-            } else if (s.equals("expression")){
+            } else if (s.equals("expression")) {
                 properties.put(s, JsonObject.of("$ref", "#/items/definitions/org.apache.camel.model.language.ExpressionDefinition"));
             }
         });
         return properties;
     }
 
-    protected Map<String, JsonObject> getClassProperties (String stepName, JsonObject obj) {
+    protected Map<String, JsonObject> getClassProperties(String stepName, JsonObject obj) {
         Map<String, JsonObject> properties = new LinkedHashMap<>();
         obj.getMap().keySet().forEach(key -> {
             if (key.equals("oneOf")) {
@@ -137,7 +139,7 @@ public class AbstractGenerator {
                 properties.putAll(getJsonObjectProperties(val));
             } else if (key.equals("anyOf")) {
                 JsonArray vals = obj.getJsonArray("anyOf").getJsonObject(0).getJsonArray("oneOf");
-                for (int i = 0; i < vals.size(); i++){
+                for (int i = 0; i < vals.size(); i++) {
                     JsonObject data = vals.getJsonObject(i);
                     if (!data.containsKey("not") && data.containsKey("type")) {
                         JsonObject val = data.getJsonObject("properties");
@@ -173,7 +175,7 @@ public class AbstractGenerator {
 //        return stepNames;
 //    }
 
-    protected Map<String, JsonObject> getDslMetadata(){
+    protected Map<String, JsonObject> getDslMetadata() {
         // Generate DSL Metadata
         String camelYamlDSL = getCamelYamlDSL();
         JsonObject definitions = new JsonObject(camelYamlDSL).getJsonObject("items").getJsonObject("definitions");
@@ -458,7 +460,7 @@ public class AbstractGenerator {
                 .getJsonObject("properties");
 
         properties.getMap().forEach((key, o) -> {
-            String ref = ((Map)o).get("$ref").toString();
+            String ref = ((Map) o).get("$ref").toString();
             String className = classSimple(ref);
             result.put(className, key);
         });
diff --git a/karavan-space/src/designer/KaravanDesigner.tsx b/karavan-space/src/designer/KaravanDesigner.tsx
index 9cbf4f86..626f984b 100644
--- a/karavan-space/src/designer/KaravanDesigner.tsx
+++ b/karavan-space/src/designer/KaravanDesigner.tsx
@@ -41,6 +41,7 @@ import {BeansDesigner} from "./beans/BeansDesigner";
 import {CodeEditor} from "./editor/CodeEditor";
 import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
 import {KameletDesigner} from "./kamelet/KameletDesigner";
+import {v4 as uuidv4} from "uuid";
 
 interface Props {
     onSave: (filename: string, yaml: string, propertyOnly: boolean) => void
diff --git a/karavan-space/src/designer/beans/BeanCard.tsx b/karavan-space/src/designer/beans/BeanCard.tsx
index e38ed2c1..7a6d77b0 100644
--- a/karavan-space/src/designer/beans/BeanCard.tsx
+++ b/karavan-space/src/designer/beans/BeanCard.tsx
@@ -20,9 +20,9 @@ import {
 } from '@patternfly/react-core';
 import './bean.css';
 import {RegistryBeanDefinition} from "karavan-core/lib/model/CamelDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     bean: RegistryBeanDefinition
@@ -55,7 +55,7 @@ export function BeanCard (props: Props) {
             <FlexItem flex={{default:"flex_3"}} align={{default: "alignRight"}} className="description">{bean.type}</FlexItem>
             <FlexItem>
                 <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>
-                    <DeleteIcon/>
+                    {DeleteElementIcon()}
                 </Button>
             </FlexItem>
         </Flex>
diff --git a/karavan-space/src/designer/beans/BeanProperties.tsx b/karavan-space/src/designer/beans/BeanProperties.tsx
index df72edca..c3147828 100644
--- a/karavan-space/src/designer/beans/BeanProperties.tsx
+++ b/karavan-space/src/designer/beans/BeanProperties.tsx
@@ -18,7 +18,7 @@ import React, {useEffect, useState} from 'react';
 import {
     Form,
     FormGroup,
-    TextInput, Button, Title, Tooltip, Popover, InputGroup, InputGroupItem,
+    TextInput, Button, Title, Tooltip, Popover, InputGroup, InputGroupItem, capitalize,
 } from '@patternfly/react-core';
 import '../karavan.css';
 import "@patternfly/patternfly/patternfly.css";
@@ -34,7 +34,6 @@ import AddIcon from "@patternfly/react-icons/dist/js/icons/plus-circle-icon";
 import CloneIcon from '@patternfly/react-icons/dist/esm/icons/clone-icon'
 import HelpIcon from "@patternfly/react-icons/dist/js/icons/help-icon";
 import {InfrastructureSelector} from "../route/property/InfrastructureSelector";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import {InfrastructureAPI} from "../utils/InfrastructureAPI";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
@@ -42,6 +41,7 @@ import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {IntegrationHeader} from "../utils/IntegrationHeader";
+import {KubernetesIcon} from "../icons/ComponentIcons";
 
 
 interface Props {
@@ -258,7 +258,7 @@ export function BeanProperties (props: Props) {
                         const showPassword = v[1][2];
                         const isSecret = key !== undefined && SensitiveKeys.includes(key.toLowerCase());
                         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
-                        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+                        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button"): <DockerIcon/>
                         return (
                             <div key={"key-" + i} className="bean-property">
                                 <TextInput placeholder="Bean Field Name" className="text-field" isRequired type="text" id={"key-" + i}
@@ -268,7 +268,7 @@ export function BeanProperties (props: Props) {
                                            }}/>
                                 <InputGroup>
                                     {inInfrastructure &&
-                                        <Tooltip position="bottom-end" content="Select value from Infrastructure">
+                                        <Tooltip position="bottom-end" content={"Select from " + capitalize(InfrastructureAPI.infrastructure)}>
                                             <Button variant="control" onClick={e => openInfrastructureSelector(i, key)}>
                                                 {icon}
                                             </Button>
diff --git a/karavan-space/src/designer/beans/BeansDesigner.tsx b/karavan-space/src/designer/beans/BeansDesigner.tsx
index 2e7b67e0..ceca2c21 100644
--- a/karavan-space/src/designer/beans/BeansDesigner.tsx
+++ b/karavan-space/src/designer/beans/BeansDesigner.tsx
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import React from 'react';
+import React, {useEffect} from 'react';
 import {
     Button,
     Drawer,
@@ -39,9 +39,15 @@ import {shallow} from "zustand/shallow";
 export function BeansDesigner() {
 
     const [integration, setIntegration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow)
-    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep] = useDesignerStore((s) =>
-        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep], shallow)
+    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep, setNotification]
+        = useDesignerStore((s) =>
+        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep, s.setNotification], shallow)
 
+    useEffect(() => {
+        return () => {
+            setNotification(false, ['', '']);
+        }
+    }, []);
 
     function onShowDeleteConfirmation(bean: RegistryBeanDefinition) {
         setSelectedStep(bean);
diff --git a/karavan-space/src/designer/icons/ComponentIcons.tsx b/karavan-space/src/designer/icons/ComponentIcons.tsx
index bda35d53..90d78ec8 100644
--- a/karavan-space/src/designer/icons/ComponentIcons.tsx
+++ b/karavan-space/src/designer/icons/ComponentIcons.tsx
@@ -1248,12 +1248,13 @@ export function HealthIcon() {
     );
 }
 
-export function KubernetesIcon() {
+export function KubernetesIcon(className?: string) {
     return (
         <svg
             xmlns="http://www.w3.org/2000/svg"
             viewBox="0 -10.44 722.846 722.846"
-            className="icon" width="32px" height="32px">
+            className={className ? className  + " icon" : "icon"}
+            width="32px" height="32px">
             <path
                 fill="#326ce5"
                 d="M358.986 10.06a46.725 46.342 0 0 0-17.906 4.531L96.736 131.341a46.725 46.342 0 0 0-25.28 31.438l-60.282 262.25a46.725 46.342 0 0 0 6.344 35.531 46.725 46.342 0 0 0 2.656 3.688l169.125 210.28a46.725 46.342 0 0 0 36.531 17.438l271.219-.062a46.725 46.342 0 0 0 36.531-17.406l169.063-210.313a46.725 46.342 0 0 0 9.03-39.219L651.3 162.716a46.725 46.342 0 0 0-25.281-31.437L381.643 14.59a46.725 46.342 0 0 0-22.657-4.53z"
diff --git a/karavan-space/src/designer/rest/RestCard.tsx b/karavan-space/src/designer/rest/RestCard.tsx
index ae6a24d2..6c8da6fb 100644
--- a/karavan-space/src/designer/rest/RestCard.tsx
+++ b/karavan-space/src/designer/rest/RestCard.tsx
@@ -23,8 +23,7 @@ import '../karavan.css';
 import {CamelElement, Integration} from "karavan-core/lib/model/IntegrationDefinition";
 import {GetDefinition, RestDefinition} from "karavan-core/lib/model/CamelDefinition";
 import {RestMethodCard} from "./RestMethodCard";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
-import AddIcon from "@patternfly/react-icons/dist/js/icons/plus-circle-icon";
+import {AddElementIcon, DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     rest: RestDefinition
@@ -62,10 +61,10 @@ export function RestCard(props: Props) {
                 <div className="title">{rest.path}</div>
                 <div className="description">{rest.description}</div>
                 <Tooltip position={"bottom"} content={<div>Add REST method</div>}>
-                    <Button variant={"link"} icon={<AddIcon/>} aria-label="Add" onClick={e => selectMethod(e)}
+                    <Button variant={"link"} icon={AddElementIcon()} aria-label="Add" onClick={e => selectMethod(e)}
                             className="add-button">Add method</Button>
                 </Tooltip>
-                <Button variant="link" className="delete-button" onClick={e => onDelete(e)}><DeleteIcon/></Button>
+                <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>{DeleteElementIcon()}</Button>
             </div>
             <div className="rest-content" key={Math.random().toString()}>
                 {rest.get?.map((get: GetDefinition) =>
diff --git a/karavan-space/src/designer/rest/RestConfigurationCard.tsx b/karavan-space/src/designer/rest/RestConfigurationCard.tsx
index 3c11153d..4ef01261 100644
--- a/karavan-space/src/designer/rest/RestConfigurationCard.tsx
+++ b/karavan-space/src/designer/rest/RestConfigurationCard.tsx
@@ -19,8 +19,8 @@ import {Button} from '@patternfly/react-core';
 import './rest.css';
 import '../karavan.css';
 import {CamelElement} from "karavan-core/lib/model/IntegrationDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {RestConfigurationDefinition} from "karavan-core/lib/model/CamelDefinition";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     restConfig: RestConfigurationDefinition
@@ -53,7 +53,7 @@ export function RestConfigurationCard (props: Props) {
             <div className="description">{desc}</div>
             <Button variant="link" className="delete-button"
                     onClick={e => onDelete(e)}>
-                <DeleteIcon/>
+                {DeleteElementIcon()}
             </Button>
         </div>
     )
diff --git a/karavan-space/src/designer/rest/RestDesigner.tsx b/karavan-space/src/designer/rest/RestDesigner.tsx
index 51ce51af..303e6bb8 100644
--- a/karavan-space/src/designer/rest/RestDesigner.tsx
+++ b/karavan-space/src/designer/rest/RestDesigner.tsx
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import React from 'react';
+import React, {useEffect} from 'react';
 import {
     Button, Drawer, DrawerContent, DrawerContentBody, DrawerPanelContent, Flex, FlexItem, Gallery, GalleryItem, Modal,
     PageSection
@@ -43,11 +43,18 @@ import {shallow} from "zustand/shallow";
 export function RestDesigner() {
 
     const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow)
-    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setPosition, width, height, top, left, hideLogDSL, setSelectedStep] = useDesignerStore((s) =>
-        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.hideLogDSL, s.setSelectedStep], shallow)
+    const [selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep, setNotification]
+        = useDesignerStore((s) =>
+        [s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep, s.setNotification], shallow)
 
     const [showSelector, setShowSelector] = useSelectorStore((s) => [s.showSelector, s.setShowSelector], shallow)
 
+    useEffect(() => {
+        return () => {
+            setNotification(false, ['', '']);
+        }
+    }, []);
+
     function selectElement(element: CamelElement) {
         setSelectedStep(element);
     }
diff --git a/karavan-space/src/designer/rest/RestMethodCard.tsx b/karavan-space/src/designer/rest/RestMethodCard.tsx
index 2af666bf..51a24d49 100644
--- a/karavan-space/src/designer/rest/RestMethodCard.tsx
+++ b/karavan-space/src/designer/rest/RestMethodCard.tsx
@@ -18,9 +18,9 @@ import React from 'react';
 import {Button} from '@patternfly/react-core';
 import '../karavan.css';
 import {CamelElement} from "karavan-core/lib/model/IntegrationDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props<T extends CamelElement> {
     method: T
@@ -50,7 +50,7 @@ export function RestMethodCard<T extends CamelElement> (props: Props<T>) {
                 <div className="title">{method.path}</div>
                 <div className="description">{method.description}</div>
             </div>
-            <Button variant="link" className="delete-button" onClick={e => onDelete(e)}><DeleteIcon/></Button>
+            <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>{DeleteElementIcon()}</Button>
         </div>
     )
 }
\ No newline at end of file
diff --git a/karavan-space/src/designer/route/RouteDesigner.tsx b/karavan-space/src/designer/route/RouteDesigner.tsx
index b02ed20b..3719d3c6 100644
--- a/karavan-space/src/designer/route/RouteDesigner.tsx
+++ b/karavan-space/src/designer/route/RouteDesigner.tsx
@@ -60,7 +60,9 @@ export function RouteDesigner() {
         if (flowRef && flowRef.current) {
             const el = flowRef.current;
             const rect = el.getBoundingClientRect();
-            setPosition(rect.width, rect.height, rect.top, rect.left)
+            if (width !== rect.width || height !== rect.height || top !== rect.top || left !== rect.left) {
+                setPosition(rect.width, rect.height, rect.top, rect.left)
+            }
         }
     }
 
diff --git a/karavan-space/src/designer/route/element/DslElement.css b/karavan-space/src/designer/route/element/DslElement.css
index 61cc5af3..edaebc54 100644
--- a/karavan-space/src/designer/route/element/DslElement.css
+++ b/karavan-space/src/designer/route/element/DslElement.css
@@ -209,17 +209,3 @@
 .dsl-element:hover .menu-button {
     visibility: visible;
 }
-
-.add-button-icon, .insert-button-icon {
-    fill: var(--pf-v5-global--primary-color--100);
-    width: 20px;
-    height: 20px;
-    background: white;
-}
-
-.delete-button-icon {
-    fill: var(--pf-v5-global--danger-color--100);
-    width: 20px;
-    height: 20px;
-    background: white;
-}
diff --git a/karavan-space/src/designer/route/element/DslElement.tsx b/karavan-space/src/designer/route/element/DslElement.tsx
index 967d3321..6f5ab5b5 100644
--- a/karavan-space/src/designer/route/element/DslElement.tsx
+++ b/karavan-space/src/designer/route/element/DslElement.tsx
@@ -25,7 +25,7 @@ import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
 import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {useRouteDesignerHook} from "../useRouteDesignerHook";
-import {AddElementIcon} from "./DslElementIcons";
+import {AddElementIcon} from "../../utils/ElementIcons";
 import {DslElementHeader} from "./DslElementHeader";
 
 interface Props {
diff --git a/karavan-space/src/designer/route/element/DslElementHeader.tsx b/karavan-space/src/designer/route/element/DslElementHeader.tsx
index c850e514..438369ea 100644
--- a/karavan-space/src/designer/route/element/DslElementHeader.tsx
+++ b/karavan-space/src/designer/route/element/DslElementHeader.tsx
@@ -26,7 +26,7 @@ import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
 import {useDesignerStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {useRouteDesignerHook} from "../useRouteDesignerHook";
-import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from "./DslElementIcons";
+import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from "../../utils/ElementIcons";
 import { RouteConfigurationDefinition} from "karavan-core/lib/model/CamelDefinition";
 
 interface Props {
@@ -105,7 +105,8 @@ export function DslElementHeader(props: Props) {
 
     function hasWideChildrenElement() {
         const [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
-        if (isHorizontal() && stepsChildrenCount > 1) return true;
+        if (props.step.dslName === 'SetHeadersDefinition') return false;
+        else if (isHorizontal() && stepsChildrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && nonStepChildrenCount > 0) return true;
         else if (!hasStepsField && hasNonStepsFields && childrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && childrenCount > 1) return true;
diff --git a/karavan-space/src/designer/route/property/ComponentParameterField.tsx b/karavan-space/src/designer/route/property/ComponentParameterField.tsx
index 49eb2f6a..7186616d 100644
--- a/karavan-space/src/designer/route/property/ComponentParameterField.tsx
+++ b/karavan-space/src/designer/route/property/ComponentParameterField.tsx
@@ -43,7 +43,6 @@ import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import ExpandIcon from "@patternfly/react-icons/dist/js/icons/expand-icon";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
@@ -51,6 +50,7 @@ import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon";
 import {usePropertiesHook} from "../usePropertiesHook";
 import {useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 const prefix = "parameters";
 const beanPrefix = "#bean:";
@@ -219,7 +219,7 @@ export function ComponentParameterField(props: Props) {
     function getStringInput(property: ComponentProperty, value: any) {
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         return <InputGroup>
             {inInfrastructure && !showEditor && !noInfraSelectorButton &&
                 <Tooltip position="bottom-end"
diff --git a/karavan-space/src/designer/route/property/DslPropertyField.css b/karavan-space/src/designer/route/property/DslPropertyField.css
index ee3aa688..3866f7d6 100644
--- a/karavan-space/src/designer/route/property/DslPropertyField.css
+++ b/karavan-space/src/designer/route/property/DslPropertyField.css
@@ -18,3 +18,9 @@
     margin: auto;
     padding-right: 12px;
 }
+
+.karavan .designer-page .properties .infra-button {
+    width: 1em;
+    height: 1em;
+    vertical-align: -0.125em;
+}
\ No newline at end of file
diff --git a/karavan-space/src/designer/route/property/DslPropertyField.tsx b/karavan-space/src/designer/route/property/DslPropertyField.tsx
index f72db408..f092a795 100644
--- a/karavan-space/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-space/src/designer/route/property/DslPropertyField.tsx
@@ -61,7 +61,6 @@ import {MediaTypes} from "../../utils/MediaTypes";
 import {ComponentProperty} from "karavan-core/lib/model/ComponentModels";
 import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import ExpandIcon from "@patternfly/react-icons/dist/js/icons/expand-icon";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
 import EditorIcon from "@patternfly/react-icons/dist/js/icons/code-icon";
@@ -71,6 +70,7 @@ import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {DataFormatDefinition, ExpressionDefinition} from "karavan-core/lib/model/CamelDefinition";
 import {TemplateApi} from "karavan-core/lib/api/TemplateApi";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 interface Props {
     property: PropertyMeta,
@@ -217,7 +217,7 @@ export function DslPropertyField(props: Props) {
     function getStringInput(property: PropertyMeta, value: any) {
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         return (<InputGroup>
             {inInfrastructure && !showEditor && !noInfraSelectorButton &&
                 <InputGroupItem>
diff --git a/karavan-space/src/designer/route/property/KameletPropertyField.tsx b/karavan-space/src/designer/route/property/KameletPropertyField.tsx
index 96b880c1..c9e6916c 100644
--- a/karavan-space/src/designer/route/property/KameletPropertyField.tsx
+++ b/karavan-space/src/designer/route/property/KameletPropertyField.tsx
@@ -29,12 +29,12 @@ import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import {Property} from "karavan-core/lib/model/KameletModels";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
 import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import {usePropertiesHook} from "../usePropertiesHook";
 import {Select, SelectDirection, SelectOption, SelectVariant} from "@patternfly/react-core/deprecated";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 interface Props {
     property: Property,
@@ -108,7 +108,7 @@ export function KameletPropertyField(props: Props) {
         const id = prefix + "-" + property.id;
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.id);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         const showInfraSelectorButton = inInfrastructure && !showEditor && !noInfraSelectorButton;
         const selectFromList: boolean = property.enum !== undefined && property?.enum?.length > 0;
         const selectOptions: JSX.Element[] = [];
diff --git a/karavan-space/src/designer/utils/CamelUi.tsx b/karavan-space/src/designer/utils/CamelUi.tsx
index c9090e18..92858e09 100644
--- a/karavan-space/src/designer/utils/CamelUi.tsx
+++ b/karavan-space/src/designer/utils/CamelUi.tsx
@@ -93,7 +93,6 @@ import {
 import React from "react";
 import {TopologyUtils} from "karavan-core/lib/api/TopologyUtils";
 import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
-import {getDesignerIcon} from "../icons/KaravanIcons";
 
 const StepElements: string[] = [
     "AggregateDefinition",
@@ -102,6 +101,7 @@ const StepElements: string[] = [
     "CircuitBreakerDefinition",
     "ClaimCheckDefinition",
     "ConvertBodyDefinition",
+    "ConvertHeaderDefinition",
     "DelayDefinition",
     "DynamicRouterDefinition",
     "EnrichDefinition",
@@ -128,6 +128,7 @@ const StepElements: string[] = [
     "SagaDefinition",
     "SetBodyDefinition",
     "SetHeaderDefinition",
+    "SetHeadersDefinition",
     "SetPropertyDefinition",
     "SortDefinition",
     "ScriptDefinition",
@@ -164,7 +165,6 @@ export class RouteToCreate {
 }
 
 const INTEGRATION_PATTERNS = 'Integration Patterns';
-const connectorNavs = ['routing', "transformation", "error", "configuration", "endpoint", "kamelet", "component"];
 
 const stepConvertMap = new Map<string, string>([
     ["SetBodyDefinition", "SetHeaderDefinition"],
@@ -465,6 +465,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpolygon id='svg_2' points='32.12467002868652,6.015733242034912 32.12467002868652,4.021692276000977 27.047643661499023,4.021692276000977 27.047643661499023,-1.0553351640701294 25.05360221862793,-1.0553350448608398 25.053 [...]
             case "SetHeaderDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
+            case "SetHeadersDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetPropertyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetBodyDefinition":
@@ -477,6 +479,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "ConvertBodyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
+            case "ConvertHeaderDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "TransformDefinition":
                 return "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiB2aWV3Qm94PSIwIDAgMzIgMzIiIGlkPSJpY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZGF0YS1zaGFyZTwvdGl0bGU+PHBhdGggZD0iTTUsMjVWMTUuODI4MWwtMy41ODU5LDMuNTg2TDAsMThsNi02LDYsNi0xLjQxNDEsMS40MTQxTDcsMTUuODI4MVYyNUgxOXYySDdBMi4wMDI0LDIuMDAyNCwwLDAsMSw1LDI1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIvPjxwYXRoIGQ9Ik0yNCwyMmg0YTIuMDAyLD [...]
             case "EnrichDefinition":
diff --git a/karavan-space/src/designer/route/property/DslPropertyField.css b/karavan-space/src/designer/utils/ElementIcon.css
similarity index 69%
copy from karavan-space/src/designer/route/property/DslPropertyField.css
copy to karavan-space/src/designer/utils/ElementIcon.css
index ee3aa688..15f2dbe3 100644
--- a/karavan-space/src/designer/route/property/DslPropertyField.css
+++ b/karavan-space/src/designer/utils/ElementIcon.css
@@ -14,7 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-.switch-placeholder {
-    margin: auto;
-    padding-right: 12px;
+
+
+.add-button-icon, .insert-button-icon {
+    fill: var(--pf-v5-global--primary-color--100);
+    width: 20px;
+    height: 20px;
+    background: white;
+    vertical-align: text-bottom;
+}
+
+.delete-button-icon {
+    fill: var(--pf-v5-global--danger-color--100);
+    width: 20px;
+    height: 20px;
+    background: white;
+    vertical-align: text-bottom;
 }
diff --git a/karavan-space/src/designer/utils/ElementIcons.tsx b/karavan-space/src/designer/utils/ElementIcons.tsx
new file mode 100644
index 00000000..2d44bc5e
--- /dev/null
+++ b/karavan-space/src/designer/utils/ElementIcons.tsx
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import "./ElementIcon.css"
+import React from 'react'
+
+export function DeleteElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="delete-button-icon"
+        >
+            <path d="M16 2C8.2 2 2 8.2 2 16s6.2 14 14 14 14-6.2 14-14S23.8 2 16 2zm0 26C9.4 28 4 22.6 4 16S9.4 4 16 4s12 5.4 12 12-5.4 12-12 12z" />
+            <path
+                d="M0 0h32v32H0z"
+                style={{
+                    fill: "none",
+                }}
+            />
+            <path d="M21.4 23 16 17.6 10.6 23 9 21.4l5.4-5.4L9 10.6 10.6 9l5.4 5.4L21.4 9l1.6 1.6-5.4 5.4 5.4 5.4z" />
+        </svg>
+    )
+}
+
+export function AddElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="add-button-icon"
+        >
+            <path
+                d="M16 4c6.6 0 12 5.4 12 12s-5.4 12-12 12S4 22.6 4 16 9.4 4 16 4m0-2C8.3 2 2 8.3 2 16s6.3 14 14 14 14-6.3 14-14S23.7 2 16 2z"/>
+            <path d="M24 15h-7V8h-2v7H8v2h7v7h2v-7h7z"/>
+            <path
+                d="M0 0h32v32H0z"
+                style={{
+                    fill: "none",
+                }}
+            />
+        </svg>
+    )
+}
+
+export function InsertElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="insert-button-icon"
+        >
+            <path d="m16 8-1.43 1.393L20.15 15H8v2h12.15l-5.58 5.573L16 24l8-8-8-8z" />
+            <path d="M16 30a14 14 0 1 1 14-14 14.016 14.016 0 0 1-14 14Zm0-26a12 12 0 1 0 12 12A12.014 12.014 0 0 0 16 4Z" />
+            <path
+                d="M0 0h32v32H0z"
+                data-name="&lt;Transparent Rectangle&gt;"
+                style={{
+                    fill: "none",
+                }}
+            />
+        </svg>
+    )
+}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
index 9cbf4f86..626f984b 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/KaravanDesigner.tsx
@@ -41,6 +41,7 @@ import {BeansDesigner} from "./beans/BeansDesigner";
 import {CodeEditor} from "./editor/CodeEditor";
 import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
 import {KameletDesigner} from "./kamelet/KameletDesigner";
+import {v4 as uuidv4} from "uuid";
 
 interface Props {
     onSave: (filename: string, yaml: string, propertyOnly: boolean) => void
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanCard.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanCard.tsx
index e38ed2c1..7a6d77b0 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanCard.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanCard.tsx
@@ -20,9 +20,9 @@ import {
 } from '@patternfly/react-core';
 import './bean.css';
 import {RegistryBeanDefinition} from "karavan-core/lib/model/CamelDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     bean: RegistryBeanDefinition
@@ -55,7 +55,7 @@ export function BeanCard (props: Props) {
             <FlexItem flex={{default:"flex_3"}} align={{default: "alignRight"}} className="description">{bean.type}</FlexItem>
             <FlexItem>
                 <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>
-                    <DeleteIcon/>
+                    {DeleteElementIcon()}
                 </Button>
             </FlexItem>
         </Flex>
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanProperties.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanProperties.tsx
index df72edca..c3147828 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanProperties.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeanProperties.tsx
@@ -18,7 +18,7 @@ import React, {useEffect, useState} from 'react';
 import {
     Form,
     FormGroup,
-    TextInput, Button, Title, Tooltip, Popover, InputGroup, InputGroupItem,
+    TextInput, Button, Title, Tooltip, Popover, InputGroup, InputGroupItem, capitalize,
 } from '@patternfly/react-core';
 import '../karavan.css';
 import "@patternfly/patternfly/patternfly.css";
@@ -34,7 +34,6 @@ import AddIcon from "@patternfly/react-icons/dist/js/icons/plus-circle-icon";
 import CloneIcon from '@patternfly/react-icons/dist/esm/icons/clone-icon'
 import HelpIcon from "@patternfly/react-icons/dist/js/icons/help-icon";
 import {InfrastructureSelector} from "../route/property/InfrastructureSelector";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import {InfrastructureAPI} from "../utils/InfrastructureAPI";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
@@ -42,6 +41,7 @@ import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {IntegrationHeader} from "../utils/IntegrationHeader";
+import {KubernetesIcon} from "../icons/ComponentIcons";
 
 
 interface Props {
@@ -258,7 +258,7 @@ export function BeanProperties (props: Props) {
                         const showPassword = v[1][2];
                         const isSecret = key !== undefined && SensitiveKeys.includes(key.toLowerCase());
                         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
-                        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+                        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button"): <DockerIcon/>
                         return (
                             <div key={"key-" + i} className="bean-property">
                                 <TextInput placeholder="Bean Field Name" className="text-field" isRequired type="text" id={"key-" + i}
@@ -268,7 +268,7 @@ export function BeanProperties (props: Props) {
                                            }}/>
                                 <InputGroup>
                                     {inInfrastructure &&
-                                        <Tooltip position="bottom-end" content="Select value from Infrastructure">
+                                        <Tooltip position="bottom-end" content={"Select from " + capitalize(InfrastructureAPI.infrastructure)}>
                                             <Button variant="control" onClick={e => openInfrastructureSelector(i, key)}>
                                                 {icon}
                                             </Button>
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeansDesigner.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeansDesigner.tsx
index 2e7b67e0..ceca2c21 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeansDesigner.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/beans/BeansDesigner.tsx
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import React from 'react';
+import React, {useEffect} from 'react';
 import {
     Button,
     Drawer,
@@ -39,9 +39,15 @@ import {shallow} from "zustand/shallow";
 export function BeansDesigner() {
 
     const [integration, setIntegration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow)
-    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep] = useDesignerStore((s) =>
-        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep], shallow)
+    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep, setNotification]
+        = useDesignerStore((s) =>
+        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep, s.setNotification], shallow)
 
+    useEffect(() => {
+        return () => {
+            setNotification(false, ['', '']);
+        }
+    }, []);
 
     function onShowDeleteConfirmation(bean: RegistryBeanDefinition) {
         setSelectedStep(bean);
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/icons/ComponentIcons.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/icons/ComponentIcons.tsx
index bda35d53..90d78ec8 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/icons/ComponentIcons.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/icons/ComponentIcons.tsx
@@ -1248,12 +1248,13 @@ export function HealthIcon() {
     );
 }
 
-export function KubernetesIcon() {
+export function KubernetesIcon(className?: string) {
     return (
         <svg
             xmlns="http://www.w3.org/2000/svg"
             viewBox="0 -10.44 722.846 722.846"
-            className="icon" width="32px" height="32px">
+            className={className ? className  + " icon" : "icon"}
+            width="32px" height="32px">
             <path
                 fill="#326ce5"
                 d="M358.986 10.06a46.725 46.342 0 0 0-17.906 4.531L96.736 131.341a46.725 46.342 0 0 0-25.28 31.438l-60.282 262.25a46.725 46.342 0 0 0 6.344 35.531 46.725 46.342 0 0 0 2.656 3.688l169.125 210.28a46.725 46.342 0 0 0 36.531 17.438l271.219-.062a46.725 46.342 0 0 0 36.531-17.406l169.063-210.313a46.725 46.342 0 0 0 9.03-39.219L651.3 162.716a46.725 46.342 0 0 0-25.281-31.437L381.643 14.59a46.725 46.342 0 0 0-22.657-4.53z"
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestCard.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestCard.tsx
index ae6a24d2..6c8da6fb 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestCard.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestCard.tsx
@@ -23,8 +23,7 @@ import '../karavan.css';
 import {CamelElement, Integration} from "karavan-core/lib/model/IntegrationDefinition";
 import {GetDefinition, RestDefinition} from "karavan-core/lib/model/CamelDefinition";
 import {RestMethodCard} from "./RestMethodCard";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
-import AddIcon from "@patternfly/react-icons/dist/js/icons/plus-circle-icon";
+import {AddElementIcon, DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     rest: RestDefinition
@@ -62,10 +61,10 @@ export function RestCard(props: Props) {
                 <div className="title">{rest.path}</div>
                 <div className="description">{rest.description}</div>
                 <Tooltip position={"bottom"} content={<div>Add REST method</div>}>
-                    <Button variant={"link"} icon={<AddIcon/>} aria-label="Add" onClick={e => selectMethod(e)}
+                    <Button variant={"link"} icon={AddElementIcon()} aria-label="Add" onClick={e => selectMethod(e)}
                             className="add-button">Add method</Button>
                 </Tooltip>
-                <Button variant="link" className="delete-button" onClick={e => onDelete(e)}><DeleteIcon/></Button>
+                <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>{DeleteElementIcon()}</Button>
             </div>
             <div className="rest-content" key={Math.random().toString()}>
                 {rest.get?.map((get: GetDefinition) =>
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestConfigurationCard.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestConfigurationCard.tsx
index 3c11153d..4ef01261 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestConfigurationCard.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestConfigurationCard.tsx
@@ -19,8 +19,8 @@ import {Button} from '@patternfly/react-core';
 import './rest.css';
 import '../karavan.css';
 import {CamelElement} from "karavan-core/lib/model/IntegrationDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {RestConfigurationDefinition} from "karavan-core/lib/model/CamelDefinition";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props {
     restConfig: RestConfigurationDefinition
@@ -53,7 +53,7 @@ export function RestConfigurationCard (props: Props) {
             <div className="description">{desc}</div>
             <Button variant="link" className="delete-button"
                     onClick={e => onDelete(e)}>
-                <DeleteIcon/>
+                {DeleteElementIcon()}
             </Button>
         </div>
     )
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestDesigner.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestDesigner.tsx
index 51ce51af..303e6bb8 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestDesigner.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestDesigner.tsx
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import React from 'react';
+import React, {useEffect} from 'react';
 import {
     Button, Drawer, DrawerContent, DrawerContentBody, DrawerPanelContent, Flex, FlexItem, Gallery, GalleryItem, Modal,
     PageSection
@@ -43,11 +43,18 @@ import {shallow} from "zustand/shallow";
 export function RestDesigner() {
 
     const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow)
-    const [dark, selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setPosition, width, height, top, left, hideLogDSL, setSelectedStep] = useDesignerStore((s) =>
-        [s.dark, s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setPosition, s.width, s.height, s.top, s.left, s.hideLogDSL, s.setSelectedStep], shallow)
+    const [selectedStep, showDeleteConfirmation, setShowDeleteConfirmation, setSelectedStep, setNotification]
+        = useDesignerStore((s) =>
+        [s.selectedStep, s.showDeleteConfirmation, s.setShowDeleteConfirmation, s.setSelectedStep, s.setNotification], shallow)
 
     const [showSelector, setShowSelector] = useSelectorStore((s) => [s.showSelector, s.setShowSelector], shallow)
 
+    useEffect(() => {
+        return () => {
+            setNotification(false, ['', '']);
+        }
+    }, []);
+
     function selectElement(element: CamelElement) {
         setSelectedStep(element);
     }
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestMethodCard.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestMethodCard.tsx
index 2af666bf..51a24d49 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestMethodCard.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/rest/RestMethodCard.tsx
@@ -18,9 +18,9 @@ import React from 'react';
 import {Button} from '@patternfly/react-core';
 import '../karavan.css';
 import {CamelElement} from "karavan-core/lib/model/IntegrationDefinition";
-import DeleteIcon from "@patternfly/react-icons/dist/js/icons/times-circle-icon";
 import {useDesignerStore} from "../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {DeleteElementIcon} from "../utils/ElementIcons";
 
 interface Props<T extends CamelElement> {
     method: T
@@ -50,7 +50,7 @@ export function RestMethodCard<T extends CamelElement> (props: Props<T>) {
                 <div className="title">{method.path}</div>
                 <div className="description">{method.description}</div>
             </div>
-            <Button variant="link" className="delete-button" onClick={e => onDelete(e)}><DeleteIcon/></Button>
+            <Button variant="link" className="delete-button" onClick={e => onDelete(e)}>{DeleteElementIcon()}</Button>
         </div>
     )
 }
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx
index b02ed20b..3719d3c6 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/RouteDesigner.tsx
@@ -60,7 +60,9 @@ export function RouteDesigner() {
         if (flowRef && flowRef.current) {
             const el = flowRef.current;
             const rect = el.getBoundingClientRect();
-            setPosition(rect.width, rect.height, rect.top, rect.left)
+            if (width !== rect.width || height !== rect.height || top !== rect.top || left !== rect.left) {
+                setPosition(rect.width, rect.height, rect.top, rect.left)
+            }
         }
     }
 
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.css b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
index 61cc5af3..edaebc54 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.css
@@ -209,17 +209,3 @@
 .dsl-element:hover .menu-button {
     visibility: visible;
 }
-
-.add-button-icon, .insert-button-icon {
-    fill: var(--pf-v5-global--primary-color--100);
-    width: 20px;
-    height: 20px;
-    background: white;
-}
-
-.delete-button-icon {
-    fill: var(--pf-v5-global--danger-color--100);
-    width: 20px;
-    height: 20px;
-    background: white;
-}
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
index 967d3321..6f5ab5b5 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElement.tsx
@@ -25,7 +25,7 @@ import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
 import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {useRouteDesignerHook} from "../useRouteDesignerHook";
-import {AddElementIcon} from "./DslElementIcons";
+import {AddElementIcon} from "../../utils/ElementIcons";
 import {DslElementHeader} from "./DslElementHeader";
 
 interface Props {
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx
index c850e514..438369ea 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/element/DslElementHeader.tsx
@@ -26,7 +26,7 @@ import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
 import {useDesignerStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {useRouteDesignerHook} from "../useRouteDesignerHook";
-import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from "./DslElementIcons";
+import {AddElementIcon, DeleteElementIcon, InsertElementIcon} from "../../utils/ElementIcons";
 import { RouteConfigurationDefinition} from "karavan-core/lib/model/CamelDefinition";
 
 interface Props {
@@ -105,7 +105,8 @@ export function DslElementHeader(props: Props) {
 
     function hasWideChildrenElement() {
         const [hasStepsField, stepsChildrenCount, hasNonStepsFields, nonStepChildrenCount, childrenCount] = getChildrenInfo(props.step);
-        if (isHorizontal() && stepsChildrenCount > 1) return true;
+        if (props.step.dslName === 'SetHeadersDefinition') return false;
+        else if (isHorizontal() && stepsChildrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && nonStepChildrenCount > 0) return true;
         else if (!hasStepsField && hasNonStepsFields && childrenCount > 1) return true;
         else if (hasStepsField && stepsChildrenCount > 0 && hasNonStepsFields && childrenCount > 1) return true;
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/ComponentParameterField.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/ComponentParameterField.tsx
index 49eb2f6a..7186616d 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/ComponentParameterField.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/ComponentParameterField.tsx
@@ -43,7 +43,6 @@ import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import ExpandIcon from "@patternfly/react-icons/dist/js/icons/expand-icon";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
@@ -51,6 +50,7 @@ import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon";
 import {usePropertiesHook} from "../usePropertiesHook";
 import {useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 const prefix = "parameters";
 const beanPrefix = "#bean:";
@@ -219,7 +219,7 @@ export function ComponentParameterField(props: Props) {
     function getStringInput(property: ComponentProperty, value: any) {
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         return <InputGroup>
             {inInfrastructure && !showEditor && !noInfraSelectorButton &&
                 <Tooltip position="bottom-end"
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.css b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.css
index ee3aa688..3866f7d6 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.css
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.css
@@ -18,3 +18,9 @@
     margin: auto;
     padding-right: 12px;
 }
+
+.karavan .designer-page .properties .infra-button {
+    width: 1em;
+    height: 1em;
+    vertical-align: -0.125em;
+}
\ No newline at end of file
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
index f72db408..f092a795 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/DslPropertyField.tsx
@@ -61,7 +61,6 @@ import {MediaTypes} from "../../utils/MediaTypes";
 import {ComponentProperty} from "karavan-core/lib/model/ComponentModels";
 import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import ExpandIcon from "@patternfly/react-icons/dist/js/icons/expand-icon";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
 import EditorIcon from "@patternfly/react-icons/dist/js/icons/code-icon";
@@ -71,6 +70,7 @@ import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
 import {shallow} from "zustand/shallow";
 import {DataFormatDefinition, ExpressionDefinition} from "karavan-core/lib/model/CamelDefinition";
 import {TemplateApi} from "karavan-core/lib/api/TemplateApi";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 interface Props {
     property: PropertyMeta,
@@ -217,7 +217,7 @@ export function DslPropertyField(props: Props) {
     function getStringInput(property: PropertyMeta, value: any) {
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         return (<InputGroup>
             {inInfrastructure && !showEditor && !noInfraSelectorButton &&
                 <InputGroupItem>
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/KameletPropertyField.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/KameletPropertyField.tsx
index 96b880c1..c9e6916c 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/route/property/KameletPropertyField.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/route/property/KameletPropertyField.tsx
@@ -29,12 +29,12 @@ import CompressIcon from "@patternfly/react-icons/dist/js/icons/compress-icon";
 import {Property} from "karavan-core/lib/model/KameletModels";
 import {InfrastructureSelector} from "./InfrastructureSelector";
 import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
-import KubernetesIcon from "@patternfly/react-icons/dist/js/icons/openshift-icon";
 import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
 import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
 import DockerIcon from "@patternfly/react-icons/dist/js/icons/docker-icon";
 import {usePropertiesHook} from "../usePropertiesHook";
 import {Select, SelectDirection, SelectOption, SelectVariant} from "@patternfly/react-core/deprecated";
+import {KubernetesIcon} from "../../icons/ComponentIcons";
 
 interface Props {
     property: Property,
@@ -108,7 +108,7 @@ export function KameletPropertyField(props: Props) {
         const id = prefix + "-" + property.id;
         const inInfrastructure = InfrastructureAPI.infrastructure !== 'local';
         const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.id);
-        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? <KubernetesIcon/> : <DockerIcon/>
+        const icon = InfrastructureAPI.infrastructure === 'kubernetes' ? KubernetesIcon("infra-button") : <DockerIcon/>
         const showInfraSelectorButton = inInfrastructure && !showEditor && !noInfraSelectorButton;
         const selectFromList: boolean = property.enum !== undefined && property?.enum?.length > 0;
         const selectOptions: JSX.Element[] = [];
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
index c9090e18..92858e09 100644
--- a/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/utils/CamelUi.tsx
@@ -93,7 +93,6 @@ import {
 import React from "react";
 import {TopologyUtils} from "karavan-core/lib/api/TopologyUtils";
 import {CamelDisplayUtil} from "karavan-core/lib/api/CamelDisplayUtil";
-import {getDesignerIcon} from "../icons/KaravanIcons";
 
 const StepElements: string[] = [
     "AggregateDefinition",
@@ -102,6 +101,7 @@ const StepElements: string[] = [
     "CircuitBreakerDefinition",
     "ClaimCheckDefinition",
     "ConvertBodyDefinition",
+    "ConvertHeaderDefinition",
     "DelayDefinition",
     "DynamicRouterDefinition",
     "EnrichDefinition",
@@ -128,6 +128,7 @@ const StepElements: string[] = [
     "SagaDefinition",
     "SetBodyDefinition",
     "SetHeaderDefinition",
+    "SetHeadersDefinition",
     "SetPropertyDefinition",
     "SortDefinition",
     "ScriptDefinition",
@@ -164,7 +165,6 @@ export class RouteToCreate {
 }
 
 const INTEGRATION_PATTERNS = 'Integration Patterns';
-const connectorNavs = ['routing', "transformation", "error", "configuration", "endpoint", "kamelet", "component"];
 
 const stepConvertMap = new Map<string, string>([
     ["SetBodyDefinition", "SetHeaderDefinition"],
@@ -465,6 +465,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpolygon id='svg_2' points='32.12467002868652,6.015733242034912 32.12467002868652,4.021692276000977 27.047643661499023,4.021692276000977 27.047643661499023,-1.0553351640701294 25.05360221862793,-1.0553350448608398 25.053 [...]
             case "SetHeaderDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
+            case "SetHeadersDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetPropertyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m24,30l-20,0a2.0021,2.0021 0 0 1 -2,-2l0,-6a2.0021,2.0021 0 0 1 2,-2l20,0a2.0021,2.0021 0 0 1 2,2l0,6a2.0021,2.0021 0 0 1 -2,2zm-20,-8l-0.0015,0l0.0015,6l20,0l0,-6l-20,0z' id='svg_1'/%3E%3Cpolygon id='svg_2' poi [...]
             case "SetBodyDefinition":
@@ -477,6 +479,8 @@ export class CamelUi {
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "ConvertBodyDefinition":
                 return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
+            case "ConvertHeaderDefinition":
+                return "data:image/svg+xml,%3Csvg width='32' height='32' xmlns='http://www.w3.org/2000/svg' xmlns:svg='http://www.w3.org/2000/svg'%3E%3Cdefs%3E%3Cstyle%3E.cls-1 %7B fill: none; %7D%3C/style%3E%3C/defs%3E%3Cg class='layer'%3E%3Ctitle%3ELayer 1%3C/title%3E%3Cpath d='m16,28l-8,0l0,-24l8,0l0,6a2.0058,2.0058 0 0 0 2,2l6,0l0,4l2,0l0,-6a0.9092,0.9092 0 0 0 -0.3,-0.7l-7,-7a0.9087,0.9087 0 0 0 -0.7,-0.3l-10,0a2.0058,2.0058 0 0 0 -2,2l0,24a2.0058,2.0058 0 0 0 2,2l8,0l0,-2zm2,-23.6l [...]
             case "TransformDefinition":
                 return "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzJweCIgaGVpZ2h0PSIzMnB4IiB2aWV3Qm94PSIwIDAgMzIgMzIiIGlkPSJpY29uIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDpub25lO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZGF0YS1zaGFyZTwvdGl0bGU+PHBhdGggZD0iTTUsMjVWMTUuODI4MWwtMy41ODU5LDMuNTg2TDAsMThsNi02LDYsNi0xLjQxNDEsMS40MTQxTDcsMTUuODI4MVYyNUgxOXYySDdBMi4wMDI0LDIuMDAyNCwwLDAsMSw1LDI1WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwKSIvPjxwYXRoIGQ9Ik0yNCwyMmg0YTIuMDAyLD [...]
             case "EnrichDefinition":
diff --git a/karavan-space/src/designer/route/property/DslPropertyField.css b/karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcon.css
similarity index 69%
copy from karavan-space/src/designer/route/property/DslPropertyField.css
copy to karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcon.css
index ee3aa688..15f2dbe3 100644
--- a/karavan-space/src/designer/route/property/DslPropertyField.css
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcon.css
@@ -14,7 +14,20 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-.switch-placeholder {
-    margin: auto;
-    padding-right: 12px;
+
+
+.add-button-icon, .insert-button-icon {
+    fill: var(--pf-v5-global--primary-color--100);
+    width: 20px;
+    height: 20px;
+    background: white;
+    vertical-align: text-bottom;
+}
+
+.delete-button-icon {
+    fill: var(--pf-v5-global--danger-color--100);
+    width: 20px;
+    height: 20px;
+    background: white;
+    vertical-align: text-bottom;
 }
diff --git a/karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcons.tsx b/karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcons.tsx
new file mode 100644
index 00000000..2d44bc5e
--- /dev/null
+++ b/karavan-web/karavan-app/src/main/webui/src/designer/utils/ElementIcons.tsx
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import "./ElementIcon.css"
+import React from 'react'
+
+export function DeleteElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="delete-button-icon"
+        >
+            <path d="M16 2C8.2 2 2 8.2 2 16s6.2 14 14 14 14-6.2 14-14S23.8 2 16 2zm0 26C9.4 28 4 22.6 4 16S9.4 4 16 4s12 5.4 12 12-5.4 12-12 12z" />
+            <path
+                d="M0 0h32v32H0z"
+                style={{
+                    fill: "none",
+                }}
+            />
+            <path d="M21.4 23 16 17.6 10.6 23 9 21.4l5.4-5.4L9 10.6 10.6 9l5.4 5.4L21.4 9l1.6 1.6-5.4 5.4 5.4 5.4z" />
+        </svg>
+    )
+}
+
+export function AddElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="add-button-icon"
+        >
+            <path
+                d="M16 4c6.6 0 12 5.4 12 12s-5.4 12-12 12S4 22.6 4 16 9.4 4 16 4m0-2C8.3 2 2 8.3 2 16s6.3 14 14 14 14-6.3 14-14S23.7 2 16 2z"/>
+            <path d="M24 15h-7V8h-2v7H8v2h7v7h2v-7h7z"/>
+            <path
+                d="M0 0h32v32H0z"
+                style={{
+                    fill: "none",
+                }}
+            />
+        </svg>
+    )
+}
+
+export function InsertElementIcon() {
+    return (
+        <svg
+            xmlns="http://www.w3.org/2000/svg"
+            xmlSpace="preserve"
+            viewBox="0 0 32 32"
+            className="insert-button-icon"
+        >
+            <path d="m16 8-1.43 1.393L20.15 15H8v2h12.15l-5.58 5.573L16 24l8-8-8-8z" />
+            <path d="M16 30a14 14 0 1 1 14-14 14.016 14.016 0 0 1-14 14Zm0-26a12 12 0 1 0 12 12A12.014 12.014 0 0 0 16 4Z" />
+            <path
+                d="M0 0h32v32H0z"
+                data-name="&lt;Transparent Rectangle&gt;"
+                style={{
+                    fill: "none",
+                }}
+            />
+        </svg>
+    )
+}
\ No newline at end of file