Upgraded test env with Kubernetes support

Issue-ID: NONRTRIC-356

Signed-off-by: BjornMagnussonXA <bjorn.magnusson@est.tech>
Change-Id: I942b37c05077b3ba753b3327455d6babed8f6061
diff --git a/test/auto-test/.gitignore b/test/auto-test/.gitignore
index 6091e4a..6009a54 100644
--- a/test/auto-test/.gitignore
+++ b/test/auto-test/.gitignore
@@ -15,3 +15,4 @@
 .pid*
 .result*
 tmp
+NO-CHECKIN
diff --git a/test/auto-test/FTC1.sh b/test/auto-test/FTC1.sh
index 9c0254f..8ecd60a 100755
--- a/test/auto-test/FTC1.sh
+++ b/test/auto-test/FTC1.sh
@@ -20,20 +20,31 @@
 
 TC_ONELINE_DESCR="Sanity test, create service and then create,update and delete a policy using http/https and Agent REST/DMAAP with/without SDNC controller"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+
 
 #### TEST BEGIN ####
 
-
 generate_uuid
 
 # Tested variants of REST/DMAAP/SDNC config
@@ -49,8 +60,7 @@
         echo "#####################################################################"
         echo "#####################################################################"
 
-        # Clean container and start all needed containers #
-        clean_containers
+        clean_environment
 
         if [ $__httpx == "HTTPS" ]; then
             use_agent_rest_https
@@ -58,13 +68,13 @@
             use_agent_rest_http
         fi
 
-        start_policy_agent
+        start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
         set_agent_trace
 
         # Create service to be able to receive events when rics becomes available
         # Must use rest towards the agent since dmaap is not configured yet
-        api_put_service 201 "ric-registration" 0 "$CR_PATH/ric-registration"
+        api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
 
         if [ $__httpx == "HTTPS" ]; then
             use_cr_https
@@ -102,9 +112,11 @@
 
         start_cr
 
-        start_control_panel
+        start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
-        start_consul_cbs
+        if [ $RUNMODE == "DOCKER" ]; then
+            start_consul_cbs
+        fi
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
@@ -113,7 +125,11 @@
             prepare_consul_config      NOSDNC  ".consul_config.json"
         fi
 
-        consul_config_app                      ".consul_config.json"
+        if [ $RUNMODE == "KUBE" ]; then
+            agent_load_config                       ".consul_config.json"
+        else
+            consul_config_app                      ".consul_config.json"
+        fi
 
         mr_equal requests_submitted 0
 
@@ -123,7 +139,7 @@
 
             sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
 
-            api_equal json:rics 3 60
+            api_equal json:rics 3 300
 
             api_equal json:policy-types 3 120
 
@@ -136,7 +152,7 @@
             cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
 
         else
-            api_equal json:rics 2 60
+            api_equal json:rics 2 300
 
             api_equal json:policy_schemas 2 120
 
@@ -157,7 +173,7 @@
         echo "##### Service registry and supervision #####"
         echo "############################################"
 
-        api_put_service 201 "serv1" 1000 "$CR_PATH/1"
+        api_put_service 201 "serv1" 1000 "$CR_SERVICE_PATH/1"
 
         api_get_service_ids 200 "serv1" "ric-registration"
 
@@ -178,7 +194,7 @@
         echo "############################################"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_PATH"/test"
+            notificationurl=$CR_SERVICE_PATH"/test"
         else
             notificationurl=""
         fi
@@ -237,16 +253,16 @@
         fi
 
         if [[ $interface = *"SDNC"* ]]; then
-            sim_contains_str ricsim_g1_1 remote_hosts "a1-controller"
-            sim_contains_str ricsim_g2_1 remote_hosts "a1-controller"
+            sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "a1-controller"
+                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
             fi
         else
-            sim_contains_str ricsim_g1_1 remote_hosts "policy-agent"
-            sim_contains_str ricsim_g2_1 remote_hosts "policy-agent"
+            sim_contains_str ricsim_g1_1 remote_hosts $POLICY_AGENT_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $POLICY_AGENT_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "policy-agent"
+                sim_contains_str ricsim_g3_1 remote_hosts $POLICY_AGENT_APP_NAME
             fi
         fi
 
@@ -268,4 +284,4 @@
 
 print_result
 
-auto_clean_containers
+auto_clean_environment
diff --git a/test/auto-test/FTC10.sh b/test/auto-test/FTC10.sh
index 77a6c34..01ba86f 100755
--- a/test/auto-test/FTC10.sh
+++ b/test/auto-test/FTC10.sh
@@ -19,14 +19,26 @@
 
 TC_ONELINE_DESCR="Basic use case, register service, create/update policy, delete policy, de-register service using both STD and OSC interface while mixing REST and Dmaap"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" MR CR PA RICSIM CP"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh $@
 . ../common/agent_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
 
 #### TEST BEGIN ####
@@ -38,7 +50,7 @@
 use_agent_rest_http
 
 
-clean_containers
+clean_environment
 
 start_ric_simulators  ricsim_g1 3 OSC_2.1.0
 
@@ -50,19 +62,28 @@
 
 start_mr
 
-start_consul_cbs
+start_cr
 
-prepare_consul_config      NOSDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
+if [ $RUNMODE == "DOCKER" ]; then
+    start_consul_cbs
+fi
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
-start_policy_agent
+start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
 set_agent_debug
 
 use_agent_rest_http
 
+prepare_consul_config      NOSDNC  ".consul_config.json"
+
+if [ $RUNMODE == "KUBE" ]; then
+    agent_load_config                       ".consul_config.json"
+else
+    consul_config_app                      ".consul_config.json"
+fi
+
 api_get_status 200
 
 sim_print ricsim_g1_1 interface
@@ -77,22 +98,22 @@
 
 if [ "$PMS_VERSION" == "V2" ]; then
     sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
-    api_equal json:policy-types 3 60
+    api_equal json:policy-types 3 300
 else
-    api_equal json:policy_types 2 60
+    api_equal json:policy_types 2 300
 fi
 
 # Create policies
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
     notificationurl=""
 fi
 
 use_agent_rest_http
 
-api_put_service 201 "service1" 3600 "$CR_PATH/1"
+api_put_service 201 "service1" 3600 "$CR_SERVICE_PATH/1"
 
 api_put_policy 201 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
 
@@ -137,7 +158,7 @@
 #Update policies
 use_agent_rest_http
 
-api_put_service 200 "service1" 3600 "$CR_PATH/1"
+api_put_service 200 "service1" 3600 "$CR_SERVICE_PATH/1"
 
 api_put_policy 200 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
 
@@ -228,10 +249,10 @@
 
 # Check remote host access to simulator
 
-sim_contains_str ricsim_g1_1 remote_hosts "policy-agent"
-sim_contains_str ricsim_g2_1 remote_hosts "policy-agent"
+sim_contains_str ricsim_g1_1 remote_hosts $POLICY_AGENT_APP_NAME
+sim_contains_str ricsim_g2_1 remote_hosts $POLICY_AGENT_APP_NAME
 if [ "$PMS_VERSION" == "V2" ]; then
-    sim_contains_str ricsim_g3_1 remote_hosts "policy-agent"
+    sim_contains_str ricsim_g3_1 remote_hosts $POLICY_AGENT_APP_NAME
 fi
 
 # Check policy removal
@@ -260,4 +281,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC100.sh b/test/auto-test/FTC100.sh
index 34705f4..3b9dcd7 100755
--- a/test/auto-test/FTC100.sh
+++ b/test/auto-test/FTC100.sh
@@ -20,16 +20,28 @@
 
 TC_ONELINE_DESCR="Full agent API walkthrough using agent REST/DMAAP and with/without SDNC A1 Controller"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+
 
 #### TEST BEGIN ####
 
@@ -51,7 +63,7 @@
         echo "#####################################################################"
 
         # Clean container and start all needed containers #
-        clean_containers
+        clean_environment
 
         if [ $__httpx == "HTTPS" ]; then
             use_cr_https
@@ -61,13 +73,13 @@
             use_cr_http
         fi
 
-        start_policy_agent
+        start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
-        set_agent_trace
+        set_agent_debug
 
         # Create service to be able to receive events when rics becomes available
         # Must use rest towards the agent since dmaap is not configured yet
-        api_put_service 201 "ric-registration" 0 "$CR_PATH/ric-registration"
+        api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
 
 
         if [ $__httpx == "HTTPS" ]; then
@@ -104,9 +116,11 @@
 
         start_cr
 
-        start_control_panel
+        start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
-        start_consul_cbs
+        if [ $RUNMODE == "DOCKER" ]; then
+            start_consul_cbs
+        fi
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
@@ -115,7 +129,11 @@
             prepare_consul_config      NOSDNC  ".consul_config.json"
         fi
 
-        consul_config_app                      ".consul_config.json"
+        if [ $RUNMODE == "KUBE" ]; then
+            agent_load_config                       ".consul_config.json"
+        else
+            consul_config_app                      ".consul_config.json"
+        fi
 
         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
         sim_put_policy_type 201 ricsim_g1_1 2 testdata/OSC/sim_2.json
@@ -124,7 +142,7 @@
             sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
             sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
-            api_equal json:rics 3 60
+            api_equal json:rics 3 300
 
             api_equal json:policy-types 5 120
 
@@ -132,7 +150,7 @@
 
             api_equal json:policy-instances 0
         else
-            api_equal json:rics 2 60
+            api_equal json:rics 2 300
 
             api_equal json:policy_schemas 3 120
 
@@ -162,14 +180,14 @@
 
         api_get_services 404 "service1"
 
-        api_put_service 201 "service1" 1000 "$CR_PATH/1"
+        api_put_service 201 "service1" 1000 "$CR_SERVICE_PATH/1"
 
-        api_put_service 200 "service1" 2000 "$CR_PATH/1"
+        api_put_service 200 "service1" 2000 "$CR_SERVICE_PATH/1"
 
 
-        api_put_service 400 "service2" -1 "$CR_PATH/2"
+        api_put_service 400 "service2" -1 "$CR_SERVICE_PATH/2"
 
-        api_put_service 400 "service2" "wrong" "$CR_PATH/2"
+        api_put_service 400 "service2" "wrong" "$CR_SERVICE_PATH/2"
 
         api_put_service 400 "service2" 100 "/test"
 
@@ -177,20 +195,20 @@
 
         api_put_service 201 "service2" 300 "ftp://localhost:80/test"
 
-        api_get_services 200 "service1" "service1" 2000 "$CR_PATH/1"
+        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_PATH/1"
 
         api_get_service_ids 200 "service1" "service2" "ric-registration"
 
 
-        api_put_service 201 "service3" 5000 "$CR_PATH/3"
+        api_put_service 201 "service3" 5000 "$CR_SERVICE_PATH/3"
 
 
         api_get_service_ids 200 "service1" "service2" "service3" "ric-registration"
 
 
-        api_get_services 200 "service1" "service1" 2000 "$CR_PATH/1"
+        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_PATH/1"
 
-        api_get_services 200 NOSERVICE "service1" 2000 "$CR_PATH/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_PATH/3"  "ric-registration" 0 "$CR_PATH/ric-registration"
+        api_get_services 200 NOSERVICE "service1" 2000 "$CR_SERVICE_PATH/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_SERVICE_PATH/3"  "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
 
         api_get_services 200
 
@@ -219,7 +237,7 @@
         api_get_service_ids 200 "service2" "service3" "ric-registration"
 
 
-        api_put_service 201 "service1" 50 "$CR_PATH/1"
+        api_put_service 201 "service1" 50 "$CR_SERVICE_PATH/1"
 
         api_get_service_ids 200 "service1" "service2" "service3"  "ric-registration"
 
@@ -354,10 +372,10 @@
 
 
 
-        api_put_service 201 "service10" 3600 "$CR_PATH/1"
+        api_put_service 201 "service10" 3600 "$CR_SERVICE_PATH/1"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_PATH"/test"
+            notificationurl=$CR_SERVICE_PATH"/test"
         else
             notificationurl=""
         fi
@@ -528,16 +546,16 @@
         fi
 
         if [[ $interface = *"SDNC"* ]]; then
-            sim_contains_str ricsim_g1_1 remote_hosts "a1-controller"
-            sim_contains_str ricsim_g2_1 remote_hosts "a1-controller"
+            sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "a1-controller"
+                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
             fi
         else
-            sim_contains_str ricsim_g1_1 remote_hosts "policy-agent"
-            sim_contains_str ricsim_g2_1 remote_hosts "policy-agent"
+            sim_contains_str ricsim_g1_1 remote_hosts $POLICY_AGENT_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $POLICY_AGENT_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "policy-agent"
+                sim_contains_str ricsim_g3_1 remote_hosts $POLICY_AGENT_APP_NAME
             fi
         fi
 
@@ -559,4 +577,4 @@
 
 print_result
 
-auto_clean_containers
+auto_clean_environment
diff --git a/test/auto-test/FTC110.sh b/test/auto-test/FTC110.sh
index 50e3f37..81aa95c 100755
--- a/test/auto-test/FTC110.sh
+++ b/test/auto-test/FTC110.sh
@@ -20,16 +20,26 @@
 
 TC_ONELINE_DESCR="Testing of service registration timeouts and keepalive"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/control_panel_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
 
 generate_uuid
 
@@ -41,7 +51,7 @@
 
 #### TEST BEGIN ####
 
-clean_containers
+clean_environment
 
 start_ric_simulators ricsim_g1 1  OSC_2.1.0
 start_ric_simulators ricsim_g2 1  STD_1.1.3
@@ -53,14 +63,21 @@
 
 start_cr
 
-start_consul_cbs
+if [ $RUNMODE == "DOCKER" ]; then
+    start_consul_cbs
+fi
+
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
+
+start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
 prepare_consul_config      NOSDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
 
-start_control_panel
-
-start_policy_agent
+if [ $RUNMODE == "KUBE" ]; then
+    agent_load_config                       ".consul_config.json"
+else
+    consul_config_app                      ".consul_config.json"
+fi
 
 set_agent_debug
 
@@ -76,60 +93,60 @@
     sim_print ricsim_g3_1 interface
 fi
 
-api_put_service 201 "service1" 15 "$CR_PATH/service1"
+api_put_service 201 "service1" 15 "$CR_SERVICE_PATH/service1"
 
-api_get_services 200 "service1" "service1" 15 "$CR_PATH/service1"
+api_get_services 200 "service1" "service1" 15 "$CR_SERVICE_PATH/service1"
 
-api_put_service 201 "service2" 120 "$CR_PATH/service2"
+api_put_service 201 "service2" 120 "$CR_SERVICE_PATH/service2"
 
-api_get_services 200 "service2" "service2" 120 "$CR_PATH/service2"
+api_get_services 200 "service2" "service2" 120 "$CR_SERVICE_PATH/service2"
 
-api_put_service 200 "service1" 50 "$CR_PATH/service1"
-api_put_service 200 "service2" 180 "$CR_PATH/service2"
+api_put_service 200 "service1" 50 "$CR_SERVICE_PATH/service1"
+api_put_service 200 "service2" 180 "$CR_SERVICE_PATH/service2"
 
-api_get_services 200 "service1" "service1" 50 "$CR_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_PATH/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
 
 api_get_service_ids 200 "service1" "service2"
 
 sleep_wait 30 "Waiting for keep alive timeout"
 
-api_get_services 200 "service1" "service1" 50 "$CR_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_PATH/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
 
 sleep_wait 100 "Waiting for keep alive timeout"
 
 api_get_services 404 "service1"
-api_get_services 200 "service2" "service2" 180 "$CR_PATH/service2"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_PATH/service2"
 
 api_delete_services 204 "service2"
 
 api_get_services 404 "service1"
 api_get_services 404 "service2"
 
-api_put_service 201 "service3" 60 "$CR_PATH/service3"
+api_put_service 201 "service3" 60 "$CR_SERVICE_PATH/service3"
 
-api_get_services 200 "service3" "service3" 60 "$CR_PATH/service3"
+api_get_services 200 "service3" "service3" 60 "$CR_SERVICE_PATH/service3"
 
 sleep_wait 30 "Waiting for keep alive timeout"
 
-api_put_service 200 "service3" 60 "$CR_PATH/service3"
+api_put_service 200 "service3" 60 "$CR_SERVICE_PATH/service3"
 
 sleep_wait 100 "Waiting for keep alive timeout"
 
 api_get_services 404 "service3"
 
-api_put_service 201 "service4" 120 "$CR_PATH/service4"
+api_put_service 201 "service4" 120 "$CR_SERVICE_PATH/service4"
 
 sleep_wait 60 "Waiting for keep alive timeout"
 
-api_get_services 200 "service4" "service4" 120 "$CR_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_PATH/service4"
 
 api_put_services_keepalive 200 "service4"
 
 sleep_wait 90 "Waiting for keep alive timeout"
 
-api_get_services 200 "service4" "service4" 120 "$CR_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_PATH/service4"
 
 api_delete_services 204 "service4"
 
@@ -152,7 +169,7 @@
 api_put_services_keepalive 404 "service4"
 
 # Policy delete after timeout
-api_put_service 201 "service10" 600 "$CR_PATH/service10"
+api_put_service 201 "service10" 600 "$CR_SERVICE_PATH/service10"
 
 sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
@@ -160,7 +177,7 @@
 
     sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
-    api_equal json:rics 3 60
+    api_equal json:rics 3 300
 
     #api_equal json:policy_schemas 2 120
 
@@ -168,7 +185,7 @@
 
     api_equal json:policies 0
 else
-    api_equal json:rics 2 60
+    api_equal json:rics 2 300
 
     api_equal json:policy_schemas 2 120
 
@@ -178,7 +195,7 @@
 fi
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
     notificationurl=""
 fi
@@ -232,7 +249,7 @@
     sim_equal ricsim_g3_1 num_instances 1
 fi
 
-api_put_service 200 "service10" 10 "$CR_PATH/service10"
+api_put_service 200 "service10" 10 "$CR_SERVICE_PATH/service10"
 
 #Wait for service expiry
 api_equal json:policies 0 120
@@ -256,4 +273,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC1100.sh b/test/auto-test/FTC1100.sh
index 3ad18f3..fa30fef 100755
--- a/test/auto-test/FTC1100.sh
+++ b/test/auto-test/FTC1100.sh
@@ -20,22 +20,32 @@
 
 TC_ONELINE_DESCR="ECS full intefaces walkthrough"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="ECS PRODSTUB CR RICSIM CP"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR RICSIM CP"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" PRODSTUB CR ECS RICSIM CP "
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=" "
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/ecs_api_functions.sh
 . ../common/prodstub_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
 
 #### TEST BEGIN ####
 
 FLAT_A1_EI="1"
 
-clean_containers
+clean_environment
 
 use_ecs_rest_https
 
@@ -45,13 +55,17 @@
 
 use_cr_https
 
-start_ecs
+start_ecs $SIM_GROUP/$ECS_COMPOSE_DIR/application.yaml
+
+if [ $RUNMODE == "KUBE" ]; then
+    ecs_api_admin_reset
+fi
 
 start_prod_stub
 
 set_ecs_trace
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
 if [ "$PMS_VERSION" == "V2" ]; then
     start_ric_simulators ricsim_g3 4  STD_2.0.0
@@ -59,19 +73,19 @@
 
 start_cr
 
-CB_JOB="$PROD_STUB_HTTPX://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/job"
-CB_SV="$PROD_STUB_HTTPX://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/supervision"
+CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
+CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
 TARGET1="$RIC_SIM_HTTPX://ricsim_g3_1:$RIC_SIM_PORT/datadelivery"
 TARGET2="$RIC_SIM_HTTPX://ricsim_g3_2:$RIC_SIM_PORT/datadelivery"
 TARGET3="$RIC_SIM_HTTPX://ricsim_g3_3:$RIC_SIM_PORT/datadelivery"
 TARGET8="$RIC_SIM_HTTPX://ricsim_g3_4:$RIC_SIM_PORT/datadelivery"
 TARGET10="$RIC_SIM_HTTPX://ricsim_g3_4:$RIC_SIM_PORT/datadelivery"
 
-STATUS1="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job1-status"
-STATUS2="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job2-status"
-STATUS3="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job3-status"
-STATUS8="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job8-status"
-STATUS10="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job10-status"
+STATUS1="$CR_SERVICE_PATH/job1-status"
+STATUS2="$CR_SERVICE_PATH/job2-status"
+STATUS3="$CR_SERVICE_PATH/job3-status"
+STATUS8="$CR_SERVICE_PATH/job8-status"
+STATUS10="$CR_SERVICE_PATH/job10-status"
 
 ### Setup prodstub sim to accept calls for producers, types and jobs
 ## prod-a type1
@@ -771,4 +785,4 @@
 
 print_result
 
-auto_clean_containers
+auto_clean_environment
diff --git a/test/auto-test/FTC150.sh b/test/auto-test/FTC150.sh
index ab1e8a6..905d4f8 100755
--- a/test/auto-test/FTC150.sh
+++ b/test/auto-test/FTC150.sh
@@ -20,11 +20,17 @@
 
 TC_ONELINE_DESCR="Sample tests of the SDNC A1 controller restconf API using http/https (no agent)"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="RICSIM SDNC"
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" RICSIM SDNC "
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=" "
 
-#SUPPORTED TEST ENV FILE
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/controller_api_functions.sh
@@ -32,11 +38,6 @@
 
 #### TEST BEGIN ####
 
-FLAVOUR="ORAN"
-if [[ $SDNC_A1_CONTROLLER_IMAGE == *"onap"* ]]; then
-    FLAVOUR="ONAP"
-fi
-
 generate_uuid
 
 #Test agent and simulator protocol versions (others are http only)
@@ -54,7 +55,7 @@
 
 
         # Clean container and start all needed containers #
-        clean_containers
+        clean_environment
 
         start_ric_simulators ricsim_g1 1  OSC_2.1.0
         start_ric_simulators ricsim_g2 1  STD_1.1.3
@@ -141,4 +142,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC1800.sh b/test/auto-test/FTC1800.sh
index f807967..ba8b9f2 100755
--- a/test/auto-test/FTC1800.sh
+++ b/test/auto-test/FTC1800.sh
@@ -20,38 +20,47 @@
 
 TC_ONELINE_DESCR="ECS Create 10000 jobs and restart, test job persisency"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="ECS PRODSTUB CR CP"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="ECS PRODSTUB CR CP"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="ECS PRODSTUB CP CR"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/ecs_api_functions.sh
 . ../common/prodstub_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
 FLAT_A1_EI="1"
 
-clean_containers
+clean_environment
 
 use_ecs_rest_http
 
 use_prod_stub_http
 
-start_ecs
+start_ecs $SIM_GROUP/$ECS_COMPOSE_DIR/application.yaml
 
 start_prod_stub
 
 set_ecs_trace
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
 start_cr
 
-CB_JOB="http://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/job"
-CB_SV="http://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/supervision"
+CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
+CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
 TARGET="http://localhost:80/target"  # Dummy target
 
 NUM_JOBS=10000
@@ -114,7 +123,7 @@
 for ((i=1; i<=$NUM_JOBS; i++))
 do
     if [ $(($i%5)) -eq 0 ]; then
-        ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
         if [  -z "$FLAT_A1_EI" ]; then
             ecs_api_a1_get_job_status 200 type1 job$i ENABLED
         else
@@ -122,7 +131,7 @@
         fi
     fi
     if [ $(($i%5)) -eq 1 ]; then
-        ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
         if [  -z "$FLAT_A1_EI" ]; then
             ecs_api_a1_get_job_status 200 type2 job$i ENABLED
         else
@@ -130,7 +139,7 @@
         fi
     fi
     if [ $(($i%5)) -eq 2 ]; then
-        ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
         if [  -z "$FLAT_A1_EI" ]; then
             ecs_api_a1_get_job_status 200 type3 job$i ENABLED
         else
@@ -138,7 +147,7 @@
         fi
     fi
     if [ $(($i%5)) -eq 3 ]; then
-        ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
         if [  -z "$FLAT_A1_EI" ]; then
             ecs_api_a1_get_job_status 200 type4 job$i ENABLED
         else
@@ -146,7 +155,7 @@
         fi
     fi
     if [ $(($i%5)) -eq 4 ]; then
-        ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_PATH/job_status_ric1 testdata/ecs/job-template.json
         if [  -z "$FLAT_A1_EI" ]; then
             ecs_api_a1_get_job_status 200 type5 job$i ENABLED
         else
@@ -381,4 +390,4 @@
 
 print_result
 
-auto_clean_containers
+auto_clean_environment
diff --git a/test/auto-test/FTC300.sh b/test/auto-test/FTC300.sh
index 713d330..723368e 100755
--- a/test/auto-test/FTC300.sh
+++ b/test/auto-test/FTC300.sh
@@ -19,14 +19,26 @@
 
 TC_ONELINE_DESCR="Resync 10000 policies using OSC and STD interface"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
 
 #### TEST BEGIN ####
@@ -37,6 +49,7 @@
 TESTED_VARIANTS="REST   DMAAP   REST+SDNC   DMAAP+SDNC DMAAP_BATCH DMAAP_BATCH+SDNC"
 #Test agent and simulator protocol versions (others are http only)
 TESTED_PROTOCOLS="HTTP HTTPS"
+
 for __httpx in $TESTED_PROTOCOLS ; do
     for interface in $TESTED_VARIANTS ; do
 
@@ -73,7 +86,7 @@
         fi
 
         # Clean container and start all needed containers #
-        clean_containers
+        clean_environment
 
         start_ric_simulators ricsim_g1 4 OSC_2.1.0
 
@@ -87,7 +100,15 @@
 
         start_cr
 
-        start_consul_cbs
+        if [ $RUNMODE == "DOCKER" ]; then
+            start_consul_cbs
+        fi
+
+        start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
+
+        start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
+
+        set_agent_debug
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
@@ -96,13 +117,11 @@
             prepare_consul_config      NOSDNC  ".consul_config.json"
         fi
 
-        consul_config_app                  ".consul_config.json"
-
-        start_control_panel
-
-        start_policy_agent
-
-        set_agent_debug
+        if [ $RUNMODE == "KUBE" ]; then
+            agent_load_config                       ".consul_config.json"
+        else
+            consul_config_app                      ".consul_config.json"
+        fi
 
         api_get_status 200
 
@@ -122,13 +141,13 @@
             api_equal json:policy_types 2 120  #Wait for the agent to refresh types from the simulator
         fi
 
-        api_put_service 201 "serv1" 3600 "$CR_PATH/1"
+        api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/1"
 
         START_ID=2000
         NUM_POLICIES=10000  # Must be at least 100
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_PATH"/test"
+            notificationurl=$CR_SERVICE_PATH"/test"
         else
             notificationurl=""
         fi
@@ -201,4 +220,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC310.sh b/test/auto-test/FTC310.sh
index 674df8c..dd79b33 100755
--- a/test/auto-test/FTC310.sh
+++ b/test/auto-test/FTC310.sh
@@ -20,16 +20,21 @@
 
 TC_ONELINE_DESCR="Resync of RIC via changes in the consul config or pushed config"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
 
-#SUPPORTED TEST ENV FILE
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -43,7 +48,7 @@
     generate_uuid
 
     # Clean container and start all needed containers #
-    clean_containers
+    clean_environment
 
     start_policy_agent
 
@@ -51,7 +56,7 @@
 
     # Create service to be able to receive events when rics becomes available
     # Must use rest towards the agent since dmaap is not configured yet
-    api_put_service 201 "ric-registration" 0 "$CR_PATH/ric-registration"
+    api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
 
     # Start one RIC of each type
     start_ric_simulators ricsim_g1 1  OSC_2.1.0
@@ -80,13 +85,13 @@
     fi
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        api_equal json:rics 3 120
+        api_equal json:rics 3 300
 
         cr_equal received_callbacks 3 120
 
         cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
     else
-        api_equal json:rics 2 120
+        api_equal json:rics 2 300
     fi
 
     # Add an STD RIC and check
@@ -148,4 +153,4 @@
 
 print_result
 
-auto_clean_containers
+auto_clean_environment
diff --git a/test/auto-test/FTC350.sh b/test/auto-test/FTC350.sh
index 4df0a15..d30b314 100755
--- a/test/auto-test/FTC350.sh
+++ b/test/auto-test/FTC350.sh
@@ -19,16 +19,27 @@
 
 TC_ONELINE_DESCR="Change supported policy types and reconfigure rics"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
+. ../common/consul_cbs_functions.sh
 . ../common/ricsimulator_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -52,7 +63,7 @@
 
 
     # Clean container and start all needed containers #
-    clean_containers
+    clean_environment
 
     #Start simulators and prepare two configs
 
@@ -62,7 +73,9 @@
 
     start_mr
 
-    start_consul_cbs
+    if [ $RUNMODE == "DOCKER" ]; then
+        start_consul_cbs
+    fi
 
     # Create first config
     if [[ $interface = *"SDNC"* ]]; then
@@ -81,7 +94,7 @@
         prepare_consul_config      NOSDNC  ".consul_config_all.json"
     fi
 
-    start_policy_agent
+    start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
     set_agent_trace
 
@@ -89,10 +102,14 @@
 
     # Create service to be able to receive events when rics becomes available
     # Must use rest towards the agent since dmaap is not configured yet
-    api_put_service 201 "ric-registration" 0 "$CR_PATH/ric-registration"
+    api_put_service 201 "ric-registration" 0 "$CR_SERVICE_PATH/ric-registration"
 
     #Load first config
-    consul_config_app                  ".consul_config_initial.json"
+    if [ $RUNMODE == "KUBE" ]; then
+        agent_load_config                      ".consul_config_initial.json"
+    else
+        consul_config_app                      ".consul_config_initial.json"
+    fi
 
     for ((i=1; i<=${NUM_RICS}; i++))
     do
@@ -100,7 +117,7 @@
     done
 
     # All sims running but 2 are not configured in consul
-    api_equal json:rics 8 120
+    api_equal json:rics 8 300
 
     if [ "$PMS_VERSION" == "V2" ]; then
         cr_equal received_callbacks?id=ric-registration 8 120
@@ -187,7 +204,11 @@
     fi
 
     #Load config with all rics
-    consul_config_app                  ".consul_config_all.json"
+    if [ $RUNMODE == "KUBE" ]; then
+        agent_load_config                       ".consul_config_all.json"
+    else
+        consul_config_app                       ".consul_config_all.json"
+    fi
 
     api_equal json:rics 10 120
 
@@ -250,10 +271,10 @@
         api_equal json:policy_types 5
     fi
 
-    api_put_service 201 "serv1" 3600 "$CR_PATH/serv1"
+    api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/serv1"
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        notificationurl=$CR_PATH"/test"
+        notificationurl=$CR_SERVICE_PATH"/test"
     else
         notificationurl=""
     fi
@@ -261,7 +282,11 @@
     sleep_wait 120
 
     # Load config with reduced number of rics
-    consul_config_app                  ".consul_config_initial.json"
+    if [ $RUNMODE == "KUBE" ]; then
+        agent_load_config                      ".consul_config_initial.json"
+    else
+        consul_config_app                      ".consul_config_initial.json"
+    fi
 
     api_equal json:rics 8 120
 
@@ -312,7 +337,11 @@
     api_get_policy_types 404 ricsim_g1_9
 
     # Load config with all rics
-    consul_config_app                  ".consul_config_all.json"
+    if [ $RUNMODE == "KUBE" ]; then
+        agent_load_config                      ".consul_config_all.json"
+    else
+        consul_config_app                      ".consul_config_all.json"
+    fi
 
     api_equal json:rics 10 120
 
@@ -442,4 +471,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC800.sh b/test/auto-test/FTC800.sh
index ceda58c..0be6be8 100755
--- a/test/auto-test/FTC800.sh
+++ b/test/auto-test/FTC800.sh
@@ -19,16 +19,26 @@
 
 TC_ONELINE_DESCR="Create 10000 policies in sequence using http/https and Agent REST/DMAAP with/without SDNC controller"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -69,7 +79,7 @@
         # Policy instance start id
         START_ID=1
 
-        clean_containers
+        clean_environment
 
         start_ric_simulators ricsim_g1 1 OSC_2.1.0
         start_ric_simulators ricsim_g2 1 STD_1.1.3
@@ -81,6 +91,14 @@
 
         start_cr
 
+        start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
+
+        start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
+
+        set_agent_debug
+
+        mr_equal requests_submitted 0
+
         if [[ $interface == "SDNC" ]]; then
             start_sdnc
             prepare_consul_config      SDNC    ".consul_config.json"
@@ -88,17 +106,15 @@
             prepare_consul_config      NOSDNC  ".consul_config.json"
         fi
 
-        start_consul_cbs
+        if [ $RUNMODE == "DOCKER" ]; then
+            start_consul_cbs
+        fi
 
-        consul_config_app                      ".consul_config.json"
-
-        start_control_panel
-
-        start_policy_agent
-
-        set_agent_debug
-
-        mr_equal requests_submitted 0
+        if [ $RUNMODE == "KUBE" ]; then
+            agent_load_config                       ".consul_config.json"
+        else
+            consul_config_app                      ".consul_config.json"
+        fi
 
 
         api_get_status 200
@@ -114,15 +130,15 @@
         if [ "$PMS_VERSION" == "V2" ]; then
             sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
-            api_equal json:policy-types 3 120  #Wait for the agent to refresh types from the simulators
+            api_equal json:policy-types 3 300  #Wait for the agent to refresh types from the simulators
         else
-            api_equal json:policy_types 2 120  #Wait for the agent to refresh types from the simulators
+            api_equal json:policy_types 2 300  #Wait for the agent to refresh types from the simulators
         fi
 
-        api_put_service 201 "serv1" 3600 "$CR_PATH/1"
+        api_put_service 201 "serv1" 3600 "$CR_SERVICE_PATH/1"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_PATH"/test"
+            notificationurl=$CR_SERVICE_PATH"/test"
         else
             notificationurl=""
         fi
@@ -215,16 +231,16 @@
         fi
 
         if [ $interface == "SDNC" ]; then
-            sim_contains_str ricsim_g1_1 remote_hosts "a1-controller"
-            sim_contains_str ricsim_g2_1 remote_hosts "a1-controller"
+            sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "a1-controller"
+                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
             fi
         else
-            sim_contains_str ricsim_g1_1 remote_hosts "policy-agent"
-            sim_contains_str ricsim_g2_1 remote_hosts "policy-agent"
+            sim_contains_str ricsim_g1_1 remote_hosts $POLICY_AGENT_APP_NAME
+            sim_contains_str ricsim_g2_1 remote_hosts $POLICY_AGENT_APP_NAME
             if [ "$PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts "policy-agent"
+                sim_contains_str ricsim_g3_1 remote_hosts $POLICY_AGENT_APP_NAME
             fi
         fi
 
@@ -241,4 +257,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC810.sh b/test/auto-test/FTC810.sh
index c5d284a..a92106e 100755
--- a/test/auto-test/FTC810.sh
+++ b/test/auto-test/FTC810.sh
@@ -19,16 +19,26 @@
 
 TC_ONELINE_DESCR="Repeatedly create and delete policies in each RICs for 24h (or configured number of days). Via agent REST/DMAAP/DMAAP_BATCH and SDNC using http or https"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
 . ../common/cr_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -48,7 +58,7 @@
 
 DAYS=3
 
-clean_containers
+clean_environment
 
 # use HTTP or HTTPS for all apis
 HTTPX=HTTPS
@@ -77,17 +87,24 @@
 
 start_cr
 
-start_consul_cbs
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
+
+start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
+
+if [ $RUNMODE == "DOCKER" ]; then
+   start_consul_cbs
+fi
 
 prepare_consul_config      SDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
+
+if [ $RUNMODE == "KUBE" ]; then
+   agent_load_config                       ".consul_config.json"
+else
+   consul_config_app                      ".consul_config.json"
+fi
 
 start_sdnc
 
-start_control_panel
-
-start_policy_agent
-
 
 api_get_status 200
 
@@ -147,9 +164,9 @@
 
 echo "Wait for the agent to refresh types from the simulator"
 if [ "$PMS_VERSION" == "V2" ]; then
-   api_equal json:policy-types 3 120
+   api_equal json:policy-types 3 300
 else
-   api_equal json:policy_types 2 120
+   api_equal json:policy_types 2 300
 fi
 
 echo "Check the number of types in the agent for each ric is 1"
@@ -164,7 +181,7 @@
 done
 
 echo "Register a service"
-api_put_service 201 "serv1" 0 "$CR_PATH/1"
+api_put_service 201 "serv1" 0 "$CR_SERVICE_PATH/1"
 
 TEST_DURATION=$((24*3600*$DAYS))
 TEST_START=$SECONDS
@@ -174,7 +191,7 @@
 MR_MESSAGES=0
 
 if [ "$PMS_VERSION" == "V2" ]; then
-      notificationurl=$CR_PATH"/test"
+      notificationurl=$CR_SERVICE_PATH"/test"
 else
       notificationurl=""
 fi
@@ -380,11 +397,11 @@
 
       for ((i=1; i<=$NUM_RICS; i++))
       do
-         sim_contains_str ricsim_g1_$i remote_hosts "a1-controller"
-         sim_contains_str ricsim_g2_$i remote_hosts "a1-controller"
+         sim_contains_str ricsim_g1_$i remote_hosts $SDNC_APP_NAME
+         sim_contains_str ricsim_g2_$i remote_hosts $SDNC_APP_NAME
 
          if [ "$PMS_VERSION" == "V2" ]; then
-            sim_contains_str ricsim_g3_$i remote_hosts "a1-controller"
+            sim_contains_str ricsim_g3_$i remote_hosts $SDNC_APP_NAME
          fi
       done
 
@@ -401,4 +418,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC850.sh b/test/auto-test/FTC850.sh
index 324044e..82e50f1 100755
--- a/test/auto-test/FTC850.sh
+++ b/test/auto-test/FTC850.sh
@@ -19,15 +19,25 @@
 
 TC_ONELINE_DESCR="Create/delete policies in parallel over a number of rics using a number of child process"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh  $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -46,7 +56,7 @@
 generate_uuid
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
     notificationurl=""
 fi
@@ -79,11 +89,19 @@
         fi
 
         # Clean container and start all needed containers #
-        clean_containers
+        clean_environment
 
         start_ric_simulators ricsim_g1 $NUM_RICS OSC_2.1.0
 
-        start_consul_cbs
+        start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
+
+        start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
+
+        set_agent_debug
+
+        if [ $RUNMODE == "DOCKER" ]; then
+            start_consul_cbs
+        fi
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
@@ -92,18 +110,16 @@
             prepare_consul_config      NOSDNC  ".consul_config.json"
         fi
 
-        consul_config_app                  ".consul_config.json"
+        if [ $RUNMODE == "KUBE" ]; then
+            agent_load_config                       ".consul_config.json"
+        else
+            consul_config_app                      ".consul_config.json"
+        fi
 
         start_mr # Not used, but removes error messages from the agent log
 
         start_cr
 
-        start_control_panel
-
-        start_policy_agent
-
-        set_agent_debug
-
         api_get_status 200
 
         for ((i=1; i<=$NUM_RICS; i++))
@@ -118,12 +134,12 @@
         done
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            api_equal json:policy-types 1 120  #Wait for the agent to refresh types from the simulator
+            api_equal json:policy-types 1 300  #Wait for the agent to refresh types from the simulator
         else
-            api_equal json:policy_types 1 120  #Wait for the agent to refresh types from the simulator
+            api_equal json:policy_types 1 300  #Wait for the agent to refresh types from the simulator
         fi
 
-        api_put_service 201 "serv1" 600 "$CR_PATH/1"
+        api_put_service 201 "serv1" 600 "$CR_SERVICE_PATH/1"
 
         echo "Check the number of types in the agent for each ric is 1"
         for ((i=1; i<=$NUM_RICS; i++))
@@ -167,9 +183,9 @@
         for ((i=1; i<=$NUM_RICS; i++))
         do
             if [ $interface == "REST+SDNC" ]; then
-                sim_contains_str ricsim_g1_$i remote_hosts "a1-controller"
+                sim_contains_str ricsim_g1_$i remote_hosts $SDNC_APP_NAME
             else
-                sim_contains_str ricsim_g1_$i remote_hosts "policy-agent"
+                sim_contains_str ricsim_g1_$i remote_hosts $POLICY_AGENT_APP_NAME
             fi
         done
 
@@ -189,4 +205,4 @@
 
 print_result
 
-auto_clean_containers
\ No newline at end of file
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/FTC900.sh b/test/auto-test/FTC900.sh
index 8a937ff..b3e4d29 100755
--- a/test/auto-test/FTC900.sh
+++ b/test/auto-test/FTC900.sh
@@ -19,19 +19,29 @@
 
 TC_ONELINE_DESCR="Preparation for test of the Control Panel and the Health Check app - populating a number of ric simulators with types and instances"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
 
 #### TEST BEGIN ####
 
-clean_containers
+clean_environment
 
 OSC_NUM_RICS=6
 STD_NUM_RICS=5
@@ -46,17 +56,24 @@
 
 start_mr #Just to prevent errors in the agent log...
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
-start_consul_cbs
-
-prepare_consul_config      NOSDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
-
-start_policy_agent
+start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
 use_agent_rest_http
 
+if [ $RUNMODE == "DOCKER" ]; then
+    start_consul_cbs
+fi
+
+prepare_consul_config      NOSDNC  ".consul_config.json"
+
+if [ $RUNMODE == "KUBE" ]; then
+    agent_load_config                       ".consul_config.json"
+else
+    consul_config_app                      ".consul_config.json"
+fi
+
 api_get_status 200
 
 # Print the A1 version for OSC
@@ -91,7 +108,7 @@
 
 #Check the number of schemas and the individual schemas in OSC
 if [ "$PMS_VERSION" == "V2" ]; then
-    api_equal json:policy-types 4 120
+    api_equal json:policy-types 4 300
 
     for ((i=1; i<=$OSC_NUM_RICS; i++))
     do
@@ -106,7 +123,7 @@
         api_get_policy_type 200 20008 testdata/OSC/tsa-agent-modified.json
     done
 else
-    api_equal json:policy_types 4 120
+    api_equal json:policy_types 4 300
 
     for ((i=1; i<=$OSC_NUM_RICS; i++))
     do
@@ -150,10 +167,10 @@
 # Create policies
 use_agent_rest_http
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
     notificationurl=""
 fi
diff --git a/test/auto-test/FTC_HELM-RECEPIE.sh b/test/auto-test/FTC_HELM-RECEPIE.sh
new file mode 100755
index 0000000..a9f5e5e
--- /dev/null
+++ b/test/auto-test/FTC_HELM-RECEPIE.sh
@@ -0,0 +1,302 @@
+#!/usr/bin/env bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+TC_ONELINE_DESCR="Sanity test of Non-RT RIC Helm recepie - all components"
+
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="" # Not used -  KUBE only test script
+
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" MR CR  PRODSTUB"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=" PA RICSIM CP ECS RC SDNC"
+
+#Supported test environment profiles
+SUPPORTED_PROFILES="ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="KUBE"
+
+. ../common/testcase_common.sh $@
+. ../common/agent_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+. ../common/ecs_api_functions.sh
+. ../common/prodstub_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/rapp_catalogue_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+
+#### TEST BEGIN ####
+
+use_mr_http       #MR only supports http?
+use_cr_https
+use_agent_rest_https
+use_sdnc_https
+use_simulator_https
+use_ecs_rest_https
+use_prod_stub_https
+use_rapp_catalogue_http
+
+echo -e "$RED CHECK WHY RC HTTPS DOES NOT WORK $ERED"
+
+use_control_panel_https
+
+if [ "$PMS_VERSION" == "V1" ]; then
+   echo "PMS VERSION 2 (V2) is required"
+   exit 1
+fi
+
+clean_environment
+
+STD_NUM_RICS=2
+OSC_NUM_RICS=2
+
+start_ric_simulators a1-sim-osc $STD_NUM_RICS OSC_2.1.0
+echo " RIC MAPPING a1-sim-osc-0 : ric1"
+echo " RIC MAPPING a1-sim-osc-1 : ric2"
+
+start_ric_simulators a1-sim-std $STD_NUM_RICS STD_1.1.3
+echo " RIC MAPPING a1-sim-std-0 : ric3"
+echo " RIC MAPPING a1-sim-std-1 : ric4"
+
+start_ric_simulators a1-sim-std2 $STD_NUM_RICS STD_2.0.0
+echo " RIC MAPPING a1-sim-std2-0 : ric5"
+echo " RIC MAPPING a1-sim-std2-1 : ric6"
+
+start_mr
+
+start_control_panel
+
+start_sdnc
+
+start_policy_agent
+
+start_cr
+
+start_prod_stub
+
+start_ecs
+
+set_ecs_trace
+
+start_rapp_catalogue
+
+set_agent_trace
+
+#### Test RAPP Catalogue ####
+
+rapp_cat_api_get_services 200 EMPTY
+
+rapp_cat_api_put_service 201 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
+
+rapp_cat_api_get_services 200 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
+
+#Check the number of services
+rc_equal json:services 1
+
+api_get_status 200
+
+#### Test Policy Management Service ####
+
+# Print the A1 version for STD 1.1.X
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+    sim_print "a1-sim-std-"$i interface
+done
+
+# Print the A1 version for STD 2.0.X
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+   sim_print "a1-sim-std2-"$i interface
+done
+
+# Print the A1 version for OSC 2.1.X
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+    sim_print "a1-sim-osc-"$i interface
+done
+
+
+# Load the polictypes in STD 2
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+   sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS_0_2_0 testdata/STD2/sim_qos.json
+   sim_put_policy_type 201 "a1-sim-std2-"$i STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
+done
+
+# Load the polictypes in OSC
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+    sim_put_policy_type 201 "a1-sim-osc-"$i 1 testdata/OSC/sim_1.json
+    sim_put_policy_type 201 "a1-sim-osc-"$i 2 testdata/OSC/sim_2.json
+done
+
+# Check that all rics are synced in
+api_equal json:rics 6 300
+
+#Check the number of schemas and the individual schemas
+api_equal json:policy-types 5 300
+
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+    ricid=$((3+$i))
+    api_equal json:policy-types?ric_id=ric$ricid 1 120
+done
+
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+   ricid=$((5+$i))
+   api_equal json:policy-types?ric_id=ric$ricid 2 120
+done
+
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+    ricid=$((1+$i))
+    api_equal json:policy-types?ric_id=ric$ricid 2 120
+done
+
+#Check the schemas in STD 2
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+   ricid=$((5+$i))
+   api_get_policy_type 200 STD_QOS_0_2_0 testdata/STD2/qos-agent-modified.json
+   api_get_policy_type 200 STD_QOS2_0.1.0 testdata/STD2/qos2-agent-modified.json
+done
+
+# Check the schemas in OSC
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+    api_get_policy_type 200 1 testdata/OSC/1-agent-modified.json
+    api_get_policy_type 200 2 testdata/OSC/2-agent-modified.json
+done
+
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/ER-app"
+
+# Create policies in STD
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+    ricid=$((3+$i))
+    generate_uuid
+    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
+    generate_uuid
+    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD/pi1_template.json 1
+done
+
+#Create policies in STD 2
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+   ricid=$((5+$i))
+   generate_uuid
+   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos_template.json 1
+   generate_uuid
+   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
+done
+
+# Create policies in OSC
+for ((i=0; i<$OSC_NUM_RICS; i++))
+do
+    ricid=$((1+$i))
+    generate_uuid
+    api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi1_template.json 1
+    generate_uuid
+    api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_PATH/"osc" testdata/OSC/pi2_template.json 1
+done
+
+
+# Check the number of policies in STD and STD2
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+    sim_equal "a1-sim-std-"$i num_instances 2
+    sim_equal "a1-sim-std2-"$i num_instances 2
+done
+
+# Check the number of policies in OSC
+for ((i=0; i<$STD_NUM_RICS; i++))
+do
+    sim_equal "a1-sim-osc-"$i num_instances 2
+done
+
+echo "ADD EVENT/STATUS CHECK"
+echo "ADD MR CHECK"
+
+FLAT_A1_EI="1"
+
+ecs_api_admin_reset
+
+CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
+CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
+TARGET1="$RIC_SIM_HTTPX://a1-sim-std2-0.a1-sim:$RIC_SIM_PORT/datadelivery"
+TARGET2="$RIC_SIM_HTTPX://a1-sim-std2-1.a1-sim:$RIC_SIM_PORT/datadelivery"
+
+STATUS1="$CR_SERVICE_PATH/job1-status"
+STATUS2="$CR_SERVICE_PATH/job2-status"
+
+prodstub_arm_producer 200 prod-a
+prodstub_arm_type 200 prod-a type1
+prodstub_arm_job_create 200 prod-a job1
+prodstub_arm_job_create 200 prod-a job2
+
+
+### ecs status
+ecs_api_service_status 200
+
+## Setup prod-a
+ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
+
+ecs_api_edp_get_producer 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
+
+ecs_api_edp_get_producer_status 200 prod-a ENABLED
+
+
+## Create a job for prod-a
+## job1 - prod-a
+if [  -z "$FLAT_A1_EI" ]; then
+    ecs_api_a1_put_job 201 type1 job1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
+else
+    ecs_api_a1_put_job 201 job1 type1 $TARGET1 ricsim_g3_1 $STATUS1 testdata/ecs/job-template.json
+fi
+
+# Check the job data in the producer
+prodstub_check_jobdata 200 prod-a job1 type1 $TARGET1 ricsim_g3_1 testdata/ecs/job-template.json
+
+
+## Create a second job for prod-a
+## job2 - prod-a
+if [  -z "$FLAT_A1_EI" ]; then
+    ecs_api_a1_put_job 201 type1 job2 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
+else
+    ecs_api_a1_put_job 201 job2 type1 $TARGET2 ricsim_g3_2 $STATUS2 testdata/ecs/job-template.json
+fi
+
+# Check the job data in the producer
+prodstub_check_jobdata 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
+
+
+echo "ADD EVENT/STATUS CHECK"
+
+check_policy_agent_logs
+check_ecs_logs
+check_sdnc_logs
+
+#### TEST COMPLETE ####
+
+store_logs          END
+
+print_result
diff --git a/test/auto-test/PM_DEMO.sh b/test/auto-test/PM_DEMO.sh
index fe85372..0b70495 100755
--- a/test/auto-test/PM_DEMO.sh
+++ b/test/auto-test/PM_DEMO.sh
@@ -19,15 +19,27 @@
 
 TC_ONELINE_DESCR="Preparation demo setup  - populating a number of ric simulators with types and instances"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh $@
 . ../common/agent_api_functions.sh
 . ../common/ricsimulator_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/consul_cbs_functions.sh
 
 #### TEST BEGIN ####
 
@@ -40,12 +52,12 @@
 use_simulator_https
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
     notificationurl=""
 fi
 
-clean_containers
+clean_environment
 
 OSC_NUM_RICS=6
 STD_NUM_RICS=5
@@ -60,19 +72,26 @@
 
 start_mr #Just to prevent errors in the agent log...
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
 start_sdnc
 
-start_consul_cbs
-
-prepare_consul_config      SDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
-
-start_policy_agent
+start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
 
 set_agent_trace
 
+if [ $RUNMODE == "DOCKER" ]; then
+    start_consul_cbs
+fi
+
+prepare_consul_config      SDNC  ".consul_config.json"
+
+if [ $RUNMODE == "KUBE" ]; then
+    agent_load_config                       ".consul_config.json"
+else
+    consul_config_app                      ".consul_config.json"
+fi
+
 api_get_status 200
 
 # Print the A1 version for OSC
@@ -108,7 +127,7 @@
 #Check the number of schemas and the individual schemas in OSC
 if [ "$PMS_VERSION" == "V2" ]; then
 
-    api_equal json:policy-types 3 120
+    api_equal json:policy-types 3 300
 
     for ((i=1; i<=$OSC_NUM_RICS; i++))
     do
@@ -122,7 +141,7 @@
         api_get_policy_type 200 20008 demo-testdata/OSC/tsa-agent-modified.json
     done
 else
-    api_equal json:policy_types 3 120
+    api_equal json:policy_types 3 300
 
     for ((i=1; i<=$OSC_NUM_RICS; i++))
     do
@@ -176,7 +195,7 @@
 # Create policies
 use_agent_rest_http
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
 
 # Create policies in OSC
 for ((i=1; i<=$OSC_NUM_RICS; i++))
diff --git a/test/auto-test/PM_EI_DEMO.sh b/test/auto-test/PM_EI_DEMO.sh
index 3f9f8fd..fd5871c 100755
--- a/test/auto-test/PM_EI_DEMO.sh
+++ b/test/auto-test/PM_EI_DEMO.sh
@@ -19,11 +19,18 @@
 
 TC_ONELINE_DESCR="Preparation demo setup  - policy management and enrichment information"
 
-#App names to include in the test, space separated list
-INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC ECS PRODSTUB RC"
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR PA RICSIM SDNC ECS PRODSTUB RC HTTPPROXY"
 
-#SUPPORTED TEST ENV FILE
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=" MR CR PA RC PRODSTUB RICSIM CP ECS SDNC HTTPPROXY"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#Supported test environment profiles
 SUPPORTED_PROFILES="ONAP-HONOLULU  ORAN-CHERRY ORAN-DAWN"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh $@
 . ../common/agent_api_functions.sh
@@ -32,6 +39,11 @@
 . ../common/prodstub_api_functions.sh
 . ../common/cr_api_functions.sh
 . ../common/rapp_catalogue_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/http_proxy_api_functions.sh
 
 #### TEST BEGIN ####
 
@@ -47,13 +59,13 @@
 use_rapp_catalogue_http # https not yet supported
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_PATH"/test"
+    notificationurl=$CR_SERVICE_PATH"/test"
 else
    echo "PMS VERSION 2 (V2) is required"
    exit 1
 fi
 
-clean_containers
+clean_environment
 
 STD_NUM_RICS=2
 
@@ -61,22 +73,29 @@
 
 start_mr #Just to prevent errors in the agent log...
 
-start_control_panel
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/application.properties
 
 start_sdnc
 
-start_consul_cbs
+start_policy_agent PROXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/application.yaml
+
+if [ $RUNMODE == "DOCKER" ]; then
+    start_consul_cbs
+fi
 
 prepare_consul_config      SDNC  ".consul_config.json"
-consul_config_app                  ".consul_config.json"
 
-start_policy_agent
+if [ $RUNMODE == "KUBE" ]; then
+    agent_load_config                       ".consul_config.json"
+else
+    consul_config_app                      ".consul_config.json"
+fi
 
 start_cr
 
 start_prod_stub
 
-start_ecs
+start_ecs $SIM_GROUP/$ECS_COMPOSE_DIR/application.yaml
 
 start_rapp_catalogue
 
@@ -84,7 +103,6 @@
 
 set_ecs_trace
 
-
 rapp_cat_api_get_services 200 EMPTY
 
 rapp_cat_api_put_service 201 "Emergency-response-app" v1 "Emergency-response-app" "Emergency-response-app"
@@ -121,9 +139,9 @@
 done
 
 #Check the number of types
-api_equal json:policy-types 2 120
+api_equal json:policy-types 2 300
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
 
 # Create policies in STD
 for ((i=1; i<=$STD_NUM_RICS; i++))
@@ -141,29 +159,36 @@
     sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
 done
 
-
+# Print calling hosts STD 2.X
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    sim_print $RIC_SIM_PREFIX"_g3_"$i remote_hosts
+done
 
 FLAT_A1_EI="1"
 
-CB_JOB="$PROD_STUB_HTTPX://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/job"
-CB_SV="$PROD_STUB_HTTPX://$PROD_STUB_APP_NAME:$PROD_STUB_PORT/callbacks/supervision"
-TARGET1="$RIC_SIM_HTTPX://ricsim_g3_1:$RIC_SIM_PORT/datadelivery"
-TARGET2="$RIC_SIM_HTTPX://ricsim_g3_2:$RIC_SIM_PORT/datadelivery"
+CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
+CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
+RIC_G1_1=$RIC_SIM_PREFIX"_g3_1"
+RIC_G1_2=$RIC_SIM_PREFIX"_g3_2"
+if [ $RUNMODE == "KUBE" ]; then
+    RIC_G1_1=$(get_kube_sim_host $RIC_G1_1)
+    RIC_G1_2=$(get_kube_sim_host $RIC_G1_2)
+fi
+TARGET1="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
+TARGET2="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
 
-STATUS1="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job1-status"
-STATUS2="$CR_HTTPX://$CR_APP_NAME:$CR_PORT/callbacks/job2-status"
+STATUS1="$CR_SERVICE_PATH/callbacks/job1-status"
+STATUS2="$CR_SERVICE_PATH/callbacks/job2-status"
 
 prodstub_arm_producer 200 prod-a
 prodstub_arm_type 200 prod-a type1
 prodstub_arm_job_create 200 prod-a job1
 prodstub_arm_job_create 200 prod-a job2
 
-
 ### ecs status
 ecs_api_service_status 200
 
-
-
 ## Setup prod-a
 ecs_api_edp_put_producer 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 testdata/ecs/ei-type-1.json
 
@@ -195,9 +220,6 @@
 # Check the job data in the producer
 prodstub_check_jobdata 200 prod-a job2 type1 $TARGET2 ricsim_g3_2 testdata/ecs/job-template.json
 
-
-
-
 check_policy_agent_logs
 check_ecs_logs
 check_sdnc_logs
diff --git a/test/common/.gitignore b/test/common/.gitignore
new file mode 100644
index 0000000..bc68808
--- /dev/null
+++ b/test/common/.gitignore
@@ -0,0 +1 @@
+NO-CHECKIN
diff --git a/test/common/agent_api_functions.sh b/test/common/agent_api_functions.sh
index fbd9fc4..98a8b56 100644
--- a/test/common/agent_api_functions.sh
+++ b/test/common/agent_api_functions.sh
@@ -17,11 +17,283 @@
 #  ============LICENSE_END=================================================
 #
 
-# This is a script that contains specific test functions for Policy Agent API
+# This is a script that contains management and test functions for Policy Agent
 
-### API functiond towards the Policy Agent
 
-. ../common/api_curl.sh
+## Access to Policy agent
+# Host name may be changed if app started by kube
+# Direct access from script
+PA_HTTPX="http"
+PA_HOST_NAME=$LOCALHOST_NAME
+PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
+
+# PA_ADAPTER used for switch between REST and DMAAP
+PA_ADAPTER_TYPE="REST"
+PA_ADAPTER=$PA_PATH
+
+# Make curl retries towards the agent for http response codes set in this env var, space separated list of codes
+AGENT_RETRY_CODES=""
+
+###########################
+### Policy Agents functions
+###########################
+
+# All calls to the agent will be directed to the agent REST interface from now on
+# args: -
+# (Function for test scripts)
+use_agent_rest_http() {
+	echo -e $BOLD"Agent protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards the agent"
+	PA_HTTPX="http"
+	PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
+
+	PA_ADAPTER_TYPE="REST"
+	PA_ADAPTER=$PA_PATH
+	echo ""
+}
+
+# All calls to the agent will be directed to the agent REST interface from now on
+# args: -
+# (Function for test scripts)
+use_agent_rest_https() {
+	echo -e $BOLD"Agent protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards the agent"
+	PA_HTTPX="https"
+	PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_SECURE_PORT
+
+	PA_ADAPTER_TYPE="REST"
+	PA_ADAPTER=$PA_PATH
+	echo ""
+}
+
+# All calls to the agent will be directed to the agent dmaap interface over http from now on
+# args: -
+# (Function for test scripts)
+use_agent_dmaap_http() {
+	echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
+	PA_ADAPTER_TYPE="MR-HTTP"
+	echo ""
+}
+
+# All calls to the agent will be directed to the agent dmaap interface over https from now on
+# args: -
+# (Function for test scripts)
+use_agent_dmaap_https() {
+	echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
+	echo -e $YELLOW" Setting http instead of https - MR only uses http"$EYELLOW
+	PA_ADAPTER_TYPE="MR-HTTPS"
+	echo ""
+}
+
+# Start the policy agent
+# args: (kube only) PROXY|NOPROXY <config-file> [ <data-file>]
+# (Function for test scripts)
+start_policy_agent() {
+	echo -e $BOLD"Starting $POLICY_AGENT_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "PA"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "PA"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $POLICY_AGENT_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $POLICY_AGENT_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $POLICY_AGENT_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $POLICY_AGENT_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $POLICY_AGENT_APP_NAME deployment and service"
+			echo " Setting $POLICY_AGENT_APP_NAME replicas=1"
+			__kube_scale deployment $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+
+			echo -e " Creating $POLICY_AGENT_APP_NAME app and expose service"
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			#Export all vars needed for service and deployment
+			export POLICY_AGENT_APP_NAME
+			export KUBE_NONRTRIC_NAMESPACE
+			export POLICY_AGENT_IMAGE
+			export POLICY_AGENT_INTERNAL_PORT
+			export POLICY_AGENT_INTERNAL_SECURE_PORT
+			export POLICY_AGENT_EXTERNAL_PORT
+			export POLICY_AGENT_EXTERNAL_SECURE_PORT
+			export POLICY_AGENT_CONFIG_MOUNT_PATH
+			export POLICY_AGENT_DATA_MOUNT_PATH
+			export POLICY_AGENT_CONFIG_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-config"
+			export POLICY_AGENT_DATA_CONFIGMAP_NAME=$POLICY_AGENT_APP_NAME"-data"
+			export POLICY_AGENT_PKG_NAME
+			if [ $1 == "PROXY" ]; then
+				AGENT_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT  #Set if proxy is started
+				AGENT_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+			else
+				AGENT_HTTP_PROXY_CONFIG_PORT=0
+				AGENT_HTTP_PROXY_CONFIG_HOST_NAME=""
+			fi
+			export AGENT_HTTP_PROXY_CONFIG_PORT
+			export AGENT_HTTP_PROXY_CONFIG_HOST_NAME
+
+
+			# Create config map for config
+			configfile=$PWD/tmp/$POLICY_AGENT_CONFIG_FILE
+			cp $2 $configfile
+			output_yaml=$PWD/tmp/pa_cfc.yaml
+			__kube_create_configmap $POLICY_AGENT_CONFIG_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest PA $configfile $output_yaml
+
+			# Create config map for data
+			data_json=$PWD/tmp/$POLICY_AGENT_DATA_FILE
+			if [ $# -lt 3 ]; then
+				#create empty dummy file
+				echo "{}" > $data_json
+			else
+				cp $3 $data_json
+			fi
+			output_yaml=$PWD/tmp/pa_cfd.yaml
+			__kube_create_configmap $POLICY_AGENT_DATA_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest PA $data_json $output_yaml
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$POLICY_AGENT_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/pa_svc.yaml
+			__kube_create_instance service $POLICY_AGENT_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$POLICY_AGENT_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/pa_app.yaml
+			__kube_create_instance app $POLICY_AGENT_APP_NAME $input_yaml $output_yaml
+
+		fi
+
+		echo " Retrieving host and ports for service..."
+		PA_HOST_NAME=$(__kube_get_service_host $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+		POLICY_AGENT_EXTERNAL_PORT=$(__kube_get_service_port $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+		POLICY_AGENT_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $POLICY_AGENT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $PA_HOST_NAME $POLICY_AGENT_EXTERNAL_PORT $POLICY_AGENT_EXTERNAL_SECURE_PORT"
+
+		if [ $PA_HTTPX == "http" ]; then
+			PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_PORT
+		else
+			PA_PATH=$PA_HTTPX"://"$PA_HOST_NAME":"$POLICY_AGENT_EXTERNAL_SECURE_PORT
+		fi
+		__check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
+
+		if [ $PA_ADAPTER_TYPE == "REST" ]; then
+			PA_ADAPTER=$PA_PATH
+		fi
+	else
+		__check_included_image 'PA'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Policy Agent app is not included in this test script"$ERED
+			echo -e $RED"The Policy Agent will not be started"$ERED
+			exit
+		fi
+
+		#Export all vars needed for docker-compose
+		export POLICY_AGENT_APP_NAME
+		export POLICY_AGENT_APP_NAME_ALIAS
+		export POLICY_AGENT_INTERNAL_PORT
+		export POLICY_AGENT_EXTERNAL_PORT
+		export POLICY_AGENT_INTERNAL_SECURE_PORT
+		export POLICY_AGENT_EXTERNAL_SECURE_PORT
+		export CONSUL_HOST
+		export CONSUL_INTERNAL_PORT
+		export CONFIG_BINDING_SERVICE
+		export POLICY_AGENT_CONFIG_KEY
+		export DOCKER_SIM_NWNAME
+		export POLICY_AGENT_HOST_MNT_DIR
+		export POLICY_AGENT_CONFIG_MOUNT_PATH
+		export POLICY_AGENT_CONFIG_FILE
+		export POLICY_AGENT_PKG_NAME
+
+		if [ $1 == "PROXY" ]; then
+			AGENT_HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_CONFIG_PORT  #Set if proxy is started
+			AGENT_HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_CONFIG_HOST_NAME #Set if proxy is started
+		else
+			AGENT_HTTP_PROXY_CONFIG_PORT=0
+			AGENT_HTTP_PROXY_CONFIG_HOST_NAME=""
+		fi
+		export AGENT_HTTP_PROXY_CONFIG_PORT
+		export AGENT_HTTP_PROXY_CONFIG_HOST_NAME
+
+		dest_file=$SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/$POLICY_AGENT_HOST_MNT_DIR/application.yaml
+
+		envsubst < $2 > $dest_file
+
+		__start_container $POLICY_AGENT_COMPOSE_DIR NODOCKERARGS 1 $POLICY_AGENT_APP_NAME
+
+		__check_service_start $POLICY_AGENT_APP_NAME $PA_PATH$POLICY_AGENT_ALIVE_URL
+	fi
+	echo ""
+	return 0
+}
+
+agent_load_config() {
+	echo -e $BOLD"Agent - load config from "$EBOLD$1
+	data_json=$PWD/tmp/$POLICY_AGENT_DATA_FILE
+	cp $1 $data_json
+	output_yaml=$PWD/tmp/pa_cfd.yaml
+	__kube_create_configmap $POLICY_AGENT_APP_NAME"-data" $KUBE_NONRTRIC_NAMESPACE autotest PA $data_json $output_yaml
+}
+
+
+# Turn on debug level tracing in the agent
+# args: -
+# (Function for test scripts)
+set_agent_debug() {
+	echo -e $BOLD"Setting agent debug logging"$EBOLD
+	curlString="$PA_PATH$POLICY_AGENT_ACTUATOR -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
+	result=$(__do_curl "$curlString")
+	if [ $? -ne 0 ]; then
+		__print_err "could not set debug mode" $@
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	echo ""
+	return 0
+}
+
+# Turn on trace level tracing in the agent
+# args: -
+# (Function for test scripts)
+set_agent_trace() {
+	echo -e $BOLD"Setting agent trace logging"$EBOLD
+	curlString="$PA_PATH$POLICY_AGENT_ACTUATOR -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+	result=$(__do_curl "$curlString")
+	if [ $? -ne 0 ]; then
+		__print_err "could not set trace mode" $@
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	echo ""
+	return 0
+}
+
+# Perform curl retries when making direct call to the agent for the specified http response codes
+# Speace separated list of http response codes
+# args: [<response-code>]*
+use_agent_retries() {
+	echo -e $BOLD"Do curl retries to the agent REST inteface for these response codes:$@"$EBOLD
+	AGENT_RETRY_CODES=$@
+	echo ""
+	return
+}
 
 #########################################################
 #### Test case functions A1 Policy management service
@@ -36,9 +308,9 @@
 	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
 		if [[ $1 == "json:"* ]]; then
 			if [ "$PMS_VERSION" == "V2" ]; then
-				__var_test "Policy Agent" $LOCALHOST$POLICY_AGENT_EXTERNAL_PORT"/v2/" $1 "=" $2 $3
+				__var_test "Policy Agent" $PA_PATH"/v2/" $1 "=" $2 $3
 			else
-				__var_test "Policy Agent" $LOCALHOST$POLICY_AGENT_EXTERNAL_PORT"/" $1 "=" $2 $3
+				__var_test "Policy Agent" $PA_PATH"/" $1 "=" $2 $3
 			fi
 			return 0
 		fi
@@ -546,7 +818,8 @@
 	count=$1; shift;
 	pids=$1; shift;
 
-	if [ $ADAPTER != $RESTBASE ] && [ $ADAPTER != $RESTBASE_SECURE ]; then
+	#if [ $PA_ADAPTER != $RESTBASE ] && [ $PA_ADAPTER != $RESTBASE_SECURE ]; then
+	if [ $__ADAPTER_TYPE != "REST" ]; then
 		echo " Info - api_put_policy_parallel uses only the agent REST interface - create over dmaap in parallel is not supported"
 		echo " Info - will execute over agent REST"
 	fi
@@ -570,7 +843,7 @@
 		fi
 	fi
 
-	urlbase=${ADAPTER}${query}
+	urlbase=${PA_ADAPTER}${query}
 
 	for ((i=1; i<=$pids; i++))
 	do
@@ -746,7 +1019,8 @@
 	count=$1; shift;
 	pids=$1; shift;
 
-	if [ $ADAPTER != $RESTBASE ] && [ $ADAPTER != $RESTBASE_SECURE ]; then
+	#if [ $PA_ADAPTER != $RESTBASE ] && [ $PA_ADAPTER != $RESTBASE_SECURE ]; then
+	if [ $__ADAPTER_TYPE != "REST" ]; then
 		echo " Info - api_delete_policy_parallel uses only the agent REST interface - create over dmaap in parallel is not supported"
 		echo " Info - will execute over agent REST"
 	fi
@@ -757,7 +1031,7 @@
 		query="/policy"
 	fi
 
-	urlbase=${ADAPTER}${query}
+	urlbase=${PA_ADAPTER}${query}
 
 	for ((i=1; i<=$pids; i++))
 	do
diff --git a/test/common/api_curl.sh b/test/common/api_curl.sh
index c7e5c90..1ea47dd 100644
--- a/test/common/api_curl.sh
+++ b/test/common/api_curl.sh
@@ -19,41 +19,46 @@
 
 # Generic function to query the agent/ECS via the REST or DMAAP interface.
 # Used by all other agent/ECS api test functions
-# If operation prefix is '_BATCH' the the send and get response is split in two sequences,
+# If operation sufffix is '_BATCH' the the send and get response is split in two sequences,
 # one for sending the requests and one for receiving the response
 # but only when using the DMAAP interface
-# REST or DMAAP is controlled of the base url of $ADAPTER
-# arg: (PA|ECS|CR|RC GET|PUT|POST|DELETE|GET_BATCH|PUT_BATCH|POST_BATCH|DELETE_BATCH <url> [<file>]) | (PA|ECS RESPONSE <correlation-id>)
+# REST or DMAAP is controlled of the base url of $XX_ADAPTER
+# arg: (PA|ECS|CR|RC GET|PUT|POST|DELETE|GET_BATCH|PUT_BATCH|POST_BATCH|DELETE_BATCH <url>|<correlation-id> [<file>]) | (PA|ECS RESPONSE <correlation-id>)
 # (Not for test scripts)
 __do_curl_to_api() {
 	TIMESTAMP=$(date "+%Y-%m-%d %H:%M:%S")
     echo " (${BASH_LINENO[0]}) - ${TIMESTAMP}: ${FUNCNAME[0]}" $@ >> $HTTPLOG
 	paramError=0
-
+	input_url=$3
     if [ $# -gt 0 ]; then
         if [ $1 == "PA" ]; then
-            __ADAPTER=$ADAPTER
-            __RESTBASE=$RESTBASE
-            __RESTBASE_SECURE=$RESTBASE_SECURE
+			__ADAPTER=$PA_ADAPTER
+			__ADAPTER_TYPE=$PA_ADAPTER_TYPE
             __RETRY_CODES=$AGENT_RETRY_CODES
+			if [ $PMS_VERSION != "V1" ]; then
+				input_url=$PMS_API_PREFIX$3
+			fi
         elif [ $1 == "ECS" ]; then
-            __ADAPTER=$ECS_ADAPTER
-            __RESTBASE=$ECS_RESTBASE
-            __RESTBASE_SECURE=$ECS_RESTBASE_SECURE
+			__ADAPTER=$ECS_ADAPTER
+			__ADAPTER_TYPE=$ECS_ADAPTER_TYPE
             __RETRY_CODES=$ECS_RETRY_CODES
 		elif [ $1 == "CR" ]; then
-		    __ADAPTER=$CR_ADAPTER
-            __RESTBASE=$CR_RESTBASE
-            __RESTBASE_SECURE=$CR_RESTBASE_SECURE
+			__ADAPTER=$CR_ADAPTER
+			__ADAPTER_TYPE=$CR_ADAPTER_TYPE
             __RETRY_CODES=""
 		elif [ $1 == "RC" ]; then
-		    __ADAPTER=$RC_ADAPTER
-            __RESTBASE=$RC_RESTBASE
-            __RESTBASE_SECURE=$RC_RESTBASE_SECURE
+			__ADAPTER=$RC_ADAPTER
+			__ADAPTER_TYPE=$RC_ADAPTER_TYPE
             __RETRY_CODES=""
         else
             paramError=1
         fi
+		if [ $__ADAPTER_TYPE == "MR-HTTP" ]; then
+			__ADAPTER=$MR_ADAPTER_HTTP
+		fi
+		if [ $__ADAPTER_TYPE == "MR-HTTPS" ]; then
+			__ADAPTER=$MR_ADAPTER_HTTPS
+		fi
     fi
     if [ $# -lt 3 ] || [ $# -gt 4 ]; then
 		paramError=1
@@ -98,7 +103,8 @@
 			if [ $# -ne 3 ]; then
 				paramError=1
 			fi
-			if [ $__ADAPTER == $__RESTBASE ] || [ $__ADAPTER == $__RESTBASE_SECURE ]; then
+			#if [ $__ADAPTER == $__RESTBASE ] || [ $__ADAPTER == $__RESTBASE_SECURE ]; then
+			if [ $__ADAPTER_TYPE == "REST" ]; then
 				paramError=1
 			fi
 		else
@@ -115,8 +121,9 @@
         return 1
     fi
 
-    if [ $__ADAPTER == $__RESTBASE ] || [ $__ADAPTER == $__RESTBASE_SECURE ]; then
-        url=" "${__ADAPTER}${3}
+    #if [ $__ADAPTER == $__RESTBASE ] || [ $__ADAPTER == $__RESTBASE_SECURE ]; then
+	if [ $__ADAPTER_TYPE == "REST" ]; then
+        url=" "${__ADAPTER}${input_url}
         oper=" -X "$oper
         curlString="curl -k "${oper}${timeout}${httpcode}${accept}${content}${url}${file}
         echo " CMD: "$curlString >> $HTTPLOG
@@ -156,7 +163,7 @@
         return 0
     else
 		if [ $oper != "RESPONSE" ]; then
-			requestUrl=$3
+			requestUrl=$input_url
 			if [ $2 == "PUT" ] && [ $# -eq 4 ]; then
 				payload="$(cat $4 | tr -d '\n' | tr -d ' ' )"
 				echo "payload: "$payload >> $HTTPLOG
@@ -165,7 +172,7 @@
 				echo " FILE: $(cat $4)" >> $HTTPLOG
 			fi
 			#urlencode the request url since it will be carried by send-request url
-			requestUrl=$(python3 -c "from __future__ import print_function; import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))"  "$3")
+			requestUrl=$(python3 -c "from __future__ import print_function; import urllib.parse, sys; print(urllib.parse.quote(sys.argv[1]))"  "$input_url")
 			url=" "${__ADAPTER}"/send-request?url="${requestUrl}"&operation="${oper}
 			curlString="curl -k -X POST${timeout}${httpcode}${content}${url}${file}"
 			echo " CMD: "$curlString >> $HTTPLOG
diff --git a/test/common/clean_kube.sh b/test/common/clean_kube.sh
new file mode 100755
index 0000000..ea17eee
--- /dev/null
+++ b/test/common/clean_kube.sh
@@ -0,0 +1,91 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2021 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+
+# Script to clean all resources from kubernetes having the label 'autotest', i.e started by autotest
+
+BOLD="\033[1m"
+EBOLD="\033[0m"
+RED="\033[31m\033[1m"
+ERED="\033[0m"
+GREEN="\033[32m\033[1m"
+EGREEN="\033[0m"
+YELLOW="\033[33m\033[1m"
+EYELLOW="\033[0m"
+SAMELINE="\033[0K\r"
+
+__kube_delete_all_resources() {
+	echo "Deleting all from namespace: "$1
+	namespace=$1
+	resources="deployments replicaset statefulset services pods configmaps pvc"
+	deleted_resourcetypes=""
+	for restype in $resources; do
+		result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+			deleted_resourcetypes=$deleted_resourcetypes" "$restype
+			for resid in $result; do
+				if [ $restype == "replicaset" ] || [ $restype == "statefulset" ]; then
+					kubectl scale  $restype $resid -n $namespace --replicas=0 1> /dev/null 2> /dev/null
+					T_START=$SECONDS
+					count=1
+					while [ $count -ne 0 ]; do
+						count=$(kubectl get $restype $resid  -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
+						echo -ne "  Scaling $restype $resid from namespace $namespace with label autotest to 0,count=$count....$(($SECONDS-$T_START)) seconds"$SAMELINE
+						if [ $? -eq 0 ] && [ ! -z "$count" ]; then
+							sleep 0.5
+						else
+							count=0
+						fi
+					done
+					echo -e "  Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count....$(($SECONDS-$T_START)) seconds$GREEN OK $EGREEN"
+				fi
+				echo -ne "  Deleting $restype $resid from namespace $namespace with label autotest "$SAMELINE
+				kubectl delete $restype $resid -n $namespace 1> /dev/null 2> /dev/null
+				if [ $? -eq 0 ]; then
+					echo -e "  Deleted $restype $resid from namespace $namespace with label autotest $GREEN OK $EGREEN"
+				else
+					echo -e "  Deleted $restype $resid from namespace $namespace with label autotest $GREEN Does not exist - OK $EGREEN"
+				fi
+				#fi
+			done
+		fi
+	done
+	if [ ! -z "$deleted_resourcetypes" ]; then
+		for restype in $deleted_resources; do
+			echo -ne "  Waiting for $restype in namespace $namespace with label autotest to be deleted..."$SAMELINE
+			T_START=$SECONDS
+			result="dummy"
+			while [ ! -z "$result" ]; do
+				sleep 0.5
+				result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+				echo -ne "  Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
+				if [ -z "$result" ]; then
+					echo -e " Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
+				elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
+					echo -e " Waiting for $restype in namespace $namespace with label autotest to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
+					result=""
+				fi
+			done
+		done
+	fi
+}
+echo "Will remove all kube resources marked with label 'autotest'"
+__kube_delete_all_resources nonrtric
+__kube_delete_all_resources nonrtric-ft
+__kube_delete_all_resources onap
+
+echo "Done"
\ No newline at end of file
diff --git a/test/common/consul_cbs_functions.sh b/test/common/consul_cbs_functions.sh
new file mode 100644
index 0000000..a3c08fa
--- /dev/null
+++ b/test/common/consul_cbs_functions.sh
@@ -0,0 +1,219 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service management functions and test functions for Consul/CBS
+
+CONSUL_PATH="http://$LOCALHOST:$CONSUL_EXTERNAL_PORT"
+
+####################
+### Consul functions
+####################
+
+# Function to load config from a file into consul for the Policy Agent
+# arg: <json-config-file>
+# (Function for test scripts)
+consul_config_app() {
+
+	echo -e $BOLD"Configuring Consul"$EBOLD
+
+	if [ $# -ne 1 ]; then
+		((RES_CONF_FAIL++))
+    	__print_err "need one arg,  <json-config-file>" $@
+		exit 1
+	fi
+
+	echo " Loading config for "$POLICY_AGENT_APP_NAME" from "$1
+
+	curlString="$LOCALHOST_HTTP:${CONSUL_EXTERNAL_PORT}/v1/kv/${POLICY_AGENT_CONFIG_KEY}?dc=dc1 -X PUT -H Accept:application/json -H Content-Type:application/json -H X-Requested-With:XMLHttpRequest --data-binary @"$1
+	result=$(__do_curl "$curlString")
+	if [ $? -ne 0 ]; then
+		echo -e $RED" FAIL - json config could not be loaded to consul" $ERED
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	body="$(__do_curl $LOCALHOST_HTTP:$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_CONFIG_KEY)"
+	echo $body > "./tmp/.output"$1
+
+	if [ $? -ne 0 ]; then
+		echo -e $RED" FAIL - json config could not be loaded from consul/cbs, contents cannot be checked." $ERED
+		((RES_CONF_FAIL++))
+		return 1
+	else
+		targetJson=$(< $1)
+		targetJson="{\"config\":"$targetJson"}"
+		echo "TARGET JSON: $targetJson" >> $HTTPLOG
+		res=$(python3 ../common/compare_json.py "$targetJson" "$body")
+		if [ $res -ne 0 ]; then
+			echo -e $RED" FAIL - policy json config read from consul/cbs is not equal to the intended json config...." $ERED
+			((RES_CONF_FAIL++))
+			return 1
+		else
+			echo -e $GREEN" Config loaded ok to consul"$EGREEN
+		fi
+	fi
+
+	echo ""
+
+}
+
+# Function to perpare the consul configuration according to the current simulator configuration
+# args: SDNC|NOSDNC <output-file>
+# (Function for test scripts)
+prepare_consul_config() {
+  	echo -e $BOLD"Prepare Consul config"$EBOLD
+
+	echo " Writing consul config for "$POLICY_AGENT_APP_NAME" to file: "$2
+
+	if [ $# != 2 ];  then
+		((RES_CONF_FAIL++))
+    	__print_err "need two args,  SDNC|NOSDNC <output-file>" $@
+		exit 1
+	fi
+
+	if [ $1 == "SDNC" ]; then
+		echo -e " Config$BOLD including SDNC$EBOLD configuration"
+	elif [ $1 == "NOSDNC" ];  then
+		echo -e " Config$BOLD excluding SDNC$EBOLD configuration"
+	else
+		((RES_CONF_FAIL++))
+    	__print_err "need two args,  SDNC|NOSDNC <output-file>" $@
+		exit 1
+	fi
+
+	config_json="\n            {"
+	if [ $1 == "SDNC" ]; then
+		config_json=$config_json"\n   \"controller\": ["
+		config_json=$config_json"\n                     {"
+		config_json=$config_json"\n                       \"name\": \"$SDNC_APP_NAME\","
+		config_json=$config_json"\n                       \"baseUrl\": \"$SDNC_SERVICE_PATH\","
+		config_json=$config_json"\n                       \"userName\": \"$SDNC_USER\","
+		config_json=$config_json"\n                       \"password\": \"$SDNC_PWD\""
+		config_json=$config_json"\n                     }"
+		config_json=$config_json"\n   ],"
+	fi
+
+	config_json=$config_json"\n   \"streams_publishes\": {"
+	config_json=$config_json"\n                            \"dmaap_publisher\": {"
+	config_json=$config_json"\n                              \"type\": \"message-router\","
+	config_json=$config_json"\n                              \"dmaap_info\": {"
+	config_json=$config_json"\n                                \"topic_url\": \"$MR_SERVICE_PATH$MR_WRITE_URL\""
+	config_json=$config_json"\n                              }"
+	config_json=$config_json"\n                            }"
+	config_json=$config_json"\n   },"
+	config_json=$config_json"\n   \"streams_subscribes\": {"
+	config_json=$config_json"\n                             \"dmaap_subscriber\": {"
+	config_json=$config_json"\n                               \"type\": \"message-router\","
+	config_json=$config_json"\n                               \"dmaap_info\": {"
+	config_json=$config_json"\n                                   \"topic_url\": \"$MR_SERVICE_PATH$MR_READ_URL\""
+	config_json=$config_json"\n                                 }"
+	config_json=$config_json"\n                               }"
+	config_json=$config_json"\n   },"
+
+	config_json=$config_json"\n   \"ric\": ["
+
+	if [ $RUNMODE == "KUBE" ]; then
+		result=$(kubectl get pods -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.items[?(@.metadata.labels.autotest=="RICSIM")].metadata.name}')
+		rics=""
+		ric_cntr=0
+		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+			for im in $result; do
+				if [[ $im != *"-0" ]]; then
+					ric_subdomain=$(kubectl get pod $im -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.spec.subdomain}')
+					rics=$rics" "$im"."$ric_subdomain".nonrtric"
+					let ric_cntr=ric_cntr+1
+				fi
+			done
+		fi
+		if [ $ric_cntr -eq 0 ]; then
+			echo $YELLOW"Warning: No rics found for the configuration"$EYELLOW
+		fi
+	else
+		rics=$(docker ps | grep $RIC_SIM_PREFIX | awk '{print $NF}')
+
+		if [ $? -ne 0 ] || [ -z "$rics" ]; then
+			echo -e $RED" FAIL - the names of the running RIC Simulator cannot be retrieved." $ERED
+			((RES_CONF_FAIL++))
+			return 1
+		fi
+	fi
+	cntr=0
+	for ric in $rics; do
+		if [ $cntr -gt 0 ]; then
+			config_json=$config_json"\n          ,"
+		fi
+		config_json=$config_json"\n          {"
+		if [ $RUNMODE == "KUBE" ]; then
+			ric_id=${ric%.*.*} #extract pod id from full hosthame
+			ric_id=$(echo "$ric_id" | tr '-' '_')
+		else
+			ric_id=$ric
+		fi
+		config_json=$config_json"\n            \"name\": \"$ric_id\","
+		config_json=$config_json"\n            \"baseUrl\": \"$RIC_SIM_HTTPX://$ric:$RIC_SIM_PORT\","
+		if [ $1 == "SDNC" ]; then
+			config_json=$config_json"\n            \"controller\": \"$SDNC_APP_NAME\","
+		fi
+		config_json=$config_json"\n            \"managedElementIds\": ["
+		config_json=$config_json"\n              \"me1_$ric_id\","
+		config_json=$config_json"\n              \"me2_$ric_id\""
+		config_json=$config_json"\n            ]"
+		config_json=$config_json"\n          }"
+		let cntr=cntr+1
+	done
+
+	config_json=$config_json"\n           ]"
+	config_json=$config_json"\n}"
+
+	if [ $RUNMODE == "KUBE" ]; then
+		config_json="{\"config\":"$config_json"}"
+	fi
+
+	printf "$config_json">$2
+
+	echo ""
+}
+
+# Start Consul and CBS
+# args: -
+# (Function for test scripts)
+start_consul_cbs() {
+
+	echo -e $BOLD"Starting $CONSUL_DISPLAY_NAME and $CBS_DISPLAY_NAME"$EBOLD
+	__check_included_image 'CONSUL'
+	if [ $? -eq 1 ]; then
+		echo -e $RED"The Consul image has not been checked for this test run due to arg to the test script"$ERED
+		echo -e $RED"Consul will not be started"$ERED
+		exit
+	fi
+	export CONSUL_APP_NAME
+	export CONSUL_INTERNAL_PORT
+	export CONSUL_EXTERNAL_PORT
+	export CBS_APP_NAME
+	export CBS_INTERNAL_PORT
+	export CBS_EXTERNAL_PORT
+	export CONSUL_HOST
+
+	__start_container $CONSUL_CBS_COMPOSE_DIR NODOCKERARGS 2 $CONSUL_APP_NAME $CBS_APP_NAME
+
+	__check_service_start $CONSUL_APP_NAME "http://"$LOCALHOST_NAME":"$CONSUL_EXTERNAL_PORT$CONSUL_ALIVE_URL
+	__check_service_start $CBS_APP_NAME "http://"$LOCALHOST_NAME":"$CBS_EXTERNAL_PORT$CBS_ALIVE_URL
+
+	echo ""
+}
+
diff --git a/test/common/control_panel_api_functions.sh b/test/common/control_panel_api_functions.sh
new file mode 100644
index 0000000..9f179a1
--- /dev/null
+++ b/test/common/control_panel_api_functions.sh
@@ -0,0 +1,172 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service management function
+# and test functions for Control Panel
+
+## Access to control panel
+# Host name may be changed if app started by kube
+# Direct access from script
+CP_HTTPX="http"
+CP_HOST_NAME=$LOCALHOST_NAME
+CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
+
+###########################
+### Control Panel functions
+###########################
+
+# Set http as the protocol to use for all communication to the Control Panel
+# args: -
+# (Function for test scripts)
+use_control_panel_http() {
+	echo -e $BOLD"Control Panel, CP, protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards CP"
+	CP_HTTPX="http"
+	CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
+	echo ""
+}
+
+# Set https as the protocol to use for all communication to the Control Panel
+# args: -
+# (Function for test scripts)
+use_control_panel_https() {
+	echo -e $BOLD"Control Panel, CP, protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards CP"
+	CP_HTTPX="https"
+	CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_SECURE_PORT
+	echo ""
+}
+
+# Start the Control Panel container
+# args: -
+# (Function for test scripts)
+start_control_panel() {
+
+	echo -e $BOLD"Starting $CONTROL_PANEL_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "CP"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "CP"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $CONTROL_PANEL_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $CONTROL_PANEL_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $CONTROL_PANEL_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $CONTROL_PANEL_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		# Check if app shall be used - not managed - by the test script
+		__check_prestarted_image "CP"
+		if [ $? -eq 0 ]; then
+			echo -e " Using existing $CONTROL_PANEL_APP_NAME deployment and service"
+			echo " Setting CP replicas=1"
+			__kube_scale deployment $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+
+			echo -e " Creating $CP_APP_NAME app and expose service"
+
+			#Export all vars needed for service and deployment
+			export CONTROL_PANEL_APP_NAME
+			export KUBE_NONRTRIC_NAMESPACE
+			export CONTROL_PANEL_IMAGE
+			export CONTROL_PANEL_INTERNAL_PORT
+			export CONTROL_PANEL_INTERNAL_SECURE_PORT
+			export CONTROL_PANEL_EXTERNAL_PORT
+			export CONTROL_PANEL_EXTERNAL_SECURE_PORT
+			export CONTROL_PANEL_CONFIG_MOUNT_PATH
+			export CONTROL_PANEL_CONFIG_FILE
+			export CP_CONFIG_CONFIGMAP_NAME=$CONTROL_PANEL_APP_NAME"-config"
+
+			export POLICY_AGENT_EXTERNAL_SECURE_PORT
+			export ECS_EXTERNAL_SECURE_PORT
+			export POLICY_AGENT_DOMAIN_NAME=$POLICY_AGENT_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
+			export ECS_DOMAIN_NAME=$ECS_APP_NAME.$KUBE_NONRTRIC_NAMESPACE
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			# Create config map for config
+			datafile=$PWD/tmp/$CONTROL_PANEL_CONFIG_FILE
+			#Add config to properties file
+			envsubst < $1 > $datafile
+			output_yaml=$PWD/tmp/cp_cfc.yaml
+			__kube_create_configmap $CP_CONFIG_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest CP $datafile $output_yaml
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$CONTROL_PANEL_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/cp_svc.yaml
+			__kube_create_instance service $CONTROL_PANEL_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$CONTROL_PANEL_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/cp_app.yaml
+			__kube_create_instance app $CONTROL_PANEL_APP_NAME $input_yaml $output_yaml
+
+		fi
+
+		echo " Retrieving host and ports for service..."
+		CP_HOST_NAME=$(__kube_get_service_host $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+
+		CONTROL_PANEL_EXTERNAL_PORT=$(__kube_get_service_port $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+		CONTROL_PANEL_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $CONTROL_PANEL_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $CP_HOST_NAME $CONTROL_PANEL_EXTERNAL_PORT $CONTROL_PANEL_EXTERNAL_SECURE_PORT"
+		if [ $CP_HTTPX == "http" ]; then
+			CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_PORT
+		else
+			CP_PATH=$CP_HTTPX"://"$CP_HOST_NAME":"$CONTROL_PANEL_EXTERNAL_SECURE_PORT
+		fi
+
+		__check_service_start $CONTROL_PANEL_APP_NAME $CP_PATH$CONTROL_PANEL_ALIVE_URL
+	else
+		# Check if docker app shall be fully managed by the test script
+		__check_included_image 'CP'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Control Panel app is not included in this test script"$ERED
+			echo -e $RED"The Control Panel will not be started"$ERED
+			exit
+		fi
+
+		# Export needed vars for docker compose
+        export CONTROL_PANEL_APP_NAME
+        export CONTROL_PANEL_INTERNAL_PORT
+        export CONTROL_PANEL_EXTERNAL_PORT
+        export CONTROL_PANEL_INTERNAL_SECURE_PORT
+        export CONTROL_PANEL_EXTERNAL_SECURE_PORT
+        export DOCKER_SIM_NWNAME
+
+		__start_container $CONTROL_PANEL_COMPOSE_DIR NODOCKERARGS 1 $CONTROL_PANEL_APP_NAME
+
+		__check_service_start $CONTROL_PANEL_APP_NAME $CP_PATH$CONTROL_PANEL_ALIVE_URL
+	fi
+	echo ""
+}
+
diff --git a/test/common/controller_api_functions.sh b/test/common/controller_api_functions.sh
index 4d568d7..9e60175 100644
--- a/test/common/controller_api_functions.sh
+++ b/test/common/controller_api_functions.sh
@@ -17,7 +17,178 @@
 #  ============LICENSE_END=================================================
 #
 
-# This is a script that contains specific test functions for A1 Controller API
+# This is a script that contains container/service management functions and test functions for A1 Controller API
+
+SDNC_HTTPX="http"
+SDNC_HOST_NAME=$LOCALHOST_NAME
+SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
+SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
+#Docker/Kube internal path
+if [ $RUNMODE == "KUBE" ]; then
+	SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
+    #presume correct
+	SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
+	#test
+	#SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
+else
+	SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
+fi
+
+use_sdnc_http() {
+	echo -e $BOLD"SDNC NB protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards SDNC"
+	SDNC_HTTPX="http"
+	SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
+	SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
+	if [ $RUNMODE == "KUBE" ]; then
+		#presume correct
+		SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
+		#test
+		#SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
+	else
+		SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_PORT
+	fi
+	echo ""
+}
+
+use_sdnc_https() {
+	echo -e $BOLD"SDNC NB protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards SDNC"
+	SDNC_HTTPX="https"
+	SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
+	SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
+	if [ $RUNMODE == "KUBE" ]; then
+		#presume correct
+		SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
+		#test
+		#SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
+	else
+		SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_INTERNAL_SECURE_PORT
+	fi
+	echo ""
+}
+
+##################
+### SDNC functions
+##################
+
+# Start the SDNC A1 Controller
+# args: -
+# (Function for test scripts)
+start_sdnc() {
+
+	echo -e $BOLD"Starting $SDNC_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "SDNC"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "SDNC"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $SDNC_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $SDNC_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $SDNC_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $SDNC_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $SDNC_APP_NAME deployment and service"
+			echo " Setting SDNC replicas=1"
+			__kube_scale deployment $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+		fi
+
+				# Check if app shall be fully managed by the test script
+		if [ $retcode_i -eq 0 ]; then
+
+			echo -e " Creating $SDNC_APP_NAME app and expose service"
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			export KUBE_NONRTRIC_NAMESPACE
+			export SDNC_APP_NAME
+			export SDNC_A1_CONTROLLER_IMAGE
+			export SDNC_INTERNAL_PORT
+			export SDNC_EXTERNAL_PORT
+			export SDNC_INTERNAL_SECURE_PORT
+			export SDNC_EXTERNAL_SECURE_PORT
+			export SDNC_A1_TRUSTSTORE_PASSWORD
+			export SDNC_DB_APP_NAME
+			export SDNC_DB_IMAGE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$SDNC_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/sdnc_svc.yaml
+			__kube_create_instance service $SDNC_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$SDNC_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/sdnc_app.yaml
+			__kube_create_instance app $SDNC_APP_NAME $input_yaml $output_yaml
+
+		fi
+
+        echo " Retrieving host and ports for service..."
+		SDNC_HOST_NAME=$(__kube_get_service_host $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+		SDNC_EXTERNAL_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+		SDNC_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $SDNC_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $SDNC_HOST_NAME $SDNC_EXTERNAL_PORT $SDNC_EXTERNAL_SECURE_PORT"
+
+        if [ $SDNC_HTTPX == "http" ]; then
+			SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT
+			SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_PORT$SDNC_API_URL
+            #presume correct
+			SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_PORT
+			#test
+			#SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_PORT
+		else
+			SDNC_PATH=$SDNC_HTTPX"://"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT
+			SDNC_API_PATH=$SDNC_HTTPX"://"$SDNC_USER":"$SDNC_PWD"@"$SDNC_HOST_NAME":"$SDNC_EXTERNAL_SECURE_PORT$SDNC_API_URL
+            #presume correct
+			SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME"."$KUBE_NONRTRIC_NAMESPACE":"$SDNC_EXTERNAL_SECURE_PORT
+			#test
+			#SDNC_SERVICE_PATH=$SDNC_HTTPX"://"$SDNC_APP_NAME":"$SDNC_EXTERNAL_SECURE_PORT
+		fi
+
+		__check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+	else
+
+		__check_included_image 'SDNC'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The SDNC A1 Controller app is not included in this test script"$ERED
+			echo -e $RED"The Policy Agent will not be started"$ERED
+			exit
+		fi
+
+		export SDNC_DB_APP_NAME
+        export SDNC_APP_NAME
+        export SDNC_INTERNAL_PORT
+        export SDNC_EXTERNAL_PORT
+        export SDNC_INTERNAL_SECURE_PORT
+        export SDNC_EXTERNAL_SECURE_PORT
+        export SDNC_A1_TRUSTSTORE_PASSWORD
+        export DOCKER_SIM_NWNAME
+
+		__start_container $SDNC_COMPOSE_DIR NODOCKERARGS 1 $SDNC_APP_NAME
+
+		__check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+	fi
+    echo ""
+    return 0
+}
+
+
 
 # Generic function to query the RICs via the A1-controller API.
 # args: <operation> <url> [<body>]
@@ -44,7 +215,7 @@
 	payload="./tmp/.sdnc.payload.json"
     echo "$json" > $payload
     echo "  FILE ($payload) : $json"  >> $HTTPLOG
-    curlString="curl -skw %{http_code} -X POST $SDNC_HTTPX://$SDNC_USER:$SDNC_PWD@localhost:$SDNC_LOCAL_PORT$SDNC_API_URL$1 -H accept:application/json -H Content-Type:application/json --data-binary @$payload"
+    curlString="curl -skw %{http_code} -X POST $SDNC_API_PATH$1 -H accept:application/json -H Content-Type:application/json --data-binary @$payload"
     echo "  CMD: "$curlString >> $HTTPLOG
     res=$($curlString)
     retcode=$?
@@ -77,12 +248,16 @@
 controller_api_get_A1_policy_ids() {
 	__log_test_start $@
 
+	ric_id=$3
+	if [ $RUNMODE == "KUBE" ]; then
+		ric_id=$(get_kube_sim_host $3)
+	fi
     paramError=1
     if [ $# -gt 3 ] && [ $2 == "OSC" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/a1-p/policytypes/$4/policies"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies"
 		paramError=0
     elif [ $# -gt 2 ] && [ $2 == "STD" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/A1-P/v1/policies"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies"
         paramError=0
 	fi
 
@@ -139,9 +314,13 @@
 controller_api_get_A1_policy_type() {
 	__log_test_start $@
 
+	ric_id=$3
+	if [ $RUNMODE == "KUBE" ]; then
+		ric_id=$(get_kube_sim_host $3)
+	fi
     paramError=1
     if [ $# -gt 3 ] && [ $2 == "OSC" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/a1-p/policytypes/$4"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4"
 		paramError=0
 	fi
 
@@ -189,12 +368,16 @@
 controller_api_delete_A1_policy() {
 	__log_test_start $@
 
+	ric_id=$3
+	if [ $RUNMODE == "KUBE" ]; then
+		ric_id=$(get_kube_sim_host $3)
+	fi
     paramError=1
     if [ $# -eq 5 ] && [ $2 == "OSC" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
 		paramError=0
     elif [ $# -eq 4 ] && [ $2 == "STD" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
         paramError=0
 	fi
 
@@ -227,14 +410,18 @@
 controller_api_put_A1_policy() {
 	__log_test_start $@
 
+	ric_id=$3
+	if [ $RUNMODE == "KUBE" ]; then
+		ric_id=$(get_kube_sim_host $3)
+	fi
     paramError=1
     if [ $# -eq 6 ] && [ $2 == "OSC" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5"
         body=$(sed 's/XXX/'${5}'/g' $6)
 
 		paramError=0
     elif [ $# -eq 5 ] && [ $2 == "STD" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4"
         body=$(sed 's/XXX/'${4}'/g' $5)
         paramError=0
 	fi
@@ -269,10 +456,14 @@
 controller_api_get_A1_policy_status() {
 	__log_test_start $@
 
+	ric_id=$3
+	if [ $RUNMODE == "KUBE" ]; then
+		ric_id=$(get_kube_sim_host $3)
+	fi
     targetJson=""
     paramError=1
     if [ $# -ge 5 ] && [ $2 == "OSC" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5/status"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/a1-p/policytypes/$4/policies/$UUID$5/status"
         if [ $# -gt 5 ]; then
             targetJson="{\"instance_status\":\"$6\""
             targetJson=$targetJson",\"has_been_deleted\":\"$7\""
@@ -280,7 +471,7 @@
         fi
 		paramError=0
     elif [ $# -ge 4 ] && [ $2 == "STD" ]; then
-        url="$RIC_SIM_HTTPX://$3:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4/status"
+        url="$RIC_SIM_HTTPX://$ric_id:$RIC_SIM_PORT/A1-P/v1/policies/$UUID$4/status"
         if [ $# -gt 4 ]; then
             targetJson="{\"enforceStatus\":\"$5\""
             if [ $# -eq 6 ]; then
diff --git a/test/common/cr_api_functions.sh b/test/common/cr_api_functions.sh
index e2b9491..bf490fc 100644
--- a/test/common/cr_api_functions.sh
+++ b/test/common/cr_api_functions.sh
@@ -17,35 +17,180 @@
 #  ============LICENSE_END=================================================
 #
 
-. ../common/api_curl.sh
+# This is a script that contains container/service managemnt functions test functions for the Callback Reciver
 
-### Admin API functions for the Callback Reciver
+## Access to Callback Receiver
+# Host name may be changed if app started by kube
+# Direct access from script
+CR_HTTPX="http"
+CR_HOST_NAME=$LOCALHOST_NAME
+CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
+#Docker/Kube internal path
+if [ $RUNMODE == "KUBE" ]; then
+	CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
+else
+	CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_PORT$CR_APP_CALLBACK
+fi
+# CR_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+CR_ADAPTER_TYPE="REST"
+CR_ADAPTER=$CR_PATH
 
+################
+### CR functions
+################
 
-# Excute a curl cmd towards a Callback Reciver admin interface and check the response code.
-# args: <expected-response-code> <curl-cmd-string>
-__execute_curl_to_cr() {
-	echo ${FUNCNAME[1]} "line: "${BASH_LINENO[1]} >> $HTTPLOG
-	echo " CMD: $2" >> $HTTPLOG
-	res="$($2)"
-	echo " RESP: $res" >> $HTTPLOG
-	retcode=$?
-    if [ $retcode -ne 0 ]; then
-		((RES_CONF_FAIL++))
-		echo " RETCODE: "$retcode
-        echo -e $RED" FAIL - fatal error when executing curl."$ERED
-        return 1
-    fi
-    status=${res:${#res}-3}
-    if [ $status -eq $1 ]; then
-        echo -e $GREEN" OK"$EGREEN
-        return 0
-    fi
-    echo -e $RED" FAIL - expected http response: "$1" but got http response: "$status $ERED
-	((RES_CONF_FAIL++))
-    return 1
+# Set http as the protocol to use for all communication to the Callback Receiver
+# args: -
+# (Function for test scripts)
+use_cr_http() {
+	echo -e $BOLD"CR protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards CR"
+
+	CR_HTTPX="http"
+	CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
+
+	#Docker/Kube internal path
+	if [ $RUNMODE == "KUBE" ]; then
+		CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
+	else
+		CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_PORT$CR_APP_CALLBACK
+	fi
+	CR_ADAPTER_TYPE="REST"
+	CR_ADAPTER=$CR_PATH
+	echo ""
 }
 
+# Set https as the protocol to use for all communication to the Callback Receiver
+# args: -
+# (Function for test scripts)
+use_cr_https() {
+	echo -e $BOLD"CR protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards CR"
+
+	CR_HTTPX="https"
+	CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_SECURE_PORT
+
+	if [ $RUNMODE == "KUBE" ]; then
+		CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_SECURE_PORT$CR_APP_CALLBACK
+	else
+		CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME":"$CR_INTERNAL_SECURE_PORT$CR_APP_CALLBACK
+	fi
+
+	CR_ADAPTER_TYPE="REST"
+	CR_ADAPTER=$CR_PATH
+	echo ""
+}
+
+# Start the Callback reciver in the simulator group
+# args: -
+# (Function for test scripts)
+start_cr() {
+
+	echo -e $BOLD"Starting $CR_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "CR"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "CR"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $CR_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $CR_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $CR_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $CR_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		# Check if app shall be used - not managed - by the test script
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $CR_APP_NAME deployment and service"
+			echo " Setting CR replicas=1"
+			__kube_scale deployment $CR_APP_NAME $KUBE_SIM_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+			echo -e " Creating $CR_APP_NAME deployment and service"
+			export CR_APP_NAME
+			export KUBE_SIM_NAMESPACE
+			export CR_IMAGE
+			export CR_INTERNAL_PORT
+			export CR_INTERNAL_SECURE_PORT
+			export CR_EXTERNAL_PORT
+			export CR_EXTERNAL_SECURE_PORT
+
+			__kube_create_namespace $KUBE_SIM_NAMESPACE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$CR_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/cr_svc.yaml
+			__kube_create_instance service $CR_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$CR_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/cr_app.yaml
+			__kube_create_instance app $CR_APP_NAME $input_yaml $output_yaml
+
+		fi
+
+		echo " Retrieving host and ports for service..."
+		CR_HOST_NAME=$(__kube_get_service_host $CR_APP_NAME $KUBE_SIM_NAMESPACE)
+
+		CR_EXTERNAL_PORT=$(__kube_get_service_port $CR_APP_NAME $KUBE_SIM_NAMESPACE "http")
+		CR_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $CR_APP_NAME $KUBE_SIM_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $CR_HOST_NAME $CR_EXTERNAL_PORT $CR_EXTERNAL_SECURE_PORT"
+		if [ $CR_HTTPX == "http" ]; then
+			CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_PORT
+			CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_PORT$CR_APP_CALLBACK
+		else
+			CR_PATH=$CR_HTTPX"://"$CR_HOST_NAME":"$CR_EXTERNAL_SECURE_PORT
+			CR_SERVICE_PATH=$CR_HTTPX"://"$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$CR_EXTERNAL_SECURE_PORT$CR_APP_CALLBACK
+		fi
+		if [ $CR_ADAPTER_TYPE == "REST" ]; then
+			CR_ADAPTER=$CR_PATH
+		fi
+
+		__check_service_start $CR_APP_NAME $CR_PATH$CR_ALIVE_URL
+
+		echo -ne " Service $CR_APP_NAME - reset  "$SAMELINE
+		result=$(__do_curl $CR_APP_NAME $CR_PATH/reset)
+		if [ $? -ne 0 ]; then
+			echo -e " Service $CR_APP_NAME - reset  $RED Failed $ERED - will continue"
+		else
+			echo -e " Service $CR_APP_NAME - reset  $GREEN OK $EGREEN"
+		fi
+	else
+		# Check if docker app shall be fully managed by the test script
+		__check_included_image 'CR'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Callback Receiver app is not included in this test script"$ERED
+			echo -e $RED"The Callback Receiver will not be started"$ERED
+			exit
+		fi
+
+		export CR_APP_NAME
+		export CR_INTERNAL_PORT
+		export CR_EXTERNAL_PORT
+		export CR_INTERNAL_SECURE_PORT
+		export CR_EXTERNAL_SECURE_PORT
+		export DOCKER_SIM_NWNAME
+
+		__start_container $CR_COMPOSE_DIR NODOCKERARGS 1 $CR_APP_NAME
+
+        __check_service_start $CR_APP_NAME $CR_PATH$CR_ALIVE_URL
+	fi
+	echo ""
+}
+
+
 # Tests if a variable value in the CR is equal to a target value and and optional timeout.
 # Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
 # equal to the target or not.
@@ -55,7 +200,7 @@
 # (Function for test scripts)
 cr_equal() {
 	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "CR" "$LOCALHOST$CR_EXTERNAL_PORT/counter/" $1 "=" $2 $3
+		__var_test "CR" "$CR_PATH/counter/" $1 "=" $2 $3
 	else
 		__print_err "Wrong args to cr_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
 	fi
diff --git a/test/common/ecs_api_functions.sh b/test/common/ecs_api_functions.sh
index 6c43173..986f396 100644
--- a/test/common/ecs_api_functions.sh
+++ b/test/common/ecs_api_functions.sh
@@ -17,9 +17,275 @@
 #  ============LICENSE_END=================================================
 #
 
-# This is a script that contains specific test functions for ECS NB/SB API
+# This is a script that contains container/service management functions and test functions for ECS
 
-. ../common/api_curl.sh
+## Access to ECS
+# Host name may be changed if app started by kube
+# Direct access
+ECS_HTTPX="http"
+ECS_HOST_NAME=$LOCALHOST_NAME
+ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
+
+# ECS_ADAPTER used for switch between REST and DMAAP (only REST supported currently)
+ECS_ADAPTER_TYPE="REST"
+ECS_ADAPTER=$ECS_PATH
+
+# Make curl retries towards ECS for http response codes set in this env var, space separated list of codes
+ECS_RETRY_CODES=""
+
+###########################
+### ECS functions
+###########################
+
+# All calls to ECS will be directed to the ECS REST interface from now on
+# args: -
+# (Function for test scripts)
+use_ecs_rest_http() {
+	echo -e $BOLD"ECS protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards ECS"
+	ECS_HTTPX="http"
+	ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
+
+	ECS_ADAPTER_TYPE="REST"
+	ECS_ADAPTER=$ECS_PATH
+	echo ""
+}
+
+# All calls to ECS will be directed to the ECS REST interface from now on
+# args: -
+# (Function for test scripts)
+use_ecs_rest_https() {
+	echo -e $BOLD"ECS protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
+	ECS_HTTPX="https"
+	ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_SECURE_PORT
+
+	ECS_ADAPTER_TYPE="REST"
+	ECS_ADAPTER=$ECS_PATH
+	echo ""
+}
+
+# All calls to ECS will be directed to the ECS dmaap interface over http from now on
+# args: -
+# (Function for test scripts)
+use_ecs_dmaap_http() {
+	echo -e $BOLD"ECS dmaap protocol setting"$EBOLD
+	echo -e $RED" - NOT SUPPORTED - "$ERED
+	echo -e " Using $BOLD http $EBOLD and $BOLD DMAAP $EBOLD towards ECS"
+	ECS_ADAPTER_TYPE="MR-HTTP"
+	echo ""
+}
+
+# All calls to ECS will be directed to the ECS dmaap interface over https from now on
+# args: -
+# (Function for test scripts)
+use_ecs_dmaap_https() {
+	echo -e $BOLD"RICSIM protocol setting"$EBOLD
+	echo -e $RED" - NOT SUPPORTED - "$ERED
+	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
+	ECS_ADAPTER_TYPE="MR-HTTPS"
+	echo ""
+}
+
+# Start the ECS
+# args: -
+# (Function for test scripts)
+start_ecs() {
+
+	echo -e $BOLD"Starting $ECS_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "ECS"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "ECS"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $ECS_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $ECS_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $ECS_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $ECS_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $ECS_APP_NAME deployment and service"
+			echo " Setting ECS replicas=1"
+			__kube_scale deployment $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+		fi
+
+		# Check if app shall be fully managed by the test script
+		if [ $retcode_i -eq 0 ]; then
+			echo -e " Creating $ECS_APP_NAME app and expose service"
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			export ECS_APP_NAME
+			export KUBE_NONRTRIC_NAMESPACE
+			export ECS_IMAGE
+			export ECS_INTERNAL_PORT
+			export ECS_INTERNAL_SECURE_PORT
+			export ECS_EXTERNAL_PORT
+			export ECS_EXTERNAL_SECURE_PORT
+			export ECS_CONFIG_MOUNT_PATH
+			export ECS_CONFIG_CONFIGMAP_NAME=$ECS_APP_NAME"-config"
+			export ECS_DATA_CONFIGMAP_NAME=$ECS_APP_NAME"-data"
+			export ECS_CONTAINER_MNT_DIR
+
+			# Create config map for config
+			datafile=$PWD/tmp/$ECS_CONFIG_FILE
+			cp $1 $datafile
+			output_yaml=$PWD/tmp/ecs_cfc.yaml
+			__kube_create_configmap $ECS_CONFIG_CONFIGMAP_NAME $KUBE_NONRTRIC_NAMESPACE autotest ECS $datafile $output_yaml
+
+			# Create pvc
+			input_yaml=$SIM_GROUP"/"$ECS_COMPOSE_DIR"/"pvc.yaml
+			output_yaml=$PWD/tmp/ecs_pvc.yaml
+			__kube_create_instance pvc $ECS_APP_NAME $input_yaml $output_yaml
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$ECS_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/ecs_svc.yaml
+			__kube_create_instance service $ECS_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$ECS_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/ecs_app.yaml
+			__kube_create_instance app $ECS_APP_NAME $input_yaml $output_yaml
+		fi
+
+		echo " Retrieving host and ports for service..."
+		ECS_HOST_NAME=$(__kube_get_service_host $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+		ECS_EXTERNAL_PORT=$(__kube_get_service_port $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+		ECS_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $ECS_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $ECS_HOST_NAME $ECS_EXTERNAL_PORT $ECS_EXTERNAL_SECURE_PORT"
+
+		if [ $ECS_HTTPX == "http" ]; then
+			ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_PORT
+		else
+			ECS_PATH=$ECS_HTTPX"://"$ECS_HOST_NAME":"$ECS_EXTERNAL_SECURE_PORT
+		fi
+
+		__check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+
+		if [ $ECS_ADAPTER_TYPE == "REST" ]; then
+			ECS_ADAPTER=$ECS_PATH
+		fi
+	else
+		__check_included_image 'ECS'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The ECS app is not included in this test script"$ERED
+			echo -e $RED"ECS will not be started"$ERED
+			exit 1
+		fi
+
+		curdir=$PWD
+		cd $SIM_GROUP
+		cd ecs
+		cd $ECS_HOST_MNT_DIR
+		cd ..
+		if [ -d db ]; then
+			if [ "$(ls -A $DIR)" ]; then
+				echo -e $BOLD" Cleaning files in mounted dir: $PWD/db"$EBOLD
+				rm -rf db/*  &> /dev/null
+				if [ $? -ne 0 ]; then
+					echo -e $RED" Cannot remove database files in: $PWD"$ERED
+					exit 1
+				fi
+			fi
+		else
+			echo " No files in mounted dir or dir does not exists"
+		fi
+		cd $curdir
+
+		export ECS_APP_NAME
+		export ECS_APP_NAME_ALIAS
+		export ECS_HOST_MNT_DIR
+		export ECS_CONTAINER_MNT_DIR
+		export ECS_INTERNAL_PORT
+		export ECS_EXTERNAL_PORT
+		export ECS_INTERNAL_SECURE_PORT
+		export ECS_EXTERNAL_SECURE_PORT
+		export DOCKER_SIM_NWNAME
+
+		__start_container $ECS_COMPOSE_DIR NODOCKERARGS 1 $ECS_APP_NAME
+
+		__check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+	fi
+	echo ""
+	return 0
+}
+
+# Restart ECS
+# args: -
+# (Function for test scripts)
+restart_ecs() {
+	echo -e $BOLD"Re-starting ECS"$EBOLD
+	docker restart $ECS_APP_NAME &> ./tmp/.dockererr
+	if [ $? -ne 0 ]; then
+		__print_err "Could not restart $ECS_APP_NAME" $@
+		cat ./tmp/.dockererr
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+
+	__check_service_start $ECS_APP_NAME $ECS_PATH$ECS_ALIVE_URL
+	echo ""
+	return 0
+}
+
+# Turn on debug level tracing in ECS
+# args: -
+# (Function for test scripts)
+set_ecs_debug() {
+	echo -e $BOLD"Setting ecs debug logging"$EBOLD
+	curlString="$ECS_PATH$ECS_ACTUATOR -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
+	result=$(__do_curl "$curlString")
+	if [ $? -ne 0 ]; then
+		__print_err "Could not set debug mode" $@
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	echo ""
+	return 0
+}
+
+# Turn on trace level tracing in ECS
+# args: -
+# (Function for test scripts)
+set_ecs_trace() {
+	echo -e $BOLD"Setting ecs trace logging"$EBOLD
+	curlString="$ECS_PATH/actuator/loggers/org.oransc.enrichment -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
+	result=$(__do_curl "$curlString")
+	if [ $? -ne 0 ]; then
+		__print_err "Could not set trace mode" $@
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	echo ""
+	return 0
+}
+
+# Perform curl retries when making direct call to ECS for the specified http response codes
+# Speace separated list of http response codes
+# args: [<response-code>]*
+use_agent_retries() {
+	echo -e $BOLD"Do curl retries to the ECS REST inteface for these response codes:$@"$EBOLD
+	ECS_AGENT_RETRY_CODES=$@
+	echo ""
+	return 0
+}
+
 
 # Tests if a variable value in the ECS is equal to a target value and and optional timeout.
 # Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
@@ -30,7 +296,7 @@
 # (Function for test scripts)
 ecs_equal() {
 	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test ECS "$LOCALHOST$ECS_EXTERNAL_PORT/" $1 "=" $2 $3
+		__var_test ECS "$ECS_PATH/" $1 "=" $2 $3
 	else
 		__print_err "Wrong args to ecs_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
 	fi
@@ -893,4 +1159,56 @@
 	fi
 	__log_test_pass
 	return 0
+}
+
+
+##########################################
+####          Reset jobs              ####
+##########################################
+# Function prefix: ecs_api_admin
+
+# Admin to remove all jobs
+# args:
+# (Function for test scripts)
+
+ecs_api_admin_reset() {
+	__log_test_start $@
+
+	if [  -z "$FLAT_A1_EI" ]; then
+		query="/A1-EI/v1/eitypes/$2/eijobs"
+	else
+		query="/A1-EI/v1/eijobs"
+	fi
+    res="$(__do_curl_to_api ECS GET $query)"
+    status=${res:${#res}-3}
+
+	if [ $status -ne 200 ]; then
+		__log_test_fail_status_code $1 $status
+		return 1
+	fi
+
+	#Remove brackets and response code
+	body=${res:1:${#res}-4}
+	list=$(echo ${body//,/ })
+	list=$(echo ${list//[/})
+	list=$(echo ${list//]/})
+	list=$(echo ${list//\"/})
+	list=$list" "
+	for job in $list; do
+		if [  -z "$FLAT_A1_EI" ]; then
+			echo "Not supported for non-flat EI api"
+		else
+			query="/A1-EI/v1/eijobs/$job"
+			res="$(__do_curl_to_api ECS DELETE $query)"
+			status=${res:${#res}-3}
+			if [ $status -ne 204 ]; then
+				__log_test_fail_status_code $1 $status
+				return 1
+			fi
+			echo " Deleted job: "$job
+		fi
+	done
+
+	__log_test_pass
+	return 0
 }
\ No newline at end of file
diff --git a/test/common/http_proxy_api_functions.sh b/test/common/http_proxy_api_functions.sh
new file mode 100644
index 0000000..68df929
--- /dev/null
+++ b/test/common/http_proxy_api_functions.sh
@@ -0,0 +1,129 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service managemnt functions for Http Proxy
+
+## Access to Http Proxy Receiver
+# Host name may be changed if app started by kube
+# Direct access from script
+HTTP_PROXY_HTTPX="http"
+HTTP_PROXY_HOST_NAME=$LOCALHOST_NAME
+HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_EXTERNAL_PORT
+
+#########################
+### Http Proxy functions
+#########################
+
+# Start the Http Proxy in the simulator group
+# args: -
+# (Function for test scripts)
+start_http_proxy() {
+
+	echo -e $BOLD"Starting $HTTP_PROXY_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "HTTPPROXY"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "HTTPPROXY"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $HTTP_PROXY_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $HTTP_PROXY_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $HTTP_PROXY_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $HTTP_PROXY_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		# Check if app shall be used - not managed - by the test script
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $HTTP_PROXY_APP_NAME deployment and service"
+			echo " Setting HTTPPROXY replicas=1"
+			__kube_scale deployment $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+			echo -e " Creating $HTTP_PROXY_APP_NAME deployment and service"
+			export HTTP_PROXY_APP_NAME
+			export HTTP_PROXY_WEB_EXTERNAL_PORT
+			export HTTP_PROXY_WEB_INTERNAL_PORT
+			export HTTP_PROXY_EXTERNAL_PORT
+			export HTTP_PROXY_INTERNAL_PORT
+			export KUBE_SIM_NAMESPACE
+			export HTTP_PROXY_IMAGE
+
+			__kube_create_namespace $KUBE_SIM_NAMESPACE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$HTTP_PROXY_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/proxy_svc.yaml
+			__kube_create_instance service $HTTP_PROXY_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$HTTP_PROXY_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/proxy_app.yaml
+			__kube_create_instance app $HTTP_PROXY_APP_NAME $input_yaml $output_yaml
+
+		fi
+
+		echo " Retrieving host and ports for service..."
+		HTTP_PROXY_HOST_NAME=$(__kube_get_service_host $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE)
+		HTTP_PROXY_WEB_EXTERNAL_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "web")
+		HTTP_PROXY_EXTERNAL_PORT=$(__kube_get_service_port $HTTP_PROXY_APP_NAME $KUBE_SIM_NAMESPACE "http")
+
+		HTTP_PROXY_PATH=$HTTP_PROXY_HTTPX"://"$HTTP_PROXY_HOST_NAME":"$HTTP_PROXY_WEB_EXTERNAL_PORT
+		HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_EXTERNAL_PORT
+		HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME"."$KUBE_SIM_NAMESPACE
+
+		echo " Host IP, http port: $HTTP_PROXY_HOST_NAME $HTTP_PROXY_WEB_EXTERNAL_PORT"
+
+		__check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_PATH$HTTP_PROXY_ALIVE_URL
+
+	else
+		# Check if docker app shall be fully managed by the test script
+		__check_included_image 'HTTPPROXY'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Http Proxy app is not included in this test script"$ERED
+			echo -e $RED"The Http Proxy will not be started"$ERED
+			exit
+		fi
+
+		export HTTP_PROXY_APP_NAME
+		export HTTP_PROXY_WEB_EXTERNAL_PORT
+		export HTTP_PROXY_WEB_INTERNAL_PORT
+		export DOCKER_SIM_NWNAME
+
+		__start_container $HTTP_PROXY_COMPOSE_DIR NODOCKERARGS 1 $HTTP_PROXY_APP_NAME
+
+        __check_service_start $HTTP_PROXY_APP_NAME $HTTP_PROXY_PATH$HTTP_PROXY_ALIVE_URL
+
+		HTTP_PROXY_CONFIG_PORT=$HTTP_PROXY_INTERNAL_PORT
+		HTTP_PROXY_CONFIG_HOST_NAME=$HTTP_PROXY_APP_NAME
+
+	fi
+	echo ""
+}
+
diff --git a/test/common/mr_api_functions.sh b/test/common/mr_api_functions.sh
new file mode 100644
index 0000000..54809b7
--- /dev/null
+++ b/test/common/mr_api_functions.sh
@@ -0,0 +1,511 @@
+#!/bin/bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+# This is a script that contains container/service management function
+# and test functions for Message Router - mr stub
+
+## Access to Message Router
+# Host name may be changed if app started by kube
+# Direct access from script
+MR_HTTPX="http"
+MR_STUB_HOST_NAME=$LOCALHOST_NAME
+MR_DMAAP_HOST_NAME=$LOCALHOST_NAME
+MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
+MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_PORT
+#Docker/Kube internal path
+if [ $RUNMODE == "KUBE" ]; then
+	MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+	__check_included_image "DMAAPMR"
+	if [ $? -eq 0 ]; then
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+	fi
+	__check_prestarted_image "DMAAPMR"
+	if [ $? -eq 0 ]; then
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+	fi
+else
+	MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_PORT
+	__check_included_image "DMAAPMR"
+	if [ $? -eq 0 ]; then
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_PORT
+	fi
+fi
+MR_ADAPTER_HTTP="http://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
+MR_ADAPTER_HTTPS="https://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_SECURE_PORT
+
+
+#####################
+### MR stub functions
+#####################
+
+use_mr_http() {
+	echo -e $BOLD"MR protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards MR"
+	MR_HTTPX="http"
+	MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_PORT
+	MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_PORT
+	#Docker/Kube internal path
+	if [ $RUNMODE == "KUBE" ]; then
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+		__check_included_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+		fi
+		__check_prestarted_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_PORT
+		fi
+	else
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_PORT
+		__check_included_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_PORT
+		fi
+	fi
+	echo ""
+}
+
+use_mr_https() {
+	echo -e $BOLD"MR protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards MR"
+	MR_HTTPX="https"
+	MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_STUB_LOCALHOST_SECURE_PORT
+	MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_DMAAP_LOCALHOST_SECURE_PORT
+	#Docker/Kube internal path
+	if [ $RUNMODE == "KUBE" ]; then
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+		__check_included_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+		fi
+		__check_prestarted_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXTERNAL_SECURE_PORT
+		fi
+	else
+		MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$MR_INTERNAL_SECURE_PORT
+		__check_included_image "DMAAPMR"
+		if [ $? -eq 0 ]; then
+			MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$MR_INTERNAL_SECURE_PORT
+		fi
+	fi
+	echo ""
+}
+
+# Create a dmaap mr topic
+# args: <topic name> <topic-description>
+__create_topic() {
+	echo -ne " Creating read topic: $1"$SAMELINE
+
+	json_topic="{\"topicName\":\"$1\",\"partitionCount\":\"2\", \"replicationCount\":\"3\", \"transactionEnabled\":\"false\",\"topicDescription\":\"$2\"}"
+	echo $json_topic > ./tmp/$1.json
+
+	curlString="$MR_DMAAP_PATH/topics/create -X POST  -H Content-Type:application/json -d@./tmp/$1.json"
+	topic_retries=5
+	while [ $topic_retries -gt 0 ]; do
+		let topic_retries=topic_retries-1
+		result=$(__do_curl "$curlString")
+		if [ $? -eq 0 ]; then
+			topic_retries=0
+			echo -e " Creating read topic: $1 $GREEN OK $EGREEN"
+		fi
+		if [ $? -ne 0 ]; then
+			if [ $topic_retries -eq 0 ]; then
+				echo -e " Creating read topic: $1 $RED Failed $ERED"
+				((RES_CONF_FAIL++))
+				return 1
+			else
+				sleep 1
+			fi
+		fi
+	done
+	return 0
+}
+
+# Do a pipeclean of a topic - to overcome dmaap mr bug...
+# args: <topic> <post-url> <read-url>
+__dmaap_pipeclean() {
+	pipeclean_retries=50
+	echo -ne " Doing dmaap-mr pipe cleaning on topic: $1"$SAMELINE
+	while [ $pipeclean_retries -gt 0 ]; do
+		echo "{\"pipeclean-$1\":$pipeclean_retries}" > ./tmp/pipeclean.json
+		let pipeclean_retries=pipeclean_retries-1
+		curlString="$MR_DMAAP_PATH$2 -X POST  -H Content-Type:application/json -d@./tmp/pipeclean.json"
+		result=$(__do_curl "$curlString")
+		if [ $? -ne 0 ]; then
+			sleep 1
+		else
+			curlString="$MR_DMAAP_PATH$3"
+			result=$(__do_curl "$curlString")
+			if [ $? -eq 0 ]; then
+				if [ $result != "[]" ]; then
+					echo -e " Doing dmaap-mr pipe cleaning on topic: $1 $GREEN OK $EGREEN"
+					return 0
+
+				else
+					sleep 1
+				fi
+			fi
+		fi
+	done
+	echo -e "Doing dmaap-mr pipe cleaning on topic: $1 $RED Failed $ERED"
+	return 1
+}
+
+# Start the Message Router stub interface in the simulator group
+# args: -
+# (Function for test scripts)
+start_mr() {
+
+	echo -e $BOLD"Starting $MR_DMAAP_DISPLAY_NAME and/or $MR_STUB_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+        # Table of possible combinations of included mr and included/prestarted dmaap-mr
+		# mr can never be prestarted
+		# mr can be used stand alone
+		# if dmaapmr is included/prestarted, then mr is needed as well as frontend
+
+        # Inverted logic - 0 mean true, 1 means false
+		# mr prestarted      0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
+		# mr included        0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
+		# dmaap prestarted   0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
+		# dmaap included     0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
+		# ==================================================
+		# OK                 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1
+
+		__check_prestarted_image 'MR'
+		retcode_prestarted_mr=$?
+		__check_included_image 'MR'
+		retcode_included_mr=$?
+
+		__check_prestarted_image 'DMAAPMR'
+		retcode_prestarted_dmaapmr=$?
+		__check_included_image 'DMAAPMR'
+		retcode_included_dmaapmr=$?
+
+		paramerror=1
+
+		if [ $retcode_prestarted_mr -ne 0 ] && [ $retcode_included_mr -eq 0 ]; then
+			if [ $retcode_prestarted_dmaapmr -ne 0 ] && [ $retcode_included_dmaapmr -eq 0 ]; then
+				paramerror=0
+			fi
+		fi
+
+		if [ $retcode_prestarted_mr -ne 0 ] && [ $retcode_included_mr -eq 0 ]; then
+			if [ $retcode_prestarted_dmaapmr -eq 0 ] && [ $retcode_included_dmaapmr -ne 0 ]; then
+				paramerror=0
+			fi
+		fi
+
+		if [ $retcode_prestarted_mr -ne 0 ] && [ $retcode_included_mr -eq 0 ]; then
+			if [ $retcode_prestarted_dmaapmr -ne 0 ] && [ $retcode_included_dmaapmr -ne 0 ]; then
+				paramerror=0
+			fi
+		fi
+
+		if [ $paramerror -ne 0 ]; then
+				echo -e $RED"The Message Router apps 'MR' and/or 'DMAAPMR' are not included in this test script"$ERED
+				echo -e $RED"The Message Router will not be started"$ERED
+				echo -e $RED"Both MR and DAAMPMR  - or - only MR - need to be included and/or prestarted"
+				exit
+		fi
+
+		if [ $retcode_prestarted_dmaapmr -eq 0 ]; then
+			echo -e " Using existing $MR_DMAAP_APP_NAME deployment and service"
+			__kube_scale deployment $MR_DMAAP_APP_NAME $KUBE_ONAP_NAMESPACE 1
+		fi
+
+		if [ $retcode_included_dmaapmr -eq 0 ]; then
+			#export MR_DMAAP_APP_NAME
+			export MR_DMAAP_KUBE_APP_NAME=message-router
+			MR_DMAAP_APP_NAME=$MR_DMAAP_KUBE_APP_NAME
+			export KUBE_ONAP_NAMESPACE
+			export MR_EXTERNAL_PORT
+			export MR_INTERNAL_PORT
+			export MR_EXTERNAL_SECURE_PORT
+			export MR_INTERNAL_SECURE_PORT
+			export ONAP_DMAAPMR_IMAGE
+
+			export MR_KAFKA_BWDS_NAME=akfak-bwds
+			export KUBE_ONAP_NAMESPACE
+
+			export MR_ZOOKEEPER_APP_NAME
+			export ONAP_ZOOKEEPER_IMAGE
+
+			#Check if onap namespace exists, if not create it
+			__kube_create_namespace $KUBE_ONAP_NAMESPACE
+
+			# TODO - Fix domain name substitution in the prop file
+			# Create config maps - dmaapmr app
+			configfile=$PWD/tmp/MsgRtrApi.properties
+			cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/KUBE-MsgRtrApi.properties $configfile
+			output_yaml=$PWD/tmp/dmaapmr_msgrtrapi_cfc.yaml
+			__kube_create_configmap dmaapmr-msgrtrapi.properties $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
+
+			configfile=$PWD/tmp/logback.xml
+			cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/logback.xml $configfile
+			output_yaml=$PWD/tmp/dmaapmr_logback_cfc.yaml
+			__kube_create_configmap dmaapmr-logback.xml $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
+
+			configfile=$PWD/tmp/cadi.properties
+			cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/mr/cadi.properties $configfile
+			output_yaml=$PWD/tmp/dmaapmr_cadi_cfc.yaml
+			__kube_create_configmap dmaapmr-cadi.properties $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
+
+			# Create config maps - kafka app
+			configfile=$PWD/tmp/zk_client_jaas.conf
+			cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/kafka/zk_client_jaas.conf $configfile
+			output_yaml=$PWD/tmp/dmaapmr_zk_client_cfc.yaml
+			__kube_create_configmap dmaapmr-zk-client-jaas.conf $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
+
+			# Create config maps - zookeeper app
+			configfile=$PWD/tmp/zk_server_jaas.conf
+			cp $SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"mnt/zk/zk_server_jaas.conf $configfile
+			output_yaml=$PWD/tmp/dmaapmr_zk_server_cfc.yaml
+			__kube_create_configmap dmaapmr-zk-server-jaas.conf $KUBE_ONAP_NAMESPACE autotest DMAAPMR $configfile $output_yaml
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/dmaapmr_svc.yaml
+			__kube_create_instance service $MR_DMAAP_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$MR_DMAAP_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/dmaapmr_app.yaml
+			__kube_create_instance app $MR_DMAAP_APP_NAME $input_yaml $output_yaml
+
+
+			echo " Retrieving host and ports for service..."
+			MR_DMAAP_HOST_NAME=$(__kube_get_service_host $MR_DMAAP_APP_NAME $KUBE_ONAP_NAMESPACE)
+
+			MR_EXT_PORT=$(__kube_get_service_port $MR_DMAAP_APP_NAME $KUBE_ONAP_NAMESPACE "http")
+			MR_EXT_SECURE_PORT=$(__kube_get_service_port $MR_DMAAP_APP_NAME $KUBE_ONAP_NAMESPACE "https")
+
+			echo " Host IP, http port, https port: $MR_DMAAP_APP_NAME $MR_EXT_PORT $MR_EXT_SECURE_PORT"
+			MR_SERVICE_PATH=""
+			if [ $MR_HTTPX == "http" ]; then
+				MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_EXT_PORT
+				MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXT_PORT
+			else
+				MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_HOST_NAME":"$MR_EXT_SECURE_PORT
+				MR_SERVICE_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXT_SECURE_PORT
+			fi
+
+				__check_service_start $MR_DMAAP_APP_NAME $MR_DMAAP_PATH$MR_DMAAP_ALIVE_URL
+
+		fi
+
+		if [ $retcode_included_mr -eq 0 ]; then
+			#exporting needed var for deployment
+			export MR_STUB_APP_NAME
+			export KUBE_ONAP_NAMESPACE
+			export MRSTUB_IMAGE
+			export MR_INTERNAL_PORT
+			export MR_INTERNAL_SECURE_PORT
+			export MR_EXTERNAL_PORT
+			export MR_EXTERNAL_SECURE_PORT
+
+			if [ $retcode_prestarted_dmaapmr -eq 0 ] || [ $retcode_included_dmaapmr -eq 0 ]; then  # Set topics for dmaap
+				export TOPIC_READ="http://$MR_DMAAP_APP_NAME.$KUBE_ONAP_NAMESPACE:$MR_INTERNAL_PORT/events/$MR_READ_TOPIC"
+				export TOPIC_WRITE="http://$MR_DMAAP_APP_NAME.$KUBE_ONAP_NAMESPACE:$MR_INTERNAL_PORT/events/$MR_WRITE_TOPIC/users/mr-stub?timeout=15000&limit=100"
+			else
+				export TOPIC_READ=""
+				export TOPIC_WRITE=""
+			fi
+
+			#Check if onap namespace exists, if not create it
+			__kube_create_namespace $KUBE_ONAP_NAMESPACE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$MR_STUB_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/mr_svc.yaml
+			__kube_create_instance service $MR_STUB_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$MR_STUB_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/mr_app.yaml
+			__kube_create_instance app $MR_STUB_APP_NAME $input_yaml $output_yaml
+
+
+		fi
+
+
+		echo " Retrieving host and ports for service..."
+		MR_STUB_HOST_NAME=$(__kube_get_service_host $MR_STUB_APP_NAME $KUBE_ONAP_NAMESPACE)
+
+		MR_EXT_PORT=$(__kube_get_service_port $MR_STUB_APP_NAME $KUBE_ONAP_NAMESPACE "http")
+		MR_EXT_SECURE_PORT=$(__kube_get_service_port $MR_STUB_APP_NAME $KUBE_ONAP_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $MR_STUB_APP_NAME $MR_EXT_PORT $MR_EXT_SECURE_PORT"
+		if [ $MR_HTTPX == "http" ]; then
+			MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_EXT_PORT
+			if [ -z "$MR_SERVICE_PATH" ]; then
+				MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXT_PORT
+			fi
+		else
+			MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_HOST_NAME":"$MR_EXT_SECURE_PORT
+			if [ -z "$MR_SERVICE_PATH" ]; then
+				MR_SERVICE_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_EXT_SECURE_PORT
+			fi
+		fi
+		MR_ADAPTER_HTTP="http://"$MR_STUB_HOST_NAME":"$MR_EXT_PORT
+		MR_ADAPTER_HTTPS="https://"$MR_STUB_HOST_NAME":"$MR_EXT_SECURE_PORT
+
+		__check_service_start $MR_STUB_APP_NAME $MR_STUB_PATH$MR_STUB_ALIVE_URL
+
+		echo -ne " Service $MR_STUB_APP_NAME - reset  "$SAMELINE
+		result=$(__do_curl $MR_STUB_APP_NAME $MR_STUB_PATH/reset)
+		if [ $? -ne 0 ]; then
+			echo -e " Service $MR_STUB_APP_NAME - reset  $RED Failed $ERED - will continue"
+		else
+			echo -e " Service $MR_STUB_APP_NAME - reset  $GREEN OK $EGREEN"
+		fi
+
+
+	else
+
+		__check_included_image 'DMAAPMR'
+		retcode_dmaapmr=$?
+		__check_included_image 'MR'
+		retcode_mr=$?
+
+		if [ $retcode_dmaapmr -ne 0 ] && [ $retcode_mr -ne 0 ]; then
+				echo -e $RED"The Message Router apps 'MR' and/or 'DMAAPMR' are not included in this test script"$ERED
+				echo -e $RED"The Message Router will not be started"$ERED
+				echo -e $RED"Both MR and DAAMPMR  - or - only MR - need to be included"
+				exit
+		fi
+
+		if [ $retcode_dmaapmr -eq 0 ] && [ $retcode_mr -ne 0 ]; then
+				echo -e $RED"The Message Router apps 'MR' and/or 'DMAAPMR' are not included in this test script"$ERED
+				echo -e $RED"The Message Router will not be started"$ERED
+				echo -e $RED"Both MR and DAAMPMR  - or - only MR - need to be included"
+				exit
+		fi
+
+		export TOPIC_READ=""
+        export TOPIC_WRITE=""
+		if [ $retcode_dmaapmr -eq 0 ]; then  # Set topics for dmaap
+			export TOPIC_READ="http://$MR_DMAAP_APP_NAME:$MR_INTERNAL_PORT/events/$MR_READ_TOPIC"
+			export TOPIC_WRITE="http://$MR_DMAAP_APP_NAME:$MR_INTERNAL_PORT/events/$MR_WRITE_TOPIC/users/mr-stub?timeout=15000&limit=100"
+		fi
+
+		export DOCKER_SIM_NWNAME
+		export ONAP_ZOOKEEPER_IMAGE
+		export MR_ZOOKEEPER_APP_NAME
+		export ONAP_KAFKA_IMAGE
+		export MR_KAFKA_APP_NAME
+		export ONAP_DMAAPMR_IMAGE
+		export MR_DMAAP_APP_NAME
+		export MR_DMAAP_LOCALHOST_PORT
+		export MR_INTERNAL_PORT
+		export MR_DMAAP_LOCALHOST_SECURE_PORT
+		export MR_INTERNAL_SECURE_PORT
+
+		if [ $retcode_dmaapmr -eq 0 ]; then
+			__start_container $MR_DMAAP_COMPOSE_DIR NODOCKERARGS 1 $MR_DMAAP_APP_NAME
+
+			__check_service_start $MR_DMAAP_APP_NAME $MR_DMAAP_PATH$MR_DMAAP_ALIVE_URL
+
+
+			__create_topic $MR_READ_TOPIC "Topic for reading policy messages"
+
+			__create_topic $MR_WRITE_TOPIC "Topic for writing policy messages"
+
+			__dmaap_pipeclean $MR_READ_TOPIC "/events/A1-POLICY-AGENT-READ" "/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=1000&limit=100"
+
+			__dmaap_pipeclean $MR_WRITE_TOPIC "/events/A1-POLICY-AGENT-WRITE" "/events/A1-POLICY-AGENT-WRITE/users/mr-stub?timeout=1000&limit=100"
+
+			echo " Current topics:"
+			curlString="$MR_DMAAP_PATH/topics"
+			result=$(__do_curl "$curlString")
+			echo $result | indent2
+		fi
+
+		export DOCKER_SIM_NWNAME
+		export MR_STUB_APP_NAME
+		export MRSTUB_IMAGE
+		export MR_INTERNAL_PORT
+		export MR_INTERNAL_SECURE_PORT
+		export MR_STUB_LOCALHOST_PORT
+		export MR_STUB_LOCALHOST_SECURE_PORT
+		export MR_STUB_CERT_MOUNT_DIR
+
+		if [ $retcode_mr -eq 0 ]; then
+			__start_container $MR_STUB_COMPOSE_DIR NODOCKERARGS 1 $MR_STUB_APP_NAME
+
+			__check_service_start $MR_STUB_APP_NAME $MR_STUB_PATH$MR_STUB_ALIVE_URL
+		fi
+
+	fi
+	echo ""
+	return 0
+}
+
+### Generic test cases for varaible checking
+
+# Tests if a variable value in the MR stub is equal to a target value and and optional timeout.
+# Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
+# equal to the target or not.
+# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
+# before setting pass or fail depending on if the variable value becomes equal to the target
+# value or not.
+# (Function for test scripts)
+mr_equal() {
+	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
+		__var_test "MR" $MR_STUB_PATH/counter/ $1 "=" $2 $3
+	else
+		((RES_CONF_FAIL++))
+		__print_err "Wrong args to mr_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
+	fi
+}
+
+# Tests if a variable value in the MR stub is greater than a target value and and optional timeout.
+# Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
+# greater than the target or not.
+# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
+# before setting pass or fail depending on if the variable value becomes greater than the target
+# value or not.
+# (Function for test scripts)
+mr_greater() {
+	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
+		__var_test "MR" $MR_STUB_PATH/counter/ $1 ">" $2 $3
+	else
+		((RES_CONF_FAIL++))
+		__print_err "Wrong args to mr_greater, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
+	fi
+}
+
+# Read a variable value from MR sim and send to stdout. Arg: <variable-name>
+mr_read() {
+	echo "$(__do_curl $MR_STUB_PATH/counter/$1)"
+}
+
+# Print a variable value from the MR stub.
+# arg: <variable-name>
+# (Function for test scripts)
+mr_print() {
+	if [ $# != 1 ]; then
+		((RES_CONF_FAIL++))
+    	__print_err "need one arg, <mr-param>" $@
+		exit 1
+	fi
+	echo -e $BOLD"INFO(${BASH_LINENO[0]}): mrstub, $1 = $(__do_curl $MR_STUB_PATH/counter/$1)"$EBOLD
+}
\ No newline at end of file
diff --git a/test/common/prodstub_api_functions.sh b/test/common/prodstub_api_functions.sh
index a27f3b4..4dfe06b 100644
--- a/test/common/prodstub_api_functions.sh
+++ b/test/common/prodstub_api_functions.sh
@@ -17,9 +17,169 @@
 #  ============LICENSE_END=================================================
 #
 
+# This is a script that contains container/service management functions and test functions for Producer stub
+
+## Access to Prod stub sim
+# Direct access
+PROD_STUB_HTTPX="http"
+PROD_STUB_HOST_NAME=$LOCALHOST_NAME
+PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
+
+#Docker/Kube internal path
+if [ $RUNMODE == "KUBE" ]; then
+	PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
+else
+	PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_PORT
+fi
+
+# Set http as the protocol to use for all communication to the Producer stub
+# args: -
+# (Function for test scripts)
+use_prod_stub_http() {
+	echo -e $BOLD"Producer stub protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards Producer stub"
+
+	PROD_STUB_HTTPX="http"
+    PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
+
+	if [ $RUNMODE == "KUBE" ]; then
+		PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
+	else
+		PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_PORT
+	fi
+
+	echo ""
+}
+
+# Set https as the protocol to use for all communication to the Producer stub
+# args: -
+# (Function for test scripts)
+use_prod_stub_https() {
+	echo -e $BOLD"Producer stub protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards Producer stub"
+
+	PROD_STUB_HTTPX="https"
+    PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_SECURE_PORT
+
+	if [ $RUNMODE == "KUBE" ]; then
+		PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_SECURE_PORT
+	else
+		PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME":"$PROD_STUB_INTERNAL_SECURE_PORT
+	fi
+	echo ""
+}
 
 ### Admin API functions producer stub
 
+###########################
+### Producer stub functions
+###########################
+
+# Start the Producer stub in the simulator group
+# args: -
+# (Function for test scripts)
+start_prod_stub() {
+
+	echo -e $BOLD"Starting $PROD_STUB_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "PRODSTUB"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "PRODSTUB"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $ECS_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $ECS_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $ECS_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $ECS_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $PROD_STUB_APP_NAME deployment and service"
+			echo " Setting RC replicas=1"
+			__kube_scale deployment $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+			echo -e " Creating $PROD_STUB_APP_NAME deployment and service"
+			export PROD_STUB_APP_NAME
+			export KUBE_SIM_NAMESPACE
+			export PROD_STUB_IMAGE
+			export PROD_STUB_INTERNAL_PORT
+			export PROD_STUB_INTERNAL_SECURE_PORT
+			export PROD_STUB_EXTERNAL_PORT
+			export PROD_STUB_EXTERNAL_SECURE_PORT
+
+            __kube_create_namespace $KUBE_SIM_NAMESPACE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$PROD_STUB_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/prodstub_svc.yaml
+			__kube_create_instance service $PROD_STUB_APP_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$PROD_STUB_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/prodstub_app.yaml
+			__kube_create_instance app $PROD_STUB_APP_NAME $input_yaml $output_yaml
+		fi
+
+		PROD_STUB_HOST_NAME=$(__kube_get_service_host $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE)
+
+		PROD_STUB_EXTERNAL_PORT=$(__kube_get_service_port $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE "http")
+		PROD_STUB_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $PROD_STUB_APP_NAME $KUBE_SIM_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $PROD_STUB_HOST_NAME $PROD_STUB_EXTERNAL_PORT $PROD_STUB_EXTERNAL_SECURE_PORT"
+		if [ $PROD_STUB_HTTPX == "http" ]; then
+            PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_PORT
+			PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_PORT
+		else
+            PROD_STUB_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_HOST_NAME":"$PROD_STUB_EXTERNAL_SECURE_PORT
+			PROD_STUB_SERVICE_PATH=$PROD_STUB_HTTPX"://"$PROD_STUB_APP_NAME"."$KUBE_SIM_NAMESPACE":"$PROD_STUB_EXTERNAL_SECURE_PORT
+		fi
+
+		__check_service_start $PROD_STUB_APP_NAME $PROD_STUB_PATH$PROD_STUB_ALIVE_URL
+
+		echo -ne " Service $PROD_STUB_APP_NAME - reset  "$SAMELINE
+		result=$(__do_curl $PROD_STUB_PATH/reset)
+		if [ $? -ne 0 ]; then
+			echo -e " Service $PROD_STUB_APP_NAME - reset  $RED Failed $ERED - will continue"
+		else
+			echo -e " Service $PROD_STUB_APP_NAME - reset  $GREEN OK $EGREEN"
+		fi
+	else
+
+		# Check if docker app shall be fully managed by the test script
+		__check_included_image 'PRODSTUB'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Producer stub app is not included as managed in this test script"$ERED
+			echo -e $RED"The Producer stub will not be started"$ERED
+			exit
+		fi
+
+        export PROD_STUB_APP_NAME
+        export PROD_STUB_APP_NAME_ALIAS
+        export PROD_STUB_INTERNAL_PORT
+        export PROD_STUB_EXTERNAL_PORT
+        export PROD_STUB_INTERNAL_SECURE_PORT
+        export PROD_STUB_EXTERNAL_SECURE_PORT
+        export DOCKER_SIM_NWNAME
+
+		__start_container $PROD_STUB_COMPOSE_DIR NODOCKERARGS 1 $PROD_STUB_APP_NAME
+
+        __check_service_start $PROD_STUB_APP_NAME $PROD_STUB_PATH$PROD_STUB_ALIVE_URL
+	fi
+    echo ""
+    return 0
+}
 
 # Excute a curl cmd towards the prodstub simulator and check the response code.
 # args: TEST|CONF <expected-response-code> <curl-cmd-string> [<json-file-to-compare-output>]
@@ -75,7 +235,7 @@
 		return 1
 	fi
 
-    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_LOCALHOST/arm/supervision/"$2
+    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/supervision/"$2
 	if [ $# -eq 3 ]; then
 		curlString=$curlString"?response="$3
 	fi
@@ -94,7 +254,7 @@
 		return 1
 	fi
 
-    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_LOCALHOST/arm/create/$2/$3"
+    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/create/$2/$3"
 	if [ $# -eq 4 ]; then
 		curlString=$curlString"?response="$4
 	fi
@@ -113,7 +273,7 @@
 		return 1
 	fi
 
-    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_LOCALHOST/arm/delete/$2/$3"
+    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/delete/$2/$3"
 	if [ $# -eq 4 ]; then
 		curlString=$curlString"?response="$4
 	fi
@@ -132,7 +292,7 @@
 		return 1
 	fi
 
-    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_LOCALHOST/arm/type/$2/$3"
+    curlString="curl -X PUT -skw %{http_code} $PROD_STUB_PATH/arm/type/$2/$3"
 
     __execute_curl_to_prodstub CONF $1 "$curlString"
     return $?
@@ -148,7 +308,7 @@
 		return 1
 	fi
 
-    curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_LOCALHOST/arm/type/$2/$3"
+    curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_PATH/arm/type/$2/$3"
 
     __execute_curl_to_prodstub CONF $1 "$curlString"
     return $?
@@ -174,7 +334,7 @@
     file="./tmp/.p.json"
 	echo "$targetJson" > $file
 
-    curlString="curl -X GET -skw %{http_code} $PROD_STUB_LOCALHOST/jobdata/$2/$3"
+    curlString="curl -X GET -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
 
     __execute_curl_to_prodstub TEST $1 "$curlString" $file
     return $?
@@ -189,7 +349,7 @@
 		__print_err "<response-code> <producer-id> <job-id> " $@
 		return 1
 	fi
-    curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_LOCALHOST/jobdata/$2/$3"
+    curlString="curl -X DELETE -skw %{http_code} $PROD_STUB_PATH/jobdata/$2/$3"
 
     __execute_curl_to_prodstub CONF $1 "$curlString"
     return $?
@@ -204,7 +364,7 @@
 # (Function for test scripts)
 prodstub_equal() {
 	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "PRODSTUB" "$LOCALHOST$PROD_STUB_EXTERNAL_PORT/counter/" $1 "=" $2 $3
+		__var_test "PRODSTUB" "$PROD_STUB_PATH/counter/" $1 "=" $2 $3
 	else
 		__print_err "Wrong args to prodstub_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
 	fi
diff --git a/test/common/rapp_catalogue_api_functions.sh b/test/common/rapp_catalogue_api_functions.sh
index dce28f3..777b9d3 100644
--- a/test/common/rapp_catalogue_api_functions.sh
+++ b/test/common/rapp_catalogue_api_functions.sh
@@ -17,9 +17,149 @@
 #  ============LICENSE_END=================================================
 #
 
-# This is a script that contains specific test functions for RAPP Catalogue API
+# This is a script that contains container/service managemnt functions test functions for RAPP Catalogue API
 
-. ../common/api_curl.sh
+## Access to RAPP Catalogue
+# Host name may be changed if app started by kube
+# Direct access from script
+RC_HTTPX="http"
+RC_HOST_NAME=$LOCALHOST_NAME
+RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
+# RC_ADAPTER used for switch between REST and DMAAP (only REST supported currently)
+RC_ADAPTER_TYPE="REST"
+RC_ADAPTER=$RC_PATH
+
+
+###########################
+### RAPP Catalogue
+###########################
+
+# Set http as the protocol to use for all communication to the RAPP Catalogue
+# args: -
+# (Function for test scripts)
+use_rapp_catalogue_http() {
+	echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards the RAPP Catalogue"
+	RC_HTTPX="http"
+	RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
+	RC_ADAPTER_TYPE="REST"
+	RC_ADAPTER=$RC_PATH
+	echo ""
+}
+
+# Set https as the protocol to use for all communication to the RAPP Catalogue
+# args: -
+# (Function for test scripts)
+use_rapp_catalogue_https() {
+	echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards the RAPP Catalogue"
+	RC_HTTPX="https"
+	RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_SECURE_PORT
+	RC_ADAPTER_TYPE="REST"
+	RC_ADAPTER=$RC_PATH
+	echo ""
+}
+
+# Start the RAPP Catalogue container
+# args: -
+# (Function for test scripts)
+start_rapp_catalogue() {
+
+	echo -e $BOLD"Starting $RAPP_CAT_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "RC"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "RC"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $RAPP_CAT_APP_NAME app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $RAPP_CAT_APP_NAME will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $RAPP_CAT_APP_NAME app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $RAPP_CAT_APP_NAME will not be started"$ERED
+			exit
+		fi
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $RAPP_CAT_APP_NAME deployment and service"
+			echo " Setting $RAPP_CAT_APP_NAME replicas=1"
+			__kube_scale deployment $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE 1
+		fi
+
+		if [ $retcode_i -eq 0 ]; then
+
+			echo -e " Creating $RAPP_CAT_APP_NAME app and expose service"
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			export RAPP_CAT_APP_NAME
+			export KUBE_NONRTRIC_NAMESPACE
+			export RAPP_CAT_IMAGE
+			export RAPP_CAT_INTERNAL_PORT
+			export RAPP_CAT_INTERNAL_SECURE_PORT
+			export RAPP_CAT_EXTERNAL_PORT
+			export RAPP_CAT_EXTERNAL_SECURE_PORT
+
+			#Create service
+			input_yaml=$SIM_GROUP"/"$RAPP_CAT_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/rac_svc.yaml
+			__kube_create_instance service $RAPP_CAT_APP_NAME $input_yaml $output_yaml
+
+			#Create app
+			input_yaml=$SIM_GROUP"/"$RAPP_CAT_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/rac_app.yaml
+			__kube_create_instance app $RAPP_CAT_APP_NAME $input_yaml $output_yaml
+		fi
+
+		echo " Retrieving host and ports for service..."
+		RC_HOST_NAME=$(__kube_get_service_host $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE)
+
+		RAPP_CAT_EXTERNAL_PORT=$(__kube_get_service_port $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "http")
+		RAPP_CAT_EXTERNAL_SECURE_PORT=$(__kube_get_service_port $RAPP_CAT_APP_NAME $KUBE_NONRTRIC_NAMESPACE "https")
+
+		echo " Host IP, http port, https port: $RC_HOST_NAME $RAPP_CAT_EXTERNAL_PORT $RAPP_CAT_EXTERNAL_SECURE_PORT"
+		if [ $RC_HTTPX == "http" ]; then
+			RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_PORT
+		else
+			RC_PATH=$RC_HTTPX"://"$RC_HOST_NAME":"$RAPP_CAT_EXTERNAL_SECURE_PORT
+		fi
+
+		__check_service_start $RAPP_CAT_APP_NAME $RC_PATH$RAPP_CAT_ALIVE_URL
+
+		# Update the curl adapter if set to rest, no change if type dmaap
+		if [ $RC_ADAPTER_TYPE == "REST" ]; then
+			RC_ADAPTER=$RC_PATH
+		fi
+	else
+		__check_included_image 'RC'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The RAPP Catalogue app is not included as managed in this test script"$ERED
+			echo -e $RED"The RAPP Catalogue will not be started"$ERED
+			exit
+		fi
+
+		export RAPP_CAT_APP_NAME
+        export RAPP_CAT_INTERNAL_PORT
+        export RAPP_CAT_EXTERNAL_PORT
+        export RAPP_CAT_INTERNAL_SECURE_PORT
+        export RAPP_CAT_EXTERNAL_SECURE_PORT
+        export DOCKER_SIM_NWNAME
+
+		__start_container $RAPP_CAT_COMPOSE_DIR NODOCKERARGS 1 $RAPP_CAT_APP_NAME
+
+		__check_service_start $RAPP_CAT_APP_NAME $RC_PATH$RAPP_CAT_ALIVE_URL
+	fi
+	echo ""
+}
 
 # Tests if a variable value in the RAPP Catalogue is equal to a target value and and optional timeout.
 # Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
@@ -30,7 +170,8 @@
 # (Function for test scripts)
 rc_equal() {
 	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test RC "$LOCALHOST$RC_EXTERNAL_PORT/" $1 "=" $2 $3
+		#__var_test RC "$LOCALHOST_HTTP:$RC_EXTERNAL_PORT/" $1 "=" $2 $3
+		__var_test RC "$RC_PATH/" $1 "=" $2 $3
 	else
 		__print_err "Wrong args to ecs_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
 	fi
diff --git a/test/common/ricsimulator_api_functions.sh b/test/common/ricsimulator_api_functions.sh
index 2a68aa0..bb057ce 100644
--- a/test/common/ricsimulator_api_functions.sh
+++ b/test/common/ricsimulator_api_functions.sh
@@ -17,8 +17,211 @@
 #  ============LICENSE_END=================================================
 #
 
+# This is a script that contains container/service management functions and test functions for RICSIM A1 simulators
 
-### Admin API functions for the RIC simulator
+RIC_SIM_HTTPX="http"
+RIC_SIM_HOST=$RIC_SIM_HTTPX"://"$LOCALHOST_NAME
+RIC_SIM_PORT=$RIC_SIM_INTERNAL_PORT
+
+
+#Vars for A1 interface version and container count
+G1_A1_VERSION=""
+G2_A1_VERSION=""
+G3_A1_VERSION=""
+G4_A1_VERSION=""
+G5_A1_VERSION=""
+G1_COUNT=0
+G2_COUNT=0
+G3_COUNT=0
+G4_COUNT=0
+G5_COUNT=0
+
+
+###########################
+### RIC Simulator functions
+###########################
+
+use_simulator_http() {
+	echo -e $BOLD"RICSIM protocol setting"$EBOLD
+	echo -e " Using $BOLD http $EBOLD towards the simulators"
+	RIC_SIM_HTTPX="http"
+	RIC_SIM_HOST=$RIC_SIM_HTTPX"://"$LOCALHOST_NAME
+	RIC_SIM_PORT=$RIC_SIM_INTERNAL_PORT
+	echo ""
+}
+
+use_simulator_https() {
+	echo -e $BOLD"RICSIM protocol setting"$EBOLD
+	echo -e " Using $BOLD https $EBOLD towards the simulators"
+	RIC_SIM_HTTPX="https"
+	RIC_SIM_HOST=$RIC_SIM_HTTPX"://"$LOCALHOST_NAME
+	RIC_SIM_PORT=$RIC_SIM_INTERNAL_SECURE_PORT
+	echo ""
+}
+
+# Start one group (ricsim_g1, ricsim_g2 .. ricsim_g5) with a number of RIC Simulators using a given A interface
+# 'ricsim' may be set on command line to other prefix
+# args:  ricsim_g1|ricsim_g2|ricsim_g3|ricsim_g4|ricsim_g5 <count> <interface-id>
+# (Function for test scripts)
+start_ric_simulators() {
+
+	echo -e $BOLD"Starting $RIC_SIM_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		# Check if app shall be fully managed by the test script
+		__check_included_image "RICSIM"
+		retcode_i=$?
+
+		# Check if app shall only be used by the testscipt
+		__check_prestarted_image "RICSIM"
+		retcode_p=$?
+
+		if [ $retcode_i -ne 0 ] && [ $retcode_p -ne 0 ]; then
+			echo -e $RED"The $1 app is not included as managed nor prestarted in this test script"$ERED
+			echo -e $RED"The $1 will not be started"$ERED
+			exit
+		fi
+		if [ $retcode_i -eq 0 ] && [ $retcode_p -eq 0 ]; then
+			echo -e $RED"The $1 stub app is included both as managed and prestarted in this test script"$ERED
+			echo -e $RED"The $1 will not be started"$ERED
+			exit
+		fi
+
+		if [ $retcode_p -eq 0 ]; then
+			echo -e " Using existing $1 statefulset and service"
+			echo " Using existing simulator deployment and service for statefulset $1"
+			echo " Setting $1 replicas=$2"
+			__kube_scale statefulset $1 $KUBE_NONRTRIC_NAMESPACE $2
+			echo ""
+			return
+		fi
+	fi
+
+	RIC1=$RIC_SIM_PREFIX"_g1"
+	RIC2=$RIC_SIM_PREFIX"_g2"
+	RIC3=$RIC_SIM_PREFIX"_g3"
+	RIC4=$RIC_SIM_PREFIX"_g4"
+	RIC5=$RIC_SIM_PREFIX"_g5"
+
+	if [ $# != 3 ]; then
+		((RES_CONF_FAIL++))
+		__print_err "need three args,  $RIC1|$RIC2|$RIC3|$RIC4|$RIC5 <count> <interface-id>" $@
+		exit 1
+	fi
+
+	echo " $2 simulators using basename: $1 on interface: $3"
+	#Set env var for simulator count and A1 interface vesion for the given group
+	if [ $1 == "$RIC1" ]; then
+		G1_COUNT=$2
+		G1_A1_VERSION=$3
+	elif [ $1 == "$RIC2" ]; then
+		G2_COUNT=$2
+		G2_A1_VERSION=$3
+	elif [ $1 == "$RIC3" ]; then
+		G3_COUNT=$2
+		G3_A1_VERSION=$3
+	elif [ $1 == "$RIC4" ]; then
+		G4_COUNT=$2
+		G4_A1_VERSION=$3
+	elif [ $1 == "$RIC5" ]; then
+		G5_COUNT=$2
+		G5_A1_VERSION=$3
+	else
+		((RES_CONF_FAIL++))
+		__print_err "need three args, $RIC1|$RIC2|$RIC3|$RIC4|$RIC5 <count> <interface-id>" $@
+		exit 1
+	fi
+
+	if [ $RUNMODE == "KUBE" ]; then
+
+		if [ $retcode_i -eq 0 ]; then
+
+			#export needed env var for statefulset
+			export RIC_SIM_SET_NAME=$(echo "$1" | tr '_' '-')  #kube does not accept underscore in names
+			export KUBE_NONRTRIC_NAMESPACE
+			export RIC_SIM_IMAGE
+			#Adding 1 more instance, instance 0 is never used. This is done to keep test scripts compatible
+			# with docker that starts instance index on 1.....
+			export RIC_SIM_COUNT=$(($2+1))
+			export A1_VERSION=$3
+			export RIC_SIM_INTERNAL_PORT
+			export RIC_SIM_INTERNAL_SECURE_PORT
+
+			echo -e " Creating $POLICY_AGENT_APP_NAME app and expose service"
+
+			#Check if nonrtric namespace exists, if not create it
+			__kube_create_namespace $KUBE_NONRTRIC_NAMESPACE
+
+			# Create service
+			input_yaml=$SIM_GROUP"/"$RIC_SIM_COMPOSE_DIR"/"svc.yaml
+			output_yaml=$PWD/tmp/ric_${1}_svc.yaml
+			__kube_create_instance service $RIC_SIM_SET_NAME $input_yaml $output_yaml
+
+			# Create app
+			input_yaml=$SIM_GROUP"/"$RIC_SIM_COMPOSE_DIR"/"app.yaml
+			output_yaml=$PWD/tmp/pa_${1}_app.yaml
+			__kube_create_instance app $RIC_SIM_SET_NAME $input_yaml $output_yaml
+
+			#Using only instance from index 1 to keep compatability with docker
+			for (( count=1; count<${RIC_SIM_COUNT}; count++ )); do
+				host=$(__find_sim_host $RIC_SIM_SET_NAME"-"$count)
+				__check_service_start $RIC_SIM_SET_NAME"-"$count $host"/"
+			done
+		fi
+	else
+
+		__check_included_image 'RICSIM'
+		if [ $? -eq 1 ]; then
+			echo -e $RED"The Near-RT RIC Simulator app is not included as managed in this test script"$ERED
+			echo -e $RED"Near-RT RIC Simulator will not be started"$ERED
+			exit 1
+		fi
+
+		# Create .env file to compose project, all ric container will get this prefix
+		echo "COMPOSE_PROJECT_NAME="$RIC_SIM_PREFIX > $SIM_GROUP/$RIC_SIM_COMPOSE_DIR/.env
+
+		export G1_A1_VERSION
+		export G2_A1_VERSION
+		export G3_A1_VERSION
+		export G4_A1_VERSION
+		export G5_A1_VERSION
+		export RIC_SIM_INTERNAL_PORT
+		export RIC_SIM_INTERNAL_SECURE_PORT
+		export RIC_SIM_CERT_MOUNT_DIR
+		export DOCKER_SIM_NWNAME
+
+		docker_args="--scale g1=$G1_COUNT --scale g2=$G2_COUNT --scale g3=$G3_COUNT --scale g4=$G4_COUNT --scale g5=$G5_COUNT"
+		app_data=""
+		cntr=1
+		while [ $cntr -le $2 ]; do
+			app=$1"_"$cntr
+			app_data="$app_data $app"
+			let cntr=cntr+1
+		done
+
+		__start_container $RIC_SIM_COMPOSE_DIR "$docker_args" $2 $app_data
+
+		cntr=1
+		while [ $cntr -le $2 ]; do
+			app=$1"_"$cntr
+			localport=0
+
+			while [ $localport -eq 0 ]; do
+				echo -ne " Waiting for container ${app} to publish its ports...${SAMELINE}"
+				localport=$(__find_sim_port $app)
+				sleep 0.5
+				echo -ne " Waiting for container ${app} to publish its ports...retrying....${SAMELINE}"
+			done
+			echo -e " Waiting for container ${app} to publish its ports...retrying....$GREEN OK $EGREEN"
+			__check_service_start $app $RIC_SIM_HOST":"$localport$RIC_SIM_ALIVE_URL
+			let cntr=cntr+1
+		done
+	fi
+	echo ""
+	return 0
+}
+
 
 
 # Excute a curl cmd towards a ricsimulator and check the response code.
@@ -55,8 +258,8 @@
 sim_equal() {
 
 	if [ $# -eq 3 ] || [ $# -eq 4 ]; then
-		port=$(__find_sim_port $1)
-		__var_test $1 "$RIC_SIM_LOCALHOST$port/counter/" $2 "=" $3 $4
+		host=$(__find_sim_host $1)
+		__var_test $1 "$host/counter/" $2 "=" $3 $4
 		return 0
 	else
 		__print_err "needs three or four args: <ric-id> <sim-param> <target-value> [ timeout ]"
@@ -73,8 +276,8 @@
     	__print_err "need two args, <ric-id> <sim-param>" $@
 		exit 1
 	fi
-	port=$(__find_sim_port $1)
-	echo -e $BOLD"INFO(${BASH_LINENO[0]}): $1, $2 = $(__do_curl $RIC_SIM_LOCALHOST$port/counter/$2)"$EBOLD
+	host=$(__find_sim_host $1)
+	echo -e $BOLD"INFO(${BASH_LINENO[0]}): $1, $2 = $(__do_curl $host/counter/$2)"$EBOLD
 }
 
 # Tests if a variable value in the RIC simulator contains the target string and and optional timeout
@@ -87,8 +290,8 @@
 sim_contains_str() {
 
 	if [ $# -eq 3 ] || [ $# -eq 4 ]; then
-		port=$(__find_sim_port $1)
-		__var_test $1 "$RIC_SIM_LOCALHOST$port/counter/" $2 "contain_str" $3 $4
+		host=$(__find_sim_host $1)
+		__var_test $1 "$host/counter/" $2 "contain_str" $3 $4
 		return 0
 	else
 		__print_err "needs three or four args: <ric-id> <sim-param> <target-value> [ timeout ]"
@@ -105,8 +308,8 @@
 		__print_err "<response-code> <ric-id> <policy-type-id> <policy-type-file>" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X PUT -skw %{http_code} $RIC_SIM_LOCALHOST"$res"/policytype?id="$3" -H Content-Type:application/json --data-binary @"$4
+	host=$(__find_sim_host $2)
+    curlString="curl -X PUT -skw %{http_code} "$host"/policytype?id="$3" -H Content-Type:application/json --data-binary @"$4
 	__execute_curl_to_sim $1 "$curlString"
 	return $?
 }
@@ -120,8 +323,8 @@
 		__print_err "<response-code> <ric-id> <policy_type_id>" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X DELETE -skw %{http_code} $RIC_SIM_LOCALHOST"$res"/policytype?id="$3
+	host=$(__find_sim_host $2)
+    curlString="curl -X DELETE -skw %{http_code} "$host"/policytype?id="$3
     __execute_curl_to_sim $1 "$curlString"
 	return $?
 }
@@ -135,8 +338,8 @@
 		__print_err "<response-code> <ric-id>" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X POST -skw %{http_code} $RIC_SIM_LOCALHOST"$res"/deleteinstances"
+	host=$(__find_sim_host $2)
+    curlString="curl -X POST -skw %{http_code} "$host"/deleteinstances"
     __execute_curl_to_sim $1 "$curlString"
 	return $?
 }
@@ -150,8 +353,8 @@
 		__print_err "<response-code> <numericic-id>" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X POST -skw %{http_code} $RIC_SIM_LOCALHOST"$res"/deleteall"
+	host=$(__find_sim_host $2)
+    curlString="curl -X POST -skw %{http_code} "$host"/deleteall"
     __execute_curl_to_sim $1 "$curlString"
 	return $?
 }
@@ -165,8 +368,8 @@
 		__print_err "<response-code> <ric-id> <forced_response_code>" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X POST -skw %{http_code} $RIC_SIM_LOCALHOST"$res"/forceresponse"
+	host=$(__find_sim_host $2)
+    curlString="curl -X POST -skw %{http_code} "$host"/forceresponse"
 	if [ $# -eq 3 ]; then
 		curlString=$curlString"?code="$3
 	fi
@@ -183,8 +386,8 @@
 		__print_err "<response-code> <ric-id> [<delay-in-seconds>]" $@
 		return 1
 	fi
-	res=$(__find_sim_port $2)
-    curlString="curl -X POST -skw %{http_code} $RIC_SIM_LOCALHOST$res/forcedelay"
+	host=$(__find_sim_host $2)
+    curlString="curl -X POST -skw %{http_code} $host/forcedelay"
 	if [ $# -eq 3 ]; then
 		curlString=$curlString"?delay="$3
 	fi
diff --git a/test/common/test_env-onap-guilin.sh b/test/common/test_env-onap-guilin.sh
index 9b85bf0..e0e732c 100644
--- a/test/common/test_env-onap-guilin.sh
+++ b/test/common/test_env-onap-guilin.sh
@@ -7,7 +7,7 @@
 #  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
+#    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,
@@ -18,6 +18,7 @@
 #
 #Profile for ONAP guilin release
 TEST_ENV_PROFILE="ONAP-GUILIN"
+FLAVOUR="ONAP"
 
 ########################################
 ## Nexus repo settings
@@ -112,12 +113,26 @@
 CR_IMAGE_TAG_LOCAL="latest"
 #No remote image for CR, local image always used
 
+#Http proxy remote image and tag
+HTTP_PROXY_IMAGE_BASE="mitmproxy/mitmproxy"
+HTTP_PROXY_IMAGE_TAG_REMOTE_PROXY="6.0.2"
+#No local image for SSDNC DB, remote image always used
 
-#Producer stub image and tag
-PROD_STUB_IMAGE_BASE="producer-stub"
-PROD_STUB_IMAGE_TAG_LOCAL="latest"
-#No remote image for producer stub, local image always used
 
+#ONAP Zookeeper remote image and tag
+ONAP_ZOOKEEPER_IMAGE_BASE="onap/dmaap/zookeeper"
+ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.0.3"
+#No local image for ONAP Zookeeper, remote image always used
+
+#ONAP Kafka remote image and tag
+ONAP_KAFKA_IMAGE_BASE="onap/dmaap/kafka111"
+ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.0.4"
+#No local image for ONAP Kafka, remote image always used
+
+#ONAP DMAAP-MR remote image and tag
+ONAP_DMAAPMR_IMAGE_BASE="onap/dmaap/dmaap-mr"
+ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.18"
+#No local image for ONAP DMAAP-MR, remote image always used
 
 # List of app short names produced by the project
 PROJECT_IMAGES_APP_NAMES="PA SDNC"
@@ -132,85 +147,143 @@
 # Detailed settings per app
 ########################################
 
-# Vars used by docker-compose need to be exported
+
+DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
+
+KUBE_NONRTRIC_NAMESPACE="nonrtric"                       # Namespace for all nonrtric components
+KUBE_SIM_NAMESPACE="nonrtric-ft"                         # Namespace for simulators (except MR and RICSIM)
+KUBE_ONAP_NAMESPACE="onap"                               # Namespace for onap (only message router)
+
+POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
+POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
+POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
+POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
+POLICY_AGENT_APIS="V1"                                   # Supported northbound api versions
+PMS_VERSION="V1"                                         # Tested version of northbound API
+PMS_API_PREFIX=""                                        # api url prefix, only for V2
+
+POLICY_AGENT_APP_NAME="policymanagementservice"          # Name for Policy Agent container
+POLICY_AGENT_DISPLAY_NAME="Policy Management Service"
+POLICY_AGENT_HOST_MNT_DIR="./mnt"                        # Mounted dir, relative to compose file, on the host
+POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container
+POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_CONFIG_KEY="policy-agent"                   # Key for consul config
+POLICY_AGENT_PKG_NAME="org.onap.ccsdk.oran.a1policymanagementservice"  # Java base package name
+POLICY_AGENT_ACTUATOR="/actuator/loggers/$POLICY_AGENT_PKG_NAME" # Url for trace/debug
+POLICY_AGENT_ALIVE_URL="/status"                         # Base path for alive check
+POLICY_AGENT_COMPOSE_DIR="policy_agent"                  # Dir in simulator_group for docker-compose
+POLICY_AGENT_CONFIG_MOUNT_PATH="/opt/app/policy-agent/config" # Path in container for config file
+POLICY_AGENT_DATA_MOUNT_PATH="/opt/app/policy-agent/data" # Path in container for data file
+POLICY_AGENT_CONFIG_FILE="application.yaml"              # Container config file name
+POLICY_AGENT_DATA_FILE="application_configuration.json"  # Container data file name
+
+MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
+MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
+MR_DMAAP_DISPLAY_NAME="DMAAP Message Router"
+MR_STUB_DISPLAY_NAME="Message Router stub"
+MR_STUB_CERT_MOUNT_DIR="./cert"
+MR_EXTERNAL_PORT=3904                                    # MR dmaap/stub container external port
+MR_INTERNAL_PORT=3904                                    # MR dmaap/stub container internal port
+MR_EXTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container external secure port
+MR_INTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container internal secure port
+MR_DMAAP_LOCALHOST_PORT=3904                             # MR stub container external port (host -> container)
+MR_STUB_LOCALHOST_PORT=3908                              # MR stub container external port (host -> container)
+MR_DMAAP_LOCALHOST_SECURE_PORT=3905                      # MR stub container internal port (container -> container)
+MR_STUB_LOCALHOST_SECURE_PORT=3909                       # MR stub container external secure port (host -> container)
+MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
+MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+MR_READ_TOPIC="A1-POLICY-AGENT-READ"                     # Read topic
+MR_WRITE_TOPIC="A1-POLICY-AGENT-WRITE"                   # Write topic
+MR_STUB_ALIVE_URL="/"                                    # Base path for mr stub alive check
+MR_DMAAP_ALIVE_URL="/topics"                             # Base path for dmaap-mr alive check
+MR_DMAAP_COMPOSE_DIR="dmaapmr"                           # Dir in simulator_group for dmaap mr for - docker-compose
+MR_STUB_COMPOSE_DIR="mrstub"                             # Dir in simulator_group for mr stub for - docker-compose
+MR_KAFKA_APP_NAME="kafka"                                # Kafka app name
+MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 
 
-export DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
+CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
+CR_DISPLAY_NAME="Callback Reciever"
+CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
+CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
+CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
+CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
+CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
+CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_COMPOSE_DIR="cr"                                      # Dir in simulator_group for docker-compose
 
-export POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
-export POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
-export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
-export POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
-export POLICY_AGENT_APIS="V1"                                   # Supported northbound api versions
+CONSUL_HOST="consul-server"                              # Host name of consul
+CONSUL_DISPLAY_NAME="Consul"
+CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
+CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
+CONSUL_APP_NAME="polman-consul"                          # Name for consul container
+CONSUL_ALIVE_URL="/ui/dc1/kv"                            # Base path for alive check
+CONSUL_CBS_COMPOSE_DIR="consul_cbs"                      # Dir in simulator group for docker compose
 
-export POLICY_AGENT_APP_NAME="policy-agent"                     # Name for Policy Agent container
-POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log"    # Path the application log in the Policy Agent container
-export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+CBS_APP_NAME="polman-cbs"                                # Name for CBS container
+CBS_DISPLAY_NAME="Config Binding Service"
+CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
+CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
+CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
+CBS_ALIVE_URL="/healthcheck"                             # Base path for alive check
 
-export MR_EXTERNAL_PORT=3905                                    # MR stub container external port (host -> container)
-export MR_INTERNAL_PORT=3905                                    # MR stub container internal port (container -> container)
-export MR_EXTERNAL_SECURE_PORT=3906                             # MR stub container external secure port (host -> container)
-export MR_INTERNAL_SECURE_PORT=3906                             # MR stub container internal secure port (container -> container)
-export MR_APP_NAME="message-router"                             # Name for the MR
-export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
-export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+RIC_SIM_DISPLAY_NAME="Near-RT RIC A1 Simulator"
+RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
+                                                         # Note, a prefix is added to each container name by the .env file in the 'ric' dir
+RIC_SIM_PREFIX="ricsim"                                  # Prefix added to ric container name, added in the .env file in the 'ric' dir
+                                                         # This prefix can be changed from the command line
+RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_CERT_MOUNT_DIR="./cert"
+RIC_SIM_COMPOSE_DIR="ric"                                # Dir in simulator group for docker compose
+RIC_SIM_ALIVE_URL="/"
 
-export CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
-export CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
-export CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
-export CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
-export CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
-
-export CONSUL_HOST="consul-server"                              # Host name of consul
-export CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
-export CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
-export CONSUL_APP_NAME="polman-consul"                          # Name for consul container
-
-export CBS_APP_NAME="polman-cbs"                                # Name for CBS container
-export CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
-export CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
-export CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
-
-export RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
-                                                                # Note, a prefix is added to each container name by the .env file in the 'ric' dir
-RIC_SIM_PREFIX="ricsim"                                         # Prefix added to ric container name, added in the .env file in the 'ric' dir
-                                                                # This prefix can be changed from the command line
-export RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
-                                                                # (external ports allocated by docker)
-export RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
-                                                                # (external ports allocated by docker)
-
-export SDNC_APP_NAME="a1-controller"                            # Name of the SNDC A1 Controller container
-export SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
-export SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
-export SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
-export SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
-export SDNC_DB_APP_NAME="sdnc-db"                               # Name of the SDNC DB container
-export SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter"                  # SDNC truststore password
-SDNC_USER="admin"                                               # SDNC username
-SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"          # SNDC PWD
-SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"             # Base url path for SNDC API
-SDNC_ALIVE_URL="/apidoc/explorer/"                              # Base url path for SNDC API docs (for alive check)
-SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"           # Path to karaf log
+SDNC_APP_NAME="a1controller"                             # Name of the SNDC A1 Controller container
+SDNC_DISPLAY_NAME="SDNC A1 Controller"
+SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
+SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
+SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
+SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
+SDNC_DB_APP_NAME="sdncdb"                                # Name of the SDNC DB container
+SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter"                  # SDNC truststore password
+SDNC_USER="admin"                                        # SDNC username
+SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"   # SNDC PWD
+SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"      # Base url path for SNDC API
+SDNC_ALIVE_URL="/apidoc/explorer/"                       # Base url path for SNDC API docs (for alive check)
+SDNC_COMPOSE_DIR="sdnc"                                  # Dir in simulator_group for docker-compose
+SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 
 
-export CONTROL_PANEL_APP_NAME="control-panel"                   # Name of the Control Panel container
-export CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-export CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"         # Path the application log in the Control Panel container
+CONTROL_PANEL_APP_NAME="controlpanel"                    # Name of the Control Panel container
+CONTROL_PANEL_DISPLAY_NAME="Non-RT RIC Control Panel"
+CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container internal port (container -> container)
+CONTROL_PANEL_EXTERNAL_SECURE_PORT=8880                  # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_SECURE_PORT=8082                  # Control Panel container internal port (container -> container)
+CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"  # Path the application log in the Control Panel container
+CONTROL_PANEL_ALIVE_URL="/"                              # Base path for alive check
+CONTROL_PANEL_COMPOSE_DIR="control_panel"                # Dir in simulator_group for docker-compose
+CONTROL_PANEL_CONFIG_MOUNT_PATH=/maven                   # Container internal path for config
+CONTROL_PANEL_CONFIG_FILE=application.properties         # Config file name
 
+HTTP_PROXY_APP_NAME="httpproxy"                          # Name of the Http Proxy container
+HTTP_PROXY_DISPLAY_NAME="Http Proxy"
+HTTP_PROXY_EXTERNAL_PORT=8780                            # Http Proxy container external port (host -> container)
+HTTP_PROXY_INTERNAL_PORT=8080                            # Http Proxy container internal port (container -> container)
+HTTP_PROXY_WEB_EXTERNAL_PORT=8781                        # Http Proxy container external port (host -> container)
+HTTP_PROXY_WEB_INTERNAL_PORT=8081                        # Http Proxy container internal port (container -> container)
+HTTP_PROXY_CONFIG_PORT=0                                 # Port number for proxy config, will be set if proxy is started
+HTTP_PROXY_CONFIG_HOST_NAME=""                           # Proxy host, will be set if proxy is started
+HTTP_PROXY_ALIVE_URL="/"                                 # Base path for alive check
+HTTP_PROXY_COMPOSE_DIR="httpproxy"                       # Dir in simulator_group for docker-compose
 
 ########################################
 # Setting for common curl-base function
 ########################################
 
 
-UUID=""                                                         # UUID used as prefix to the policy id to simulate a real UUID
-                                                                # Testscript need to set the UUID to use other this empty prefix is used
+UUID=""                                                  # UUID used as prefix to the policy id to simulate a real UUID
+                                                         # Testscript need to set the UUID to use other this empty prefix is used
 
-RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT         # Base url to the Agent NB REST interface
-RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface
-DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT                  # Base url to the Dmaap adapter, http
-DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ADAPTER=$RESTBASE                                               # Adapter holds the address the agent R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the two base url when needed
diff --git a/test/common/test_env-onap-honolulu.sh b/test/common/test_env-onap-honolulu.sh
index a8c852e..ad78a21 100644
--- a/test/common/test_env-onap-honolulu.sh
+++ b/test/common/test_env-onap-honolulu.sh
@@ -18,6 +18,7 @@
 #
 #Profile for ONAP honolulu release
 TEST_ENV_PROFILE="ONAP-HONOLULU"
+FLAVOUR="ONAP"
 
 ########################################
 ## Nexus repo settings
@@ -60,7 +61,7 @@
 POLICY_AGENT_IMAGE_BASE="onap/ccsdk-oran-a1policymanagementservice"
 POLICY_AGENT_IMAGE_TAG_LOCAL="1.1.1-SNAPSHOT"
 POLICY_AGENT_IMAGE_TAG_REMOTE_SNAPSHOT="1.1.1-SNAPSHOT"
-POLICY_AGENT_IMAGE_TAG_REMOTE="1.1.1-SNAPSHOT" #Will use snapshot repo
+POLICY_AGENT_IMAGE_TAG_REMOTE="1.1.1-STAGING-latest" #Will use snapshot repo
 POLICY_AGENT_IMAGE_TAG_REMOTE_RELEASE="1.1.1"
 
 
@@ -127,6 +128,27 @@
 #No remote image for producer stub, local image always used
 
 
+#Http proxy remote image and tag
+HTTP_PROXY_IMAGE_BASE="mitmproxy/mitmproxy"
+HTTP_PROXY_IMAGE_TAG_REMOTE_PROXY="6.0.2"
+#No local image for SSDNC DB, remote image always used
+
+#ONAP Zookeeper remote image and tag
+ONAP_ZOOKEEPER_IMAGE_BASE="onap/dmaap/zookeeper"
+ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.0.3"
+#No local image for ONAP Zookeeper, remote image always used
+
+#ONAP Kafka remote image and tag
+ONAP_KAFKA_IMAGE_BASE="onap/dmaap/kafka111"
+ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.0.4"
+#No local image for ONAP Kafka, remote image always used
+
+#ONAP DMAAP-MR remote image and tag
+ONAP_DMAAPMR_IMAGE_BASE="onap/dmaap/dmaap-mr"
+ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.18"
+#No local image for ONAP DMAAP-MR, remote image always used
+
+
 # List of app short names produced by the project
 PROJECT_IMAGES_APP_NAMES="PA SDNC"
 
@@ -141,125 +163,178 @@
 # Detailed settings per app
 ########################################
 
-# Vars used by docker-compose need to be exported
 
+DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
 
-export DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
+KUBE_NONRTRIC_NAMESPACE="nonrtric"                       # Namespace for all nonrtric components
+KUBE_SIM_NAMESPACE="nonrtric-ft"                         # Namespace for simulators (except MR and RICSIM)
+KUBE_ONAP_NAMESPACE="onap"                               # Namespace for onap (only message router)
 
-export POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
-export POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
-export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
-export POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
-export POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
-export PMS_VERSION="V2"                                         # Tested version of northbound API
+POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
+POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
+POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
+POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
+POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
+PMS_VERSION="V2"                                         # Tested version of northbound API
+PMS_API_PREFIX=""                                        # api url prefix, only for V2
 
-export POLICY_AGENT_APP_NAME="policy-agent"                     # Name for Policy Agent container
-POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log"    # Path the application log in the Policy Agent container
-export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_APP_NAME="policymanagementservice"          # Name for Policy Agent container
+POLICY_AGENT_DISPLAY_NAME="Policy Management Service"
+POLICY_AGENT_HOST_MNT_DIR="./mnt"                        # Mounted dir, relative to compose file, on the host
+POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container
+POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_CONFIG_KEY="policy-agent"                   # Key for consul config
+POLICY_AGENT_PKG_NAME="org.onap.ccsdk.oran.a1policymanagementservice"  # Java base package name
+POLICY_AGENT_ACTUATOR="/actuator/loggers/$POLICY_AGENT_PKG_NAME" # Url for trace/debug
+POLICY_AGENT_ALIVE_URL="/v2/status"                         # Base path for alive check
+POLICY_AGENT_COMPOSE_DIR="policy_agent"                  # Dir in simulator_group for docker-compose
+POLICY_AGENT_CONFIG_MOUNT_PATH="/opt/app/policy-agent/config" # Path in container for config file
+POLICY_AGENT_DATA_MOUNT_PATH="/opt/app/policy-agent/data" # Path in container for data file
+POLICY_AGENT_CONFIG_FILE="application.yaml"              # Container config file name
+POLICY_AGENT_DATA_FILE="application_configuration.json"  # Container data file name
 
-export ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
-export ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
-export ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
-export ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
+ECS_APP_NAME="enrichmentservice"                         # Name for ECS container
+ECS_DISPLAY_NAME="Enrichment Coordinator Service"        # Display name for ECS container
+ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
+ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
+ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
+ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
 
-export ECS_APP_NAME="ecs"                                       # Name for ECS container
 ECS_LOGPATH="/var/log/enrichment-coordinator-service/application.log" # Path the application log in the ECS container
-export ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
-export ECS_HOST_MNT_DIR="./mnt"                                 # Mounted dir, relative to compose file, on the host
-export ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
+ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
+ECS_HOST_MNT_DIR="./mnt/db"                              # Mounted dir, relative to compose file, on the host
+ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
+ECS_ACTUATOR="/actuator/loggers/org.oransc.enrichment"   # Url for trace/debug
+ECS_CERT_MOUNT_DIR="./cert"
+ECS_ALIVE_URL="/status"                                  # Base path for alive check
+ECS_COMPOSE_DIR="ecs"                                    # Dir in simulator_group for docker-compose
+ECS_CONFIG_MOUNT_PATH=/opt/app/enrichment-coordinator-service/config # Internal container path for configuration
+ECS_CONFIG_FILE=application.yaml                         # Config file name
 
-export MR_EXTERNAL_PORT=3905                                    # MR stub container external port (host -> container)
-export MR_INTERNAL_PORT=3905                                    # MR stub container internal port (container -> container)
-export MR_EXTERNAL_SECURE_PORT=3906                             # MR stub container external secure port (host -> container)
-export MR_INTERNAL_SECURE_PORT=3906                             # MR stub container internal secure port (container -> container)
-export MR_APP_NAME="message-router"                             # Name for the MR
-export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
-export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
+MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
+MR_DMAAP_DISPLAY_NAME="DMAAP Message Router"
+MR_STUB_DISPLAY_NAME="Message Router stub"
+MR_STUB_CERT_MOUNT_DIR="./cert"
+MR_EXTERNAL_PORT=3904                                    # MR dmaap/stub container external port
+MR_INTERNAL_PORT=3904                                    # MR dmaap/stub container internal port
+MR_EXTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container external secure port
+MR_INTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container internal secure port
+MR_DMAAP_LOCALHOST_PORT=3904                             # MR stub container external port (host -> container)
+MR_STUB_LOCALHOST_PORT=3908                              # MR stub container external port (host -> container)
+MR_DMAAP_LOCALHOST_SECURE_PORT=3905                      # MR stub container internal port (container -> container)
+MR_STUB_LOCALHOST_SECURE_PORT=3909                       # MR stub container external secure port (host -> container)
+MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
+MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+MR_READ_TOPIC="A1-POLICY-AGENT-READ"                     # Read topic
+MR_WRITE_TOPIC="A1-POLICY-AGENT-WRITE"                   # Write topic
+MR_STUB_ALIVE_URL="/"                                    # Base path for mr stub alive check
+MR_DMAAP_ALIVE_URL="/topics"                             # Base path for dmaap-mr alive check
+MR_DMAAP_COMPOSE_DIR="dmaapmr"                           # Dir in simulator_group for dmaap mr for - docker-compose
+MR_STUB_COMPOSE_DIR="mrstub"                             # Dir in simulator_group for mr stub for - docker-compose
+MR_KAFKA_APP_NAME="kafka"                                # Kafka app name
+MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 
-export CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
-export CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
-export CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
-export CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
-export CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
-export CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
+CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
+CR_DISPLAY_NAME="Callback Reciever"
+CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
+CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
+CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
+CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
+CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
+CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
+CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_COMPOSE_DIR="cr"                                      # Dir in simulator_group for docker-compose
 
-export PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
-export PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
-export PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
-export PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
-export PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
+PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
+PROD_STUB_DISPLAY_NAME="Producer Stub"
+PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
+PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
+PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
+PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
+PROD_STUB_JOB_CALLBACK="/callbacks/job"                  # Callback path for job create/update/delete
+PROD_STUB_SUPERVISION_CALLBACK="/callbacks/supervision"  # Callback path for producre supervision
+PROD_STUB_ALIVE_URL="/"                                  # Base path for alive check
+PROD_STUB_COMPOSE_DIR="prodstub"                         # Dir in simulator_group for docker-compose
 
-export CONSUL_HOST="consul-server"                              # Host name of consul
-export CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
-export CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
-export CONSUL_APP_NAME="polman-consul"                          # Name for consul container
+CONSUL_HOST="consul-server"                              # Host name of consul
+CONSUL_DISPLAY_NAME="Consul"
+CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
+CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
+CONSUL_APP_NAME="polman-consul"                          # Name for consul container
+CONSUL_ALIVE_URL="/ui/dc1/kv"                            # Base path for alive check
+CONSUL_CBS_COMPOSE_DIR="consul_cbs"                      # Dir in simulator group for docker compose
 
-export CBS_APP_NAME="polman-cbs"                                # Name for CBS container
-export CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
-export CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
-export CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
+CBS_APP_NAME="polman-cbs"                                # Name for CBS container
+CBS_DISPLAY_NAME="Config Binding Service"
+CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
+CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
+CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
+CBS_ALIVE_URL="/healthcheck"                             # Base path for alive check
 
-export RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
-                                                                # Note, a prefix is added to each container name by the .env file in the 'ric' dir
-RIC_SIM_PREFIX="ricsim"                                         # Prefix added to ric container name, added in the .env file in the 'ric' dir
-                                                                # This prefix can be changed from the command line
-export RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
-                                                                # (external ports allocated by docker)
-export RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
-                                                                # (external ports allocated by docker)
+RIC_SIM_DISPLAY_NAME="Near-RT RIC A1 Simulator"
+RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
+                                                         # Note, a prefix is added to each container name by the .env file in the 'ric' dir
+RIC_SIM_PREFIX="ricsim"                                  # Prefix added to ric container name, added in the .env file in the 'ric' dir
+                                                         # This prefix can be changed from the command line
+RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_CERT_MOUNT_DIR="./cert"
+RIC_SIM_COMPOSE_DIR="ric"                                # Dir in simulator group for docker compose
+RIC_SIM_ALIVE_URL="/"
 
-export SDNC_APP_NAME="a1-controller"                            # Name of the SNDC A1 Controller container
-export SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
-export SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
-export SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
-export SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
-export SDNC_DB_APP_NAME="sdnc-db"                               # Name of the SDNC DB container
-export SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter"                  # SDNC truststore password
-SDNC_USER="admin"                                               # SDNC username
-SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"          # SNDC PWD
-SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"             # Base url path for SNDC API
-SDNC_ALIVE_URL="/apidoc/explorer/"                              # Base url path for SNDC API docs (for alive check)
-SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"           # Path to karaf log
+SDNC_APP_NAME="a1controller"                             # Name of the SNDC A1 Controller container
+SDNC_DISPLAY_NAME="SDNC A1 Controller"
+SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
+SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
+SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
+SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
+SDNC_DB_APP_NAME="sdncdb"                                # Name of the SDNC DB container
+SDNC_A1_TRUSTSTORE_PASSWORD="a1adapter"                  # SDNC truststore password
+SDNC_USER="admin"                                        # SDNC username
+SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"   # SNDC PWD
+SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"      # Base url path for SNDC API
+SDNC_ALIVE_URL="/apidoc/explorer/"                       # Base url path for SNDC API docs (for alive check)
+SDNC_COMPOSE_DIR="sdnc"
+SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 
-export RAPP_CAT_APP_NAME="rapp-catalogue"                      # Name for the RAPP Catalogue
-export RAPP_CAT_EXTERNAL_PORT=8680                             # RAPP Catalogue container external port (host -> container)
-export RAPP_CAT_INTERNAL_PORT=8080                             # RAPP Catalogue container internal port (container -> container)
-export RAPP_CAT_EXTERNAL_SECURE_PORT=8633                      # RAPP Catalogue container external secure port (host -> container)
-export RAPP_CAT_INTERNAL_SECURE_PORT=8433                      # RAPP Catalogue container internal secure port (container -> container)
+RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
+RAPP_CAT_DISPLAY_NAME="RAPP Catalogue Service"
+RAPP_CAT_EXTERNAL_PORT=8680                              # RAPP Catalogue container external port (host -> container)
+RAPP_CAT_INTERNAL_PORT=8080                              # RAPP Catalogue container internal port (container -> container)
+RAPP_CAT_EXTERNAL_SECURE_PORT=8633                       # RAPP Catalogue container external secure port (host -> container)
+RAPP_CAT_INTERNAL_SECURE_PORT=8433                       # RAPP Catalogue container internal secure port (container -> container)
+RAPP_CAT_ALIVE_URL="/services"                           # Base path for alive check
+RAPP_CAT_COMPOSE_DIR="rapp_catalogue"                    # Dir in simulator_group for docker-compose
 
-export CONTROL_PANEL_APP_NAME="control-panel"                   # Name of the Control Panel container
-export CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-export CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"         # Path the application log in the Control Panel container
+CONTROL_PANEL_APP_NAME="controlpanel"                    # Name of the Control Panel container
+CONTROL_PANEL_DISPLAY_NAME="Non-RT RIC Control Panel"
+CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container internal port (container -> container)
+CONTROL_PANEL_EXTERNAL_SECURE_PORT=8880                  # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_SECURE_PORT=8082                  # Control Panel container intternal port (container -> container)
+CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"  # Path the application log in the Control Panel container
+CONTROL_PANEL_ALIVE_URL="/"                              # Base path for alive check
+CONTROL_PANEL_COMPOSE_DIR="control_panel"                # Dir in simulator_group for docker-compose
+CONTROL_PANEL_CONFIG_MOUNT_PATH=/maven                   # Container internal path for config
+CONTROL_PANEL_CONFIG_FILE=application.properties         # Config file name
 
+HTTP_PROXY_APP_NAME="httpproxy"                          # Name of the Http Proxy container
+HTTP_PROXY_DISPLAY_NAME="Http Proxy"
+HTTP_PROXY_EXTERNAL_PORT=8780                            # Http Proxy container external port (host -> container)
+HTTP_PROXY_INTERNAL_PORT=8080                            # Http Proxy container internal port (container -> container)
+HTTP_PROXY_WEB_EXTERNAL_PORT=8781                        # Http Proxy container external port (host -> container)
+HTTP_PROXY_WEB_INTERNAL_PORT=8081                        # Http Proxy container internal port (container -> container)
+HTTP_PROXY_CONFIG_PORT=0                                 # Port number for proxy config, will be set if proxy is started
+HTTP_PROXY_CONFIG_HOST_NAME=""                           # Proxy host, will be set if proxy is started
+HTTP_PROXY_ALIVE_URL="/"                                 # Base path for alive check
+HTTP_PROXY_COMPOSE_DIR="httpproxy"                       # Dir in simulator_group for docker-compose
 
 ########################################
 # Setting for common curl-base function
 ########################################
 
-UUID=""                                                         # UUID used as prefix to the policy id to simulate a real UUID
-                                                                # Testscript need to set the UUID to use other this empty prefix is used
-
-RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT         # Base url to the Agent NB REST interface
-RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface
-DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT                  # Base url to the Dmaap adapter, http
-DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ADAPTER=$RESTBASE                                               # Adapter holds the address the agent R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the two base url when needed
-                                                                # The values of this var is swiched between the four base url when needed
-
-ECS_RESTBASE="http://localhost:"$ECS_EXTERNAL_PORT              # Base url to the ECS NB REST interface
-ECS_RESTBASE_SECURE="https://localhost:"$ECS_EXTERNAL_SECURE_PORT # Base url to the secure ECS NB REST interface
-ECS_DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT              # Base url to the Dmaap adapter, http
-ECS_DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ECS_ADAPTER=$ECS_RESTBASE                                       # Adapter holds the address the ECS R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-
-CR_RESTBASE="http://localhost:"$CR_EXTERNAL_PORT                # Base url to the Callback receiver REST interface
-CR_RESTBASE_SECURE="https://localhost:"$CR_EXTERNAL_SECURE_PORT # Base url to the secure Callback receiver REST interface
-CR_ADAPTER=$CR_RESTBASE                                         # Adapter holds the address the CR admin interface (REST only)
-                                                                # The values of this var is swiched between the two base url when needed
-
-RC_RESTBASE="http://localhost:"$RAPP_CAT_EXTERNAL_PORT          # Base url to the RAPP Catalogue REST interface
-RC_RESTBASE_SECURE="https://localhost:"$RAPP_CAT_EXTERNAL_SECURE_PORT # Base url to the secure RAPP Catalogue REST interface
-RC_ADAPTER=$RC_RESTBASE                                         # Adapter holds the address the RAPP Catalogue interface
\ No newline at end of file
+UUID=""                                                  # UUID used as prefix to the policy id to simulate a real UUID
+                                                         # Testscript need to set the UUID to use other this empty prefix is used
diff --git a/test/common/test_env-oran-cherry.sh b/test/common/test_env-oran-cherry.sh
index a0f8871..156600d 100755
--- a/test/common/test_env-oran-cherry.sh
+++ b/test/common/test_env-oran-cherry.sh
@@ -18,6 +18,7 @@
 #
 #Profile for ORAN Cherry
 TEST_ENV_PROFILE="ORAN-CHERRY"
+FLAVOUR="ORAN"
 
 ########################################
 ## Nexus repo settings
@@ -139,6 +140,25 @@
 PROD_STUB_IMAGE_TAG_LOCAL="latest"
 #No remote image for producer stub, local image always used
 
+#Http proxy remote image and tag
+HTTP_PROXY_IMAGE_BASE="mitmproxy/mitmproxy"
+HTTP_PROXY_IMAGE_TAG_REMOTE_PROXY="6.0.2"
+#No local image for Http proxy, remote image always used
+
+#ONAP Zookeeper remote image and tag
+ONAP_ZOOKEEPER_IMAGE_BASE="onap/dmaap/zookeeper"
+ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.0.3"
+#No local image for ONAP Zookeeper, remote image always used
+
+#ONAP Kafka remote image and tag
+ONAP_KAFKA_IMAGE_BASE="onap/dmaap/kafka111"
+ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.0.4"
+#No local image for ONAP Kafka, remote image always used
+
+#ONAP DMAAP-MR remote image and tag
+ONAP_DMAAPMR_IMAGE_BASE="onap/dmaap/dmaap-mr"
+ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.18"
+#No local image for ONAP DMAAP-MR, remote image always used
 
 # List of app short names produced by the project
 PROJECT_IMAGES_APP_NAMES="PA ECS CP SDNC RC RICSIM"
@@ -147,131 +167,186 @@
 ORAN_IMAGES_APP_NAMES=""  # Not used
 
 # List of app short names which images pulled from ONAP
-ONAP_IMAGES_APP_NAMES="CBS"
+ONAP_IMAGES_APP_NAMES="CBS DMAAPMR"
 
 
 ########################################
 # Detailed settings per app
 ########################################
 
-# Vars used by docker-compose need to be exported
+DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
 
-export DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
+KUBE_NONRTRIC_NAMESPACE="nonrtric"                       # Namespace for all nonrtric components
+KUBE_SIM_NAMESPACE="nonrtric-ft"                         # Namespace for simulators (except MR and RICSIM)
+KUBE_ONAP_NAMESPACE="onap"                               # Namespace for onap (only message router)
 
-export POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
-export POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
-export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
-export POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
-export POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
-export PMS_VERSION="V2"                                         # Tested version of northbound API
+POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
+POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
+POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
+POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
+POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
+PMS_VERSION="V2"                                         # Tested version of northbound API
+PMS_API_PREFIX=""                                        # api url prefix, only for V2
 
-export POLICY_AGENT_APP_NAME="policy-agent"                     # Name for Policy Agent container
-POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log"    # Path the application log in the Policy Agent container
-export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_APP_NAME="policymanagementservice"          # Name for Policy Agent container
+POLICY_AGENT_DISPLAY_NAME="Policy Management Service"
+POLICY_AGENT_HOST_MNT_DIR="./mnt"                        # Mounted dir, relative to compose file, on the host
+POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container
+POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_CONFIG_KEY="policy-agent"                   # Key for consul config
+POLICY_AGENT_PKG_NAME="org.oransc.policyagent"           # Java base package name
+POLICY_AGENT_ACTUATOR="/actuator/loggers/$POLICY_AGENT_PKG_NAME" # Url for trace/debug
+POLICY_AGENT_ALIVE_URL=$PMS_API_PREFIX"/v2/status"       # Base path for alive check
+POLICY_AGENT_COMPOSE_DIR="policy_agent"                  # Dir in simulator_group for docker-compose
+POLICY_AGENT_CONFIG_MOUNT_PATH="/opt/app/policy-agent/config" # Path in container for config file
+POLICY_AGENT_DATA_MOUNT_PATH="/opt/app/policy-agent/data" # Path in container for data file
+POLICY_AGENT_CONFIG_FILE="application.yaml"              # Container config file name
+POLICY_AGENT_DATA_FILE="application_configuration.json"  # Container data file name
 
-export ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
-export ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
-export ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
-export ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
+ECS_APP_NAME="enrichmentservice"                         # Name for ECS container
+ECS_DISPLAY_NAME="Enrichment Coordinator Service"        # Display name for ECS container
+ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
+ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
+ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
+ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
 
-export ECS_APP_NAME="ecs"                                       # Name for ECS container
 ECS_LOGPATH="/var/log/enrichment-coordinator-service/application.log" # Path the application log in the ECS container
-export ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
-export ECS_HOST_MNT_DIR="./mnt"                                 # Mounted dir, relative to compose file, on the host
-export ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
-
-export MR_EXTERNAL_PORT=3905                                    # MR stub container external port (host -> container)
-export MR_INTERNAL_PORT=3905                                    # MR stub container internal port (container -> container)
-export MR_EXTERNAL_SECURE_PORT=3906                             # MR stub container external secure port (host -> container)
-export MR_INTERNAL_SECURE_PORT=3906                             # MR stub container internal secure port (container -> container)
-export MR_APP_NAME="message-router"                             # Name for the MR
-export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
-export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
-
-export CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
-export CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
-export CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
-export CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
-export CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
-export CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
-
-export PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
-export PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
-export PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
-export PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
-export PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
-
-export CONSUL_HOST="consul-server"                              # Host name of consul
-export CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
-export CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
-export CONSUL_APP_NAME="polman-consul"                          # Name for consul container
-
-export CBS_APP_NAME="polman-cbs"                                # Name for CBS container
-export CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
-export CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
-export CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
-
-export RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
-                                                                # Note, a prefix is added to each container name by the .env file in the 'ric' dir
-RIC_SIM_PREFIX="ricsim"                                         # Prefix added to ric container name, added in the .env file in the 'ric' dir
-                                                                # This prefix can be changed from the command line
-export RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
-                                                                # (external ports allocated by docker)
-export RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
-                                                                # (external ports allocated by docker)
-
-export SDNC_APP_NAME="a1-controller"                            # Name of the SNDC A1 Controller container
-export SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
-export SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
-export SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
-export SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
-export SDNC_DB_APP_NAME="sdnc-db"                               # Name of the SDNC DB container
-export SDNC_A1_TRUSTSTORE_PASSWORD=""                           # SDNC truststore password
-SDNC_USER="admin"                                               # SDNC username
-SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"          # SNDC PWD
-SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"             # Base url path for SNDC API
-SDNC_ALIVE_URL="/apidoc/explorer/"                              # Base url path for SNDC API docs (for alive check)
-SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"           # Path to karaf log
-
-export RAPP_CAT_APP_NAME="rapp-catalogue"                      # Name for the RAPP Catalogue
-export RAPP_CAT_EXTERNAL_PORT=8680                             # RAPP Catalogue container external port (host -> container)
-export RAPP_CAT_INTERNAL_PORT=8080                             # RAPP Catalogue container internal port (container -> container)
-export RAPP_CAT_EXTERNAL_SECURE_PORT=8633                      # RAPP Catalogue container external secure port (host -> container)
-export RAPP_CAT_INTERNAL_SECURE_PORT=8433                      # RAPP Catalogue container internal secure port (container -> container)
+ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
+ECS_HOST_MNT_DIR="./mnt/db"                              # Mounted dir, relative to compose file, on the host
+ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
+ECS_ACTUATOR="/actuator/loggers/org.oransc.enrichment"   # Url for trace/debug
+ECS_CERT_MOUNT_DIR="./cert"
+ECS_ALIVE_URL="/status"                                  # Base path for alive check
+ECS_COMPOSE_DIR="ecs"                                    # Dir in simulator_group for docker-compose
+ECS_CONFIG_MOUNT_PATH=/opt/app/enrichment-coordinator-service/config # Internal container path for configuration
+ECS_CONFIG_FILE=application.yaml                         # Config file name
 
 
-export CONTROL_PANEL_APP_NAME="control-panel"                   # Name of the Control Panel container
-export CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-export CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"         # Path the application log in the Control Panel container
+MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
+MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
+MR_DMAAP_DISPLAY_NAME="DMAAP Message Router"
+MR_STUB_DISPLAY_NAME="Message Router stub"
+MR_STUB_CERT_MOUNT_DIR="./cert"
+MR_EXTERNAL_PORT=3904                                    # MR dmaap/stub container external port
+MR_INTERNAL_PORT=3904                                    # MR dmaap/stub container internal port
+MR_EXTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container external secure port
+MR_INTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container internal secure port
+MR_DMAAP_LOCALHOST_PORT=3904                             # MR stub container external port (host -> container)
+MR_STUB_LOCALHOST_PORT=3908                              # MR stub container external port (host -> container)
+MR_DMAAP_LOCALHOST_SECURE_PORT=3905                      # MR stub container internal port (container -> container)
+MR_STUB_LOCALHOST_SECURE_PORT=3909                       # MR stub container external secure port (host -> container)
+MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
+MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+MR_READ_TOPIC="A1-POLICY-AGENT-READ"                     # Read topic
+MR_WRITE_TOPIC="A1-POLICY-AGENT-WRITE"                   # Write topic
+MR_STUB_ALIVE_URL="/"                                    # Base path for mr stub alive check
+MR_DMAAP_ALIVE_URL="/topics"                             # Base path for dmaap-mr alive check
+MR_DMAAP_COMPOSE_DIR="dmaapmr"                           # Dir in simulator_group for dmaap mr for - docker-compose
+MR_STUB_COMPOSE_DIR="mrstub"                             # Dir in simulator_group for mr stub for - docker-compose
+MR_KAFKA_APP_NAME="kafka"                                # Kafka app name
+MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 
 
+CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
+CR_DISPLAY_NAME="Callback Reciever"
+CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
+CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
+CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
+CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
+CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
+CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_COMPOSE_DIR="cr"                                      # Dir in simulator_group for docker-compose
+
+PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
+PROD_STUB_DISPLAY_NAME="Producer Stub"
+PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
+PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
+PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
+PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
+PROD_STUB_JOB_CALLBACK="/callbacks/job"                  # Callback path for job create/update/delete
+PROD_STUB_SUPERVISION_CALLBACK="/callbacks/supervision"  # Callback path for producre supervision
+PROD_STUB_ALIVE_URL="/"                                  # Base path for alive check
+PROD_STUB_COMPOSE_DIR="prodstub"                         # Dir in simulator_group for docker-compose
+
+CONSUL_HOST="consul-server"                              # Host name of consul
+CONSUL_DISPLAY_NAME="Consul"
+CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
+CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
+CONSUL_APP_NAME="polman-consul"                          # Name for consul container
+CONSUL_ALIVE_URL="/ui/dc1/kv"                            # Base path for alive check
+CONSUL_CBS_COMPOSE_DIR="consul_cbs"                      # Dir in simulator group for docker compose
+
+CBS_APP_NAME="polman-cbs"                                # Name for CBS container
+CBS_DISPLAY_NAME="Config Binding Service"
+CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
+CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
+CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
+CBS_ALIVE_URL="/healthcheck"                             # Base path for alive check
+
+RIC_SIM_DISPLAY_NAME="Near-RT RIC A1 Simulator"
+RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
+                                                         # Note, a prefix is added to each container name by the .env file in the 'ric' dir
+RIC_SIM_PREFIX="ricsim"                                  # Prefix added to ric container name, added in the .env file in the 'ric' dir
+                                                         # This prefix can be changed from the command line
+RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_CERT_MOUNT_DIR="./cert"
+
+RIC_SIM_COMPOSE_DIR="ric"                                # Dir in simulator group for docker compose
+RIC_SIM_ALIVE_URL="/"                                    # Base path for alive check
+
+SDNC_APP_NAME="a1controller"                             # Name of the SNDC A1 Controller container
+SDNC_DISPLAY_NAME="SDNC A1 Controller"
+SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
+SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
+SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
+SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
+SDNC_DB_APP_NAME="sdncdb"                                # Name of the SDNC DB container
+SDNC_A1_TRUSTSTORE_PASSWORD=""                           # SDNC truststore password
+SDNC_USER="admin"                                        # SDNC username
+SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"   # SNDC PWD
+SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"      # Base url path for SNDC API
+SDNC_ALIVE_URL="/apidoc/explorer/"                       # Base url path for SNDC API docs (for alive check)
+SDNC_COMPOSE_DIR="sdnc"                                  # Dir in simulator_group for docker-compose
+SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
+
+RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
+RAPP_CAT_DISPLAY_NAME="RAPP Catalogue Service"
+RAPP_CAT_EXTERNAL_PORT=8680                              # RAPP Catalogue container external port (host -> container)
+RAPP_CAT_INTERNAL_PORT=8080                              # RAPP Catalogue container internal port (container -> container)
+RAPP_CAT_EXTERNAL_SECURE_PORT=8633                       # RAPP Catalogue container external secure port (host -> container)
+RAPP_CAT_INTERNAL_SECURE_PORT=8433                       # RAPP Catalogue container internal secure port (container -> container)
+RAPP_CAT_ALIVE_URL="/services"                           # Base path for alive check
+RAPP_CAT_COMPOSE_DIR="rapp_catalogue"                    # Dir in simulator_group for docker-compose
+
+CONTROL_PANEL_APP_NAME="controlpanel"                    # Name of the Control Panel container
+CONTROL_PANEL_DISPLAY_NAME="Non-RT RIC Control Panel"
+CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container internal port (container -> container)
+CONTROL_PANEL_EXTERNAL_SECURE_PORT=8880                  # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_SECURE_PORT=8082                  # Control Panel container internal port (container -> container)
+CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"  # Path the application log in the Control Panel container
+CONTROL_PANEL_ALIVE_URL="/"                              # Base path for alive check
+CONTROL_PANEL_COMPOSE_DIR="control_panel"                # Dir in simulator_group for docker-compose
+CONTROL_PANEL_CONFIG_MOUNT_PATH=/maven                   # Container internal path for config
+CONTROL_PANEL_CONFIG_FILE=application.properties         # Config file name
+
+HTTP_PROXY_APP_NAME="httpproxy"                          # Name of the Http Proxy container
+HTTP_PROXY_DISPLAY_NAME="Http Proxy"
+HTTP_PROXY_EXTERNAL_PORT=8780                            # Http Proxy container external port (host -> container)
+HTTP_PROXY_INTERNAL_PORT=8080                            # Http Proxy container internal port (container -> container)
+HTTP_PROXY_WEB_EXTERNAL_PORT=8781                        # Http Proxy container external port (host -> container)
+HTTP_PROXY_WEB_INTERNAL_PORT=8081                        # Http Proxy container internal port (container -> container)
+HTTP_PROXY_CONFIG_PORT=0                                 # Port number for proxy config, will be set if proxy is started
+HTTP_PROXY_CONFIG_HOST_NAME=""                           # Proxy host, will be set if proxy is started
+HTTP_PROXY_ALIVE_URL="/"                                 # Base path for alive check
+HTTP_PROXY_COMPOSE_DIR="httpproxy"                       # Dir in simulator_group for docker-compose
+
 ########################################
 # Setting for common curl-base function
 ########################################
 
-UUID=""                                                         # UUID used as prefix to the policy id to simulate a real UUID
-                                                                # Testscript need to set the UUID otherwise this empty prefix is used
-
-RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT         # Base url to the Agent NB REST interface
-RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface
-DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT                  # Base url to the Dmaap adapter, http
-DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ADAPTER=$RESTBASE                                               # Adapter holds the address the agent R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-
-ECS_RESTBASE="http://localhost:"$ECS_EXTERNAL_PORT              # Base url to the ECS NB REST interface
-ECS_RESTBASE_SECURE="https://localhost:"$ECS_EXTERNAL_SECURE_PORT # Base url to the secure ECS NB REST interface
-ECS_DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT              # Base url to the Dmaap adapter, http
-ECS_DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ECS_ADAPTER=$ECS_RESTBASE                                       # Adapter holds the address the ECS R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-
-CR_RESTBASE="http://localhost:"$CR_EXTERNAL_PORT                # Base url to the Callback receiver REST interface
-CR_RESTBASE_SECURE="https://localhost:"$CR_EXTERNAL_SECURE_PORT # Base url to the secure Callback receiver REST interface
-CR_ADAPTER=$CR_RESTBASE                                         # Adapter holds the address the CR admin interface (REST only)
-                                                                # The values of this var is swiched between the two base url when needed
-
-RC_RESTBASE="http://localhost:"$RAPP_CAT_EXTERNAL_PORT          # Base url to the RAPP Catalogue REST interface
-RC_RESTBASE_SECURE="https://localhost:"$RAPP_CAT_EXTERNAL_SECURE_PORT # Base url to the secure RAPP Catalogue REST interface
-RC_ADAPTER=$RC_RESTBASE                                         # Adapter holds the address the RAPP Catalogue interface
\ No newline at end of file
+UUID=""                                                   # UUID used as prefix to the policy id to simulate a real UUID
+                                                          # Testscript need to set the UUID otherwise this empty prefix is used
diff --git a/test/common/test_env-oran-dawn.sh b/test/common/test_env-oran-dawn.sh
index 637e5c1..bd75908 100755
--- a/test/common/test_env-oran-dawn.sh
+++ b/test/common/test_env-oran-dawn.sh
@@ -18,6 +18,7 @@
 #
 #Profile for ORAN Cherry
 TEST_ENV_PROFILE="ORAN-DAWN"
+FLAVOUR="ORAN"
 
 ########################################
 ## Nexus repo settings
@@ -80,12 +81,19 @@
 CONTROL_PANEL_IMAGE_TAG_REMOTE_RELEASE="2.2.0"
 
 
-# SDNC A1 Controller image and tags
+# SDNC A1 Controller image and tags - still using cherry version, no new version for dawn
 SDNC_A1_CONTROLLER_IMAGE_BASE="o-ran-sc/nonrtric-a1-controller"
-SDNC_A1_CONTROLLER_IMAGE_TAG_LOCAL="2.1.0-SNAPSHOT"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_SNAPSHOT="2.1.0-SNAPSHOT"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE="2.1.0"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.1.0"
+SDNC_A1_CONTROLLER_IMAGE_TAG_LOCAL="2.0.1-SNAPSHOT"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_SNAPSHOT="2.0.1-SNAPSHOT"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE="2.0.1"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.0.1"
+
+# SDNC A1 Controller image and tags - intended versions for dawn - not yet present
+# SDNC_A1_CONTROLLER_IMAGE_BASE="o-ran-sc/nonrtric-a1-controller"
+# SDNC_A1_CONTROLLER_IMAGE_TAG_LOCAL="2.1.0-SNAPSHOT"
+# SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_SNAPSHOT="2.1.0-SNAPSHOT"
+# SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE="2.1.0"
+# SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.1.0"
 
 
 #SDNC DB remote image and tag
@@ -102,7 +110,7 @@
 RAPP_CAT_IMAGE_TAG_REMOTE_RELEASE="1.1.0"
 
 
-# Near RT RIC Simulator image and tags
+# Near RT RIC Simulator image and tags - same version as cherry
 RIC_SIM_IMAGE_BASE="o-ran-sc/a1-simulator"
 RIC_SIM_IMAGE_TAG_LOCAL="latest"
 RIC_SIM_IMAGE_TAG_REMOTE_SNAPSHOT="2.1.0-SNAPSHOT"
@@ -139,6 +147,25 @@
 PROD_STUB_IMAGE_TAG_LOCAL="latest"
 #No remote image for producer stub, local image always used
 
+#Http proxy remote image and tag
+HTTP_PROXY_IMAGE_BASE="mitmproxy/mitmproxy"
+HTTP_PROXY_IMAGE_TAG_REMOTE_PROXY="6.0.2"
+#No local image for SSDNC DB, remote image always used
+
+#ONAP Zookeeper remote image and tag
+ONAP_ZOOKEEPER_IMAGE_BASE="onap/dmaap/zookeeper"
+ONAP_ZOOKEEPER_IMAGE_TAG_REMOTE_RELEASE_ONAP="6.0.3"
+#No local image for ONAP Zookeeper, remote image always used
+
+#ONAP Kafka remote image and tag
+ONAP_KAFKA_IMAGE_BASE="onap/dmaap/kafka111"
+ONAP_KAFKA_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.0.4"
+#No local image for ONAP Kafka, remote image always used
+
+#ONAP DMAAP-MR remote image and tag
+ONAP_DMAAPMR_IMAGE_BASE="onap/dmaap/dmaap-mr"
+ONAP_DMAAPMR_IMAGE_TAG_REMOTE_RELEASE_ONAP="1.1.18"
+#No local image for ONAP DMAAP-MR, remote image always used
 
 # List of app short names produced by the project
 PROJECT_IMAGES_APP_NAMES="PA ECS CP SDNC RC RICSIM"
@@ -147,130 +174,186 @@
 ORAN_IMAGES_APP_NAMES=""  # Not used
 
 # List of app short names which images pulled from ONAP
-ONAP_IMAGES_APP_NAMES="CBS"
+ONAP_IMAGES_APP_NAMES="CBS DMAAPMR"
 
 
 ########################################
 # Detailed settings per app
 ########################################
 
-# Common env var for auto-test. Vars used by docker-compose need to be exported
-export DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
+DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
 
-export POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
-export POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
-export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
-export POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
-export POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
-export PMS_VERSION="V2"                                         # Tested version of northbound API
+KUBE_NONRTRIC_NAMESPACE="nonrtric"                       # Namespace for all nonrtric components
+KUBE_SIM_NAMESPACE="nonrtric-ft"                         # Namespace for simulators (except MR and RICSIM)
+KUBE_ONAP_NAMESPACE="onap"                               # Namespace for onap (only message router)
 
-export POLICY_AGENT_APP_NAME="policy-agent"                     # Name for Policy Agent container
-POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log"    # Path the application log in the Policy Agent container
-export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
+POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
+POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
+POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
+POLICY_AGENT_APIS="V1 V2"                                # Supported northbound api versions
+PMS_VERSION="V2"                                         # Tested version of northbound API
+PMS_API_PREFIX=""                                        # api url prefix, only for V2
 
-export ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
-export ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
-export ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
-export ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
+POLICY_AGENT_APP_NAME="policymanagementservice"          # Name for Policy Agent container
+POLICY_AGENT_DISPLAY_NAME="Policy Management Service"
+POLICY_AGENT_HOST_MNT_DIR="./mnt"                        # Mounted dir, relative to compose file, on the host
+POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log" # Path the application log in the Policy Agent container
+POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
+POLICY_AGENT_CONFIG_KEY="policy-agent"                   # Key for consul config
+POLICY_AGENT_PKG_NAME="org.oransc.policyagent"           # Java base package name
+POLICY_AGENT_ACTUATOR="/actuator/loggers/$POLICY_AGENT_PKG_NAME" # Url for trace/debug
+POLICY_AGENT_ALIVE_URL=$PMS_API_PREFIX"/v2/status"       # Base path for alive check
+POLICY_AGENT_COMPOSE_DIR="policy_agent"                  # Dir in simulator_group for docker-compose
+POLICY_AGENT_CONFIG_MOUNT_PATH="/opt/app/policy-agent/config" # Path in container for config file
+POLICY_AGENT_DATA_MOUNT_PATH="/opt/app/policy-agent/data" # Path in container for data file
+POLICY_AGENT_CONFIG_FILE="application.yaml"              # Container config file name
+POLICY_AGENT_DATA_FILE="application_configuration.json"  # Container data file name
 
-export ECS_APP_NAME="ecs"                                       # Name for ECS container
+ECS_APP_NAME="enrichmentservice"                         # Name for ECS container
+ECS_DISPLAY_NAME="Enrichment Coordinator Service"        # Display name for ECS container
+ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
+ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
+ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
+ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
+
 ECS_LOGPATH="/var/log/enrichment-coordinator-service/application.log" # Path the application log in the ECS container
-export ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
-export ECS_HOST_MNT_DIR="./mnt"                                 # Mounted dir, relative to compose file, on the host
-export ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
-
-export MR_EXTERNAL_PORT=3905                                    # MR stub container external port (host -> container)
-export MR_INTERNAL_PORT=3905                                    # MR stub container internal port (container -> container)
-export MR_EXTERNAL_SECURE_PORT=3906                             # MR stub container external secure port (host -> container)
-export MR_INTERNAL_SECURE_PORT=3906                             # MR stub container internal secure port (container -> container)
-export MR_APP_NAME="message-router"                             # Name for the MR
-export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
-export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
-
-export CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
-export CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
-export CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
-export CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
-export CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
-export CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
-
-export PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
-export PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
-export PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
-export PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
-export PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
-
-export CONSUL_HOST="consul-server"                              # Host name of consul
-export CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
-export CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
-export CONSUL_APP_NAME="polman-consul"                          # Name for consul container
-
-export CBS_APP_NAME="polman-cbs"                                # Name for CBS container
-export CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
-export CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
-export CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
-
-export RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
-                                                                # Note, a prefix is added to each container name by the .env file in the 'ric' dir
-RIC_SIM_PREFIX="ricsim"                                         # Prefix added to ric container name, added in the .env file in the 'ric' dir
-                                                                # This prefix can be changed from the command line
-export RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
-                                                                # (external ports allocated by docker)
-export RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
-                                                                # (external ports allocated by docker)
-
-export SDNC_APP_NAME="a1-controller"                            # Name of the SNDC A1 Controller container
-export SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
-export SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
-export SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
-export SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
-export SDNC_DB_APP_NAME="sdnc-db"                               # Name of the SDNC DB container
-export SDNC_A1_TRUSTSTORE_PASSWORD=""                           # SDNC truststore password
-SDNC_USER="admin"                                               # SDNC username
-SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"          # SNDC PWD
-SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"             # Base url path for SNDC API
-SDNC_ALIVE_URL="/apidoc/explorer/"                              # Base url path for SNDC API docs (for alive check)
-SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"           # Path to karaf log
-
-export RAPP_CAT_EXTERNAL_PORT=8680                             # RAPP Catalogue container external port (host -> container)
-export RAPP_CAT_INTERNAL_PORT=8080                             # RAPP Catalogue container internal port (container -> container)
-export RAPP_CAT_EXTERNAL_SECURE_PORT=8633                      # RAPP Catalogue container external secure port (host -> container)
-export RAPP_CAT_INTERNAL_SECURE_PORT=8433                      # RAPP Catalogue container internal secure port (container -> container)
-export RAPP_CAT_APP_NAME="rapp-catalogue"                      # Name for the RAPP Catalogue
+ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
+ECS_HOST_MNT_DIR="./mnt/db"                              # Mounted dir, relative to compose file, on the host
+ECS_CONTAINER_MNT_DIR="/var/enrichment-coordinator-service" # Mounted dir in the container
+ECS_ACTUATOR="/actuator/loggers/org.oransc.enrichment"   # Url for trace/debug
+ECS_CERT_MOUNT_DIR="./cert"
+ECS_ALIVE_URL="/status"                                  # Base path for alive check
+ECS_COMPOSE_DIR="ecs"                                    # Dir in simulator_group for docker-compose
+ECS_CONFIG_MOUNT_PATH=/opt/app/enrichment-coordinator-service/config # Internal container path for configuration
+ECS_CONFIG_FILE=application.yaml                         # Config file name
 
 
-export CONTROL_PANEL_APP_NAME="control-panel"                   # Name of the Control Panel container
-export CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-export CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"         # Path the application log in the Control Panel container
+MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
+MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
+MR_DMAAP_DISPLAY_NAME="DMAAP Message Router"
+MR_STUB_DISPLAY_NAME="Message Router stub"
+MR_STUB_CERT_MOUNT_DIR="./cert"
+MR_EXTERNAL_PORT=3904                                    # MR dmaap/stub container external port
+MR_INTERNAL_PORT=3904                                    # MR dmaap/stub container internal port
+MR_EXTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container external secure port
+MR_INTERNAL_SECURE_PORT=3905                             # MR dmaap/stub container internal secure port
+MR_DMAAP_LOCALHOST_PORT=3904                             # MR stub container external port (host -> container)
+MR_STUB_LOCALHOST_PORT=3908                              # MR stub container external port (host -> container)
+MR_DMAAP_LOCALHOST_SECURE_PORT=3905                      # MR stub container internal port (container -> container)
+MR_STUB_LOCALHOST_SECURE_PORT=3909                       # MR stub container external secure port (host -> container)
+MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
+MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
+MR_READ_TOPIC="A1-POLICY-AGENT-READ"                     # Read topic
+MR_WRITE_TOPIC="A1-POLICY-AGENT-WRITE"                   # Write topic
+MR_STUB_ALIVE_URL="/"                                    # Base path for mr stub alive check
+MR_DMAAP_ALIVE_URL="/topics"                             # Base path for dmaap-mr alive check
+MR_DMAAP_COMPOSE_DIR="dmaapmr"                           # Dir in simulator_group for dmaap mr for - docker-compose
+MR_STUB_COMPOSE_DIR="mrstub"                             # Dir in simulator_group for mr stub for - docker-compose
+MR_KAFKA_APP_NAME="kafka"                                # Kafka app name
+MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 
 
+CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
+CR_DISPLAY_NAME="RAPP Catalogue"
+CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
+CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
+CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
+CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
+CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
+CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_COMPOSE_DIR="cr"                                      # Dir in simulator_group for docker-compose
+
+PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
+PROD_STUB_DISPLAY_NAME="Producer Stub"
+PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
+PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
+PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
+PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
+PROD_STUB_JOB_CALLBACK="/callbacks/job"                  # Callback path for job create/update/delete
+PROD_STUB_SUPERVISION_CALLBACK="/callbacks/supervision"  # Callback path for producre supervision
+PROD_STUB_ALIVE_URL="/"                                  # Base path for alive check
+PROD_STUB_COMPOSE_DIR="prodstub"                         # Dir in simulator_group for docker-compose
+
+CONSUL_HOST="consul-server"                              # Host name of consul
+CONSUL_DISPLAY_NAME="Consul"
+CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
+CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
+CONSUL_APP_NAME="polman-consul"                          # Name for consul container
+CONSUL_ALIVE_URL="/ui/dc1/kv"                            # Base path for alive check
+CONSUL_CBS_COMPOSE_DIR="consul_cbs"                      # Dir in simulator group for docker compose
+
+CBS_APP_NAME="polman-cbs"                                # Name for CBS container
+CBS_DISPLAY_NAME="Config Binding Service"
+CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
+CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
+CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
+CBS_ALIVE_URL="/healthcheck"                             # Base path for alive check
+
+RIC_SIM_DISPLAY_NAME="Near-RT RIC A1 Simulator"
+RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
+                                                         # Note, a prefix is added to each container name by the .env file in the 'ric' dir
+RIC_SIM_PREFIX="ricsim"                                  # Prefix added to ric container name, added in the .env file in the 'ric' dir
+                                                         # This prefix can be changed from the command line
+RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
+                                                         # (external ports allocated by docker)
+RIC_SIM_CERT_MOUNT_DIR="./cert"
+
+RIC_SIM_COMPOSE_DIR="ric"                                # Dir in simulator group for docker compose
+RIC_SIM_ALIVE_URL="/"                                    # Base path for alive check
+
+SDNC_APP_NAME="a1controller"                             # Name of the SNDC A1 Controller container
+SDNC_DISPLAY_NAME="SDNC A1 Controller"
+SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
+SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
+SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
+SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
+SDNC_DB_APP_NAME="sdncdb"                                # Name of the SDNC DB container
+SDNC_A1_TRUSTSTORE_PASSWORD=""                           # SDNC truststore password
+SDNC_USER="admin"                                        # SDNC username
+SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"   # SNDC PWD
+SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"      # Base url path for SNDC API
+SDNC_ALIVE_URL="/apidoc/explorer/"                       # Base url path for SNDC API docs (for alive check)
+SDNC_COMPOSE_DIR="sdnc"                                  # Dir in simulator_group for docker-compose
+SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
+
+RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
+RAPP_CAT_DISPLAY_NAME="RAPP Catalogue"
+RAPP_CAT_EXTERNAL_PORT=8680                              # RAPP Catalogue container external port (host -> container)
+RAPP_CAT_INTERNAL_PORT=8080                              # RAPP Catalogue container internal port (container -> container)
+RAPP_CAT_EXTERNAL_SECURE_PORT=8633                       # RAPP Catalogue container external secure port (host -> container)
+RAPP_CAT_INTERNAL_SECURE_PORT=8433                       # RAPP Catalogue container internal secure port (container -> container)
+RAPP_CAT_ALIVE_URL="/services"                           # Base path for alive check
+RAPP_CAT_COMPOSE_DIR="rapp_catalogue"                    # Dir in simulator_group for docker-compose
+
+CONTROL_PANEL_APP_NAME="controlpanel"                    # Name of the Control Panel container
+CONTROL_PANEL_DISPLAY_NAME="Control Panel"
+CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container internal port (container -> container)
+CONTROL_PANEL_EXTERNAL_SECURE_PORT=8880                  # Control Panel container external port (host -> container)
+CONTROL_PANEL_INTERNAL_SECURE_PORT=8082                  # Control Panel container internal port (container -> container)
+CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"  # Path the application log in the Control Panel container
+CONTROL_PANEL_ALIVE_URL="/"                              # Base path for alive check
+CONTROL_PANEL_COMPOSE_DIR="control_panel"                # Dir in simulator_group for docker-compose
+CONTROL_PANEL_CONFIG_MOUNT_PATH=/maven                   # Container internal path for config
+CONTROL_PANEL_CONFIG_FILE=application.properties         # Config file name
+
+HTTP_PROXY_APP_NAME="httpproxy"                          # Name of the Http Proxy container
+HTTP_PROXY_DISPLAY_NAME="Http Proxy"
+HTTP_PROXY_EXTERNAL_PORT=8780                            # Http Proxy container external port (host -> container)
+HTTP_PROXY_INTERNAL_PORT=8080                            # Http Proxy container internal port (container -> container)
+HTTP_PROXY_WEB_EXTERNAL_PORT=8781                        # Http Proxy container external port (host -> container)
+HTTP_PROXY_WEB_INTERNAL_PORT=8081                        # Http Proxy container internal port (container -> container)
+HTTP_PROXY_CONFIG_PORT=0                                 # Port number for proxy config, will be set if proxy is started
+HTTP_PROXY_CONFIG_HOST_NAME=""                           # Proxy host, will be set if proxy is started
+HTTP_PROXY_ALIVE_URL="/"                                 # Base path for alive check
+HTTP_PROXY_COMPOSE_DIR="httpproxy"                       # Dir in simulator_group for docker-compose
+
 ########################################
 # Setting for common curl-base function
 ########################################
 
-UUID=""                                                         # UUID used as prefix to the policy id to simulate a real UUID
-                                                                # Testscript need to set the UUID otherwise this empty prefix is used
-
-RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT         # Base url to the Agent NB REST interface
-RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface
-DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT                  # Base url to the Dmaap adapter, http
-DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ADAPTER=$RESTBASE                                               # Adapter holds the address the agent R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-
-ECS_RESTBASE="http://localhost:"$ECS_EXTERNAL_PORT              # Base url to the ECS NB REST interface
-ECS_RESTBASE_SECURE="https://localhost:"$ECS_EXTERNAL_SECURE_PORT # Base url to the secure ECS NB REST interface
-ECS_DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT              # Base url to the Dmaap adapter, http
-ECS_DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ECS_ADAPTER=$ECS_RESTBASE                                       # Adapter holds the address the ECS R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-
-CR_RESTBASE="http://localhost:"$CR_EXTERNAL_PORT                # Base url to the Callback receiver REST interface
-CR_RESTBASE_SECURE="https://localhost:"$CR_EXTERNAL_SECURE_PORT # Base url to the secure Callback receiver REST interface
-CR_ADAPTER=$CR_RESTBASE                                         # Adapter holds the address the CR admin interface (REST only)
-                                                                # The values of this var is swiched between the two base url when needed
-
-RC_RESTBASE="http://localhost:"$RAPP_CAT_EXTERNAL_PORT          # Base url to the RAPP Catalogue REST interface
-RC_RESTBASE_SECURE="https://localhost:"$RAPP_CAT_EXTERNAL_SECURE_PORT # Base url to the secure RAPP Catalogue REST interface
-RC_ADAPTER=$RC_RESTBASE                                         # Adapter holds the address the RAPP Catalogue interface
\ No newline at end of file
+UUID=""                                                   # UUID used as prefix to the policy id to simulate a real UUID
+                                                          # Testscript need to set the UUID otherwise this empty prefix is used
diff --git a/test/common/test_env.sh b/test/common/test_env.sh
deleted file mode 100644
index a8e618f..0000000
--- a/test/common/test_env.sh
+++ /dev/null
@@ -1,189 +0,0 @@
-#!/bin/bash
-
-#  ============LICENSE_START===============================================
-#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
-#  ========================================================================
-#  Licensed 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.
-#  ============LICENSE_END=================================================
-#
-
-# Set up the image and tags for the test. Do not add the image tag to the image names.
-
-# NOTE: A env var for each container is created by the test script.
-# This var will point to the local or remote var depending on how
-# the test script is started. The name format is <container-name>_IMAGE, ie with 'LOCAL' or 'REMOTE'.
-
-# Local Policy Agent image and tag
-POLICY_AGENT_LOCAL_IMAGE="o-ran-sc/nonrtric-policy-agent"
-POLICY_AGENT_LOCAL_IMAGE_TAG="2.2.0-SNAPSHOT"
-# Remote Policy Agent image and tag
-POLICY_AGENT_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-policy-agent"
-POLICY_AGENT_REMOTE_IMAGE_TAG="2.2.0"
-
-# Local ECS image and tag
-ECS_LOCAL_IMAGE="o-ran-sc/nonrtric-enrichment-coordinator-service"
-ECS_LOCAL_IMAGE_TAG="1.1.0-SNAPSHOT"
-# Remote ECS image and tag
-ECS_REMOTE_IMAGE="nexus3.o-ran-sc.org:10003/o-ran-sc/nonrtric-enrichment-coordinator-service"
-ECS_REMOTE_IMAGE_TAG="1.1.0-SNAPSHOT"
-
-# Control Panel local image and tag
-CONTROL_PANEL_LOCAL_IMAGE="o-ran-sc/nonrtric-controlpanel"
-CONTROL_PANEL_LOCAL_IMAGE_TAG="2.2.0-SNAPSHOT"
-# Control Panel remote image and tag
-CONTROL_PANEL_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-controlpanel"
-CONTROL_PANEL_REMOTE_IMAGE_TAG="2.2.0"
-
-
-# SDNC A1 Controller local image and tag
-SDNC_A1_CONTROLLER_LOCAL_IMAGE="o-ran-sc/nonrtric-a1-controller"
-SDNC_A1_CONTROLLER_LOCAL_IMAGE_TAG="2.1.0-SNAPSHOT"
-# SDNC A1 Controller remote image and tag
-SDNC_A1_CONTROLLER_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/nonrtric-a1-controller"
-SDNC_A1_CONTROLLER_REMOTE_IMAGE_TAG="2.1.0"
-
-
-#SDNC DB remote image and tag
-SDNC_DB_REMOTE_IMAGE="mysql/mysql-server"
-SDNC_DB_REMOTE_IMAGE_TAG="5.6"
-#No local image for DB, remote image always used
-
-
-# Near RT RIC Simulator local image and tag
-RIC_SIM_LOCAL_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator"
-RIC_SIM_LOCAL_IMAGE_TAG="latest"
-# Near RT RIC Simulator remote image and tag
-RIC_SIM_REMOTE_IMAGE="nexus3.o-ran-sc.org:10004/o-ran-sc/a1-simulator"
-RIC_SIM_REMOTE_IMAGE_TAG="2.0.0"
-
-
-#Consul remote image and tag
-CONSUL_REMOTE_IMAGE="consul"
-CONSUL_REMOTE_IMAGE_TAG="1.7.2"
-#No local image for Consul, remote image always used
-
-
-#CBS remote image and tag
-CBS_REMOTE_IMAGE="nexus3.onap.org:10001/onap/org.onap.dcaegen2.platform.configbinding.app-app"
-CBS_REMOTE_IMAGE_TAG="2.3.0"
-#No local image for CBS, remote image always used
-
-
-#MR stub image and tag
-MRSTUB_LOCAL_IMAGE="mrstub"
-MRSTUB_LOCAL_IMAGE_TAG="latest"
-#No remote image for MR stub, local image always used
-
-#Callback receiver image and tag
-CR_LOCAL_IMAGE="callback-receiver"
-CR_LOCAL_IMAGE_TAG="latest"
-#No remote image for CR, local image always used
-
-#Producer stub image and tag
-PROD_STUB_LOCAL_IMAGE="producer-stub"
-PROD_STUB_LOCAL_IMAGE_TAG="latest"
-#No remote image for producer stub, local image always used
-
-# Common env var for auto-test. Vars used by docker-compose need to be exported
-export DOCKER_SIM_NWNAME="nonrtric-docker-net"                  # Name of docker private network
-
-export POLICY_AGENT_EXTERNAL_PORT=8081                          # Policy Agent container external port (host -> container)
-export POLICY_AGENT_INTERNAL_PORT=8081                          # Policy Agent container internal port (container -> container)
-export POLICY_AGENT_EXTERNAL_SECURE_PORT=8433                   # Policy Agent container external secure port (host -> container)
-export POLICY_AGENT_INTERNAL_SECURE_PORT=8433                   # Policy Agent container internal secure port (container -> container)
-
-export POLICY_AGENT_APP_NAME="policy-agent"                     # Name for Policy Agent container
-POLICY_AGENT_LOGPATH="/var/log/policy-agent/application.log"    # Path the application log in the Policy Agent container
-export POLICY_AGENT_APP_NAME_ALIAS="policy-agent-container"     # Alias name, name used by the control panel
-
-export ECS_EXTERNAL_PORT=8083                                   # ECS container external port (host -> container)
-export ECS_INTERNAL_PORT=8083                                   # ECS container internal port (container -> container)
-export ECS_EXTERNAL_SECURE_PORT=8434                            # ECS container external secure port (host -> container)
-export ECS_INTERNAL_SECURE_PORT=8434                            # ECS container internal secure port (container -> container)
-
-export ECS_APP_NAME="ecs"                                       # Name for ECS container
-ECS_LOGPATH="/var/log/enrichment-coordinator-service/application.log" # Path the application log in the ECS container
-export ECS_APP_NAME_ALIAS="enrichment-service-container"        # Alias name, name used by the control panel
-
-export MR_EXTERNAL_PORT=3905                                    # MR stub container external port (host -> container)
-export MR_INTERNAL_PORT=3905                                    # MR stub container internal port (container -> container)
-export MR_EXTERNAL_SECURE_PORT=3906                             # MR stub container external secure port (host -> container)
-export MR_INTERNAL_SECURE_PORT=3906                             # MR stub container internal secure port (container -> container)
-export MR_APP_NAME="message-router"                             # Name for the MR
-export MR_READ_URL="/events/A1-POLICY-AGENT-READ/users/policy-agent?timeout=15000&limit=100" # Path to read messages from MR
-export MR_WRITE_URL="/events/A1-POLICY-AGENT-WRITE"             # Path write messages to MR
-
-export CR_EXTERNAL_PORT=8090                                    # Callback receiver container external port (host -> container)
-export CR_INTERNAL_PORT=8090                                    # Callback receiver container internal port (container -> container)
-export CR_EXTERNAL_SECURE_PORT=8091                             # Callback receiver container external secure port (host -> container)
-export CR_INTERNAL_SECURE_PORT=8091                             # Callback receiver container internal secure port (container -> container)
-export CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
-
-export PROD_STUB_EXTERNAL_PORT=8092                             # Producer stub container external port (host -> container)
-export PROD_STUB_INTERNAL_PORT=8092                             # Producer stub container internal port (container -> container)
-export PROD_STUB_EXTERNAL_SECURE_PORT=8093                      # Producer stub container external secure port (host -> container)
-export PROD_STUB_INTERNAL_SECURE_PORT=8093                      # Producer stub container internal secure port (container -> container)
-export PROD_STUB_APP_NAME="producer-stub"                       # Name for the Producer stub
-
-export CONSUL_HOST="consul-server"                              # Host name of consul
-export CONSUL_EXTERNAL_PORT=8500                                # Consul container external port (host -> container)
-export CONSUL_INTERNAL_PORT=8500                                # Consul container internal port (container -> container)
-export CONSUL_APP_NAME="polman-consul"                          # Name for consul container
-
-export CBS_APP_NAME="polman-cbs"                                # Name for CBS container
-export CBS_EXTERNAL_PORT=10000                                  # CBS container external port (host -> container)
-export CBS_INTERNAL_PORT=10000                                  # CBS container internal port (container -> container)
-export CONFIG_BINDING_SERVICE="config-binding-service"          # Host name of CBS
-
-export RIC_SIM_BASE="g"                                         # Base name of the RIC Simulator container, shall be the group code
-                                                                # Note, a prefix is added to each container name by the .env file in the 'ric' dir
-RIC_SIM_PREFIX="ricsim"                                         # Prefix added to ric container name, added in the .env file in the 'ric' dir
-                                                                # This prefix can be changed from the command line
-export RIC_SIM_INTERNAL_PORT=8085                               # RIC Simulator container internal port (container -> container).
-                                                                # (external ports allocated by docker)
-export RIC_SIM_INTERNAL_SECURE_PORT=8185                        # RIC Simulator container internal secure port (container -> container).
-                                                                # (external ports allocated by docker)
-
-export SDNC_APP_NAME="a1-controller"                            # Name of the SNDC A1 Controller container
-export SDNC_EXTERNAL_PORT=8282                                  # SNDC A1 Controller container external port (host -> container)
-export SDNC_INTERNAL_PORT=8181                                  # SNDC A1 Controller container internal port (container -> container)
-export SDNC_EXTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container external securee port (host -> container)
-export SDNC_INTERNAL_SECURE_PORT=8443                           # SNDC A1 Controller container internal secure port (container -> container)
-export SDNC_DB_APP_NAME="sdnc-db"                               # Name of the SDNC DB container
-export SDNC_A1_TRUSTSTORE_PASSWORD=""                           # SDNC truststore password
-SDNC_USER="admin"                                               # SDNC username
-SDNC_PWD="Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"          # SNDC PWD
-SDNC_API_URL="/restconf/operations/A1-ADAPTER-API:"             # Base url path for SNDC API
-SDNC_ALIVE_URL="/apidoc/explorer/"                              # Base url path for SNDC API docs (for alive check)
-SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"           # Path to karaf log
-
-export CONTROL_PANEL_APP_NAME="control-panel"                   # Name of the Control Panel container
-export CONTROL_PANEL_EXTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-export CONTROL_PANEL_INTERNAL_PORT=8080                         # Control Panel container external port (host -> container)
-CONTROL_PANEL_LOGPATH="/logs/nonrtric-controlpanel.log"         # Path the application log in the Control Panel container
-
-UUID=""                                                         # UUID used as prefix to the policy id to simulate a real UUID
-                                                                # Testscript need to set the UUID otherwise this empty prefix is used
-
-RESTBASE="http://localhost:"$POLICY_AGENT_EXTERNAL_PORT         # Base url to the Agent NB REST interface
-RESTBASE_SECURE="https://localhost:"$POLICY_AGENT_EXTERNAL_SECURE_PORT # Base url to the secure Agent NB REST interface
-DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT                  # Base url to the Dmaap adapter, http
-DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ADAPTER=$RESTBASE                                               # Adapter holds the address the agent R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
-ECS_RESTBASE="http://localhost:"$ECS_EXTERNAL_PORT              # Base url to the ECS NB REST interface
-ECS_RESTBASE_SECURE="https://localhost:"$ECS_EXTERNAL_SECURE_PORT # Base url to the secure ECS NB REST interface
-ECS_DMAAPBASE="http://localhost:"$MR_EXTERNAL_PORT              # Base url to the Dmaap adapter, http
-ECS_DMAAPBASE_SECURE="https://localhost:"$MR_EXTERNAL_SECURE_PORT   # Base url to the Dmaap adapter, https
-ECS_ADAPTER=$ECS_RESTBASE                                       # Adapter holds the address the ECS R-APP interface (REST OR DMAAP)
-                                                                # The values of this var is swiched between the four base url when needed
diff --git a/test/common/testcase_common.sh b/test/common/testcase_common.sh
index cef8188..aee3af5 100755
--- a/test/common/testcase_common.sh
+++ b/test/common/testcase_common.sh
@@ -20,12 +20,13 @@
 # This is a script that contains all the common functions needed for auto test.
 # Specific test function are defined in scripts  XXXX_functions.sh
 
+. ../common/api_curl.sh
 
 # List of short names for all supported apps, including simulators etc
-APP_SHORT_NAMES="PA RICSIM SDNC CP ECS RC CBS CONSUL RC MRSTUB CR PRODSTUB"
+APP_SHORT_NAMES="PA RICSIM SDNC CP ECS RC CBS CONSUL RC MR DMAAPMR CR PRODSTUB"
 
 __print_args() {
-	echo "Args: remote|remote-remove --env-file <environment-filename> [release] [auto-clean] [--stop-at-error] "
+	echo "Args: remote|remote-remove docker|kube --env-file <environment-filename> [release] [auto-clean] [--stop-at-error] "
 	echo "      [--ricsim-prefix <prefix> ] [--use-local-image <app-nam>+]  [--use-snapshot-image <app-nam>+]"
 	echo "      [--use-staging-image <app-nam>+] [--use-release-image <app-nam>+]"
 }
@@ -41,6 +42,8 @@
 	echo ""
 	echo "remote                -  Use images from remote repositories. Can be overridden for individual images using the '--use_xxx' flags"
 	echo "remote-remove         -  Same as 'remote' but will also try to pull fresh images from remote repositories"
+	echo "docker                -  Test executed in docker environment"
+	echo "kube                  -  Test executed in kubernetes environment - requires an already started kubernetes environment"
 	echo "--env-file            -  The script will use the supplied file to read environment variables from"
 	echo "release               -  If this flag is given the script will use release version of the images"
 	echo "auto-clean            -  If the function 'auto_clean_containers' is present in the end of the test script then all containers will be stopped and removed. If 'auto-clean' is not given then the function has no effect."
@@ -55,8 +58,6 @@
 	exit 0
 fi
 
-
-
 # Create a test case id, ATC (Auto Test Case), from the name of the test case script.
 # FTC1.sh -> ATC == FTC1
 ATC=$(basename "${BASH_SOURCE[$i+1]}" .sh)
@@ -76,23 +77,6 @@
 EYELLOW="\033[0m"
 SAMELINE="\033[0K\r"
 
-tmp=$(which python3)
-if [ $? -ne 0 ] || [ -z tmp ]; then
-	echo -e $RED"python3 is required to run the test environment, pls install"$ERED
-	exit 1
-fi
-tmp=$(which docker)
-if [ $? -ne 0 ] || [ -z tmp ]; then
-	echo -e $RED"docker is required to run the test environment, pls install"$ERED
-	exit 1
-fi
-
-tmp=$(which docker-compose)
-if [ $? -ne 0 ] || [ -z tmp ]; then
-	echo -e $RED"docker-compose is required to run the test environment, pls install"$ERED
-	exit 1
-fi
-
 # Just resetting any previous echo formatting...
 echo -ne $EBOLD
 
@@ -101,17 +85,10 @@
 
 echo "Test case started as: ${BASH_SOURCE[$i+1]} "$@
 
-#Localhost constant
-LOCALHOST="http://localhost:"
-
-# Make curl retries towards ECS for http response codes set in this env var, space separated list of codes
-ECS_RETRY_CODES=""
-
-# Make curl retries towards the agent for http response codes set in this env var, space separated list of codes
-AGENT_RETRY_CODES=""
-
-# Var to contol if the agent runs in a container (normal = 0) or as application on the local machine ( = 1)
-AGENT_STAND_ALONE=0
+#Localhost constants
+LOCALHOST_NAME="localhost"
+LOCALHOST_HTTP="http://localhost"
+LOCALHOST_HTTPS="https://localhost"
 
 # Var to hold 'auto' in case containers shall be stopped when test case ends
 AUTO_CLEAN=""
@@ -174,7 +151,6 @@
 HTTPLOG=$PWD"/.httplog_"$ATC".txt"
 echo "" > $HTTPLOG
 
-
 # Create a log dir for the test case
 mkdir -p $TESTLOGS/$ATC
 
@@ -209,7 +185,6 @@
 DEVIATION_FILE=".tmp_deviations"
 rm $DEVIATION_FILE &> /dev/null
 
-
 # Trap "command not found" and make the script fail
 trap_fnc() {
 
@@ -329,6 +304,24 @@
 		shift;
 	fi
 fi
+if [ $paramerror -eq 0 ]; then
+	if [ "$1" != "docker" ] && [ "$1" != "kube" ]; then
+		paramerror=1
+		if [ -z "$paramerror_str" ]; then
+			paramerror_str="Second arg shall be 'docker' or 'kube'"
+		fi
+	else
+		if [ $1 == "docker" ]; then
+			RUNMODE="DOCKER"
+			echo "Setting RUNMODE=DOCKER"
+		fi
+		if [ $1 == "kube" ]; then
+			RUNMODE="KUBE"
+			echo "Setting RUNMODE=KUBE"
+		fi
+		shift;
+	fi
+fi
 foundparm=0
 while [ $paramerror -eq 0 ] && [ $foundparm -eq 0 ]; do
 	foundparm=1
@@ -359,7 +352,7 @@
 	if [ $paramerror -eq 0 ]; then
 		if [ "$1" == "--ricsim-prefix" ]; then
 			shift;
-			RIC_SIM_PREFIX=$1
+			TMP_RIC_SIM_PREFIX=$1  #RIC_SIM_PREFIX need to be updated after sourcing of the env file
 			if [ -z "$1" ]; then
 				paramerror=1
 				if [ -z "$paramerror_str" ]; then
@@ -513,9 +506,14 @@
 	if [ -z "$TEST_ENV_PROFILE" ] || [ -z "$SUPPORTED_PROFILES" ]; then
 		echo -e $YELLOW"This test case may not work with selected test env file. TEST_ENV_PROFILE is missing in test_env file or SUPPORTED_PROFILES is missing in test case file"$EYELLOW
 	else
-		if [[ "$SUPPORTED_PROFILES" == *"$TEST_ENV_PROFILE"* ]]; then
-			echo -e $GREEN"Test case support the selected test env file"$EGREEN
-		else
+		found_profile=0
+		for prof in $SUPPORTED_PROFILES; do
+			if [ "$TEST_ENV_PROFILE" == "$prof" ]; then
+				echo -e $GREEN"Test case supports the selected test env file"$EGREEN
+				found_profile=1
+			fi
+		done
+		if [ $found_profile -ne 1 ]; then
 			echo -e $RED"Test case does not support the selected test env file"$ERED
 			echo "Profile: "$TEST_ENV_PROFILE"     Supported profiles: "$SUPPORTED_PROFILES
 			echo -e $RED"Exiting...."$ERED
@@ -530,51 +528,56 @@
 	exit 1
 fi
 
+#This var need be preserved from the command line option, if set, when env var is sourced.
+if [ ! -z "$TMP_RIC_SIM_PREFIX" ]; then
+	RIC_SIM_PREFIX=$TMP_RIC_SIM_PREFIX
+fi
+
 if [ -z "$PROJECT_IMAGES_APP_NAMES" ]; then
-	echo -e $RED"Var PROJECT_IMAGES_APP_NAMES must be defined in: "$TEST_ENV_VAR_FILE$ERED$ERED
+	echo -e $RED"Var PROJECT_IMAGES_APP_NAMES must be defined in: "$TEST_ENV_VAR_FILE $ERED
 	exit 1
 fi
 
+if [[ $SUPPORTED_RUNMODES != *"$RUNMODE"* ]]; then
+	echo -e $RED"This test script does not support RUNMODE $RUNMODE"$ERED
+	echo "Supported RUNMODEs: "$SUPPORTED_RUNMODES
+	exit 1
+fi
 
-#Vars for A1 interface version and container count
-G1_A1_VERSION=""
-G2_A1_VERSION=""
-G3_A1_VERSION=""
-G4_A1_VERSION=""
-G5_A1_VERSION=""
-G1_COUNT=0
-G2_COUNT=0
-G3_COUNT=0
-G4_COUNT=0
-G5_COUNT=0
+# Choose list of included apps depending on run-mode
+if [ $RUNMODE == "KUBE" ]; then
+	INCLUDED_IMAGES=$KUBE_INCLUDED_IMAGES
+else
+	INCLUDED_IMAGES=$DOCKER_INCLUDED_IMAGES
+fi
 
-# Vars to switch between http and https. Extra curl flag needed for https
-export RIC_SIM_HTTPX="http"
-export RIC_SIM_LOCALHOST=$RIC_SIM_HTTPX"://localhost:"
-export RIC_SIM_PORT=$RIC_SIM_INTERNAL_PORT
-export RIC_SIM_CERT_MOUNT_DIR="./cert"
+# Check needed installed sw
+tmp=$(which python3)
+if [ $? -ne 0 ] || [ -z tmp ]; then
+	echo -e $RED"python3 is required to run the test environment, pls install"$ERED
+	exit 1
+fi
+tmp=$(which docker)
+if [ $? -ne 0 ] || [ -z tmp ]; then
+	echo -e $RED"docker is required to run the test environment, pls install"$ERED
+	exit 1
+fi
 
-export MR_HTTPX="http"
-export MR_PORT=$MR_INTERNAL_PORT
-export MR_LOCAL_PORT=$MR_EXTERNAL_PORT #When agent is running outside the docker net
+tmp=$(which docker-compose)
+if [ $? -ne 0 ] || [ -z tmp ]; then
+	if [ $RUNMODE == "DOCKER" ]; then
+		echo -e $RED"docker-compose is required to run the test environment, pls install"$ERED
+		exit 1
+	fi
+fi
 
-export CR_HTTPX="http"
-export CR_PORT=$CR_INTERNAL_PORT
-export CR_LOCAL_PORT=$CR_EXTERNAL_PORT #When CR is running outside the docker net
-export CR_PATH="$CR_HTTPX://$CR_APP_NAME:$CR_PORT$CR_APP_CALLBACK"
-
-export PROD_STUB_HTTPX="http"
-export PROD_STUB_PORT=$PROD_STUB_INTERNAL_PORT
-export PROD_STUB_LOCAL_PORT=$PROD_STUB_EXTERNAL_PORT #When Prodstub is running outside the docker net
-export PROD_STUB_LOCALHOST=$PROD_STUB_HTTPX"://localhost:"$PROD_STUB_LOCAL_PORT
-
-export SDNC_HTTPX="http"
-export SDNC_PORT=$SDNC_INTERNAL_PORT
-export SDNC_LOCAL_PORT=$SDNC_EXTERNAL_PORT #When agent is running outside the docker net
-
-export RAPP_CAT_HTTPX="http"
-export RAPP_CAT_PORT=$RAPP_CAT_INTERNAL_PORT
-export RAPP_CAT_LOCAL_PORT=$RAPP_CAT_EXTERNAL_PORT #When Rapp catalogue is running outside the docker net
+tmp=$(which kubectl)
+if [ $? -ne 0 ] || [ -z tmp ]; then
+	if [ $RUNMODE == "KUBE" ]; then
+		echo -e $RED"kubectl is required to run the test environment in kubernetes mode, pls install"$ERED
+		exit 1
+	fi
+fi
 
 echo -e $BOLD"Checking configured image setting for this test case"$EBOLD
 
@@ -648,7 +651,6 @@
 
 # Check if app uses image included in this test run
 # Returns 0 if image is included, 1 if not
-# Possible IDs for image inclusion: CBS, CONSUL, CP, CR, ECS, MR, PA, PRODSTUB, RICSIM, SDNC
 __check_included_image() {
 	for im in $INCLUDED_IMAGES; do
 		if [ "$1" == "$im" ]; then
@@ -658,6 +660,18 @@
 	return 1
 }
 
+# Check if app is included in the prestarted set of apps
+# Returns 0 if image is included, 1 if not
+__check_prestarted_image() {
+	for im in $KUBE_PRESTARTED_IMAGES; do
+		if [ "$1" == "$im" ]; then
+			return 0
+		fi
+	done
+	return 1
+}
+
+# Check if an app shall use a local image, based on the cmd parameters
 __check_image_local_override() {
 	for im in $USE_LOCAL_IMAGES; do
 		if [ "$1" == "$im" ]; then
@@ -740,60 +754,106 @@
 echo ""
 
 #Agent image
-IMAGE_SUFFIX=$(__check_image_override 'PA')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for PA."$ERED
-	((IMAGE_ERR++))
+__check_included_image 'PA'
+	if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'PA')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for PA."$ERED
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " Policy Agent" "POLICY_AGENT_IMAGE" "POLICY_AGENT_IMAGE_BASE" "POLICY_AGENT_IMAGE_TAG" $IMAGE_SUFFIX PA
 fi
-__check_and_create_image_var " Policy Agent" "POLICY_AGENT_IMAGE" "POLICY_AGENT_IMAGE_BASE" "POLICY_AGENT_IMAGE_TAG" $IMAGE_SUFFIX PA
 
 #Remote Control Panel image
-IMAGE_SUFFIX=$(__check_image_override 'CP')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for CP."$ERED
-	((IMAGE_ERR++))
+__check_included_image 'CP'
+if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'CP')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for CP."$ERED
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " Control Panel" "CONTROL_PANEL_IMAGE" "CONTROL_PANEL_IMAGE_BASE" "CONTROL_PANEL_IMAGE_TAG" $IMAGE_SUFFIX CP
 fi
-__check_and_create_image_var " Control Panel" "CONTROL_PANEL_IMAGE" "CONTROL_PANEL_IMAGE_BASE" "CONTROL_PANEL_IMAGE_TAG" $IMAGE_SUFFIX CP
 
 #Remote SDNC image
-IMAGE_SUFFIX=$(__check_image_override 'SDNC')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for SDNC."$ERED
-	((IMAGE_ERR++))
+__check_included_image 'SDNC'
+if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'SDNC')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for SDNC."$ERED
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " SDNC A1 Controller" "SDNC_A1_CONTROLLER_IMAGE" "SDNC_A1_CONTROLLER_IMAGE_BASE" "SDNC_A1_CONTROLLER_IMAGE_TAG" $IMAGE_SUFFIX SDNC
 fi
-__check_and_create_image_var " SDNC A1 Controller" "SDNC_A1_CONTROLLER_IMAGE" "SDNC_A1_CONTROLLER_IMAGE_BASE" "SDNC_A1_CONTROLLER_IMAGE_TAG" $IMAGE_SUFFIX SDNC
 
 #Remote ric sim image
-IMAGE_SUFFIX=$(__check_image_override 'RICSIM')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for RICSIM."$ERED
-	((IMAGE_ERR++))
+__check_included_image 'RICSIM'
+if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'RICSIM')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for RICSIM."$ERED
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " RIC Simulator" "RIC_SIM_IMAGE" "RIC_SIM_IMAGE_BASE" "RIC_SIM_IMAGE_TAG" $IMAGE_SUFFIX RICSIM
 fi
-__check_and_create_image_var " RIC Simulator" "RIC_SIM_IMAGE" "RIC_SIM_IMAGE_BASE" "RIC_SIM_IMAGE_TAG" $IMAGE_SUFFIX RICSIM
 
 #Remote ecs image
-IMAGE_SUFFIX=$(__check_image_override 'ECS')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for ECS."$EREDs
-	((IMAGE_ERR++))
+__check_included_image 'ECS'
+if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'ECS')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for ECS."$EREDs
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " ECS" "ECS_IMAGE" "ECS_IMAGE_BASE" "ECS_IMAGE_TAG" $IMAGE_SUFFIX ECS
 fi
-__check_and_create_image_var " ECS" "ECS_IMAGE" "ECS_IMAGE_BASE" "ECS_IMAGE_TAG" $IMAGE_SUFFIX ECS
 
 #Remote rc image
-IMAGE_SUFFIX=$(__check_image_override 'RC')
-if [ $? -ne 0 ]; then
-	echo -e $RED"Image setting from cmd line not consistent for RC."$ERED
-	((IMAGE_ERR++))
+__check_included_image 'RC'
+if [ $? -eq 0 ]; then
+	IMAGE_SUFFIX=$(__check_image_override 'RC')
+	if [ $? -ne 0 ]; then
+		echo -e $RED"Image setting from cmd line not consistent for RC."$ERED
+		((IMAGE_ERR++))
+	fi
+	__check_and_create_image_var " RC" "RAPP_CAT_IMAGE" "RAPP_CAT_IMAGE_BASE" "RAPP_CAT_IMAGE_TAG" $IMAGE_SUFFIX RC
 fi
-__check_and_create_image_var " RC" "RAPP_CAT_IMAGE" "RAPP_CAT_IMAGE_BASE" "RAPP_CAT_IMAGE_TAG" $IMAGE_SUFFIX RC
 
 # These images are not built as part of this project official images, just check that env vars are set correctly
-__check_and_create_image_var " Message Router"    "MRSTUB_IMAGE"    "MRSTUB_IMAGE_BASE"    "MRSTUB_IMAGE_TAG"    LOCAL               MR
-__check_and_create_image_var " Callback Receiver" "CR_IMAGE"        "CR_IMAGE_BASE"        "CR_IMAGE_TAG"        LOCAL               CR
-__check_and_create_image_var " Producer stub"     "PROD_STUB_IMAGE" "PROD_STUB_IMAGE_BASE" "PROD_STUB_IMAGE_TAG" LOCAL               PRODSTUB
-__check_and_create_image_var " Consul"            "CONSUL_IMAGE"    "CONSUL_IMAGE_BASE"    "CONSUL_IMAGE_TAG"    REMOTE_PROXY        CONSUL
-__check_and_create_image_var " CBS"               "CBS_IMAGE"       "CBS_IMAGE_BASE"       "CBS_IMAGE_TAG"       REMOTE_RELEASE_ONAP CBS
-__check_and_create_image_var " SDNC DB"           "SDNC_DB_IMAGE"   "SDNC_DB_IMAGE_BASE"   "SDNC_DB_IMAGE_TAG"   REMOTE_PROXY        SDNC #Uses sdnc app name
+__check_included_image 'MR'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " Message Router stub"    "MRSTUB_IMAGE"    "MRSTUB_IMAGE_BASE"    "MRSTUB_IMAGE_TAG"    LOCAL               MR
+fi
+__check_included_image 'DMAAPMR'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " DMAAP Message Router"    "ONAP_DMAAPMR_IMAGE"   "ONAP_DMAAPMR_IMAGE_BASE"    "ONAP_DMAAPMR_IMAGE_TAG"    REMOTE_RELEASE_ONAP               DMAAPMR
+	__check_and_create_image_var " ZooKeeper"   "ONAP_ZOOKEEPER_IMAGE" "ONAP_ZOOKEEPER_IMAGE_BASE"  "ONAP_ZOOKEEPER_IMAGE_TAG"  REMOTE_RELEASE_ONAP               DMAAPMR
+	__check_and_create_image_var " Kafka"       "ONAP_KAFKA_IMAGE"     "ONAP_KAFKA_IMAGE_BASE"      "ONAP_KAFKA_IMAGE_TAG"      REMOTE_RELEASE_ONAP               DMAAPMR
+fi
+__check_included_image 'CR'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " Callback Receiver" "CR_IMAGE"        "CR_IMAGE_BASE"        "CR_IMAGE_TAG"        LOCAL               CR
+fi
+__check_included_image 'PRODSTUB'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " Producer stub"     "PROD_STUB_IMAGE" "PROD_STUB_IMAGE_BASE" "PROD_STUB_IMAGE_TAG" LOCAL               PRODSTUB
+fi
+__check_included_image 'CONSUL'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " Consul"            "CONSUL_IMAGE"    "CONSUL_IMAGE_BASE"    "CONSUL_IMAGE_TAG"    REMOTE_PROXY        CONSUL
+fi
+__check_included_image 'CBS'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " CBS"               "CBS_IMAGE"       "CBS_IMAGE_BASE"       "CBS_IMAGE_TAG"       REMOTE_RELEASE_ONAP CBS
+fi
+__check_included_image 'SDNC'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " SDNC DB"           "SDNC_DB_IMAGE"   "SDNC_DB_IMAGE_BASE"   "SDNC_DB_IMAGE_TAG"   REMOTE_PROXY        SDNC #Uses sdnc app name
+fi
+__check_included_image 'HTTPPROXY'
+if [ $? -eq 0 ]; then
+	__check_and_create_image_var " Http Proxy"        "HTTP_PROXY_IMAGE" "HTTP_PROXY_IMAGE_BASE" "HTTP_PROXY_IMAGE_TAG" REMOTE_PROXY HTTPPROXY
+fi
 
 #Errors in image setting - exit
 if [ $IMAGE_ERR -ne 0 ]; then
@@ -848,60 +908,39 @@
 		fi
 	elif [ $1 == "remote" ] || [ $1 == "remote-remove" ]; then
 		if [ $1 == "remote-remove" ]; then
-			echo -ne "  Attempt to stop and remove container(s), if running - ${SAMELINE}"
-			tmp="$(docker ps -aq --filter name=${3})"
-			if [ $? -eq 0 ] && [ ! -z "$tmp" ]; then
-				docker stop $tmp &> ./tmp/.dockererr
-				if [ $? -ne 0 ]; then
-					((IMAGE_ERR++))
-					echo ""
-					echo -e $RED"  Container(s) could not be stopped - try manual stopping the container(s)"$ERED
-					cat ./tmp/.dockererr
-					return 1
+			if [ $RUNMODE == "DOCKER" ]; then
+				echo -ne "  Attempt to stop and remove container(s), if running - ${SAMELINE}"
+				tmp="$(docker ps -aq --filter name=${3})"
+				if [ $? -eq 0 ] && [ ! -z "$tmp" ]; then
+					docker stop $tmp &> ./tmp/.dockererr
+					if [ $? -ne 0 ]; then
+						((IMAGE_ERR++))
+						echo ""
+						echo -e $RED"  Container(s) could not be stopped - try manual stopping the container(s)"$ERED
+						cat ./tmp/.dockererr
+						return 1
+					fi
 				fi
-			fi
-			echo -ne "  Attempt to stop and remove container(s), if running - "$GREEN"stopped"$EGREEN"${SAMELINE}"
-			tmp="$(docker ps -aq --filter name=${3})" &> /dev/null
-			if [ $? -eq 0 ] && [ ! -z "$tmp" ]; then
-				docker rm $tmp &> ./tmp/.dockererr
-				if [ $? -ne 0 ]; then
-					((IMAGE_ERR++))
-					echo ""
-					echo -e $RED"  Container(s) could not be removed - try manual removal of the container(s)"$ERED
-					cat ./tmp/.dockererr
-					return 1
+				echo -ne "  Attempt to stop and remove container(s), if running - "$GREEN"stopped"$EGREEN"${SAMELINE}"
+				tmp="$(docker ps -aq --filter name=${3})" &> /dev/null
+				if [ $? -eq 0 ] && [ ! -z "$tmp" ]; then
+					docker rm $tmp &> ./tmp/.dockererr
+					if [ $? -ne 0 ]; then
+						((IMAGE_ERR++))
+						echo ""
+						echo -e $RED"  Container(s) could not be removed - try manual removal of the container(s)"$ERED
+						cat ./tmp/.dockererr
+						return 1
+					fi
 				fi
+				echo -e "  Attempt to stop and remove container(s), if running - "$GREEN"stopped removed"$EGREEN
+				tmp_im=""
+			else
+				tmp_im=""
 			fi
-			echo -e "  Attempt to stop and remove container(s), if running - "$GREEN"stopped removed"$EGREEN
-			# echo -ne "  Removing image - ${SAMELINE}"
-			# tmp="$(docker images -q ${4})" &> /dev/null
-			# if [ $? -eq 0 ] && [ ! -z "$tmp" ]; then
-			# 	docker rmi --force $4 &> ./tmp/.dockererr
-			# 	if [ $? -ne 0 ]; then
-			# 		((IMAGE_ERR++))
-			# 		echo ""
-			# 		echo -e $RED"  Image could not be removed - try manual removal of the image"$ERED
-			# 		cat ./tmp/.dockererr
-			# 		return 1
-			# 	fi
-			# 	echo -e "  Removing image - "$GREEN"removed"$EGREEN
-			# else
-			# 	echo -e "  Removing image - "$GREEN"image not in repository"$EGREEN
-			# fi
-			tmp_im=""
 		fi
 		if [ -z "$tmp_im" ]; then
 			echo -ne "  Pulling image${SAMELINE}"
-			# docker pull $4	&> ./tmp/.dockererr
-			# tmp_im=$(docker images ${4} | grep -v REPOSITORY)
-			# if [ -z "$tmp_im" ]; then
-			# 	echo ""
-			# 	echo -e "  Pulling image -$RED could not be pulled"$ERED
-			# 	((IMAGE_ERR++))
-			# 	cat ./tmp/.dockererr
-			# 	return 1
-			# fi
-			# echo -e "  Pulling image -$GREEN Pulled $EGREEN"
 			out=$(docker pull $4)
 			if [ $? -ne 0 ]; then
 				echo ""
@@ -1017,6 +1056,22 @@
 	echo -e $YELLOW" Excluding SDNC image and related DB image from image check/pull"$EYELLOW
 fi
 
+__check_included_image 'HTTPPROXY'
+if [ $? -eq 0 ]; then
+	app="HTTPPROXY";                __check_and_pull_image $START_ARG "$app" $HTTP_PROXY_APP_NAME $HTTP_PROXY_IMAGE
+else
+	echo -e $YELLOW" Excluding Http Proxy image from image check/pull"$EYELLOW
+fi
+
+__check_included_image 'DMAAPMR'
+if [ $? -eq 0 ]; then
+	app="DMAAP Message Router";      __check_and_pull_image $START_ARG "$app" $MR_DMAAP_APP_NAME $ONAP_DMAAPMR_IMAGE
+	app="ZooKeeper";                 __check_and_pull_image $START_ARG "$app" $MR_ZOOKEEPER_APP_NAME $ONAP_ZOOKEEPER_IMAGE
+	app="Kafka";                     __check_and_pull_image $START_ARG "$app" $MR_KAFKA_APP_NAME $ONAP_KAFKA_IMAGE
+else
+	echo -e $YELLOW" Excluding DMAAP MR image and images (zookeeper, kafka) from image check/pull"$EYELLOW
+fi
+
 #Errors in image setting - exit
 if [ $IMAGE_ERR -ne 0 ]; then
 	echo ""
@@ -1041,7 +1096,7 @@
 if [ $? -eq 0 ]; then
 	cd $curdir
 	cd ../mrstub
-	echo " Building mrstub image: $MRSTUB_IMAGE:$MRSTUB_IMAGE_TAG_LOCAL"
+	echo " Building mrstub image: $MRSTUB_IMAGE"
 	docker build  --build-arg NEXUS_PROXY_REPO=$NEXUS_PROXY_REPO -t $MRSTUB_IMAGE . &> .dockererr
 	if [ $? -eq 0 ]; then
 		echo -e  $GREEN" Build Ok"$EGREEN
@@ -1060,7 +1115,7 @@
 __check_included_image 'CR'
 if [ $? -eq 0 ]; then
 	cd ../cr
-	echo " Building Callback Receiver image: $CR_IMAGE:$CR_IMAGE_TAG_LOCAL"
+	echo " Building Callback Receiver image: $CR_IMAGE"
 	docker build  --build-arg NEXUS_PROXY_REPO=$NEXUS_PROXY_REPO -t $CR_IMAGE . &> .dockererr
 	if [ $? -eq 0 ]; then
 		echo -e  $GREEN" Build Ok"$EGREEN
@@ -1079,7 +1134,7 @@
 __check_included_image 'PRODSTUB'
 if [ $? -eq 0 ]; then
 	cd ../prodstub
-	echo " Building Producer stub image: $PROD_STUB_IMAGE:$PROD_STUB_IMAGE_TAG_LOCAL"
+	echo " Building Producer stub image: $PROD_STUB_IMAGE"
 	docker build  --build-arg NEXUS_PROXY_REPO=$NEXUS_PROXY_REPO -t $PROD_STUB_IMAGE . &> .dockererr
 	if [ $? -eq 0 ]; then
 		echo -e  $GREEN" Build Ok"$EGREEN
@@ -1103,10 +1158,12 @@
 docker_tmp_file=./tmp/.docker-images-table
 format_string="{{.Repository}}\\t{{.Tag}}\\t{{.CreatedSince}}\\t{{.Size}}\\t{{.CreatedAt}}"
 echo -e " Application\tRepository\tTag\tCreated since\tSize\tCreated at" > $docker_tmp_file
+
 __check_included_image 'PA'
 if [ $? -eq 0 ]; then
 	echo -e " Policy Agent\t$(docker images --format $format_string $POLICY_AGENT_IMAGE)" >>   $docker_tmp_file
 fi
+
 __check_included_image 'ECS'
 if [ $? -eq 0 ]; then
 	echo -e " ECS\t$(docker images --format $format_string $ECS_IMAGE)" >>   $docker_tmp_file
@@ -1125,7 +1182,13 @@
 fi
 __check_included_image 'MR'
 if [ $? -eq 0 ]; then
-	echo -e " Message Router\t$(docker images --format $format_string $MRSTUB_IMAGE)" >>   $docker_tmp_file
+	echo -e " Message Router stub\t$(docker images --format $format_string $MRSTUB_IMAGE)" >>   $docker_tmp_file
+fi
+__check_included_image 'DMAAPMR'
+if [ $? -eq 0 ]; then
+	echo -e " DMAAP Message Router\t$(docker images --format $format_string $ONAP_DMAAPMR_IMAGE)" >>   $docker_tmp_file
+	echo -e " ZooKeeper\t$(docker images --format $format_string $ONAP_ZOOKEEPER_IMAGE)" >>   $docker_tmp_file
+	echo -e " Kafka\t$(docker images --format $format_string $ONAP_KAFKA_IMAGE)" >>   $docker_tmp_file
 fi
 __check_included_image 'CR'
 if [ $? -eq 0 ]; then
@@ -1148,6 +1211,10 @@
 	echo -e " SDNC A1 Controller\t$(docker images --format $format_string $SDNC_A1_CONTROLLER_IMAGE)" >>   $docker_tmp_file
 	echo -e " SDNC DB\t$(docker images --format $format_string $SDNC_DB_IMAGE)" >>   $docker_tmp_file
 fi
+__check_included_image 'HTTPPROXY'
+if [ $? -eq 0 ]; then
+	echo -e " Http Proxy\t$(docker images --format $format_string $HTTP_PROXY_IMAGE)" >>   $docker_tmp_file
+fi
 
 column -t -s $'\t' $docker_tmp_file
 
@@ -1203,7 +1270,7 @@
 		echo -e "\033[31m\033[1m\__ \ (__|   /| ||  _/ | |   | _/ _ \ | || |_| |_| |   / _| \033[0m"
  		echo -e "\033[31m\033[1m|___/\___|_|_\___|_|   |_|   |_/_/ \_\___|____\___/|_|_\___|\033[0m"
 	elif [ $RES_CONF_FAIL -ne 0 ]; then
-		echo -e "\033[1mOne or more configure regest has failed. Check the script log....\033[0m"
+		echo -e "\033[1mOne or more configurations has failed. Check the script log....\033[0m"
 		echo -e "\033[31m\033[1m ___  ___ ___ ___ ___ _____   ___ _   ___ _   _   _ ___ ___ \033[0m"
 		echo -e "\033[31m\033[1m/ __|/ __| _ \_ _| _ \_   _| | __/_\ |_ _| | | | | | _ \ __|\033[0m"
 		echo -e "\033[31m\033[1m\__ \ (__|   /| ||  _/ | |   | _/ _ \ | || |_| |_| |   / _| \033[0m"
@@ -1351,8 +1418,8 @@
 
 # Stop and remove all containers
 # args: -
-# (Function for test scripts)
-clean_containers() {
+# (Not for test scripts)
+__clean_containers() {
 
 	echo -e $BOLD"Stopping and removing all running containers, by container name"$EBOLD
 
@@ -1360,14 +1427,18 @@
 					  "ECS                    " $(__check_app_name $ECS_APP_NAME)\
 					  "RAPP Catalogue         " $(__check_app_name $RAPP_CAT_APP_NAME)\
 					  "Non-RT RIC Simulator(s)" $(__check_app_name $RIC_SIM_PREFIX)\
-					  "Message Router         " $(__check_app_name $MR_APP_NAME)\
+					  "Message Router stub    " $(__check_app_name $MR_STUB_APP_NAME)\
+					  "DMAAP Message Router   " $(__check_app_name $MR_DMAAP_APP_NAME)\
+					  "Zookeeper              " $(__check_app_name $MR_ZOOKEEPER_APP_NAME)\
+					  "Kafka                  " $(__check_app_name $MR_KAFKA_APP_NAME)\
 					  "Callback Receiver      " $(__check_app_name $CR_APP_NAME)\
 					  "Producer stub          " $(__check_app_name $PROD_STUB_APP_NAME)\
 					  "Control Panel          " $(__check_app_name $CONTROL_PANEL_APP_NAME)\
 					  "SDNC A1 Controller     " $(__check_app_name $SDNC_APP_NAME)\
 					  "SDNC DB                " $(__check_app_name $SDNC_DB_APP_NAME)\
 					  "CBS                    " $(__check_app_name $CBS_APP_NAME)\
-					  "Consul                 " $(__check_app_name $CONSUL_APP_NAME))
+					  "Consul                 " $(__check_app_name $CONSUL_APP_NAME)\
+					  "Http Proxy             " $(__check_app_name $HTTP_PROXY_APP_NAME))
 
 	nw=0 # Calc max width of container name, to make a nice table
 	for (( i=1; i<${#CONTAINTER_NAMES[@]} ; i+=2 )) ; do
@@ -1428,14 +1499,647 @@
 	fi
 }
 
-# Function stop and remove all container in the end of the test script, if the arg 'auto-clean' is given at test script start
+###################################
+### Functions for kube management
+###################################
+
+# Scale a kube resource to a specific count
+# args: <resource-type> <resource-name> <namespace> <target-count>
+# (Not for test scripts)
+__kube_scale() {
+	echo -ne "  Setting $1 $2 replicas=$4 in namespace $3"$SAMELINE
+	kubectl scale  $1 $2  -n $3 --replicas=$4 1> /dev/null 2> ./tmp/kubeerr
+	if [ $? -ne 0 ]; then
+		echo -e "  Setting $1 $2 replicas=$4 in namespace $3 $RED Failed $ERED"
+		((RES_CONF_FAIL++))
+		echo "  Message: $(<./tmp/kubeerr)"
+		return 1
+	else
+		echo -e "  Setting $1 $2 replicas=$4 in namespace $3 $GREEN OK $EGREEN"
+	fi
+
+	TSTART=$SECONDS
+
+	for i in {1..500}; do
+		count=$(kubectl get $1/$2  -n $3 -o jsonpath='{.status.replicas}' 2> /dev/null)
+		retcode=$?
+		if [ -z "$count" ]; then
+			#No value is sometimes returned for some reason, in case the resource has replica 0
+			count=0
+		fi
+		if [ $retcode -ne 0 ]; then
+			echo -e "$RED  Cannot fetch current replica count for $1 $2 in namespace $3 $ERED"
+			((RES_CONF_FAIL++))
+			return 1
+		fi
+		#echo ""
+		if [ $count -ne $4 ]; then
+			echo -ne "  Waiting for $1 $2 replicas=$4 in namespace $3. Replicas=$count after $(($SECONDS-$TSTART)) seconds $SAMELINE"
+			sleep $i
+		else
+			echo -e "  Waiting for $1 $2 replicas=$4 in namespace $3. Replicas=$count after $(($SECONDS-$TSTART)) seconds"
+			echo -e "  Replicas=$4 after $(($SECONDS-$TSTART)) seconds $GREEN OK $EGREEN"
+			echo ""
+			return 0
+		fi
+	done
+	echo ""
+	echo -e "$RED  Replica count did not reach target replicas=$4. Failed with replicas=$count $ERED"
+	((RES_CONF_FAIL++))
+	return 0
+}
+
+# Scale all kube resource sets to 0 in a namespace for resources having a certain lable and label-id
+# This function does not wait for the resource to reach 0
+# args: <namespace> <label-name> <label-id>
+# (Not for test scripts)
+__kube_scale_all_resources() {
+	namespace=$1
+	labelname=$2
+	labelid=$3
+	resources="deployment replicaset statefulset"
+	for restype in $resources; do
+		result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+			deleted_resourcetypes=$deleted_resourcetypes" "$restype
+			for resid in $result; do
+				echo -ne "  Ordered caling $restype $resid from namespace $namespace with label $labelname=$labelid to 0"$SAMELINE
+				kubectl scale  $restype $resid  -n $namespace --replicas=0 1> /dev/null 2> ./tmp/kubeerr
+				echo -e "  Ordered scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0 $GREEN OK $EGREEN"
+			done
+		fi
+	done
+}
+
+# Scale all kube resource sets to 0 in a namespace for resources having a certain lable and label-id
+# This function do wait for the resource to reach 0
+# args: <namespace> <label-name> <label-id>
+# (Not for test scripts)
+__kube_scale_and_wait_all_resources() {
+	namespace=$1
+	labelname=$2
+	labelid=$3
+	resources="deployment replicaset statefulset"
+	scaled_all=1
+	while [ $scaled_all -ne 0 ]; do
+		scaled_all=0
+		for restype in $resources; do
+			result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+			if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+				for resid in $result; do
+					echo -e "  Ordered scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0"
+					kubectl scale  $restype $resid  -n $namespace --replicas=0 1> /dev/null 2> ./tmp/kubeerr
+					count=1
+					T_START=$SECONDS
+					while [ $count -ne 0 ]; do
+						count=$(kubectl get $restype $resid  -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
+						echo -ne "  Scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count"$SAMELINE
+						if [ $? -eq 0 ] && [ ! -z "$count" ]; then
+							sleep 0.5
+						else
+							count=0
+						fi
+						duration=$(($SECONDS-$T_START))
+						if [ $duration -gt 100 ]; then
+							#Forcring count 0, to avoid hanging for failed scaling
+							scaled_all=1
+							count=0
+						fi
+					done
+					echo -e "  Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count $GREEN OK $EGREEN"
+				done
+			fi
+		done
+	done
+}
+
+# Remove all kube resources in a namespace for resources having a certain label and label-id
+# This function wait until the resources are gone. Scaling to 0 must have been ordered previously
+# args: <namespace> <label-name> <label-id>
+# (Not for test scripts)
+__kube_delete_all_resources() {
+	namespace=$1
+	labelname=$2
+	labelid=$3
+	resources="deployments replicaset statefulset services pods configmaps pvc"
+	deleted_resourcetypes=""
+	for restype in $resources; do
+		result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
+			deleted_resourcetypes=$deleted_resourcetypes" "$restype
+			for resid in $result; do
+				if [ $restype == "replicaset" ] || [ $restype == "statefulset" ]; then
+					count=1
+					while [ $count -ne 0 ]; do
+						count=$(kubectl get $restype $resid  -n $namespace -o jsonpath='{.status.replicas}' 2> /dev/null)
+						echo -ne "  Scaling $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count"$SAMELINE
+						if [ $? -eq 0 ] && [ ! -z "$count" ]; then
+							sleep 0.5
+						else
+							count=0
+						fi
+					done
+					echo -e "  Scaled $restype $resid from namespace $namespace with label $labelname=$labelid to 0,count=$count $GREEN OK $EGREEN"
+				fi
+				echo -ne "  Deleting $restype $resid from namespace $namespace with label $labelname=$labelid "$SAMELINE
+				kubectl delete $restype $resid -n $namespace 1> /dev/null 2> ./tmp/kubeerr
+				if [ $? -eq 0 ]; then
+					echo -e "  Deleted $restype $resid from namespace $namespace with label $labelname=$labelid $GREEN OK $EGREEN"
+				else
+					echo -e "  Deleted $restype $resid from namespace $namespace with label $labelname=$labelid $GREEN Does not exist - OK $EGREEN"
+				fi
+				#fi
+			done
+		fi
+	done
+	if [ ! -z "$deleted_resourcetypes" ]; then
+		for restype in $deleted_resources; do
+			echo -ne "  Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted..."$SAMELINE
+			T_START=$SECONDS
+			result="dummy"
+			while [ ! -z "$result" ]; do
+				sleep 0.5
+				result=$(kubectl get $restype -n $namespace -o jsonpath='{.items[?(@.metadata.labels.'$labelname'=="'$labelid'")].metadata.name}')
+				echo -ne "  Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds "$SAMELINE
+				if [ -z "$result" ]; then
+					echo -e " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $GREEN OK $EGREEN"
+				elif [ $(($SECONDS-$T_START)) -gt 300 ]; then
+					echo -e " Waiting for $restype in namespace $namespace with label $labelname=$labelid to be deleted...$(($SECONDS-$T_START)) seconds $RED Failed $ERED"
+					result=""
+				fi
+			done
+		done
+	fi
+}
+
+# Creates a namespace if it does not exists
+# args: <namespace>
+# (Not for test scripts)
+__kube_create_namespace() {
+
+	#Check if test namespace exists, if not create it
+	kubectl get namespace $1 1> /dev/null 2> ./tmp/kubeerr
+	if [ $? -ne 0 ]; then
+		echo -ne " Creating namespace "$1 $SAMELINE
+		kubectl create namespace $1 1> /dev/null 2> ./tmp/kubeerr
+		if [ $? -ne 0 ]; then
+			echo -e " Creating namespace $1 $RED$BOLD FAILED $EBOLD$ERED"
+			((RES_CONF_FAIL++))
+			echo "  Message: $(<./tmp/kubeerr)"
+			return 1
+		else
+			echo -e " Creating namespace $1 $GREEN$BOLD OK $EBOLD$EGREEN"
+		fi
+	else
+		echo -e " Creating namespace $1 $GREEN$BOLD Already exists, OK $EBOLD$EGREEN"
+	fi
+	return 0
+}
+
+# Find the host ip of an app (using the service resource)
+# args: <app-name> <namespace>
+# (Not for test scripts)
+__kube_get_service_host() {
+	if [ $# -ne 2 ]; then
+		((RES_CONF_FAIL++))
+    	__print_err "need 2 args, <app-name> <namespace>" $@
+		exit 1
+	fi
+	for timeout in {1..60}; do
+		host=$(kubectl get svc $1  -n $2 -o jsonpath='{.spec.clusterIP}')
+		if [ $? -eq 0 ]; then
+			if [ ! -z "$host" ]; then
+				echo $host
+				return 0
+			fi
+		fi
+		sleep 0.5
+	done
+	((RES_CONF_FAIL++))
+	echo "host-not-found-fatal-error"
+	return 1
+}
+
+# Translate ric name to kube host name
+# args: <ric-name>
+# For test scripts
+get_kube_sim_host() {
+	name=$(echo "$1" | tr '_' '-')  #kube does not accept underscore in names
+	#example gnb_1_2 -> gnb-1-2
+	set_name=$(echo $name | rev | cut -d- -f2- | rev) # Cut index part of ric name to get the name of statefulset
+	# example gnb-g1-2 -> gnb-g1 where gnb-g1-2 is the ric name and gnb-g1 is the set name
+	echo $name"."$set_name"."$KUBE_NONRTRIC_NAMESPACE
+
+}
+
+# Find the named port to an app (using the service resource)
+# args: <app-name> <namespace> <port-name>
+# (Not for test scripts)
+__kube_get_service_port() {
+	if [ $# -ne 3 ]; then
+		((RES_CONF_FAIL++))
+    	__print_err "need 3 args, <app-name> <namespace> <port-name>" $@
+		exit 1
+	fi
+
+	for timeout in {1..60}; do
+		port=$(kubectl get svc $1  -n $2 -o jsonpath='{...ports[?(@.name=="'$3'")].port}')
+		if [ $? -eq 0 ]; then
+			if [ ! -z "$port" ]; then
+				echo $port
+				return 0
+			fi
+		fi
+		sleep 0.5
+	done
+	((RES_CONF_FAIL++))
+	echo "0"
+	return 1
+}
+
+# Create a kube resource from a yaml template
+# args: <resource-type> <resource-name> <template-yaml> <output-yaml>
+# (Not for test scripts)
+__kube_create_instance() {
+	echo -ne " Creating $1 $2"$SAMELINE
+	envsubst < $3 > $4
+	kubectl apply -f $4 1> /dev/null 2> ./tmp/kubeerr
+	if [ $? -ne 0 ]; then
+		((RES_CONF_FAIL++))
+		echo -e " Creating $1 $2 $RED Failed $ERED"
+		echo "  Message: $(<./tmp/kubeerr)"
+		return 1
+	else
+		echo -e " Creating $1 $2 $GREEN OK $EGREEN"
+	fi
+}
+
+# Function to create a configmap in kubernetes
+# args: <configmap-name> <namespace> <labelname> <labelid> <path-to-data-file> <path-to-output-yaml>
+# (Not for test scripts)
+__kube_create_configmap() {
+	echo -ne " Creating configmap $1 "$SAMELINE
+	envsubst < $5 > $5"_tmp"
+	cp $5"_tmp" $5  #Need to copy back to orig file name since create configmap neeed the original file name
+	kubectl create configmap $1  -n $2 --from-file=$5 --dry-run=client -o yaml > $6
+	if [ $? -ne 0 ]; then
+		echo -e " Creating configmap $1 $RED Failed $ERED"
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+
+	kubectl apply -f $6 1> /dev/null 2> ./tmp/kubeerr
+	if [ $? -ne 0 ]; then
+		echo -e " Creating configmap $1 $RED Apply failed $ERED"
+		echo "  Message: $(<./tmp/kubeerr)"
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	kubectl label configmap $1 -n $2 $3"="$4 --overwrite 1> /dev/null 2> ./tmp/kubeerr
+	if [ $? -ne 0 ]; then
+		echo -e " Creating configmap $1 $RED Labeling failed $ERED"
+		echo "  Message: $(<./tmp/kubeerr)"
+		((RES_CONF_FAIL++))
+		return 1
+	fi
+	# Log the resulting map
+	kubectl get configmap $1 -n $2 -o yaml > $6
+
+	echo -e " Creating configmap $1 $GREEN OK $EGREEN"
+	return 0
+}
+
+# This function scales or deletes all resources for app selected by the testcase.
+# args: -
+# (Not for test scripts)
+__clean_kube() {
+	echo -e $BOLD"Initialize kube services//pods/statefulsets/replicaset to initial state"$EBOLD
+
+	# Scale prestarted or managed apps
+	__check_prestarted_image 'RICSIM'
+	if [ $? -eq 0 ]; then
+		echo -e " Scaling all kube resources for app $BOLD RICSIM $EBOLD to 0"
+		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-a1simulator
+	else
+		echo -e " Scaling all kube resources for app $BOLD RICSIM $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+	fi
+
+	__check_prestarted_image 'PA'
+	if [ $? -eq 0 ]; then
+		echo -e " Scaling all kube resources for app $BOLD PA $EBOLD to 0"
+		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-policymanagementservice
+	else
+	    echo -e " Scaling all kube resources for app $BOLD PA $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest PA
+	fi
+
+	__check_prestarted_image 'ECS'
+	if [ $? -eq 0 ]; then
+		echo -e " Scaling all kube resources for app $BOLD ECS $EBOLD to 0"
+		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-enrichmentservice
+	else
+		echo -e " Scaling all kube resources for app $BOLD ECS $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS
+	fi
+
+	__check_prestarted_image 'RC'
+	if [ $? -eq 0 ]; then
+		echo -e " Scaling all kube resources for app $BOLD RC $EBOLD to 0"
+		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-rappcatalogueservice
+	else
+		echo -e " Scaling all kube resources for app $BOLD RC $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RC
+	fi
+
+	__check_prestarted_image 'CP'
+	if [ $? -eq 0 ]; then
+		echo -e " CP replicas kept as is"
+	else
+		echo -e " Scaling all kube resources for app $BOLD CP $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest CP
+	fi
+
+	__check_prestarted_image 'SDNC'
+	if [ $? -eq 0 ]; then
+		echo -e " SDNC replicas kept as is"
+	else
+		echo -e " Scaling all kube resources for app $BOLD SDNC $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+	fi
+
+	__check_prestarted_image 'MR'
+	if [ $? -eq 0 ]; then
+		echo -e " MR replicas kept as is"
+	else
+		echo -e " Scaling all kube resources for app $BOLD MR $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_ONAP_NAMESPACE autotest MR
+	fi
+
+	__check_prestarted_image 'DMAAPMR'
+	if [ $? -eq 0 ]; then
+		echo -e " DMAAP replicas kept as is"
+	else
+		echo -e " Scaling all kube resources for app $BOLD DMAAPMR $EBOLD to 0"
+		__kube_scale_all_resources $KUBE_ONAP_NAMESPACE autotest DMAAPMR
+	fi
+
+	echo -e " Scaling all kube resources for app $BOLD CR $EBOLD to 0"
+	__kube_scale_all_resources $KUBE_SIM_NAMESPACE autotest CR
+
+	echo -e " Scaling all kube resources for app $BOLD PRODSTUB $EBOLD to 0"
+	__kube_scale_all_resources $KUBE_SIM_NAMESPACE autotest PRODSTUB
+
+	echo -e " Scaling all kube resources for app $BOLD HTTPPROXY $EBOLD to 0"
+	__kube_scale_all_resources $KUBE_SIM_NAMESPACE autotest HTTPPROXY
+
+
+	## Clean all managed apps
+
+	__check_prestarted_image 'RICSIM'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD RICSIM $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+	fi
+
+	__check_prestarted_image 'PA'
+	if [ $? -eq 1 ]; then
+	    echo -e " Deleting all kube resources for app $BOLD PA $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest PA
+	fi
+
+	__check_prestarted_image 'ECS'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD ECS $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS
+	fi
+
+	__check_prestarted_image 'RC'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD RC $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RC
+	fi
+
+	__check_prestarted_image 'CP'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD CP $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest CP
+	fi
+
+	__check_prestarted_image 'SDNC'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD SDNC $EBOLD"
+		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+	fi
+
+	__check_prestarted_image 'MR'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD MR $EBOLD"
+		__kube_delete_all_resources $KUBE_ONAP_NAMESPACE autotest MR
+	fi
+
+	__check_prestarted_image 'DMAAPMR'
+	if [ $? -eq 1 ]; then
+		echo -e " Deleting all kube resources for app $BOLD DMAAPMR $EBOLD"
+		__kube_delete_all_resources $KUBE_ONAP_NAMESPACE autotest DMAAPMR
+	fi
+
+	echo -e " Deleting all kube resources for app $BOLD CR $EBOLD"
+	__kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest CR
+
+	echo -e " Deleting all kube resources for app $BOLD PRODSTUB $EBOLD"
+	__kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest PRODSTUB
+
+	echo -e " Deleting all kube resources for app $BOLD HTTPPROXY $EBOLD"
+	__kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest HTTPPROXY
+
+	echo ""
+}
+
+# # This function scales or deletes all resources for app selected by the testcase.
+# # args: -
+# # (Not for test scripts)
+# __clean_kube() {
+# 	echo -e $BOLD"Initialize kube services//pods/statefulsets/replicaset to initial state"$EBOLD
+
+# 	# Clean prestarted apps
+# 	__check_prestarted_image 'RICSIM'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD RICSIM $EBOLD to 0"
+# 		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-a1simulator
+# 	fi
+
+# 	__check_prestarted_image 'PA'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD PA $EBOLD to 0"
+# 		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-policymanagementservice
+# 	fi
+
+# 	__check_prestarted_image 'ECS'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD ECS $EBOLD to 0"
+# 		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-enrichmentservice
+# 	fi
+
+# 	__check_prestarted_image 'RC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD RC $EBOLD to 0"
+# 		__kube_scale_and_wait_all_resources $KUBE_NONRTRIC_NAMESPACE app nonrtric-rappcatalogueservice
+# 	fi
+
+# 	__check_prestarted_image 'CP'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " CP replicas kept as is"
+# 	fi
+
+# 	__check_prestarted_image 'SDNC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " SDNC replicas kept as is"
+# 	fi
+
+# 	__check_prestarted_image 'MR'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " MR replicas kept as is"
+# 	fi
+
+
+# 	# Clean included apps - apps fully managed by the script
+
+# 	## Scale all to zero
+# 	__check_included_image 'RICSIM'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD RICSIM $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+# 	fi
+
+# 	__check_included_image 'PA'
+# 	if [ $? -eq 0 ]; then
+# 	    echo -e " Scaling all kube resources for app $BOLD PA $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest PA
+# 	fi
+
+# 	__check_included_image 'ECS'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD ECS $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS
+# 	fi
+
+# 	__check_included_image 'RC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD RC $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RC
+# 	fi
+
+# 	__check_included_image 'CP'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD CP $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest CP
+# 	fi
+
+# 	__check_included_image 'SDNC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD SDNC $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+# 	fi
+
+# 	__check_included_image 'CR'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD CR $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_SIM_NAMESPACE autotest CR
+# 	fi
+
+# 	__check_included_image 'MR'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD MR $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_ONAP_NAMESPACE autotest MR
+# 	fi
+
+# 	__check_included_image 'PRODSTUB'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Scaling all kube resources for app $BOLD PRODSTUB $EBOLD to 0"
+# 		__kube_scale_all_resources $KUBE_SIM_NAMESPACE autotest PRODSTUB
+# 	fi
+
+
+# 	## Remove all resources
+
+# 	__check_included_image 'RICSIM'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD RICSIM $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RICSIM
+# 	fi
+
+# 	__check_included_image 'PA'
+# 	if [ $? -eq 0 ]; then
+# 	    echo -e " Deleting all kube resources for app $BOLD PA $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest PA
+# 	fi
+
+# 	__check_included_image 'ECS'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD ECS $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest ECS
+# 	fi
+
+# 	__check_included_image 'RC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD RC $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest RC
+# 	fi
+
+# 	__check_included_image 'CP'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD CP $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest CP
+# 	fi
+
+# 	__check_included_image 'SDNC'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD SDNC $EBOLD"
+# 		__kube_delete_all_resources $KUBE_NONRTRIC_NAMESPACE autotest SDNC
+# 	fi
+
+# 	__check_included_image 'CR'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD CR $EBOLD"
+# 		__kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest CR
+# 	fi
+
+# 	__check_included_image 'MR'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD MR $EBOLD"
+# 		__kube_delete_all_resources $KUBE_ONAP_NAMESPACE autotest MR
+# 	fi
+
+# 	__check_included_image 'PRODSTUB'
+# 	if [ $? -eq 0 ]; then
+# 		echo -e " Deleting all kube resources for app $BOLD PRODSTUB $EBOLD"
+# 		__kube_delete_all_resources $KUBE_SIM_NAMESPACE autotest PRODSTUB
+# 	fi
+
+# 	echo ""
+# }
+
+# Function stop and remove all containers (docker) and services/deployments etc(kube)
+# args: -
+# Function for test script
+clean_environment() {
+	if [ $RUNMODE == "KUBE" ]; then
+		__clean_kube
+	else
+		__clean_containers
+	fi
+
+}
+
+# Function stop and remove all containers (docker) and services/deployments etc(kube) in the end of the test script, if the arg 'auto-clean' is given at test script start
 # args: -
 # (Function for test scripts)
-auto_clean_containers() {
+auto_clean_environment() {
 	echo
 	if [ "$AUTO_CLEAN" == "auto" ]; then
-		echo -e $BOLD"Initiating automatic cleaning of started containers"$EBOLD
-		clean_containers
+		echo -e $BOLD"Initiating automatic cleaning of environment"$EBOLD
+		clean_environment
 	fi
 }
 
@@ -1473,7 +2177,7 @@
 }
 
 
-# Helper function to get a the port of a specific ric simulatpor
+# Helper function to get a the port of a specific ric simulator
 # args: <ric-id>
 # (Not for test scripts)
 __find_sim_port() {
@@ -1487,6 +2191,35 @@
     fi
 }
 
+# Helper function to get a the port and host name of a specific ric simulator
+# args: <ric-id>
+# (Not for test scripts)
+__find_sim_host() {
+	if [ $RUNMODE == "KUBE" ]; then
+		ricname=$(echo "$1" | tr '_' '-')
+		for timeout in {1..60}; do
+			host=$(kubectl get pod $ricname  -n $KUBE_NONRTRIC_NAMESPACE -o jsonpath='{.status.podIP}' 2> /dev/null)
+			if [ ! -z "$host" ]; then
+				echo $RIC_SIM_HTTPX"://"$host":"$RIC_SIM_PORT
+				return 0
+			fi
+			sleep 0.5
+		done
+		echo "host-not-found-fatal-error"
+	else
+		name=$1" " #Space appended to prevent matching 10 if 1 is desired....
+		cmdstr="docker inspect --format='{{(index (index .NetworkSettings.Ports \"$RIC_SIM_PORT/tcp\") 0).HostPort}}' ${name}"
+		res=$(eval $cmdstr)
+		if [[ "$res" =~ ^[0-9]+$ ]]; then
+			echo $RIC_SIM_HOST:$res
+			return 0
+		else
+			echo "0"
+		fi
+	fi
+	return 1
+}
+
 # Function to create the docker network for the test
 # Not to be called from the test script itself.
 __create_docker_network() {
@@ -1509,30 +2242,56 @@
 	fi
 }
 
-# Check if container is started by calling url on localhost using a port, expects response code 2XX
-# args: <container-name> <port> <url> https|https
-# Not to be called from the test script itself.
-__check_container_start() {
-	paramError=0
-	if [ $# -ne 4 ]; then
-		paramError=1
-	elif [ $4 != "http" ] && [ $4 != "https" ]; then
-		paramError=1
-	fi
-	if [ $paramError -ne 0 ]; then
+# Function to start container with docker-compose and wait until all are in state running.
+#args: <docker-compose-dir> <docker-compose-arg>|NODOCKERARGS <count> <app-name>+
+# (Not for test scripts)
+__start_container() {
+	if [ $# -lt 4 ]; then
 		((RES_CONF_FAIL++))
-		__print_err "need 3 args, <container-name> <port> <url> https|https" $@
-		return 1
+    	__print_err "need 4 or more args, <docker-compose-dir> <docker-compose-arg>|NODOCKERARGS <count> <app-name>+" $@
+		exit 1
 	fi
-	echo -ne " Container $BOLD$1$EBOLD starting${SAMELINE}"
-	appname=$1
-	localport=$2
-	url=$3
-	if [[ $appname != "STANDALONE_"* ]]	; then
+
+	__create_docker_network
+
+	curdir=$PWD
+	cd $SIM_GROUP
+	compose_dir=$1
+	cd $1
+	shift
+	compose_args=$1
+	shift
+	appcount=$1
+	shift
+
+	if [ "$compose_args" == "NODOCKERARGS" ]; then
+		docker-compose up -d &> .dockererr
+		if [ $? -ne 0 ]; then
+			echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
+			cat .dockererr
+			echo -e $RED"Stopping script...."$ERED
+			exit 1
+		fi
+	else
+		docker-compose up -d $compose_args &> .dockererr
+		if [ $? -ne 0 ]; then
+			echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
+			cat .dockererr
+			echo -e $RED"Stopping script...."$ERED
+			exit 1
+		fi
+	fi
+
+	cd $curdir
+
+	appindex=0
+	while [ $appindex -lt $appcount ]; do
+		appname=$1
+		shift
 		app_started=0
 		for i in {1..10}; do
 			if [ "$(docker inspect --format '{{ .State.Running }}' $appname)" == "true" ]; then
-					echo -e " Container $BOLD$1$EBOLD$GREEN running$EGREEN on$BOLD image $(docker inspect --format '{{ .Config.Image }}' ${appname}) $EBOLD"
+					echo -e " Container $BOLD${appname}$EBOLD$GREEN running$EGREEN on$BOLD image $(docker inspect --format '{{ .Config.Image }}' ${appname}) $EBOLD"
 					app_started=1
 					break
 				else
@@ -1546,40 +2305,58 @@
 			echo -e $RED" Stopping script..."$ERED
 			exit 1
 		fi
-		if [ $localport -eq 0 ]; then
-			while [ $localport -eq 0 ]; do
-				echo -ne " Waiting for container ${appname} to publish its ports...${SAMELINE}"
-				localport=$(__find_sim_port $appname)
-				sleep 1
-				echo -ne " Waiting for container ${appname} to publish its ports...retrying....${SAMELINE}"
-			done
-			echo -ne " Waiting for container ${appname} to publish its ports...retrying....$GREEN OK $EGREEN"
-			echo ""
-		fi
+		let appindex=appindex+1
+	done
+	return 0
+}
+
+# Generate a UUID to use as prefix for policy ids
+generate_uuid() {
+	UUID=$(python3 -c 'import sys,uuid; sys.stdout.write(uuid.uuid4().hex)')
+	#Reduce length to make space for serial id, uses 'a' as marker where the serial id is added
+	UUID=${UUID:0:${#UUID}-4}"a"
+}
+
+
+# Function to check if container/service is responding to http/https
+# args: <container-name>|<service-name> url
+# (Not for test scripts)
+__check_service_start() {
+
+	if [ $# -ne 2 ]; then
+		((RES_CONF_FAIL++))
+		__print_err "need 2 args, <container-name>|<service-name> url" $@
+		return 1
 	fi
 
+	if [ $RUNMODE == "KUBE" ]; then
+		ENTITY="service/set/deployment"
+	else
+		ENTITY="container"
+	fi
+	appname=$1
+	url=$2
+	echo -ne " Container $BOLD${appname}$EBOLD starting${SAMELINE}"
+
+
 	pa_st=false
-	echo -ne " Waiting for container ${appname} service status...${SAMELINE}"
+	echo -ne " Waiting for ${ENTITY} ${appname} service status...${SAMELINE}"
 	TSTART=$SECONDS
 	for i in {1..50}; do
-		if [ $4 == "https" ]; then
-			result="$(__do_curl "-k https://localhost:"${localport}${url})"
-		else
-			result="$(__do_curl $LOCALHOST${localport}${url})"
-		fi
+		result="$(__do_curl $url)"
 		if [ $? -eq 0 ]; then
 			if [ ${#result} -gt 15 ]; then
 				#If response is too long, truncate
 				result="...response text too long, omitted"
 			fi
-			echo -ne " Waiting for container $BOLD${appname}$EBOLD service status, result: $result${SAMELINE}"
-	   		echo -ne " Container $BOLD${appname}$EBOLD$GREEN is alive$EGREEN, responds to service status:$GREEN $result $EGREEN after $(($SECONDS-$TSTART)) seconds"
+			echo -ne " Waiting for {ENTITY} $BOLD${appname}$EBOLD service status on ${3}, result: $result${SAMELINE}"
+	   		echo -ne " The ${ENTITY} $BOLD${appname}$EBOLD$GREEN is alive$EGREEN, responds to service status:$GREEN $result $EGREEN on ${url} after $(($SECONDS-$TSTART)) seconds"
 	   		pa_st=true
 	   		break
 	 	else
 		 	TS_TMP=$SECONDS
 			while [ $(($TS_TMP+$i)) -gt $SECONDS ]; do
-				echo -ne " Waiting for container ${appname} service status...$(($SECONDS-$TSTART)) seconds, retrying in $(($TS_TMP+$i-$SECONDS)) seconds   ${SAMELINE}"
+				echo -ne " Waiting for ${ENTITY} ${appname} service status on ${url}...$(($SECONDS-$TSTART)) seconds, retrying in $(($TS_TMP+$i-$SECONDS)) seconds   ${SAMELINE}"
 				sleep 1
 			done
 	 	fi
@@ -1587,837 +2364,14 @@
 
 	if [ "$pa_st" = "false"  ]; then
 		((RES_CONF_FAIL++))
-		echo -e $RED" Container ${appname} did not respond to service status in $(($SECONDS-$TSTART)) seconds"$ERED
-		return 0
-	fi
-
-	echo ""
-	return 0
-}
-
-
-# Function to start a container and wait until it responds on the given port and url.
-#args: <docker-compose-dir> NODOCKERARGS|<docker-compose-arg> <app-name> <port-number> <alive-url> [<app-name> <port-number> <alive-url>]*
-__start_container() {
-
-	variableArgCount=$(($#-2))
-	if [ $# -lt 6 ] && [ [ $(($variableArgCount%4)) -ne 0 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need 6 or more args,  <docker-compose-dir> NODOCKERARGS|<docker-compose-arg> <app-name> <port-number> <alive-url> http|https [<app-name> <port-number> <alive-url> http|https ]*" $@
-		exit 1
-	fi
-
-	__create_docker_network
-
-	curdir=$PWD
-	cd $SIM_GROUP
-	cd $1
-
-	if [ "$2" == "NODOCKERARGS" ]; then
-		docker-compose up -d &> .dockererr
-		if [ $? -ne 0 ]; then
-			echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
-			cat .dockererr
-			echo -e $RED"Stopping script...."$ERED
-			exit 1
-		fi
-	elif [ "$2" == "STANDALONE" ]; then
-		echo "Skipping docker-compose"
-	else
-		docker-compose up -d $2 &> .dockererr
-		if [ $? -ne 0 ]; then
-			echo -e $RED"Problem to launch container(s) with docker-compose"$ERED
-			cat .dockererr
-			echo -e $RED"Stopping script...."$ERED
-			exit 1
-		fi
-	fi
-	app_prefix=""
-	if [ "$2" == "STANDALONE" ]; then
-		app_prefix="STANDALONE_"
-	fi
-	shift; shift;
-	cntr=0
-	while [ $cntr -lt $variableArgCount ]; do
-		app=$app_prefix$1; shift;
-		port=$1; shift;
-		url=$1; shift;
-		httpx=$1; shift;
-		let cntr=cntr+4
-
-		__check_container_start "$app" "$port" "$url" $httpx
-	done
-
-	cd $curdir
-	echo ""
-	return 0
-}
-
-# Generate a UUID to use as prefix for policy ids
-generate_uuid() {
-	UUID=$(python3 -c 'import sys,uuid; sys.stdout.write(uuid.uuid4().hex)')
-	#Reduce length to make space for serial id, us 'a' as marker where the serial id is added
-	UUID=${UUID:0:${#UUID}-4}"a"
-}
-
-####################
-### Consul functions
-####################
-
-# Function to load config from a file into consul for the Policy Agent
-# arg: <json-config-file>
-# (Function for test scripts)
-consul_config_app() {
-
-	echo -e $BOLD"Configuring Consul"$EBOLD
-
-	if [ $# -ne 1 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need one arg,  <json-config-file>" $@
-		exit 1
-	fi
-
-	echo " Loading config for "$POLICY_AGENT_APP_NAME" from "$1
-
-	curlString="$LOCALHOST${CONSUL_EXTERNAL_PORT}/v1/kv/${POLICY_AGENT_APP_NAME}?dc=dc1 -X PUT -H Accept:application/json -H Content-Type:application/json -H X-Requested-With:XMLHttpRequest --data-binary @"$1
-	result=$(__do_curl "$curlString")
-	if [ $? -ne 0 ]; then
-		echo -e $RED" FAIL - json config could not be loaded to consul" $ERED
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-	body="$(__do_curl $LOCALHOST$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_APP_NAME)"
-	echo $body > "./tmp/.output"$1
-
-	if [ $? -ne 0 ]; then
-		echo -e $RED" FAIL - json config could not be loaded from consul/cbs, contents cannot be checked." $ERED
-		((RES_CONF_FAIL++))
-		return 1
-	else
-		targetJson=$(< $1)
-		targetJson="{\"config\":"$targetJson"}"
-		echo "TARGET JSON: $targetJson" >> $HTTPLOG
-		res=$(python3 ../common/compare_json.py "$targetJson" "$body")
-		if [ $res -ne 0 ]; then
-			echo -e $RED" FAIL - policy json config read from consul/cbs is not equal to the intended json config...." $ERED
-			((RES_CONF_FAIL++))
-			return 1
-		else
-			echo -e $GREEN" Config loaded ok to consul"$EGREEN
-		fi
-	fi
-
-	echo ""
-
-}
-
-# Function to perpare the consul configuration according to the current simulator configuration
-# args: SDNC|NOSDNC <output-file>
-# (Function for test scripts)
-prepare_consul_config() {
-  	echo -e $BOLD"Prepare Consul config"$EBOLD
-
-	echo " Writing consul config for "$POLICY_AGENT_APP_NAME" to file: "$2
-
-	if [ $# != 2 ];  then
-		((RES_CONF_FAIL++))
-    	__print_err "need two args,  SDNC|NOSDNC <output-file>" $@
-		exit 1
-	fi
-
-	if [ $1 == "SDNC" ]; then
-		echo -e " Config$BOLD including SDNC$EBOLD configuration"
-	elif [ $1 == "NOSDNC" ];  then
-		echo -e " Config$BOLD excluding SDNC$EBOLD configuration"
-	else
-		((RES_CONF_FAIL++))
-    	__print_err "need two args,  SDNC|NOSDNC <output-file>" $@
-		exit 1
-	fi
-
-	config_json="\n            {"
-	if [ $1 == "SDNC" ]; then
-		config_json=$config_json"\n   \"controller\": ["
-		config_json=$config_json"\n                     {"
-		config_json=$config_json"\n                       \"name\": \"$SDNC_APP_NAME\","
-		if [ $AGENT_STAND_ALONE -eq 0 ]; then
-			config_json=$config_json"\n                       \"baseUrl\": \"$SDNC_HTTPX://$SDNC_APP_NAME:$SDNC_PORT\","
-		else
-			config_json=$config_json"\n                       \"baseUrl\": \"$SDNC_HTTPX://localhost:$SDNC_LOCAL_PORT\","
-		fi
-		config_json=$config_json"\n                       \"userName\": \"$SDNC_USER\","
-		config_json=$config_json"\n                       \"password\": \"$SDNC_PWD\""
-		config_json=$config_json"\n                     }"
-		config_json=$config_json"\n   ],"
-	fi
-
-	config_json=$config_json"\n   \"streams_publishes\": {"
-	config_json=$config_json"\n                            \"dmaap_publisher\": {"
-	config_json=$config_json"\n                              \"type\": \"$MR_APP_NAME\","
-	config_json=$config_json"\n                              \"dmaap_info\": {"
-	if [ $AGENT_STAND_ALONE -eq 0 ]; then
-		config_json=$config_json"\n                                \"topic_url\": \"$MR_HTTPX://$MR_APP_NAME:$MR_PORT$MR_WRITE_URL\""
-	else
-		config_json=$config_json"\n                                \"topic_url\": \"$MR_HTTPX://localhost:$MR_LOCAL_PORT$MR_WRITE_URL\""
-	fi
-	config_json=$config_json"\n                              }"
-	config_json=$config_json"\n                            }"
-	config_json=$config_json"\n   },"
-	config_json=$config_json"\n   \"streams_subscribes\": {"
-	config_json=$config_json"\n                             \"dmaap_subscriber\": {"
-	config_json=$config_json"\n                               \"type\": \"$MR_APP_NAME\","
-	config_json=$config_json"\n                               \"dmaap_info\": {"
-	if [ $AGENT_STAND_ALONE -eq 0 ]; then
-		config_json=$config_json"\n                                   \"topic_url\": \"$MR_HTTPX://$MR_APP_NAME:$MR_PORT$MR_READ_URL\""
-	else
-		config_json=$config_json"\n                                   \"topic_url\": \"$MR_HTTPX://localhost:$MR_LOCAL_PORT$MR_READ_URL\""
-	fi
-	config_json=$config_json"\n                                 }"
-	config_json=$config_json"\n                               }"
-	config_json=$config_json"\n   },"
-
-	config_json=$config_json"\n   \"ric\": ["
-
-	rics=$(docker ps | grep $RIC_SIM_PREFIX | awk '{print $NF}')
-
-	if [ $? -ne 0 ] || [ -z "$rics" ]; then
-		echo -e $RED" FAIL - the names of the running RIC Simulator cannot be retrieved." $ERED
-		((RES_CONF_FAIL++))
+		echo -e $RED" The ${ENTITY} ${appname} did not respond to service status on ${url} in $(($SECONDS-$TSTART)) seconds"$ERED
 		return 1
 	fi
 
-	cntr=0
-	for ric in $rics; do
-		if [ $cntr -gt 0 ]; then
-			config_json=$config_json"\n          ,"
-		fi
-		config_json=$config_json"\n          {"
-		config_json=$config_json"\n            \"name\": \"$ric\","
-		if [ $AGENT_STAND_ALONE -eq 0 ]; then
-			config_json=$config_json"\n            \"baseUrl\": \"$RIC_SIM_HTTPX://$ric:$RIC_SIM_PORT\","
-		else
-			config_json=$config_json"\n            \"baseUrl\": \"$RIC_SIM_HTTPX://localhost:$(__find_sim_port $ric)\","
-		fi
-		if [ $1 == "SDNC" ]; then
-			config_json=$config_json"\n            \"controller\": \"$SDNC_APP_NAME\","
-		fi
-		config_json=$config_json"\n            \"managedElementIds\": ["
-		config_json=$config_json"\n              \"me1_$ric\","
-		config_json=$config_json"\n              \"me2_$ric\""
-		config_json=$config_json"\n            ]"
-		config_json=$config_json"\n          }"
-		let cntr=cntr+1
-	done
-
-	config_json=$config_json"\n           ]"
-	config_json=$config_json"\n}"
-
-
-	printf "$config_json">$2
-
-	echo ""
-}
-
-
-# Start Consul and CBS
-# args: -
-# (Function for test scripts)
-start_consul_cbs() {
-
-	echo -e $BOLD"Starting Consul and CBS"$EBOLD
-	__check_included_image 'CONSUL'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Consul image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"Consul will not be started"$ERED
-		exit
-	fi
-	__start_container consul_cbs NODOCKERARGS  "$CONSUL_APP_NAME" "$CONSUL_EXTERNAL_PORT" "/ui/dc1/kv" "http" \
-	                                             "$CBS_APP_NAME" "$CBS_EXTERNAL_PORT" "/healthcheck" "http"
-}
-
-###########################
-### RIC Simulator functions
-###########################
-
-use_simulator_http() {
-	echo -e $BOLD"RICSIM protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards the simulators"
-	export RIC_SIM_HTTPX="http"
-	export RIC_SIM_LOCALHOST=$RIC_SIM_HTTPX"://localhost:"
-	export RIC_SIM_PORT=$RIC_SIM_INTERNAL_PORT
-	echo ""
-}
-
-use_simulator_https() {
-	echo -e $BOLD"RICSIM protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards the simulators"
-	export RIC_SIM_HTTPX="https"
-	export RIC_SIM_LOCALHOST=$RIC_SIM_HTTPX"://localhost:"
-	export RIC_SIM_PORT=$RIC_SIM_INTERNAL_SECURE_PORT
-	echo ""
-}
-
-# Start one group (ricsim_g1, ricsim_g2 .. ricsim_g5) with a number of RIC Simulators using a given A interface
-# 'ricsim' may be set on command line to other prefix
-# args:  ricsim_g1|ricsim_g2|ricsim_g3|ricsim_g4|ricsim_g5 <count> <interface-id>
-# (Function for test scripts)
-start_ric_simulators() {
-
-	echo -e $BOLD"Starting RIC Simulators"$EBOLD
-
-	__check_included_image 'RICSIM'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Near-RT RIC Simulator image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The Near-RT RIC Simulartor(s) will not be started"$ERED
-		exit
-	fi
-
-	RIC1=$RIC_SIM_PREFIX"_g1"
-	RIC2=$RIC_SIM_PREFIX"_g2"
-	RIC3=$RIC_SIM_PREFIX"_g3"
-	RIC4=$RIC_SIM_PREFIX"_g4"
-	RIC5=$RIC_SIM_PREFIX"_g5"
-
-	if [ $# != 3 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need three args,  $RIC1|$RIC2|$RIC3|$RIC4|$RIC5 <count> <interface-id>" $@
-		exit 1
-	fi
-	echo " $2 simulators using basename: $1 on interface: $3"
-	#Set env var for simulator count and A1 interface vesion for the given group
-	if [ $1 == "$RIC1" ]; then
-		G1_COUNT=$2
-		G1_A1_VERSION=$3
-	elif [ $1 == "$RIC2" ]; then
-		G2_COUNT=$2
-		G2_A1_VERSION=$3
-	elif [ $1 == "$RIC3" ]; then
-		G3_COUNT=$2
-		G3_A1_VERSION=$3
-	elif [ $1 == "$RIC4" ]; then
-		G4_COUNT=$2
-		G4_A1_VERSION=$3
-	elif [ $1 == "$RIC5" ]; then
-		G5_COUNT=$2
-		G5_A1_VERSION=$3
-	else
-		((RES_CONF_FAIL++))
-    	__print_err "need three args, $RIC1|$RIC2|$RIC3|$RIC4|$RIC5 <count> <interface-id>" $@
-		exit 1
-	fi
-
-	# Create .env file to compose project, all ric container will get this prefix
-	echo "COMPOSE_PROJECT_NAME="$RIC_SIM_PREFIX > $SIM_GROUP/ric/.env
-
-	export G1_A1_VERSION
-	export G2_A1_VERSION
-	export G3_A1_VERSION
-	export G4_A1_VERSION
-	export G5_A1_VERSION
-
-	docker_args="--scale g1=$G1_COUNT --scale g2=$G2_COUNT --scale g3=$G3_COUNT --scale g4=$G4_COUNT --scale g5=$G5_COUNT"
-	app_data=""
-	cntr=1
-	while [ $cntr -le $2 ]; do
-		app=$1"_"$cntr
-		port=0
-		app_data="$app_data $app $port / "$RIC_SIM_HTTPX
-		let cntr=cntr+1
-	done
-	__start_container ric "$docker_args" $app_data
-
-}
-
-###########################
-### Control Panel functions
-###########################
-
-# Start the Control Panel container
-# args: -
-# (Function for test scripts)
-start_control_panel() {
-
-	echo -e $BOLD"Starting Control Panel"$EBOLD
-	__check_included_image 'CP'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Control Panel image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The Control Panel will not be started"$ERED
-		exit
-	fi
-	__start_container control_panel NODOCKERARGS $CONTROL_PANEL_APP_NAME $CONTROL_PANEL_EXTERNAL_PORT "/" "http"
-
-}
-
-###########################
-### RAPP Catalogue
-###########################
-
-# Start the RAPP Catalogue container
-# args: -
-# (Function for test scripts)
-start_rapp_catalogue() {
-
-	echo -e $BOLD"Starting RAPP Catalogue"$EBOLD
-
-	__check_included_image 'RC'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The RAPP Catalogue image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The RAPP Catalogue will not be started"$ERED
-		exit
-	fi
-	__start_container rapp_catalogue NODOCKERARGS $RAPP_CAT_APP_NAME $RAPP_CAT_EXTERNAL_PORT "/services" "http"
-}
-
-use_rapp_catalogue_http() {
-	echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards the RAPP Catalogue"
-	export RAPP_CAT_HTTPX="http"
-	export RAPP_CAT_PORT=$RAPP_CAT_INTERNAL_PORT
-	export RAPP_CAT_LOCAL_PORT=$RAPP_CAT_EXTERNAL_PORT
-	echo ""
-}
-
-use_rapp_catalogue_https() {
-	echo -e $BOLD"RAPP Catalogue protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards the RAPP Catalogue"
-	export RAPP_CAT_HTTPX="https"
-	export RAPP_CAT_PORT=$RAPP_CAT_INTERNAL_PORT
-	export RAPP_CAT_LOCAL_PORT=$RAPP_CAT_EXTERNAL_PORT
-	echo ""
-}
-
-##################
-### SDNC functions
-##################
-
-# Start the SDNC A1 Controller
-# args: -
-# (Function for test scripts)
-start_sdnc() {
-
-	echo -e $BOLD"Starting SDNC A1 Controller"$EBOLD
-
-	__check_included_image 'SDNC'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The image for SDNC and the related DB has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"SDNC will not be started"$ERED
-		exit
-	fi
-
-	__start_container sdnc NODOCKERARGS $SDNC_APP_NAME $SDNC_EXTERNAL_PORT $SDNC_ALIVE_URL "http"
-
-}
-
-use_sdnc_http() {
-	echo -e $BOLD"SDNC protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards SDNC"
-	export SDNC_HTTPX="http"
-	export SDNC_PORT=$SDNC_INTERNAL_PORT
-	export SDNC_LOCAL_PORT=$SDNC_EXTERNAL_PORT
-	echo ""
-}
-
-use_sdnc_https() {
-	echo -e $BOLD"SDNC protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards SDNC"
-	export SDNC_HTTPX="https"
-	export SDNC_PORT=$SDNC_INTERNAL_SECURE_PORT
-	export SDNC_LOCAL_PORT=$SDNC_EXTERNAL_SECURE_PORT
-	echo ""
-}
-
-#####################
-### MR stub functions
-#####################
-
-# Start the Message Router stub interface in the simulator group
-# args: -
-# (Function for test scripts)
-start_mr() {
-
-	echo -e $BOLD"Starting Message Router 'mrstub'"$EBOLD
-	__check_included_image 'MR'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Message Router image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The Message Router will not be started"$ERED
-		exit
-	fi
-	export MR_CERT_MOUNT_DIR="./cert"
-	__start_container mr NODOCKERARGS $MR_APP_NAME $MR_EXTERNAL_PORT "/" "http"
-}
-
-use_mr_http() {
-	echo -e $BOLD"MR protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards MR"
-	export MR_HTTPX="http"
-	export MR_PORT=$MR_INTERNAL_PORT
-	export MR_LOCAL_PORT=$MR_EXTERNAL_PORT
-	echo ""
-}
-
-use_mr_https() {
-	echo -e $BOLD"MR protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards MR"
-	export MR_HTTPX="https"
-	export MR_PORT=$MR_INTERNAL_SECURE_PORT
-	export MR_LOCAL_PORT=$MR_EXTERNAL_SECURE_PORT
-	echo ""
-}
-
-
-################
-### CR functions
-################
-
-# Start the Callback reciver in the simulator group
-# args: -
-# (Function for test scripts)
-start_cr() {
-
-	echo -e $BOLD"Starting Callback Receiver"$EBOLD
-	__check_included_image 'CR'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Callback Receiver image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The Callback Receiver will not be started"$ERED
-		exit
-	fi
-	__start_container cr NODOCKERARGS $CR_APP_NAME $CR_EXTERNAL_PORT "/" "http"
-
-}
-
-use_cr_http() {
-	echo -e $BOLD"CR protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards CR"
-	export CR_HTTPX="http"
-	export CR_PORT=$CR_INTERNAL_PORT
-	export CR_LOCAL_PORT=$CR_EXTERNAL_PORT
-	export CR_PATH="$CR_HTTPX://$CR_APP_NAME:$CR_PORT$CR_APP_CALLBACK"
-	echo ""
-}
-
-use_cr_https() {
-	echo -e $BOLD"CR protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards CR"
-	export CR_HTTPX="https"
-	export CR_PORT=$CR_INTERNAL_SECURE_PORT
-	export CR_LOCAL_PORT=$CR_EXTERNAL_SECURE_PORT
-	export CR_PATH="$CR_HTTPX://$CR_APP_NAME:$CR_PORT$CR_APP_CALLBACK"
-	echo ""
-}
-
-###########################
-### Producer stub functions
-###########################
-
-# Start the Producer stub in the simulator group
-# args: -
-# (Function for test scripts)
-start_prod_stub() {
-
-	echo -e $BOLD"Starting Producer stub"$EBOLD
-	__check_included_image 'PRODSTUB'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The Producer stub image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"The Producer stub will not be started"$ERED
-		exit
-	fi
-	__start_container prodstub NODOCKERARGS $PROD_STUB_APP_NAME $PROD_STUB_EXTERNAL_PORT "/" "http"
-
-}
-
-use_prod_stub_http() {
-	echo -e $BOLD"Producer stub protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD towards Producer stub"
-	export PROD_STUB_HTTPX="http"
-	export PROD_STUB_PORT=$PROD_STUB_INTERNAL_PORT
-	export PROD_STUB_LOCAL_PORT=$PROD_STUB_EXTERNAL_PORT
-	export PROD_STUB_LOCALHOST=$PROD_STUB_HTTPX"://localhost:"$PROD_STUB_LOCAL_PORT
-	echo ""
-}
-
-use_prod_stub_https() {
-	echo -e $BOLD"Producer stub protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD towards Producer stub"
-	export PROD_STUB_HTTPX="https"
-	export PROD_STUB_PORT=$PROD_STUB_INTERNAL_SECURE_PORT
-	export PROD_STUB_LOCAL_PORT=$PROD_STUB_EXTERNAL_SECURE_PORT
-	export PROD_STUB_LOCALHOST=$PROD_STUB_HTTPX"://localhost:"$PROD_STUB_LOCAL_PORT
-	echo ""
-}
-
-###########################
-### Policy Agents functions
-###########################
-
-# Use an agent on the local machine instead of container
-use_agent_stand_alone() {
-	AGENT_STAND_ALONE=1
-}
-
-# Start the policy agent
-# args: -
-# (Function for test scripts)
-start_policy_agent() {
-
-	echo -e $BOLD"Starting Policy Agent"$EBOLD
-
-	if [ $AGENT_STAND_ALONE -eq 0 ]; then
-		__check_included_image 'PA'
-		if [ $? -eq 1 ]; then
-			echo -e $RED"The Policy Agent image has not been checked for this test run due to arg to the test script"$ERED
-			echo -e $RED"The Policy Agent will not be started"$ERED
-			exit
-		fi
-		__start_container policy_agent NODOCKERARGS $POLICY_AGENT_APP_NAME $POLICY_AGENT_EXTERNAL_PORT "/status" "http"
-	else
-		echo -e $RED"The consul config produced by this test script (filename '<fullpath-to-autotest-dir>.output<file-name>"$ERED
-		echo -e $RED"where the file name is the file in the consul_config_app command in this script) must be pointed out by the agent "$ERED
-		echo -e $RED"application.yaml"$ERED
-		echo -e $RED"The application jar may need to be built before continuing"$ERED
-		echo -e $RED"The agent shall now be running on port $POLICY_AGENT_EXTERNAL_PORT for http"$ERED
-
-		read -p "<press any key to continue>"
-		__start_container policy_agent "STANDALONE" $POLICY_AGENT_APP_NAME $POLICY_AGENT_EXTERNAL_PORT "/status" "http"
-	fi
-
-}
-
-# All calls to the agent will be directed to the agent REST interface from now on
-# args: -
-# (Function for test scripts)
-use_agent_rest_http() {
-	echo -e $BOLD"Agent protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards the agent"
-	export ADAPTER=$RESTBASE
-	echo ""
-}
-
-# All calls to the agent will be directed to the agent REST interface from now on
-# args: -
-# (Function for test scripts)
-use_agent_rest_https() {
-	echo -e $BOLD"Agent protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards the agent"
-	export ADAPTER=$RESTBASE_SECURE
 	echo ""
 	return 0
 }
 
-# All calls to the agent will be directed to the agent dmaap interface over http from now on
-# args: -
-# (Function for test scripts)
-use_agent_dmaap_http() {
-	echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
-	export ADAPTER=$DMAAPBASE
-	echo ""
-	return 0
-}
-
-# All calls to the agent will be directed to the agent dmaap interface over https from now on
-# args: -
-# (Function for test scripts)
-use_agent_dmaap_https() {
-	echo -e $BOLD"Agent dmaap protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD and $BOLD DMAAP $EBOLD towards the agent"
-	export ADAPTER=$DMAAPBASE_SECURE
-	echo ""
-	return 0
-}
-
-# Turn on debug level tracing in the agent
-# args: -
-# (Function for test scripts)
-set_agent_debug() {
-	echo -e $BOLD"Setting agent debug logging"$EBOLD
-	actuator="/actuator/loggers/org.oransc.policyagent"
-	if [[ $POLICY_AGENT_IMAGE = *"onap"* ]]; then
-		actuator="/actuator/loggers/org.onap.ccsdk.oran.a1policymanagementservice"
-	fi
-	curlString="$LOCALHOST$POLICY_AGENT_EXTERNAL_PORT$actuator -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
-	result=$(__do_curl "$curlString")
-	if [ $? -ne 0 ]; then
-		__print_err "could not set debug mode" $@
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-	echo ""
-	return 0
-}
-
-# Turn on trace level tracing in the agent
-# args: -
-# (Function for test scripts)
-set_agent_trace() {
-	echo -e $BOLD"Setting agent trace logging"$EBOLD
-	actuator="/actuator/loggers/org.oransc.policyagent"
-	if [[ $POLICY_AGENT_IMAGE = *"onap"* ]]; then
-		actuator="/actuator/loggers/org.onap.ccsdk.oran.a1policymanagementservice"
-	fi
-	curlString="$LOCALHOST$POLICY_AGENT_EXTERNAL_PORT$actuator -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
-	result=$(__do_curl "$curlString")
-	if [ $? -ne 0 ]; then
-		__print_err "could not set trace mode" $@
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-	echo ""
-	return 0
-}
-
-# Perform curl retries when making direct call to the agent for the specified http response codes
-# Speace separated list of http response codes
-# args: [<response-code>]*
-use_agent_retries() {
-	echo -e $BOLD"Do curl retries to the agent REST inteface for these response codes:$@"$EBOLD
-	AGENT_RETRY_CODES=$@
-	echo ""
-	return
-}
-
-###########################
-### ECS functions
-###########################
-
-# Start the ECS
-# args: -
-# (Function for test scripts)
-start_ecs() {
-
-	echo -e $BOLD"Starting ECS"$EBOLD
-
-	curdir=$PWD
-	cd $SIM_GROUP
-	cd ecs
-	cd $ECS_HOST_MNT_DIR
-	if [ -d database ]; then
-		if [ "$(ls -A $DIR)" ]; then
-			echo -e $BOLD" Cleaning files in mounted dir: $PWD/database"$EBOLD
-			rm -rf database/*  &> /dev/null
-			if [ $? -ne 0 ]; then
-				echo -e $RED" Cannot remove database files in: $PWD"$ERED
-				exit 1
-			fi
-		fi
-	else
-		echo " No files in mounted dir or dir does not exists"
-	fi
-	cd $curdir
-
-	__check_included_image 'ECS'
-	if [ $? -eq 1 ]; then
-		echo -e $RED"The ECS image has not been checked for this test run due to arg to the test script"$ERED
-		echo -e $RED"ECS will not be started"$ERED
-		exit
-	fi
-	export ECS_CERT_MOUNT_DIR="./cert"
-	__start_container ecs NODOCKERARGS $ECS_APP_NAME $ECS_EXTERNAL_PORT "/status" "http"
-}
-
-# Restart ECS
-# args: -
-# (Function for test scripts)
-restart_ecs() {
-	echo -e $BOLD"Re-starting ECS"$EBOLD
-	docker restart $ECS_APP_NAME &> ./tmp/.dockererr
-	if [ $? -ne 0 ]; then
-		__print_err "Could restart $ECS_APP_NAME" $@
-		cat ./tmp/.dockererr
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-
-	__check_container_start $ECS_APP_NAME $ECS_EXTERNAL_PORT "/status" "http"
-	echo ""
-	return 0
-}
-
-# All calls to ECS will be directed to the ECS REST interface from now on
-# args: -
-# (Function for test scripts)
-use_ecs_rest_http() {
-	echo -e $BOLD"ECS protocol setting"$EBOLD
-	echo -e " Using $BOLD http $EBOLD and $BOLD REST $EBOLD towards ECS"
-	export ECS_ADAPTER=$ECS_RESTBASE
-	echo ""
-}
-
-# All calls to ECS will be directed to the ECS REST interface from now on
-# args: -
-# (Function for test scripts)
-use_ecs_rest_https() {
-	echo -e $BOLD"ECS protocol setting"$EBOLD
-	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
-	export ECS_ADAPTER=$ECS_RESTBASE_SECURE
-	echo ""
-	return 0
-}
-
-# All calls to ECS will be directed to the ECS dmaap interface over http from now on
-# args: -
-# (Function for test scripts)
-use_ecs_dmaap_http() {
-	echo -e $BOLD"ECS dmaap protocol setting"$EBOLD
-	echo -e $RED" - NOT SUPPORTED - "$ERED
-	echo -e " Using $BOLD http $EBOLD and $BOLD DMAAP $EBOLD towards ECS"
-	export ECS_ADAPTER=$ECS_DMAAPBASE
-	echo ""
-	return 0
-}
-
-# All calls to ECS will be directed to the ECS dmaap interface over https from now on
-# args: -
-# (Function for test scripts)
-use_ecs_dmaap_https() {
-	echo -e $BOLD"RICSIM protocol setting"$EBOLD
-	echo -e $RED" - NOT SUPPORTED - "$ERED
-	echo -e " Using $BOLD https $EBOLD and $BOLD REST $EBOLD towards ECS"
-	export ECS_ADAPTER=$ECS_DMAAPBASE_SECURE
-	echo ""
-	return 0
-}
-
-# Turn on debug level tracing in ECS
-# args: -
-# (Function for test scripts)
-set_ecs_debug() {
-	echo -e $BOLD"Setting ecs debug logging"$EBOLD
-	curlString="$LOCALHOST$ECS_EXTERNAL_PORT/actuator/loggers/org.oransc.enrichment -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"debug\"}"
-	result=$(__do_curl "$curlString")
-	if [ $? -ne 0 ]; then
-		__print_err "Could not set debug mode" $@
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-	echo ""
-	return 0
-}
-
-# Turn on trace level tracing in ECS
-# args: -
-# (Function for test scripts)
-set_ecs_trace() {
-	echo -e $BOLD"Setting ecs trace logging"$EBOLD
-	curlString="$LOCALHOST$ECS_EXTERNAL_PORT/actuator/loggers/org.oransc.enrichment -X POST  -H Content-Type:application/json -d {\"configuredLevel\":\"trace\"}"
-	result=$(__do_curl "$curlString")
-	if [ $? -ne 0 ]; then
-		__print_err "Could not set trace mode" $@
-		((RES_CONF_FAIL++))
-		return 1
-	fi
-	echo ""
-	return 0
-}
-
-# Perform curl retries when making direct call to ECS for the specified http response codes
-# Speace separated list of http response codes
-# args: [<response-code>]*
-use_agent_retries() {
-	echo -e $BOLD"Do curl retries to the ECS REST inteface for these response codes:$@"$EBOLD
-	ECS_AGENT_RETRY_CODES=$@
-	echo ""
-	return
-}
 
 #################
 ### Log functions
@@ -2444,6 +2398,7 @@
 }
 
 __check_container_logs() {
+
 	dispname=$1
 	appname=$2
 	logpath=$3
@@ -2452,6 +2407,11 @@
 
 	echo -e $BOLD"Checking $dispname container $appname log ($logpath) for WARNINGs and ERRORs"$EBOLD
 
+	if [ $RUNMODE == "KUBE" ]; then
+		echo -e $YELLOW" Internal log for $dispname not checked in kube"$EYELLOW
+		return
+	fi
+
 	#tmp=$(docker ps | grep $appname)
 	tmp=$(docker ps -q --filter name=$appname) #get the container id
 	if [ -z "$tmp" ]; then  #Only check logs for running Policy Agent apps
@@ -2495,63 +2455,83 @@
 
 	docker stats --no-stream > $TESTLOGS/$ATC/$1_docker_stats.log 2>&1
 
-	__check_included_image 'CONSUL'
-	if [ $? -eq 0 ]; then
-		docker logs $CONSUL_APP_NAME > $TESTLOGS/$ATC/$1_consul.log 2>&1
-	fi
-
-	__check_included_image 'CBS'
-	if [ $? -eq 0 ]; then
-		docker logs $CBS_APP_NAME > $TESTLOGS/$ATC/$1_cbs.log 2>&1
-		body="$(__do_curl $LOCALHOST$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_APP_NAME)"
-		echo "$body" > $TESTLOGS/$ATC/$1_consul_config.json 2>&1
-	fi
-
-	__check_included_image 'PA'
-	if [ $? -eq 0 ]; then
-		docker logs $POLICY_AGENT_APP_NAME > $TESTLOGS/$ATC/$1_policy-agent.log 2>&1
-	fi
-
-	__check_included_image 'ECS'
-	if [ $? -eq 0 ]; then
-		docker logs $ECS_APP_NAME > $TESTLOGS/$ATC/$1_ecs.log 2>&1
-	fi
-
-	__check_included_image 'CP'
-	if [ $? -eq 0 ]; then
-		docker logs $CONTROL_PANEL_APP_NAME > $TESTLOGS/$ATC/$1_control-panel.log 2>&1
-	fi
-
-	__check_included_image 'MR'
-	if [ $? -eq 0 ]; then
-		docker logs $MR_APP_NAME > $TESTLOGS/$ATC/$1_mr.log 2>&1
-	fi
-
-	__check_included_image 'CR'
-	if [ $? -eq 0 ]; then
-		docker logs $CR_APP_NAME > $TESTLOGS/$ATC/$1_cr.log 2>&1
-	fi
+	docker ps -a  > $TESTLOGS/$ATC/$1_docker_ps.log 2>&1
 
 	cp .httplog_${ATC}.txt $TESTLOGS/$ATC/$1_httplog_${ATC}.txt 2>&1
 
-	__check_included_image 'SDNC'
-	if [ $? -eq 0 ]; then
-		docker exec -t $SDNC_APP_NAME cat $SDNC_KARAF_LOG> $TESTLOGS/$ATC/$1_SDNC_karaf.log 2>&1
-	fi
+	if [ $RUNMODE == "DOCKER" ]; then
+		__check_included_image 'CONSUL'
+		if [ $? -eq 0 ]; then
+			docker logs $CONSUL_APP_NAME > $TESTLOGS/$ATC/$1_consul.log 2>&1
+		fi
 
-	__check_included_image 'RICSIM'
-	if [ $? -eq 0 ]; then
-		rics=$(docker ps -f "name=$RIC_SIM_PREFIX" --format "{{.Names}}")
-		for ric in $rics; do
-			docker logs $ric > $TESTLOGS/$ATC/$1_$ric.log 2>&1
+		__check_included_image 'CBS'
+		if [ $? -eq 0 ]; then
+			docker logs $CBS_APP_NAME > $TESTLOGS/$ATC/$1_cbs.log 2>&1
+			body="$(__do_curl $LOCALHOST_HTTP:$CBS_EXTERNAL_PORT/service_component_all/$POLICY_AGENT_APP_NAME)"
+			echo "$body" > $TESTLOGS/$ATC/$1_consul_config.json 2>&1
+		fi
+
+		__check_included_image 'PA'
+		if [ $? -eq 0 ]; then
+			docker logs $POLICY_AGENT_APP_NAME > $TESTLOGS/$ATC/$1_policy-agent.log 2>&1
+		fi
+
+		__check_included_image 'ECS'
+		if [ $? -eq 0 ]; then
+			docker logs $ECS_APP_NAME > $TESTLOGS/$ATC/$1_ecs.log 2>&1
+		fi
+
+		__check_included_image 'CP'
+		if [ $? -eq 0 ]; then
+			docker logs $CONTROL_PANEL_APP_NAME > $TESTLOGS/$ATC/$1_control-panel.log 2>&1
+		fi
+
+		__check_included_image 'MR'
+		if [ $? -eq 0 ]; then
+			docker logs $MR_STUB_APP_NAME > $TESTLOGS/$ATC/$1_mr_stub.log 2>&1
+		fi
+
+		__check_included_image 'DMAAPSMR'
+		if [ $? -eq 0 ]; then
+			docker logs $MR_DMAAP_APP_NAME > $TESTLOGS/$ATC/$1_mr.log 2>&1
+			docker logs $MR_KAFKA_APP_NAME > $TESTLOGS/$ATC/$1_mr_kafka.log 2>&1
+			docker logs $MR_ZOOKEEPER_APP_NAME > $TESTLOGS/$ATC/$1_mr_zookeeper.log 2>&1
+
+		fi
+
+		__check_included_image 'CR'
+		if [ $? -eq 0 ]; then
+			docker logs $CR_APP_NAME > $TESTLOGS/$ATC/$1_cr.log 2>&1
+		fi
+
+		__check_included_image 'SDNC'
+		if [ $? -eq 0 ]; then
+			docker exec -t $SDNC_APP_NAME cat $SDNC_KARAF_LOG> $TESTLOGS/$ATC/$1_SDNC_karaf.log 2>&1
+		fi
+
+		__check_included_image 'RICSIM'
+		if [ $? -eq 0 ]; then
+			rics=$(docker ps -f "name=$RIC_SIM_PREFIX" --format "{{.Names}}")
+			for ric in $rics; do
+				docker logs $ric > $TESTLOGS/$ATC/$1_$ric.log 2>&1
+			done
+		fi
+
+		__check_included_image 'PRODSTUB'
+		if [ $? -eq 0 ]; then
+			docker logs $PROD_STUB_APP_NAME > $TESTLOGS/$ATC/$1_prodstub.log 2>&1
+		fi
+	fi
+	if [ $RUNMODE == "KUBE" ]; then
+		namespaces=$(kubectl  get namespaces -o jsonpath='{.items[?(@.metadata.name)].metadata.name}')
+		for nsid in $namespaces; do
+			pods=$(kubectl get pods -n $nsid -o jsonpath='{.items[?(@.metadata.labels.autotest)].metadata.name}')
+			for podid in $pods; do
+				kubectl logs -n $nsid $podid > $TESTLOGS/$ATC/$1_${podid}.log
+			done
 		done
 	fi
-
-	__check_included_image 'PRODSTUB'
-	if [ $? -eq 0 ]; then
-		docker logs $PROD_STUB_APP_NAME > $TESTLOGS/$ATC/$1_prodstub.log 2>&1
-	fi
-
 	echo ""
 }
 
@@ -2714,55 +2694,3 @@
 		exit 1
 	fi
 }
-
-
-### Generic test cases for varaible checking
-
-# Tests if a variable value in the MR stub is equal to a target value and and optional timeout.
-# Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
-# equal to the target or not.
-# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
-# before setting pass or fail depending on if the variable value becomes equal to the target
-# value or not.
-# (Function for test scripts)
-mr_equal() {
-	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "MR" "$LOCALHOST$MR_EXTERNAL_PORT/counter/" $1 "=" $2 $3
-	else
-		((RES_CONF_FAIL++))
-		__print_err "Wrong args to mr_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
-	fi
-}
-
-# Tests if a variable value in the MR stub is greater than a target value and and optional timeout.
-# Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable is
-# greater than the target or not.
-# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
-# before setting pass or fail depending on if the variable value becomes greater than the target
-# value or not.
-# (Function for test scripts)
-mr_greater() {
-	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "MR" "$LOCALHOST$MR_EXTERNAL_PORT/counter/" $1 ">" $2 $3
-	else
-		((RES_CONF_FAIL++))
-		__print_err "Wrong args to mr_greater, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
-	fi
-}
-
-# Read a variable value from MR sim and send to stdout. Arg: <variable-name>
-mr_read() {
-	echo "$(__do_curl $LOCALHOST$MR_EXTERNAL_PORT/counter/$1)"
-}
-
-# Print a variable value from the MR stub.
-# arg: <variable-name>
-# (Function for test scripts)
-mr_print() {
-	if [ $# != 1 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need one arg, <mr-param>" $@
-		exit 1
-	fi
-	echo -e $BOLD"INFO(${BASH_LINENO[0]}): mrstub, $1 = $(__do_curl $LOCALHOST$MR_EXTERNAL_PORT/counter/$1)"$EBOLD
-}
diff --git a/test/mrstub/app/main.py b/test/mrstub/app/main.py
index 75b23f1..db13fc0 100644
--- a/test/mrstub/app/main.py
+++ b/test/mrstub/app/main.py
@@ -24,8 +24,10 @@
 from flask import Flask
 from flask import Response
 import traceback
-from threading import RLock
+from threading import RLock, Thread
 import logging
+import os
+import requests
 
 # Disable all logging of GET on reading counters
 class AjaxFilter(logging.Filter):
@@ -61,6 +63,89 @@
 CAUGHT_EXCEPTION="Caught exception: "
 SERVER_ERROR="Server error :"
 
+topic_write=""
+topic_read=""
+
+uploader_thread=None
+downloader_thread=None
+
+# Function to download messages from dmaap
+def dmaap_uploader():
+    global msg_requests
+    global cntr_msg_requests_fetched
+
+    print("Starting uploader")
+
+    headers = {'Content-type': 'application/json', 'Accept': '*/*'}
+    #url="http://"+topic_host+"/events/"+topic_read
+    url=topic_read
+
+    while True:
+        while (len(msg_requests)>0):
+            msg=msg_requests[0]
+            if msg is not None:
+                try:
+                    print("Sending to dmaap : "+ url)
+                    print("Sending to dmaap : "+ msg)
+                    resp=requests.post(url, data=msg, headers=headers, timeout=10)
+                    if (resp.status_code<199 & resp.status_code > 299):
+                        print("Failed, response code: " + str(resp.status_code))
+                        sleep(1)
+                    else:
+                        print("Dmaap response code: " + str(resp.status_code))
+                        print("Dmaap response text: " + str(resp.text))
+                        with lock:
+                            msg_requests.pop(0)
+                            cntr_msg_requests_fetched += 1
+                except Exception as e:
+                    print("Failed, exception: "+ str(e))
+                    sleep(1)
+        sleep(0.01)
+
+
+# Function to download messages from dmaap
+def dmaap_downloader():
+    global msg_responses
+    global cntr_msg_responses_submitted
+
+    print("Starting uploader")
+
+    while True:
+
+        try :
+            #url="http://"+topic_host+"/events/"+topic_write+"/users/mr-stub?timeout=15000&limit=100"
+            url=topic_write
+            headers = {'Accept': 'application/json'}
+            print("Reading from dmaap: " + url)
+            resp=requests.get(url, headers=headers)
+            if (resp.status_code<199 & resp.status_code > 299):
+                print("Failed, response code: " + resp.status_code)
+                sleep(1)
+            else:
+                print("Recieved data from dmaap mr")
+                try:
+                    data=resp.json()
+                    print("Recieved data (raw): " + str(resp.text))
+                    if isinstance(data, list):
+                        for item in data:
+                            item=json.loads(item)
+                            corrid=str(item["correlationId"])
+                            status=str(item["status"])
+                            msg=str(item["message"])
+                            item_str=msg+status[0:3]
+                            with lock:
+                                msg_responses[corrid]=item_str
+                                cntr_msg_responses_submitted += 1
+                    else:
+                        print("Data from dmaap is not json array: " + str(resp.text))
+                        sleep(1)
+                except Exception as e:
+                    print("Corrupt data from dmaap mr -  dropping " + str(data))
+                    print("CAUGHT_EXCEPTION" + str(e) + " "+traceback.format_exc())
+                    sleep(1)
+        except Exception as e:
+            sleep(1)
+
 #I'm alive function
 @app.route('/',
     methods=['GET'])
@@ -134,19 +219,19 @@
     with lock:
         print("APP_READ_URL lock")
         try:
-            id=request.args.get('correlationid')
-            if (id is None):
+            cid=request.args.get('correlationid')
+            if (cid is None):
                 print(APP_READ_URL+" parameter 'correclationid' missing")
                 return Response('Parameter correlationid missing in json', status=500, mimetype=MIME_TEXT)
 
-            if (id in msg_responses):
-                answer=msg_responses[id]
-                del msg_responses[id]
-                print(APP_READ_URL+" response (correlationid="+id+"): " + answer)
+            if (cid in msg_responses):
+                answer=msg_responses[cid]
+                del msg_responses[cid]
+                print(APP_READ_URL+" response (correlationid="+cid+"): " + answer)
                 cntr_msg_responses_fetched += 1
                 return Response(answer, status=200, mimetype=MIME_JSON)
 
-            print(APP_READ_URL+" - no messages (correlationid="+id+"): ")
+            print(APP_READ_URL+" - no messages (correlationid="+cid+"): ")
             return Response('', status=204, mimetype=MIME_JSON)
         except Exception as e:
             print(APP_READ_URL+"-"+CAUGHT_EXCEPTION+" "+str(e) + " "+traceback.format_exc())
@@ -163,6 +248,9 @@
     global msg_requests
     global cntr_msg_requests_fetched
 
+    if topic_write or topic_read:
+        return Response('Url not available when running as mrstub frontend', status=404, mimetype=MIME_TEXT)
+
     limit=request.args.get('limit')
     if (limit is None):
         limit=4096
@@ -180,10 +268,10 @@
     else:
         timeout=min(int(timeout),60000)
 
-    startTime=int(round(time.time() * 1000))
-    currentTime=int(round(time.time() * 1000))
+    start_time=int(round(time.time() * 1000))
+    current_time=int(round(time.time() * 1000))
 
-    while(currentTime<startTime+int(timeout)):
+    while(current_time<start_time+int(timeout)):
         with lock:
             if(len(msg_requests)>0):
                 try:
@@ -202,9 +290,9 @@
                     print(AGENT_READ_URL+"-"+CAUGHT_EXCEPTION+" "+str(e) + " "+traceback.format_exc())
                     return Response(SERVER_ERROR+" "+str(e), status=500, mimetype=MIME_TEXT)
         sleep(0.025) # sleep 25 milliseconds
-        currentTime=int(round(time.time() * 1000))
+        current_time=int(round(time.time() * 1000))
 
-    print("timeout: "+str(timeout)+", startTime: "+str(startTime)+", currentTime: "+str(currentTime))
+    print("timeout: "+str(timeout)+", start_time: "+str(start_time)+", current_time: "+str(current_time))
     return Response("[]", status=200, mimetype=MIME_JSON)
 
 # Write messages stream. URI according to agent configuration.
@@ -215,6 +303,10 @@
 def events_write():
     global msg_responses
     global cntr_msg_responses_submitted
+
+    if topic_write or topic_read:
+        return Response('Url not available when running as mrstub frontend', status=404, mimetype=MIME_TEXT)
+
     with lock:
         print("AGENT_WRITE_URL lock")
         try:
@@ -227,8 +319,8 @@
                 answer=answer_list
 
             for item in answer:
-                id=item['correlationId']
-                if (id is None):
+                cid=item['correlationId']
+                if (cid is None):
                     print(AGENT_WRITE_URL+" parameter 'correlatonid' missing")
                     return Response('Parameter <correlationid> missing in json', status=400, mimetype=MIME_TEXT)
                 msg=item['message']
@@ -243,9 +335,9 @@
                     msg_str=json.dumps(msg)+status[0:3]
                 else:
                     msg_str=msg+status[0:3]
-                msg_responses[id]=msg_str
+                msg_responses[cid]=msg_str
                 cntr_msg_responses_submitted += 1
-                print(AGENT_WRITE_URL+ " msg+status (correlationid="+id+") :" + str(msg_str))
+                print(AGENT_WRITE_URL+ " msg+status (correlationid="+cid+") :" + str(msg_str))
         except Exception as e:
             print(AGENT_WRITE_URL+"-"+CAUGHT_EXCEPTION+" "+str(e) + " "+traceback.format_exc())
             return Response('{"message": "' + SERVER_ERROR + ' ' + str(e) + '","status":"500"}', status=200, mimetype=MIME_JSON)
@@ -306,5 +398,27 @@
     msg_responses={}
     return Response('OK', status=200, mimetype=MIME_TEXT)
 
+# Get env vars, if present
+if os.getenv("TOPIC_READ") is not None:
+
+    print("Env variables:")
+    print("TOPIC_READ:"+os.environ['TOPIC_READ'])
+    print("TOPIC_WRITE:"+os.environ['TOPIC_WRITE'])
+
+    topic_read=os.environ['TOPIC_READ']
+    topic_write=os.environ['TOPIC_WRITE']
+
+
+    if topic_read and downloader_thread is None:
+        downloader_thread=Thread(target=dmaap_downloader)
+        downloader_thread.start()
+
+    if topic_write and uploader_thread is None:
+        uploader_thread=Thread(target=dmaap_uploader)
+        uploader_thread.start()
+
+else:
+    print("No env variables - OK")
+
 if __name__ == "__main__":
     app.run(port=HOST_PORT, host=HOST_IP)
\ No newline at end of file
diff --git a/test/mrstub/app/nginx.conf b/test/mrstub/app/nginx.conf
index 60b1dd9..c548e56 100644
--- a/test/mrstub/app/nginx.conf
+++ b/test/mrstub/app/nginx.conf
@@ -28,10 +28,10 @@
     default_type application/octet-stream;
 
     server { # simple reverse-proxy
-        listen      3905;
-        listen      [::]:3905;
-        listen      3906 ssl;
-        listen      [::]:3906 ssl;
+        listen      3904;
+        listen      [::]:3904;
+        listen      3905 ssl;
+        listen      [::]:3905 ssl;
         server_name  localhost;
         ssl_certificate     /usr/src/app/cert/cert.crt;
         ssl_certificate_key /usr/src/app/cert/key.crt;
diff --git a/test/mrstub/app/requirements.txt b/test/mrstub/app/requirements.txt
index 8fd414f..8c3d61f 100644
--- a/test/mrstub/app/requirements.txt
+++ b/test/mrstub/app/requirements.txt
@@ -1,2 +1,3 @@
 pip==20.1
-Flask==1.1.2
\ No newline at end of file
+Flask==1.1.2
+requests==2.25.1
\ No newline at end of file
diff --git a/test/mrstub/basic_test.sh b/test/mrstub/basic_test.sh
index 8b2347d..dbd4297 100755
--- a/test/mrstub/basic_test.sh
+++ b/test/mrstub/basic_test.sh
@@ -31,12 +31,12 @@
 
 if [ $1 == "nonsecure" ]; then
     #Default http port for the simulator
-    PORT=3905
+    PORT=3904
     # Set http protocol
     HTTPX="http"
 else
     #Default https port for the mr-stub
-    PORT=3906
+    PORT=3905
     # Set https protocol
     HTTPX="https"
 fi
diff --git a/test/mrstub/mrstub-build-start.sh b/test/mrstub/mrstub-build-start.sh
index 8ad1d16..c9f70a1 100755
--- a/test/mrstub/mrstub-build-start.sh
+++ b/test/mrstub/mrstub-build-start.sh
@@ -21,4 +21,4 @@
 
 docker build --build-arg NEXUS_PROXY_REPO=nexus3.onap.org:10001/  -t mrstub .
 
-docker run --rm -it -p 3905:3905 -p 3906:3906 -v "$PWD/cert:/usr/src/app/cert" mrstub
+docker run --rm -it -p 3904:3904 -p 3905:3905 -v "$PWD/cert:/usr/src/app/cert" mrstub
diff --git a/test/simulator-group/consul_cbs/consul/cbs_localhost_config.hcl b/test/simulator-group/consul_cbs/consul/cbs_localhost_config.hcl
deleted file mode 100644
index ff0bd31..0000000
--- a/test/simulator-group/consul_cbs/consul/cbs_localhost_config.hcl
+++ /dev/null
@@ -1,28 +0,0 @@
-#  ============LICENSE_START===============================================
-#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
-#  ========================================================================
-#  Licensed 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.
-#  ============LICENSE_END=================================================
-#
-
-service {
-  # Name for CBS in consul, env var CONFIG_BINDING_SERVICE
-  # should be passed to Policy Agent app with this value
-  # This is only to be used when contacting cbs via local host
-  # (typicall when Policy Agent is executed as an application without a container)
-  Name = "config-binding-service-localhost"
-  # Host name where CBS is running
-  Address = "localhost"
-  # Port number where CBS is running
-  Port = 10000
-}
\ No newline at end of file
diff --git a/test/simulator-group/control_panel/app.yaml b/test/simulator-group/control_panel/app.yaml
new file mode 100644
index 0000000..a962f3d
--- /dev/null
+++ b/test/simulator-group/control_panel/app.yaml
@@ -0,0 +1,37 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $CONTROL_PANEL_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $CONTROL_PANEL_APP_NAME
+    autotest: CP
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $CONTROL_PANEL_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $CONTROL_PANEL_APP_NAME
+        autotest: CP
+    spec:
+      containers:
+      - name: $CONTROL_PANEL_APP_NAME
+        image: $CONTROL_PANEL_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $CONTROL_PANEL_INTERNAL_PORT
+        - name: https
+          containerPort: $CONTROL_PANEL_INTERNAL_SECURE_PORT
+        volumeMounts:
+        - mountPath: $CONTROL_PANEL_CONFIG_MOUNT_PATH/$CONTROL_PANEL_CONFIG_FILE
+          subPath: $CONTROL_PANEL_CONFIG_FILE
+          name: cp-conf-name
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: $CP_CONFIG_CONFIGMAP_NAME
+        name: cp-conf-name
\ No newline at end of file
diff --git a/test/simulator-group/control_panel/application.properties b/test/simulator-group/control_panel/application.properties
new file mode 100644
index 0000000..2fc7093
--- /dev/null
+++ b/test/simulator-group/control_panel/application.properties
@@ -0,0 +1,37 @@
+################################################################################
+#   Copyright (c) 2020 Nordix Foundation.                                      #
+#                                                                              #
+#   Licensed 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.                                             #
+################################################################################
+server.port = 8082
+server.ssl.key-store-type = PKCS12
+server.ssl.key-store-password = ericsson_kwdjfhw
+server.ssl.key-store =  classpath:keystore.jks
+server.ssl.key-password = ericsson_kwdjfhw
+server.http.port = 8080
+# https api
+policycontroller.url.prefix = https://${POLICY_AGENT_DOMAIN_NAME}:${POLICY_AGENT_EXTERNAL_SECURE_PORT}
+
+userfile = users.json
+portalapi.decryptor = org.oransc.portal.nonrtric.controlpanel.portalapi.PortalSdkDecryptorAes
+portalapi.usercookie = UserId
+portalapi.security = false
+portalapi.appname = Non-RT RIC Control Panel
+portalapi.username = Default
+portalapi.password = password
+
+# URL for enrichment coordinator service
+enrichmentcontroller.url.prefix = https://${ECS_DOMAIN_NAME}:${ECS_EXTERNAL_SECURE_PORT}/ei-producer/v1
+
+# Mimic slow endpoints by defining sleep period, in milliseconds
+mock.config.delay = 0
diff --git a/test/simulator-group/control_panel/docker-compose.yml b/test/simulator-group/control_panel/docker-compose.yml
index 4e86f3c..0d603a0 100644
--- a/test/simulator-group/control_panel/docker-compose.yml
+++ b/test/simulator-group/control_panel/docker-compose.yml
@@ -18,7 +18,7 @@
 networks:
   default:
     external:
-      name: nonrtric-docker-net
+      name: ${DOCKER_SIM_NWNAME}
 services:
   control-panel:
     image: ${CONTROL_PANEL_IMAGE}
@@ -27,6 +27,6 @@
       - default
     ports:
     - ${CONTROL_PANEL_EXTERNAL_PORT}:${CONTROL_PANEL_INTERNAL_PORT}
-
+    - ${CONTROL_PANEL_EXTERNAL_SECURE_PORT}:${CONTROL_PANEL_INTERNAL_SECURE_PORT}
 
 
diff --git a/test/simulator-group/control_panel/svc.yaml b/test/simulator-group/control_panel/svc.yaml
new file mode 100644
index 0000000..85a4682
--- /dev/null
+++ b/test/simulator-group/control_panel/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $CONTROL_PANEL_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $CONTROL_PANEL_APP_NAME
+    autotest: CP
+spec:
+  type: ClusterIP
+  ports:
+  - port: $CONTROL_PANEL_EXTERNAL_PORT
+    targetPort: $CONTROL_PANEL_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $CONTROL_PANEL_EXTERNAL_SECURE_PORT
+    targetPort: $CONTROL_PANEL_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $CONTROL_PANEL_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/cr/app.yaml b/test/simulator-group/cr/app.yaml
new file mode 100644
index 0000000..3497b88
--- /dev/null
+++ b/test/simulator-group/cr/app.yaml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $CR_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $CR_APP_NAME
+    autotest: CR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $CR_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $CR_APP_NAME
+        autotest: CR
+    spec:
+      containers:
+      - name: $CR_APP_NAME
+        image: $CR_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $CR_INTERNAL_PORT
+        - name: https
+          containerPort: $CR_INTERNAL_SECURE_PORT
diff --git a/test/simulator-group/cr/svc.yaml b/test/simulator-group/cr/svc.yaml
new file mode 100644
index 0000000..43e532b
--- /dev/null
+++ b/test/simulator-group/cr/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $CR_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $CR_APP_NAME
+    autotest: CR
+spec:
+  type: ClusterIP
+  ports:
+  - port: $CR_EXTERNAL_PORT
+    targetPort: $CR_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $CR_EXTERNAL_SECURE_PORT
+    targetPort: $CR_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $CR_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/app.yaml b/test/simulator-group/dmaapmr/app.yaml
new file mode 100644
index 0000000..50e6943
--- /dev/null
+++ b/test/simulator-group/dmaapmr/app.yaml
@@ -0,0 +1,178 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $MR_DMAAP_KUBE_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_DMAAP_KUBE_APP_NAME
+    autotest: DMAAPMR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $MR_DMAAP_KUBE_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $MR_DMAAP_KUBE_APP_NAME
+        autotest: DMAAPMR
+    spec:
+      containers:
+      - name: $MR_DMAAP_KUBE_APP_NAME
+        image: $ONAP_DMAAPMR_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $MR_INTERNAL_PORT
+        - name: https
+          containerPort: $MR_INTERNAL_SECURE_PORT
+        env:
+        - name: enableCadi
+          value: 'false'
+        volumeMounts:
+        - mountPath: /appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+          subPath: MsgRtrApi.properties
+          name: dmaapmr-msg-rtr-api
+        volumeMounts:
+        - mountPath: /appl/dmaapMR1/bundleconfig/etc/logback.xml
+          subPath: logback.xml
+          name: dmaapmr-log-back
+        volumeMounts:
+        - mountPath: /appl/dmaapMR1/etc/cadi.properties
+          subPath: cadi.properties
+          name: dmaapmr-cadi
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-msgrtrapi.properties
+        name: dmaapmr-msg-rtr-api
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-logback.xml
+        name: dmaapmr-log-back
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-cadi.properties
+        name: dmaapmr-cadi
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $MR_KAFKA_BWDS_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_KAFKA_BWDS_NAME
+    autotest: DMAAPMR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $MR_KAFKA_BWDS_NAME
+  template:
+    metadata:
+      labels:
+        run: $MR_KAFKA_BWDS_NAME
+        autotest: DMAAPMR
+    spec:
+      containers:
+      - name: $MR_KAFKA_BWDS_NAME
+        image: $ONAP_KAFKA_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 9092
+        env:
+        - name: enableCadi
+          value: 'false'
+        - name: KAFKA_ZOOKEEPER_CONNECT
+          value: 'zookeeper.onap:2181'
+        - name: KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS
+          value: '40000'
+        - name: KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MS
+          value: '40000'
+        - name: KAFKA_LISTENER_SECURITY_PROTOCOL_MAP
+          value: 'INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT'
+#        - name: KAFKA_ADVERTISED_LISTENERS
+#          value: 'INTERNAL_PLAINTEXT://akfak-bwds.onap:9092'
+        - name: KAFKA_ADVERTISED_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://localhost:9092'
+        - name: KAFKA_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://0.0.0.0:9092'
+        - name: KAFKA_INTER_BROKER_LISTENER_NAME
+          value: INTERNAL_PLAINTEXT
+        - name: KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE
+          value: 'false'
+        - name: KAFKA_OPTS
+          value: '-Djava.security.auth.login.config=/etc/kafka/secrets/jaas/zk_client_jaas.conf'
+        - name: KAFKA_ZOOKEEPER_SET_ACL
+          value: 'true'
+        - name: KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR
+          value: '1'
+        - name: KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS
+          value: '1'
+        volumeMounts:
+        - mountPath: /etc/kafka/secrets/jaas/zk_client_jaas.conf
+          subPath: zk_client_jaas.conf
+          name: dmaapmr-zk-client-jaas
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-zk-client-jaas.conf
+        name: dmaapmr-zk-client-jaas
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $MR_ZOOKEEPER_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_ZOOKEEPER_APP_NAME
+    autotest: DMAAPMR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $MR_ZOOKEEPER_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $MR_ZOOKEEPER_APP_NAME
+        autotest: DMAAPMR
+    spec:
+      containers:
+      - name: $MR_ZOOKEEPER_APP_NAME
+        image: $ONAP_ZOOKEEPER_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: 2181
+        env:
+        - name: ZOOKEEPER_REPLICAS
+          value: '1'
+        - name: ZOOKEEPER_TICK_TIME
+          value: '2000'
+        - name: ZOOKEEPER_SYNC_LIMIT
+          value: '5'
+        - name: ZOOKEEPER_INIT_LIMIT
+          value: '10'
+        - name: ZOOKEEPER_MAX_CLIENT_CNXNS
+          value: '200'
+        - name: ZOOKEEPER_AUTOPURGE_SNAP_RETAIN_COUNT
+          value: '3'
+        - name: ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL
+          value: '24'
+        - name: ZOOKEEPER_CLIENT_PORT
+          value: '2181'
+        - name: KAFKA_OPTS
+          value: '-Djava.security.auth.login.config=/etc/zookeeper/secrets/jaas/zk_server_jaas.conf -Dzookeeper.kerberos.removeHostFromPrincipal=true -Dzookeeper.kerberos.removeRealmFromPrincipal=true -Dzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider -Dzookeeper.requireClientAuthScheme=sasl'
+        - name: ZOOKEEPER_SERVER_ID
+          value: '1'
+        volumeMounts:
+        - mountPath: /etc/zookeeper/secrets/jaas/zk_server_jaas.conf
+          subPath: zk_server_jaas.conf
+          name: dmaapmr-zk-server-jaas
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: dmaapmr-zk-server-jaas.conf
+        name: dmaapmr-zk-server-jaas
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/docker-compose.yaml b/test/simulator-group/dmaapmr/docker-compose.yaml
new file mode 100644
index 0000000..b418028
--- /dev/null
+++ b/test/simulator-group/dmaapmr/docker-compose.yaml
@@ -0,0 +1,89 @@
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed 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.
+#  ============LICENSE_END=================================================
+#
+
+version: '3.5'
+networks:
+  default:
+    external:
+      name: ${DOCKER_SIM_NWNAME}
+
+services:
+  zookeeper:
+    image: $ONAP_ZOOKEEPER_IMAGE
+    container_name: $MR_ZOOKEEPER_APP_NAME
+    ports:
+      - "2181:2181"
+    environment:
+     ZOOKEEPER_REPLICAS: 1
+     ZOOKEEPER_TICK_TIME: 2000
+     ZOOKEEPER_SYNC_LIMIT: 5
+     ZOOKEEPER_INIT_LIMIT: 10
+     ZOOKEEPER_MAX_CLIENT_CNXNS: 200
+     ZOOKEEPER_AUTOPURGE_SNAP_RETAIN_COUNT: 3
+     ZOOKEEPER_AUTOPURGE_PURGE_INTERVAL: 24
+     ZOOKEEPER_CLIENT_PORT: 2181
+     KAFKA_OPTS: -Djava.security.auth.login.config=/etc/zookeeper/secrets/jaas/zk_server_jaas.conf -Dzookeeper.kerberos.removeHostFromPrincipal=true -Dzookeeper.kerberos.removeRealmFromPrincipal=true -Dzookeeper.authProvider.1=org.apache.zookeeper.server.auth.SASLAuthenticationProvider -Dzookeeper.requireClientAuthScheme=sasl
+     ZOOKEEPER_SERVER_ID: 1
+    volumes:
+      -  ./mnt/zk/zk_server_jaas.conf:/etc/zookeeper/secrets/jaas/zk_server_jaas.conf
+    networks:
+      - default
+
+  kafka:
+   image: $ONAP_KAFKA_IMAGE
+   container_name: $MR_KAFKA_APP_NAME
+   ports:
+    - "9092:9092"
+   environment:
+    enableCadi: 'false'
+    KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
+    KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: 40000
+    KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MS: 40000
+    KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL_PLAINTEXT:PLAINTEXT,EXTERNAL_PLAINTEXT:PLAINTEXT
+    KAFKA_ADVERTISED_LISTENERS: INTERNAL_PLAINTEXT://kafka:9092
+    KAFKA_LISTENERS: INTERNAL_PLAINTEXT://0.0.0.0:9092
+    KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL_PLAINTEXT
+    KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE: 'false'
+    KAFKA_OPTS: -Djava.security.auth.login.config=/etc/kafka/secrets/jaas/zk_client_jaas.conf
+    KAFKA_ZOOKEEPER_SET_ACL: 'true'
+    KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
+    # Reduced the number of partitions only to avoid the timeout error for the first subscribe call in slow environment
+    KAFKA_OFFSETS_TOPIC_NUM_PARTITIONS: 1
+   volumes:
+     -  ./mnt/kafka/zk_client_jaas.conf:/etc/kafka/secrets/jaas/zk_client_jaas.conf
+   networks:
+      - default
+   depends_on:
+    - zookeeper
+
+  dmaap:
+    image: $ONAP_DMAAPMR_IMAGE
+    container_name: $MR_DMAAP_APP_NAME
+    ports:
+      - ${MR_DMAAP_LOCALHOST_PORT}:${MR_INTERNAL_PORT}
+      - ${MR_DMAAP_LOCALHOST_SECURE_PORT}:${MR_INTERNAL_SECURE_PORT}
+    environment:
+     enableCadi: 'false'
+    volumes:
+      - ./mnt/mr/MsgRtrApi.properties:/appl/dmaapMR1/bundleconfig/etc/appprops/MsgRtrApi.properties
+      - ./mnt/mr/logback.xml:/appl/dmaapMR1/bundleconfig/etc/logback.xml
+      - ./mnt/mr/cadi.properties:/appl/dmaapMR1/etc/cadi.properties
+    networks:
+      - default
+    depends_on:
+      - zookeeper
+      - kafka
diff --git a/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf b/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf
new file mode 100644
index 0000000..d4ef1eb
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf
@@ -0,0 +1,5 @@
+Client {
+   org.apache.zookeeper.server.auth.DigestLoginModule required
+   username="kafka"
+   password="kafka_secret";
+ };
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt/mr/KUBE-MsgRtrApi.properties b/test/simulator-group/dmaapmr/mnt/mr/KUBE-MsgRtrApi.properties
new file mode 100644
index 0000000..66c7db1
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/mr/KUBE-MsgRtrApi.properties
@@ -0,0 +1,173 @@
+# LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright © 2020 Nordix Foundation. All rights reserved.
+#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  Licensed 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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP service
+##
+## 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+#config.zk.servers=172.18.1.1
+#config.zk.servers={{.Values.zookeeper.name}}:{{.Values.zookeeper.port}}
+config.zk.servers=zookeeper.onap:2181
+
+#config.zk.root=/fe3c/cambria/config
+
+
+###############################################################################
+##
+## Kafka Connection
+##
+##        Items below are passed through to Kafka's producer and consumer
+##        configurations (after removing "kafka.")
+##        if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+#kafka.metadata.broker.list={{.Values.kafka.name}}:{{.Values.kafka.port}}
+kafka.metadata.broker.list=akfak-bwds.onap:9092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+
+###############################################################################
+##
+##        Secured Config
+##
+##        Some data stored in the config system is sensitive -- API keys and secrets,
+##        for example. to protect it, we use an encryption layer for this section
+##        of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw==
+#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q==
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+##        Kafka expects live connections from the consumer to the broker, which
+##        obviously doesn't work over connectionless HTTP requests. The Cambria
+##        server proxies HTTP requests into Kafka consumer sessions that are kept
+##        around for later re-use. Not doing so is costly for setup per request,
+##        which would substantially impact a high volume consumer's performance.
+##
+##        This complicates Cambria server failover, because we often need server
+##        A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+##        This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics                                  #msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+default.partitions=3
+default.replicas=3
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mirrormakeragent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties b/test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties
new file mode 100644
index 0000000..573a81a
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties
@@ -0,0 +1,173 @@
+# LICENSE_START=======================================================
+#  org.onap.dmaap
+#  ================================================================================
+#  Copyright © 2020 Nordix Foundation. All rights reserved.
+#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+#  ================================================================================
+#  Licensed 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.
+#  ============LICENSE_END=========================================================
+#
+#  ECOMP is a trademark and service mark of AT&T Intellectual Property.
+#
+###############################################################################
+###############################################################################
+##
+## Cambria API Server config
+##
+## Default values are shown as commented settings.
+##
+###############################################################################
+##
+## HTTP service
+##
+## 3904 is standard as of 7/29/14.
+#
+## Zookeeper Connection
+##
+## Both Cambria and Kafka make use of Zookeeper.
+##
+#config.zk.servers=172.18.1.1
+#config.zk.servers={{.Values.zookeeper.name}}:{{.Values.zookeeper.port}}
+config.zk.servers=zookeeper:2181
+
+#config.zk.root=/fe3c/cambria/config
+
+
+###############################################################################
+##
+## Kafka Connection
+##
+##        Items below are passed through to Kafka's producer and consumer
+##        configurations (after removing "kafka.")
+##        if you want to change request.required.acks it can take this one value
+#kafka.metadata.broker.list=localhost:9092,localhost:9093
+#kafka.metadata.broker.list={{.Values.kafka.name}}:{{.Values.kafka.port}}
+kafka.metadata.broker.list=kafka:9092
+##kafka.request.required.acks=-1
+#kafka.client.zookeeper=${config.zk.servers}
+consumer.timeout.ms=100
+zookeeper.connection.timeout.ms=6000
+zookeeper.session.timeout.ms=20000
+zookeeper.sync.time.ms=2000
+auto.commit.interval.ms=1000
+fetch.message.max.bytes =1000000
+auto.commit.enable=false
+
+#(backoff*retries > zksessiontimeout)
+kafka.rebalance.backoff.ms=10000
+kafka.rebalance.max.retries=6
+
+
+###############################################################################
+##
+##        Secured Config
+##
+##        Some data stored in the config system is sensitive -- API keys and secrets,
+##        for example. to protect it, we use an encryption layer for this section
+##        of the config.
+##
+## The key is a base64 encode AES key. This must be created/configured for
+## each installation.
+#cambria.secureConfig.key=
+##
+## The initialization vector is a 16 byte value specific to the secured store.
+## This must be created/configured for each installation.
+#cambria.secureConfig.iv=
+
+## Southfield Sandbox
+cambria.secureConfig.key=b/7ouTn9FfEw2PQwL0ov/Q==
+cambria.secureConfig.iv=wR9xP5k5vbz/xD0LmtqQLw==
+authentication.adminSecret=fe3cCompound
+#cambria.secureConfig.key[pc569h]=YT3XPyxEmKCTLI2NK+Sjbw==
+#cambria.secureConfig.iv[pc569h]=rMm2jhR3yVnU+u2V9Ugu3Q==
+
+
+###############################################################################
+##
+## Consumer Caching
+##
+##        Kafka expects live connections from the consumer to the broker, which
+##        obviously doesn't work over connectionless HTTP requests. The Cambria
+##        server proxies HTTP requests into Kafka consumer sessions that are kept
+##        around for later re-use. Not doing so is costly for setup per request,
+##        which would substantially impact a high volume consumer's performance.
+##
+##        This complicates Cambria server failover, because we often need server
+##        A to close its connection before server B brings up the replacement.
+##
+
+## The consumer cache is normally enabled.
+#cambria.consumer.cache.enabled=true
+
+## Cached consumers are cleaned up after a period of disuse. The server inspects
+## consumers every sweepFreqSeconds and will clean up any connections that are
+## dormant for touchFreqMs.
+#cambria.consumer.cache.sweepFreqSeconds=15
+cambria.consumer.cache.touchFreqMs=120000
+##stickforallconsumerrequests=false
+## The cache is managed through ZK. The default value for the ZK connection
+## string is the same as config.zk.servers.
+#cambria.consumer.cache.zkConnect=${config.zk.servers}
+
+##
+## Shared cache information is associated with this node's name. The default
+## name is the hostname plus the HTTP service port this host runs on. (The
+## hostname is determined via InetAddress.getLocalHost ().getCanonicalHostName(),
+## which is not always adequate.) You can set this value explicitly here.
+##
+#cambria.api.node.identifier=<use-something-unique-to-this-instance>
+
+#cambria.rateLimit.maxEmptyPollsPerMinute=30
+#cambria.rateLimitActual.delay.ms=10
+
+###############################################################################
+##
+## Metrics Reporting
+##
+##        This server can report its metrics periodically on a topic.
+##
+#metrics.send.cambria.enabled=true
+#metrics.send.cambria.topic=cambria.apinode.metrics                                  #msgrtr.apinode.metrics.dmaap
+#metrics.send.cambria.sendEverySeconds=60
+
+cambria.consumer.cache.zkBasePath=/fe3c/cambria/consumerCache
+consumer.timeout=17
+default.partitions=3
+default.replicas=3
+##############################################################################
+#100mb
+maxcontentlength=10000
+
+
+##############################################################################
+#AAF Properties
+msgRtr.namespace.aaf=org.onap.dmaap.mr.topic
+msgRtr.topicfactory.aaf=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+enforced.topic.name.AAF=org.onap.dmaap.mr
+forceAAF=false
+transidUEBtopicreqd=false
+defaultNSforUEB=org.onap.dmaap.mr
+##############################################################################
+#Mirror Maker Agent
+
+msgRtr.mirrormakeradmin.aaf=org.onap.dmaap.mr.mirrormaker|*|admin
+msgRtr.mirrormakeruser.aaf=org.onap.dmaap.mr.mirrormaker|*|user
+msgRtr.mirrormakeruser.aaf.create=org.onap.dmaap.mr.topicFactory|:org.onap.dmaap.mr.topic:
+msgRtr.mirrormaker.timeout=15000
+msgRtr.mirrormaker.topic=org.onap.dmaap.mr.mirrormakeragent
+msgRtr.mirrormaker.consumergroup=mmagentserver
+msgRtr.mirrormaker.consumerid=1
+
+kafka.max.poll.interval.ms=300000
+kafka.heartbeat.interval.ms=60000
+kafka.session.timeout.ms=240000
+kafka.max.poll.records=1000
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt/mr/cadi.properties b/test/simulator-group/dmaapmr/mnt/mr/cadi.properties
new file mode 100644
index 0000000..dca56c8
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/mr/cadi.properties
@@ -0,0 +1,19 @@
+aaf_locate_url=https://aaf-locate.{{ include "common.namespace" . }}:8095
+aaf_url=https://AAF_LOCATE_URL/onap.org.osaaf.aaf.service:2.1
+aaf_env=DEV
+aaf_lur=org.onap.aaf.cadi.aaf.v2_0.AAFLurPerm
+
+cadi_truststore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.trust.jks
+cadi_truststore_password=enc:mN6GiIzFQxKGDzAXDOs7b4j8DdIX02QrZ9QOWNRpxV3rD6whPCfizSMZkJwxi_FJ
+
+cadi_keyfile=/appl/dmaapMR1/etc/org.onap.dmaap.mr.keyfile
+
+cadi_alias=dmaapmr@mr.dmaap.onap.org
+cadi_keystore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.p12
+cadi_keystore_password=enc:_JJT2gAEkRzXla5xfDIHal8pIoIB5iIos3USvZQT6sL-l14LpI5fRFR_QIGUCh5W
+cadi_x509_issuers=CN=intermediateCA_1, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_7, OU=OSAAF, O=ONAP, C=US:CN=intermediateCA_9, OU=OSAAF, O=ONAP, C=US
+
+cadi_loglevel=INFO
+cadi_protocols=TLSv1.1,TLSv1.2
+cadi_latitude=37.78187
+cadi_longitude=-122.26147
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/mnt/mr/logback.xml b/test/simulator-group/dmaapmr/mnt/mr/logback.xml
new file mode 100644
index 0000000..8471208
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/mr/logback.xml
@@ -0,0 +1,209 @@
+<!--
+     ============LICENSE_START=======================================================
+     Copyright © 2020 Nordix Foundation. All rights reserved.
+     Copyright © 2019 AT&T Intellectual Property. All rights reserved.
+     ================================================================================
+     Licensed 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.
+     ============LICENSE_END=========================================================
+ -->
+
+<configuration scan="true" scanPeriod="3 seconds" debug="false">
+  <contextName>${module.ajsc.namespace.name}</contextName>
+  <jmxConfigurator />
+  <property name="logDirectory" value="${AJSC_HOME}/log" />
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="ch.qos.logback.classic.filter.LevelFilter">
+      <level>ERROR</level>
+      <onMatch>ACCEPT</onMatch>
+      <onMismatch>DENY</onMismatch>
+    </filter>
+    <encoder>
+      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{1024} - %msg%n
+      </pattern>
+    </encoder>
+  </appender>
+
+  <appender name="INFO" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="ch.qos.logback.classic.filter.LevelFilter">
+      <level>INFO</level>
+      <onMatch>ACCEPT</onMatch>
+      <onMismatch>DENY</onMismatch>
+    </filter>
+  </appender>
+
+  <appender name="DEBUG" class="ch.qos.logback.core.ConsoleAppender">
+
+    <encoder>
+      <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+    </encoder>
+  </appender>
+
+  <appender name="ERROR" class="ch.qos.logback.core.ConsoleAppender"> class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="ch.qos.logback.classic.filter.LevelFilter">
+      <level>ERROR</level>
+      <onMatch>ACCEPT</onMatch>
+      <onMismatch>DENY</onMismatch>
+    </filter>
+    <encoder>
+      <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+    </encoder>
+  </appender>
+
+
+  <!-- Msgrtr related loggers -->
+  <logger name="org.onap.dmaap.dmf.mr.service" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.service.impl" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.resources" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.resources.streamReaders" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.backends" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.backends.kafka" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.backends.memory" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.beans" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.constants" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.exception" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.listener" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.metrics.publisher" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.metrics.publisher.impl" level="INFO" />
+
+
+
+  <logger name="org.onap.dmaap.dmf.mr.security" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.security.impl" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.transaction" level="INFO" />
+  <logger name="com.att.dmf.mr.transaction.impl" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+  <logger name="org.onap.dmaap.dmf.mr.metabroker" level="INFO" />
+
+  <logger name="org.onap.dmaap.dmf.mr.utils" level="INFO" />
+  <logger name="org.onap.dmaap.mr.filter" level="INFO" />
+
+  <!--<logger name="com.att.nsa.cambria.*" level="INFO" />-->
+
+  <!-- Msgrtr loggers in ajsc -->
+  <logger name="org.onap.dmaap.service" level="INFO" />
+  <logger name="org.onap.dmaap" level="INFO" />
+
+
+  <!-- Spring related loggers -->
+  <logger name="org.springframework" level="WARN" additivity="false"/>
+  <logger name="org.springframework.beans" level="WARN" additivity="false"/>
+  <logger name="org.springframework.web" level="WARN" additivity="false" />
+  <logger name="com.blog.spring.jms" level="WARN" additivity="false" />
+
+  <!-- AJSC Services (bootstrap services) -->
+  <logger name="ajsc" level="WARN" additivity="false"/>
+  <logger name="ajsc.RouteMgmtService" level="INFO" additivity="false"/>
+  <logger name="ajsc.ComputeService" level="INFO" additivity="false" />
+  <logger name="ajsc.VandelayService" level="WARN" additivity="false"/>
+  <logger name="ajsc.FilePersistenceService" level="WARN" additivity="false"/>
+  <logger name="ajsc.UserDefinedJarService" level="WARN" additivity="false" />
+  <logger name="ajsc.UserDefinedBeansDefService" level="WARN" additivity="false" />
+  <logger name="ajsc.LoggingConfigurationService" level="WARN" additivity="false" />
+
+  <!-- AJSC related loggers (DME2 Registration, csi logging, restlet, servlet
+    logging) -->
+  <logger name="ajsc.utils" level="WARN" additivity="false"/>
+  <logger name="ajsc.utils.DME2Helper" level="INFO" additivity="false" />
+  <logger name="ajsc.filters" level="DEBUG" additivity="false" />
+  <logger name="ajsc.beans.interceptors" level="DEBUG" additivity="false" />
+  <logger name="ajsc.restlet" level="DEBUG" additivity="false" />
+  <logger name="ajsc.servlet" level="DEBUG" additivity="false" />
+  <logger name="com.att" level="WARN" additivity="false" />
+  <logger name="com.att.ajsc.csi.logging" level="WARN" additivity="false" />
+  <logger name="com.att.ajsc.filemonitor" level="WARN" additivity="false"/>
+
+  <logger name="com.att.nsa.dmaap.util" level="INFO" additivity="false"/>
+  <logger name="com.att.cadi.filter" level="INFO" additivity="false" />
+
+
+  <!-- Other Loggers that may help troubleshoot -->
+  <logger name="net.sf" level="WARN" additivity="false" />
+  <logger name="org.apache.commons.httpclient" level="WARN" additivity="false"/>
+  <logger name="org.apache.commons" level="WARN" additivity="false" />
+  <logger name="org.apache.coyote" level="WARN" additivity="false"/>
+  <logger name="org.apache.jasper" level="WARN" additivity="false"/>
+
+  <!-- Camel Related Loggers (including restlet/servlet/jaxrs/cxf logging.
+    May aid in troubleshooting) -->
+  <logger name="org.apache.camel" level="WARN" additivity="false" />
+  <logger name="org.apache.cxf" level="WARN" additivity="false" />
+  <logger name="org.apache.camel.processor.interceptor" level="WARN" additivity="false"/>
+  <logger name="org.apache.cxf.jaxrs.interceptor" level="WARN" additivity="false" />
+  <logger name="org.apache.cxf.service" level="WARN" additivity="false" />
+  <logger name="org.restlet" level="DEBUG" additivity="false" />
+  <logger name="org.apache.camel.component.restlet" level="DEBUG" additivity="false" />
+  <logger name="org.apache.kafka" level="DEBUG" additivity="false" />
+  <logger name="org.apache.zookeeper" level="INFO" additivity="false" />
+  <logger name="org.I0Itec.zkclient" level="DEBUG" additivity="false" />
+
+  <!-- logback internals logging -->
+  <logger name="ch.qos.logback.classic" level="INFO" additivity="false"/>
+  <logger name="ch.qos.logback.core" level="INFO" additivity="false" />
+
+  <!-- logback jms appenders & loggers definition starts here -->
+  <!-- logback jms appenders & loggers definition starts here -->
+  <appender name="auditLogs" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+    </filter>
+    <encoder>
+      <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+    </encoder>
+  </appender>
+  <appender name="perfLogs" class="ch.qos.logback.core.ConsoleAppender">
+    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+    </filter>
+    <encoder>
+      <pattern>"%d [%thread] %-5level %logger{1024} - %msg%n"</pattern>
+    </encoder>
+  </appender>
+  <appender name="ASYNC-audit" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>1000</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="Audit-Record-Queue" />
+  </appender>
+
+  <logger name="AuditRecord" level="INFO" additivity="FALSE">
+    <appender-ref ref="STDOUT" />
+  </logger>
+  <logger name="AuditRecord_DirectCall" level="INFO" additivity="FALSE">
+    <appender-ref ref="STDOUT" />
+  </logger>
+  <appender name="ASYNC-perf" class="ch.qos.logback.classic.AsyncAppender">
+    <queueSize>1000</queueSize>
+    <discardingThreshold>0</discardingThreshold>
+    <appender-ref ref="Performance-Tracker-Queue" />
+  </appender>
+  <logger name="PerfTrackerRecord" level="INFO" additivity="FALSE">
+    <appender-ref ref="ASYNC-perf" />
+    <appender-ref ref="perfLogs" />
+  </logger>
+  <!-- logback jms appenders & loggers definition ends here -->
+
+  <root level="DEBUG">
+    <appender-ref ref="DEBUG" />
+    <appender-ref ref="ERROR" />
+    <appender-ref ref="INFO" />
+    <appender-ref ref="STDOUT" />
+  </root>
+
+</configuration>
diff --git a/test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf b/test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf
new file mode 100644
index 0000000..26bf460
--- /dev/null
+++ b/test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf
@@ -0,0 +1,4 @@
+Server {
+       org.apache.zookeeper.server.auth.DigestLoginModule required
+       user_kafka=kafka_secret;
+};
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/svc.yaml b/test/simulator-group/dmaapmr/svc.yaml
new file mode 100644
index 0000000..0a02b4f
--- /dev/null
+++ b/test/simulator-group/dmaapmr/svc.yaml
@@ -0,0 +1,57 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $MR_DMAAP_KUBE_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_DMAAP_KUBE_APP_NAME
+    autotest: DMAAPMR
+spec:
+  type: ClusterIP
+  ports:
+  - port: $MR_EXTERNAL_PORT
+    targetPort: $MR_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $MR_EXTERNAL_SECURE_PORT
+    targetPort: $MR_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $MR_DMAAP_KUBE_APP_NAME
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: $MR_KAFKA_BWDS_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_KAFKA_BWDS_NAME
+    autotest: DMAAPMR
+spec:
+  type: ClusterIP
+  ports:
+  - port: 9092
+    targetPort: 9092
+    protocol: TCP
+    name: http
+  selector:
+    run: $MR_KAFKA_BWDS_NAME
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: $MR_ZOOKEEPER_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_ZOOKEEPER_APP_NAME
+    autotest: DMAAPMR
+spec:
+  type: ClusterIP
+  ports:
+  - port: 2181
+    targetPort: 2181
+    protocol: TCP
+    name: http
+  selector:
+    run: $MR_ZOOKEEPER_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/ecs/app.yaml b/test/simulator-group/ecs/app.yaml
new file mode 100644
index 0000000..640b61d
--- /dev/null
+++ b/test/simulator-group/ecs/app.yaml
@@ -0,0 +1,43 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $ECS_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $ECS_APP_NAME
+    autotest: ECS
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $ECS_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $ECS_APP_NAME
+        autotest: ECS
+    spec:
+      containers:
+      - name: $ECS_APP_NAME
+        image: $ECS_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $ECS_INTERNAL_PORT
+        - name: https
+          containerPort: $ECS_INTERNAL_SECURE_PORT
+        volumeMounts:
+        - mountPath: $ECS_CONFIG_MOUNT_PATH
+          name: ecs-conf-name
+        volumeMounts:
+        - mountPath: $ECS_CONTAINER_MNT_DIR
+          name: ecs-data-name
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: $ECS_CONFIG_CONFIGMAP_NAME
+        name: ecs-conf-name
+      - persistentVolumeClaim:
+          claimName: $ECS_DATA_CONFIGMAP_NAME
+        name: ecs-data-name
+
diff --git a/test/simulator-group/ecs/application.yaml b/test/simulator-group/ecs/application.yaml
new file mode 100644
index 0000000..75b11ad
--- /dev/null
+++ b/test/simulator-group/ecs/application.yaml
@@ -0,0 +1,54 @@
+################################################################################
+#   Copyright (c) 2020 Nordix Foundation.                                      #
+#                                                                              #
+#   Licensed 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.                                             #
+################################################################################
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+
+logging:
+  level:
+    ROOT: ERROR
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.oransc.enrichment: INFO
+  file:
+    name: /var/log/enrichment-coordinator-service/application.log
+server:
+   port : 8434
+   http-port: 8083
+   ssl:
+      key-store-type: JKS
+      key-store-password: policy_agent
+      key-store: /opt/app/enrichment-coordinator-service/etc/cert/keystore.jks
+      key-password: policy_agent
+      key-alias: policy_agent
+app:
+  filepath: /opt/app/enrichment-coordinator-service/data/application_configuration.json
+  webclient:
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/enrichment-coordinator-service/etc/cert/truststore.jks
+  vardata-directory: /var/enrichment-coordinator-service
\ No newline at end of file
diff --git a/test/simulator-group/ecs/pvc.yaml b/test/simulator-group/ecs/pvc.yaml
new file mode 100644
index 0000000..3abd359
--- /dev/null
+++ b/test/simulator-group/ecs/pvc.yaml
@@ -0,0 +1,16 @@
+apiVersion: v1
+kind: PersistentVolumeClaim
+metadata:
+  name: $ECS_DATA_CONFIGMAP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $ECS_APP_NAME
+    autotest: ECS
+spec:
+  accessModes:
+  - ReadWriteOnce
+  resources:
+    requests:
+      storage: 10Mi
+  storageClassName: standard
+  volumeMode: Filesystem
\ No newline at end of file
diff --git a/test/simulator-group/ecs/svc.yaml b/test/simulator-group/ecs/svc.yaml
new file mode 100644
index 0000000..e311c0e
--- /dev/null
+++ b/test/simulator-group/ecs/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $ECS_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $ECS_APP_NAME
+    autotest: ECS
+spec:
+  type: ClusterIP
+  ports:
+  - port: $ECS_EXTERNAL_PORT
+    targetPort: $ECS_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $ECS_EXTERNAL_SECURE_PORT
+    targetPort: $ECS_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $ECS_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/httpproxy/.gitignore b/test/simulator-group/httpproxy/.gitignore
new file mode 100644
index 0000000..3384196
--- /dev/null
+++ b/test/simulator-group/httpproxy/.gitignore
@@ -0,0 +1 @@
+.dockererr
\ No newline at end of file
diff --git a/test/simulator-group/httpproxy/app.yaml b/test/simulator-group/httpproxy/app.yaml
new file mode 100644
index 0000000..3e0c8ac
--- /dev/null
+++ b/test/simulator-group/httpproxy/app.yaml
@@ -0,0 +1,30 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $HTTP_PROXY_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $HTTP_PROXY_APP_NAME
+    autotest: HTTPPROXY
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $HTTP_PROXY_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $HTTP_PROXY_APP_NAME
+        autotest: HTTPPROXY
+    spec:
+      containers:
+      - name: $HTTP_PROXY_APP_NAME
+        image: $HTTP_PROXY_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $HTTP_PROXY_INTERNAL_PORT
+        - name: web
+          containerPort: $HTTP_PROXY_WEB_INTERNAL_PORT
+        command: ["mitmweb"]
+        args: ["--web-host", "0.0.0.0", "--no-web-open-browser", "-p", "$HTTP_PROXY_INTERNAL_PORT", "--set", "ssl_insecure"]
\ No newline at end of file
diff --git a/test/simulator-group/mr/docker-compose.yml b/test/simulator-group/httpproxy/docker-compose.yaml
similarity index 78%
rename from test/simulator-group/mr/docker-compose.yml
rename to test/simulator-group/httpproxy/docker-compose.yaml
index 3a71453..7d61802 100644
--- a/test/simulator-group/mr/docker-compose.yml
+++ b/test/simulator-group/httpproxy/docker-compose.yaml
@@ -21,13 +21,12 @@
     external:
       name: ${DOCKER_SIM_NWNAME}
 services:
-  message-router:
+  httpproxy:
     networks:
       - default
-    container_name: ${MR_APP_NAME}
-    image: ${MRSTUB_IMAGE}
+    container_name: ${HTTP_PROXY_APP_NAME}
+    image: ${HTTP_PROXY_IMAGE}
+    tty: true
+    command: mitmweb --web-host 0.0.0.0 --no-web-open-browser --set ssl_insecure
     ports:
-      - ${MR_EXTERNAL_PORT}:${MR_INTERNAL_PORT}
-      - ${MR_EXTERNAL_SECURE_PORT}:${MR_INTERNAL_SECURE_PORT}
-    volumes:
-      - ${MR_CERT_MOUNT_DIR}:/usr/src/app/cert:ro
+      - ${HTTP_PROXY_WEB_EXTERNAL_PORT}:${HTTP_PROXY_WEB_INTERNAL_PORT}
\ No newline at end of file
diff --git a/test/simulator-group/httpproxy/svc.yaml b/test/simulator-group/httpproxy/svc.yaml
new file mode 100644
index 0000000..cd27563
--- /dev/null
+++ b/test/simulator-group/httpproxy/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $HTTP_PROXY_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $HTTP_PROXY_APP_NAME
+    autotest: HTTP_PROXY_APP_NAME
+spec:
+  type: ClusterIP
+  ports:
+  - port: $HTTP_PROXY_EXTERNAL_PORT
+    targetPort: $HTTP_PROXY_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $HTTP_PROXY_WEB_EXTERNAL_PORT
+    targetPort: $HTTP_PROXY_WEB_INTERNAL_PORT
+    protocol: TCP
+    name: web
+  selector:
+    run: $HTTP_PROXY_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/mr/.gitignore b/test/simulator-group/mrstub/.gitignore
similarity index 100%
rename from test/simulator-group/mr/.gitignore
rename to test/simulator-group/mrstub/.gitignore
diff --git a/test/simulator-group/mrstub/app.yaml b/test/simulator-group/mrstub/app.yaml
new file mode 100644
index 0000000..f29db93
--- /dev/null
+++ b/test/simulator-group/mrstub/app.yaml
@@ -0,0 +1,33 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $MR_STUB_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_STUB_APP_NAME
+    autotest: MR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $MR_STUB_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $MR_STUB_APP_NAME
+        autotest: MR
+    spec:
+      containers:
+      - name: $MR_STUB_APP_NAME
+        image: $MRSTUB_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $MR_INTERNAL_PORT
+        - name: https
+          containerPort: $MR_INTERNAL_SECURE_PORT
+        env:
+        - name: TOPIC_READ
+          value: $TOPIC_READ
+        - name: TOPIC_WRITE
+          value: $TOPIC_WRITE
\ No newline at end of file
diff --git a/test/simulator-group/mr/cert/cert.crt b/test/simulator-group/mrstub/cert/cert.crt
similarity index 100%
rename from test/simulator-group/mr/cert/cert.crt
rename to test/simulator-group/mrstub/cert/cert.crt
diff --git a/test/simulator-group/mr/cert/key.crt b/test/simulator-group/mrstub/cert/key.crt
similarity index 100%
rename from test/simulator-group/mr/cert/key.crt
rename to test/simulator-group/mrstub/cert/key.crt
diff --git a/test/simulator-group/mr/cert/pass b/test/simulator-group/mrstub/cert/pass
similarity index 100%
rename from test/simulator-group/mr/cert/pass
rename to test/simulator-group/mrstub/cert/pass
diff --git a/test/simulator-group/mr/docker-compose.yml b/test/simulator-group/mrstub/docker-compose.yml
similarity index 76%
copy from test/simulator-group/mr/docker-compose.yml
copy to test/simulator-group/mrstub/docker-compose.yml
index 3a71453..02f80a3 100644
--- a/test/simulator-group/mr/docker-compose.yml
+++ b/test/simulator-group/mrstub/docker-compose.yml
@@ -21,13 +21,16 @@
     external:
       name: ${DOCKER_SIM_NWNAME}
 services:
-  message-router:
+  mr-stub:
     networks:
       - default
-    container_name: ${MR_APP_NAME}
+    container_name: ${MR_STUB_APP_NAME}
     image: ${MRSTUB_IMAGE}
     ports:
-      - ${MR_EXTERNAL_PORT}:${MR_INTERNAL_PORT}
-      - ${MR_EXTERNAL_SECURE_PORT}:${MR_INTERNAL_SECURE_PORT}
+      - ${MR_STUB_LOCALHOST_PORT}:${MR_INTERNAL_PORT}
+      - ${MR_STUB_LOCALHOST_SECURE_PORT}:${MR_INTERNAL_SECURE_PORT}
     volumes:
-      - ${MR_CERT_MOUNT_DIR}:/usr/src/app/cert:ro
+      - ${MR_STUB_CERT_MOUNT_DIR}:/usr/src/app/cert:ro
+    environment:
+      - TOPIC_READ=${TOPIC_READ}
+      - TOPIC_WRITE=${TOPIC_WRITE}
diff --git a/test/simulator-group/mrstub/svc.yaml b/test/simulator-group/mrstub/svc.yaml
new file mode 100644
index 0000000..7723677
--- /dev/null
+++ b/test/simulator-group/mrstub/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $MR_STUB_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_STUB_APP_NAME
+    autotest: MR
+spec:
+  type: ClusterIP
+  ports:
+  - port: $MR_EXTERNAL_PORT
+    targetPort: $MR_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $MR_EXTERNAL_SECURE_PORT
+    targetPort: $MR_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $MR_STUB_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/policy_agent/app.yaml b/test/simulator-group/policy_agent/app.yaml
new file mode 100644
index 0000000..ddbae37
--- /dev/null
+++ b/test/simulator-group/policy_agent/app.yaml
@@ -0,0 +1,42 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $POLICY_AGENT_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $POLICY_AGENT_APP_NAME
+    autotest: PA
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $POLICY_AGENT_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $POLICY_AGENT_APP_NAME
+        autotest: PA
+    spec:
+      containers:
+      - name: $POLICY_AGENT_APP_NAME
+        image: $POLICY_AGENT_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $POLICY_AGENT_INTERNAL_PORT
+        - name: https
+          containerPort: $POLICY_AGENT_INTERNAL_SECURE_PORT
+        volumeMounts:
+        - mountPath: $POLICY_AGENT_CONFIG_MOUNT_PATH
+          name: pa-conf-name
+        - mountPath: $POLICY_AGENT_DATA_MOUNT_PATH
+          name: pa-data-name
+      volumes:
+      - configMap:
+          defaultMode: 420
+          name: $POLICY_AGENT_CONFIG_CONFIGMAP_NAME
+        name: pa-conf-name
+      - configMap:
+          defaultMode: 420
+          name: $POLICY_AGENT_DATA_CONFIGMAP_NAME
+        name: pa-data-name
\ No newline at end of file
diff --git a/test/simulator-group/policy_agent/application.yaml b/test/simulator-group/policy_agent/application.yaml
new file mode 100644
index 0000000..49111d8
--- /dev/null
+++ b/test/simulator-group/policy_agent/application.yaml
@@ -0,0 +1,66 @@
+################################################################################
+#   Copyright (c) 2020 Nordix Foundation.                                      #
+#                                                                              #
+#   Licensed 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.                                             #
+################################################################################
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+
+logging:
+  # Configuration of logging
+  level:
+    ROOT: ERROR
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    ${POLICY_AGENT_PKG_NAME}: INFO
+  file: /var/log/policy-agent/application.log
+
+server:
+  # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+  # See springboot documentation.
+  port : 8433
+  http-port: 8081
+  ssl:
+    key-store-type: JKS
+    key-store-password: policy_agent
+    key-store: /opt/app/policy-agent/etc/cert/keystore.jks
+    key-password: policy_agent
+    key-alias: policy_agent
+app:
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  filepath: /opt/app/policy-agent/data/application_configuration.json
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/policy-agent/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host: $AGENT_HTTP_PROXY_CONFIG_HOST_NAME
+    http.proxy-port: $AGENT_HTTP_PROXY_CONFIG_PORT
diff --git a/test/simulator-group/policy_agent/docker-compose.yml b/test/simulator-group/policy_agent/docker-compose.yml
index 506c716..18350a0 100644
--- a/test/simulator-group/policy_agent/docker-compose.yml
+++ b/test/simulator-group/policy_agent/docker-compose.yml
@@ -33,6 +33,8 @@
       - CONSUL_HOST=${CONSUL_HOST}
       - CONSUL_PORT=${CONSUL_INTERNAL_PORT}
       - CONFIG_BINDING_SERVICE=${CONFIG_BINDING_SERVICE}
-      - HOSTNAME=${POLICY_AGENT_APP_NAME}
+      - HOSTNAME=${POLICY_AGENT_CONFIG_KEY}
+    volumes:
+    - ${POLICY_AGENT_HOST_MNT_DIR}/$POLICY_AGENT_CONFIG_FILE:${POLICY_AGENT_CONFIG_MOUNT_PATH}/$POLICY_AGENT_CONFIG_FILE
 
 
diff --git a/test/simulator-group/policy_agent/mnt/application.yaml b/test/simulator-group/policy_agent/mnt/application.yaml
new file mode 100644
index 0000000..30ec4de
--- /dev/null
+++ b/test/simulator-group/policy_agent/mnt/application.yaml
@@ -0,0 +1,66 @@
+################################################################################
+#   Copyright (c) 2020 Nordix Foundation.                                      #
+#                                                                              #
+#   Licensed 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.                                             #
+################################################################################
+
+spring:
+  profiles:
+    active: prod
+  main:
+    allow-bean-definition-overriding: true
+  aop:
+    auto: false
+management:
+  endpoints:
+    web:
+      exposure:
+        # Enabling of springboot actuator features. See springboot documentation.
+        include: "loggers,logfile,health,info,metrics,threaddump,heapdump"
+
+logging:
+  # Configuration of logging
+  level:
+    ROOT: ERROR
+    org.springframework: ERROR
+    org.springframework.data: ERROR
+    org.springframework.web.reactive.function.client.ExchangeFunctions: ERROR
+    org.onap.ccsdk.oran.a1policymanagementservice: INFO
+  file: /var/log/policy-agent/application.log
+
+server:
+  # Configuration of the HTTP/REST server. The parameters are defined and handeled by the springboot framework.
+  # See springboot documentation.
+  port : 8433
+  http-port: 8081
+  ssl:
+    key-store-type: JKS
+    key-store-password: policy_agent
+    key-store: /opt/app/policy-agent/etc/cert/keystore.jks
+    key-password: policy_agent
+    key-alias: policy_agent
+app:
+  # Location of the component configuration file. The file will only be used if the Consul database is not used;
+  # configuration from the Consul will override the file.
+  filepath: /opt/app/policy-agent/data/application_configuration.json
+  webclient:
+    # Configuration of the trust store used for the HTTP client (outgoing requests)
+    # The file location and the password for the truststore is only relevant if trust-store-used == true
+    # Note that the same keystore as for the server is used.
+    trust-store-used: false
+    trust-store-password: policy_agent
+    trust-store: /opt/app/policy-agent/etc/cert/truststore.jks
+    # Configuration of usage of HTTP Proxy for the southbound accesses.
+    # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
+    http.proxy-host: 
+    http.proxy-port: 0
diff --git a/test/simulator-group/policy_agent/svc.yaml b/test/simulator-group/policy_agent/svc.yaml
new file mode 100644
index 0000000..0a9eca9
--- /dev/null
+++ b/test/simulator-group/policy_agent/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $POLICY_AGENT_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $POLICY_AGENT_APP_NAME
+    autotest: PA
+spec:
+  type: ClusterIP
+  ports:
+  - port: $POLICY_AGENT_EXTERNAL_PORT
+    targetPort: $POLICY_AGENT_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $POLICY_AGENT_EXTERNAL_SECURE_PORT
+    targetPort: $POLICY_AGENT_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $POLICY_AGENT_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/prodstub/app.yaml b/test/simulator-group/prodstub/app.yaml
new file mode 100644
index 0000000..9fb5ad5
--- /dev/null
+++ b/test/simulator-group/prodstub/app.yaml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $PROD_STUB_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $PROD_STUB_APP_NAME
+    autotest: PRODSTUB
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $PROD_STUB_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $PROD_STUB_APP_NAME
+        autotest: PRODSTUB
+    spec:
+      containers:
+      - name: $PROD_STUB_APP_NAME
+        image: $PROD_STUB_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $PROD_STUB_INTERNAL_PORT
+        - name: https
+          containerPort: $PROD_STUB_INTERNAL_SECURE_PORT
diff --git a/test/simulator-group/prodstub/svc.yaml b/test/simulator-group/prodstub/svc.yaml
new file mode 100644
index 0000000..1fe4048
--- /dev/null
+++ b/test/simulator-group/prodstub/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $PROD_STUB_APP_NAME
+  namespace: $KUBE_SIM_NAMESPACE
+  labels:
+    run: $PROD_STUB_APP_NAME
+    autotest: PROD_STUB
+spec:
+  type: ClusterIP
+  ports:
+  - port: $PROD_STUB_EXTERNAL_PORT
+    targetPort: $PROD_STUB_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $PROD_STUB_EXTERNAL_SECURE_PORT
+    targetPort: $PROD_STUB_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $PROD_STUB_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/rapp_catalogue/app.yaml b/test/simulator-group/rapp_catalogue/app.yaml
new file mode 100644
index 0000000..0c0a26c
--- /dev/null
+++ b/test/simulator-group/rapp_catalogue/app.yaml
@@ -0,0 +1,28 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $RAPP_CAT_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $RAPP_CAT_APP_NAME
+    autotest: RC
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $RAPP_CAT_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $RAPP_CAT_APP_NAME
+        autotest: RC
+    spec:
+      containers:
+      - name: $RAPP_CAT_APP_NAME
+        image: $RAPP_CAT_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $RAPP_CAT_INTERNAL_PORT
+        - name: https
+          containerPort: $RAPP_CAT_INTERNAL_SECURE_PORT
diff --git a/test/simulator-group/rapp_catalogue/docker-compose.yml b/test/simulator-group/rapp_catalogue/docker-compose.yml
index 1cf35f7..35d2bef 100644
--- a/test/simulator-group/rapp_catalogue/docker-compose.yml
+++ b/test/simulator-group/rapp_catalogue/docker-compose.yml
@@ -18,7 +18,7 @@
 networks:
   default:
     external:
-      name: nonrtric-docker-net
+      name: ${DOCKER_SIM_NWNAME}
 services:
   rapp-catalogue:
     image: ${RAPP_CAT_IMAGE}
diff --git a/test/simulator-group/rapp_catalogue/svc.yaml b/test/simulator-group/rapp_catalogue/svc.yaml
new file mode 100644
index 0000000..0cb6235
--- /dev/null
+++ b/test/simulator-group/rapp_catalogue/svc.yaml
@@ -0,0 +1,21 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $RAPP_CAT_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $RAPP_CAT_APP_NAME
+    autotest: RC
+spec:
+  type: ClusterIP
+  ports:
+  - port: $RAPP_CAT_EXTERNAL_PORT
+    targetPort: $RAPP_CAT_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $RAPP_CAT_EXTERNAL_SECURE_PORT
+    targetPort: $RAPP_CAT_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $RAPP_CAT_APP_NAME
\ No newline at end of file
diff --git a/test/simulator-group/ric/app.yaml b/test/simulator-group/ric/app.yaml
new file mode 100644
index 0000000..df5d982
--- /dev/null
+++ b/test/simulator-group/ric/app.yaml
@@ -0,0 +1,36 @@
+apiVersion: apps/v1
+kind: StatefulSet
+metadata:
+  name: $RIC_SIM_SET_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $RIC_SIM_SET_NAME
+    autotest: RICSIM
+spec:
+  replicas: $RIC_SIM_COUNT
+  serviceName: $RIC_SIM_SET_NAME
+  selector:
+    matchLabels:
+      run: $RIC_SIM_SET_NAME
+  template:
+    metadata:
+      labels:
+        run: $RIC_SIM_SET_NAME
+        autotest: RICSIM
+    spec:
+      containers:
+      - name: $RIC_SIM_SET_NAME
+        image: $RIC_SIM_IMAGE
+        env:
+        - name: A1_VERSION
+          value: $A1_VERSION
+        - name: REMOTE_HOSTS_LOGGING
+          value: "1"
+        - name: ALLOW_HTTP
+          value: "true"
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $RIC_SIM_INTERNAL_PORT
+        - name: https
+          containerPort: $RIC_SIM_INTERNAL_SECURE_PORT
\ No newline at end of file
diff --git a/test/simulator-group/ric/svc.yaml b/test/simulator-group/ric/svc.yaml
new file mode 100644
index 0000000..902bb64
--- /dev/null
+++ b/test/simulator-group/ric/svc.yaml
@@ -0,0 +1,15 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $RIC_SIM_SET_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $RIC_SIM_SET_NAME
+    autotest: RICSIM
+spec:
+  ports:
+  - port: 80
+    name: http
+  clusterIP: None
+  selector:
+    run: $RIC_SIM_SET_NAME
\ No newline at end of file
diff --git a/test/simulator-group/sdnc/app.yaml b/test/simulator-group/sdnc/app.yaml
new file mode 100644
index 0000000..cd170f6
--- /dev/null
+++ b/test/simulator-group/sdnc/app.yaml
@@ -0,0 +1,72 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $SDNC_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $SDNC_APP_NAME
+    autotest: SDNC
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $SDNC_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $SDNC_APP_NAME
+        autotest: SDNC
+    spec:
+      containers:
+      - name: $SDNC_APP_NAME
+        image: $SDNC_A1_CONTROLLER_IMAGE
+        imagePullPolicy: Never
+        ports:
+        - name: http
+          containerPort: $SDNC_INTERNAL_PORT
+        - name: https
+          containerPort: $SDNC_INTERNAL_SECURE_PORT
+        env:
+        - name: MYSQL_ROOT_PASSWORD
+          value: openECOMP1.0
+        - name: SDNC_CONFIG_DIR
+          value: /opt/onap/sdnc/data/properties
+        - name: SDNC_DB_INIT
+          value: 'true'
+        - name: A1_TRUSTSTORE_PASSWORD
+          value: $SDNC_A1_TRUSTSTORE_PASSWORD
+        command:
+        - /opt/onap/sdnc/bin/startODL.sh
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $SDNC_DB_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $SDNC_DB_APP_NAME
+    autotest: SDNC
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $SDNC_DB_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $SDNC_DB_APP_NAME
+        autotest: SDNC
+    spec:
+      containers:
+        - name: $SDNC_DB_APP_NAME
+          image: $SDNC_DB_IMAGE
+          imagePullPolicy: Never
+          ports:
+          - name: http
+            containerPort: 3306
+          env:
+          - name: MYSQL_ROOT_PASSWORD
+            value: openECOMP1.0
+          - name: MYSQL_ROOT_HOST
+            value: '%'
+
diff --git a/test/simulator-group/sdnc/docker-compose.yml b/test/simulator-group/sdnc/docker-compose.yml
index b9391ea..80f60f7 100644
--- a/test/simulator-group/sdnc/docker-compose.yml
+++ b/test/simulator-group/sdnc/docker-compose.yml
@@ -37,7 +37,7 @@
         max-size: "30m"
         max-file: "5"
 
-  a1-controller:
+  a1controller:
     image: ${SDNC_A1_CONTROLLER_IMAGE}
     depends_on :
       - db
diff --git a/test/simulator-group/sdnc/svc.yaml b/test/simulator-group/sdnc/svc.yaml
new file mode 100644
index 0000000..6a9cd1d
--- /dev/null
+++ b/test/simulator-group/sdnc/svc.yaml
@@ -0,0 +1,57 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: $SDNC_APP_NAME
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $SDNC_APP_NAME
+    autotest: SDNC
+spec:
+  type: ClusterIP
+  ports:
+  - port: $SDNC_EXTERNAL_PORT
+    targetPort: $SDNC_INTERNAL_PORT
+    protocol: TCP
+    name: http
+  - port: $SDNC_EXTERNAL_SECURE_PORT
+    targetPort: $SDNC_INTERNAL_SECURE_PORT
+    protocol: TCP
+    name: https
+  selector:
+    run: $SDNC_APP_NAME
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: dbhost
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $SDNC_DB_APP_NAME
+    autotest: SDNC
+spec:
+  type: ClusterIP
+  ports:
+  - port: 3306
+    targetPort: 3306
+    protocol: TCP
+    name: http
+  selector:
+    run: $SDNC_DB_APP_NAME
+---
+apiVersion: v1
+kind: Service
+metadata:
+  name: sdnctldb01
+  namespace: $KUBE_NONRTRIC_NAMESPACE
+  labels:
+    run: $SDNC_DB_APP_NAME
+    autotest: SDNC
+spec:
+  type: ClusterIP
+  ports:
+  - port: 3306
+    targetPort: 3306
+    protocol: TCP
+    name: http
+  selector:
+    run: $SDNC_DB_APP_NAME
\ No newline at end of file