Saas feature45 (#444)

* Fix issue with Postman Demo

* Postman localhost

* Postman Demo
diff --git a/karavan-demo/postman/project/docker-compose.yaml b/karavan-demo/postman/docker-compose/docker-compose.yaml
similarity index 100%
rename from karavan-demo/postman/project/docker-compose.yaml
rename to karavan-demo/postman/docker-compose/docker-compose.yaml
diff --git a/karavan-demo/postman/project/postgres_db.sql b/karavan-demo/postman/docker-compose/postgres_db.sql
similarity index 100%
rename from karavan-demo/postman/project/postgres_db.sql
rename to karavan-demo/postman/docker-compose/postgres_db.sql
diff --git a/karavan-demo/postman/project/start.sh b/karavan-demo/postman/docker-compose/start.sh
similarity index 100%
rename from karavan-demo/postman/project/start.sh
rename to karavan-demo/postman/docker-compose/start.sh
diff --git a/karavan-demo/postman/docs/README.md b/karavan-demo/postman/docs/README.md
index fc9b2b6..340fd00 100644
--- a/karavan-demo/postman/docs/README.md
+++ b/karavan-demo/postman/docs/README.md
@@ -15,12 +15,12 @@
 ./prepare-docker.sh --from-release --artemis-version 2.22.0
 cd _TMP_/artemis/2.22.0
 docker build -f ./docker/Dockerfile-adoptopenjdk-11 -t artemis-adoptopenjdk-11 .
-cd ../../../../project
 ```
 For MacOS users, in case of `tree command not found` error, install tree `brew install tree`
 
 ### Start environment
 ```
+cd docker-compose
 docker-compose up
 ```
 
@@ -54,7 +54,8 @@
 2. Apache Camel [Karavan](https://marketplace.visualstudio.com/items?itemName=camel-karavan.karavan) extension installed
 3. [Jbang](https://www.jbang.dev/download/) installed
 4. OpenShift 4.9+ cluster up and running
-4. OpenShift 4.9+ CLI installed
+5. OpenShift 4.9+ CLI installed
+6. Apache Camel Karavan installed in OpenShift
 
 
 ### Install AMQ and AMQ Streams Operators
@@ -73,14 +74,13 @@
 ```
 
 ### Package, build and deploy project
-1. Open Project builder
-![builder](builder.png)
+1. Open Karavan Application
+2. Create project Postman
+3. Create integration postman
+4. Replace integration code with [postman.yaml](project/postman.yaml)
+5. Set Kamelets configuration according their services in Openshift
+6. Click `Run` button
 
-2. Configure Project and click Start
-![deploy](deploy.png)
-```
-
-```
 
 ### Publish parcel
 ```
diff --git a/karavan-demo/postman/docs/builder.png b/karavan-demo/postman/docs/builder.png
deleted file mode 100644
index 880bf92..0000000
--- a/karavan-demo/postman/docs/builder.png
+++ /dev/null
Binary files differ
diff --git a/karavan-demo/postman/docs/deploy.png b/karavan-demo/postman/docs/deploy.png
deleted file mode 100644
index 67b343f..0000000
--- a/karavan-demo/postman/docs/deploy.png
+++ /dev/null
Binary files differ
diff --git a/karavan-demo/postman/project/application.properties b/karavan-demo/postman/project/application.properties
index 1caacea..33e323c 100644
--- a/karavan-demo/postman/project/application.properties
+++ b/karavan-demo/postman/project/application.properties
@@ -1,5 +1,15 @@
-kafka-brokers=localhost:9092
-postgres-server=localhost
-jms-broker=tcp://localhost:61616
-mqtt-broker=tcp://localhost:1883
-%dev.mqtt-broker=tcp://localhost:1883
+camel.jbang.project-id=postman
+camel.jbang.project-name=postman
+camel.jbang.project-description=Postman Demo
+camel.jbang.gav=org.camel.karavan.demo:postman:1.0.0
+camel.jbang.runtime=quarkus
+camel.jbang.quarkusVersion=2.11.1.Final
+camel.jbang.dependencies=camel:microprofile-health,mvn:io.quarkus:quarkus-container-image-jib,mvn:io.quarkus:quarkus-openshift
+camel.health.enabled=true
+camel.health.exposure-level=full
+quarkus.kubernetes-client.trust-certs=true
+quarkus.container-image.group=karavan
+quarkus.container-image.name=postman
+quarkus.openshift.route.expose=false
+quarkus.openshift.part-of=postman
+quarkus.openshift.replicas=1
\ No newline at end of file
diff --git a/karavan-demo/postman/project/postman.yaml b/karavan-demo/postman/project/postman.yaml
index 45a2dc0..80a7124 100644
--- a/karavan-demo/postman/project/postman.yaml
+++ b/karavan-demo/postman/project/postman.yaml
@@ -4,221 +4,130 @@
   name: Postman Demo
 spec:
   flows:
-    - dslName: RestDefinition
-      post:
-        - dslName: PostDefinition
-          stepName: post
-          to: 'direct:post'
-          inArray: true
-          inSteps: false
-      stepName: rest
-      path: /parcels
-      consumes: application/json
-      produces: application/json
-    - dslName: RouteDefinition
-      stepName: route
-      from:
-        uri: 'direct:post'
-        steps:
-          - dslName: LogDefinition
-            stepName: log
-            message: 'Received: ${body}'
-            inArray: true
-            inSteps: true
-          - steps:
-              - uri: 'kamelet:kafka-not-secured-sink'
-                dslName: ToDefinition
-                stepName: to
-                parameters:
-                  topic: parcels
-                  bootstrapServers: 'localhost:9091'
-                inArray: true
-                inSteps: true
-              - uri: 'kamelet:postgresql-sink'
-                dslName: ToDefinition
-                stepName: to
-                parameters:
-                  serverName: localhost
-                  serverPort: '5432'
-                  username: postgres
-                  password: postgres
-                  databaseName: demo
-                  query: >-
-                    INSERT INTO parcels (id,address) VALUES (:#id,:#address) ON
-                    CONFLICT (id)  DO NOTHING
-                inArray: true
-                inSteps: true
-            dslName: MulticastDefinition
-            stepName: multicast
-            aggregationStrategy: >-
-              #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
-            parallelProcessing: true
-            streaming: true
-            inArray: true
-            inSteps: true
-        dslName: FromDefinition
-        stepName: from
-      id: post
-    - dslName: RouteDefinition
-      stepName: route
-      from:
-        uri: 'kamelet:jms-apache-artemis-source'
-        steps:
-          - uri: 'xj:identity'
-            dslName: ToDefinition
-            stepName: to
-            parameters:
-              transformDirection: XML2JSON
-            inArray: true
-            inSteps: true
-          - uri: 'kamelet:kafka-not-secured-sink'
-            dslName: ToDefinition
-            stepName: to
-            parameters:
-              topic: payments
-              bootstrapServers: 'localhost:9091'
-            inArray: true
-            inSteps: true
-        dslName: FromDefinition
-        stepName: from
-        parameters:
-          destinationType: queue
-          destinationName: payments
-          brokerURL: 'tcp://localhost:61616'
-      id: payment
-    - dslName: RouteDefinition
-      stepName: route
-      from:
-        uri: 'kamelet:kafka-not-secured-source'
-        steps:
-          - dslName: LogDefinition
-            stepName: log
-            message: 'Aggegating: ${body}'
-            inArray: true
-            inSteps: true
-          - dslName: UnmarshalDefinition
-            stepName: unmarshal
-            json:
-              dslName: JsonDataFormat
-              library: jackson
-            inArray: true
-            inSteps: true
-          - steps:
-              - dslName: ChoiceDefinition
-                stepName: choice
-                when:
-                  - steps:
-                      - dslName: MarshalDefinition
-                        stepName: marshal
-                        json:
-                          dslName: JsonDataFormat
-                          library: jackson
-                        inArray: true
-                        inSteps: true
-                      - dslName: LogDefinition
-                        stepName: log
-                        message: 'Send to MQTT : ${body}'
-                        inArray: true
-                        inSteps: true
-                      - uri: 'kamelet:mqtt-sink'
-                        dslName: ToDefinition
-                        stepName: to
-                        parameters:
-                          topic: deliveries
-                          brokerUrl: 'tcp://localhost:61616'
-                        inArray: true
-                        inSteps: true
-                    dslName: WhenDefinition
-                    stepName: when
-                    expression:
-                      dslName: ExpressionDefinition
-                      stepName: expression
-                      groovy:
-                        dslName: GroovyExpression
-                        expression: >-
-                          body.find { it.containsKey('status') }.status ==
-                          'confirmed'
-                    inArray: true
-                    inSteps: false
-                otherwise:
-                  steps:
-                    - dslName: SetBodyDefinition
-                      stepName: setBody
-                      expression:
-                        dslName: ExpressionDefinition
-                        stepName: expression
-                        groovy:
-                          dslName: GroovyExpression
-                          expression: 'body.find { it.containsKey(''status'') } '
-                      inArray: true
-                      inSteps: true
-                    - dslName: MarshalDefinition
-                      stepName: marshal
-                      json:
-                        dslName: JsonDataFormat
-                        library: jackson
-                      inArray: true
-                      inSteps: true
-                    - dslName: LogDefinition
-                      stepName: log
-                      message: 'Send to database: ${body}'
-                      inArray: true
-                      inSteps: true
-                    - uri: 'kamelet:postgresql-sink'
-                      dslName: ToDefinition
-                      stepName: to
+    - rest:
+        post:
+          - to: direct:post
+        path: /parcels
+        consumes: application/json
+        produces: application/json
+    - route:
+        from:
+          uri: direct:post
+          steps:
+            - log:
+                message: 'Received: ${body}'
+            - multicast:
+                steps:
+                  - to:
+                      uri: kamelet:kafka-not-secured-sink
+                      parameters:
+                        topic: parcels
+                        bootstrapServers: localhost:9092
+                  - to:
+                      uri: kamelet:postgresql-sink
                       parameters:
                         serverName: localhost
                         serverPort: '5432'
                         username: postgres
                         password: postgres
                         databaseName: demo
-                        query: 'UPDATE parcels set status = ''CANCELED'' WHERE id = :#id'
-                      inArray: true
-                      inSteps: true
-                  dslName: OtherwiseDefinition
-                  stepName: otherwise
-                inArray: true
-                inSteps: true
-            dslName: AggregateDefinition
-            aggregationStrategy: aggregator
-            stepName: aggregate
-            completionSize: 2
-            correlationExpression:
-              dslName: ExpressionSubElementDefinition
-              stepName: expressionSubElement
-              groovy:
-                dslName: GroovyExpression
-                expression: body.get('id')
-            inArray: true
-            inSteps: true
-        dslName: FromDefinition
-        stepName: from
-        parameters:
-          topic: 'parcels,payments'
-          bootstrapServers: 'localhost:9091'
-          autoCommitEnable: true
-          consumerGroup: postman
-      id: aggregator
-    - dslName: RouteDefinition
-      stepName: route
-      from:
-        uri: 'kamelet:mqtt-source'
-        steps:
-          - dslName: LogDefinition
-            stepName: log
-            message: 'Delivery: ${body}'
-            inArray: true
-            inSteps: true
-        dslName: FromDefinition
-        stepName: from
-        parameters:
-          topic: deliveries
-          brokerUrl: 'tcp://localhost:61616'
-    - dslName: Beans
-      beans:
-        - dslName: NamedBeanDefinition
-          name: aggregator
-          type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
-          inArray: true
-          inSteps: false
+                        query: >-
+                          INSERT INTO parcels (id,address) VALUES
+                          (:#id,:#address) ON CONFLICT (id)  DO NOTHING
+                aggregationStrategy: >-
+                  #class:org.apache.camel.processor.aggregate.UseOriginalAggregationStrategy
+                parallelProcessing: true
+                streaming: true
+        id: post
+    - route:
+        from:
+          uri: kamelet:jms-apache-artemis-source
+          steps:
+            - to:
+                uri: xj:identity
+                parameters:
+                  transformDirection: XML2JSON
+            - to:
+                uri: kamelet:kafka-not-secured-sink
+                parameters:
+                  topic: payments
+                  bootstrapServers: localhost:9092
+          parameters:
+            destinationType: queue
+            destinationName: payments
+            brokerURL: tcp://localhost:61616
+        id: payment
+    - route:
+        from:
+          uri: kamelet:kafka-not-secured-source
+          steps:
+            - log:
+                message: 'Aggegating: ${body}'
+            - unmarshal:
+                json:
+                  library: jackson
+            - aggregate:
+                steps:
+                  - choice:
+                      when:
+                        - expression:
+                            groovy:
+                              expression: >-
+                                body.find { it.containsKey('status') }.status ==
+                                'confirmed'
+                          steps:
+                            - marshal:
+                                json:
+                                  library: jackson
+                            - log:
+                                message: 'Send to MQTT : ${body}'
+                            - to:
+                                uri: kamelet:mqtt-sink
+                                parameters:
+                                  topic: deliveries
+                                  brokerUrl: tcp://localhost:1883
+                      otherwise:
+                        steps:
+                          - setBody:
+                              expression:
+                                groovy:
+                                  expression: 'body.find { it.containsKey(''status'') } '
+                          - marshal:
+                              json:
+                                library: jackson
+                          - log:
+                              message: 'Send to database: ${body}'
+                          - to:
+                              uri: kamelet:postgresql-sink
+                              parameters:
+                                serverName: localhost
+                                serverPort: '5432'
+                                username: postgres
+                                password: postgres
+                                databaseName: demo
+                                query: >-
+                                  UPDATE parcels set status = 'CANCELED' WHERE
+                                  id = :#id
+                aggregationStrategy: aggregator
+                completionSize: 2
+                correlationExpression:
+                  groovy:
+                    expression: body.get('id')
+          parameters:
+            topic: parcels,payments
+            bootstrapServers: localhost:9092
+            autoCommitEnable: true
+            consumerGroup: postman
+        id: aggregator
+    - route:
+        from:
+          uri: kamelet:mqtt-source
+          steps:
+            - log:
+                message: 'Delivery: ${body}'
+          parameters:
+            topic: deliveries
+            brokerUrl: tcp://localhost:1883
+    - beans:
+        - name: aggregator
+          type: org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy
\ No newline at end of file