Kafka now works in kube for calls outside its namespace

Test case for dmaap adater and mediator updated

Support for up to 10 callback-receiver replicas

Adapted test scripts for callback-receiver replicas

Improved test scripts to auto-include app api include files

Issue-ID: NONRTRIC-618

Signed-off-by: BjornMagnussonXA <bjorn.magnusson@est.tech>
Change-Id: I3aafdcc8b44189c79996c7237a43a19985dcecfc
diff --git a/test/auto-test/FTC1.sh b/test/auto-test/FTC1.sh
index e4ffe75..1e34405 100755
--- a/test/auto-test/FTC1.sh
+++ b/test/auto-test/FTC1.sh
@@ -38,17 +38,7 @@
 #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
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -85,7 +75,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_SERVICE_APP_PATH/ric-registration"
+        api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
         if [ $__httpx == "HTTPS" ]; then
             use_cr_https
@@ -122,7 +112,7 @@
         start_mr    "$MR_READ_TOPIC"  "/events" "users/policy-agent" \
                     "$MR_WRITE_TOPIC" "/events" "users/mr-stub"
 
-        start_cr
+        start_cr 1
 
         start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -163,9 +153,9 @@
 
             api_equal json:policy-instances 0
 
-            cr_equal received_callbacks 3 120
+            cr_equal 0 received_callbacks 3 120
 
-            cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
+            cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
 
         else
             api_equal json:rics 2 300
@@ -189,7 +179,7 @@
         echo "##### Service registry and supervision #####"
         echo "############################################"
 
-        api_put_service 201 "serv1" 1000 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 201 "serv1" 1000 "$CR_SERVICE_APP_PATH_0/1"
 
         api_get_service_ids 200 "serv1" "ric-registration"
 
@@ -210,7 +200,7 @@
         echo "############################################"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH"/test"
+            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
         else
             notificationurl=""
         fi
@@ -249,7 +239,7 @@
         fi
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            cr_equal received_callbacks 3
+            cr_equal 0 received_callbacks 3
         fi
 
         if [[ $interface = *"DMAAP"* ]]; then
diff --git a/test/auto-test/FTC10.sh b/test/auto-test/FTC10.sh
index 625346b..a561cc6 100755
--- a/test/auto-test/FTC10.sh
+++ b/test/auto-test/FTC10.sh
@@ -38,15 +38,6 @@
 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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
 
 setup_testenvironment
 
@@ -73,7 +64,7 @@
 
 start_mr
 
-start_cr
+start_cr 1
 
 if [ $RUNMODE == "DOCKER" ]; then
     start_consul_cbs
@@ -121,14 +112,14 @@
 # Create policies
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
 
 use_agent_rest_http
 
-api_put_service 201 "service1" 3600 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "service1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
 api_put_policy 201 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
 
@@ -173,7 +164,7 @@
 #Update policies
 use_agent_rest_http
 
-api_put_service 200 "service1" 3600 "$CR_SERVICE_APP_PATH/1"
+api_put_service 200 "service1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
 api_put_policy 200 "service1" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json 1
 
diff --git a/test/auto-test/FTC100.sh b/test/auto-test/FTC100.sh
index ac6f8d5..da623ce 100755
--- a/test/auto-test/FTC100.sh
+++ b/test/auto-test/FTC100.sh
@@ -38,16 +38,7 @@
 #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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -89,7 +80,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_SERVICE_APP_PATH/ric-registration"
+        api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
 
         if [ $__httpx == "HTTPS" ]; then
@@ -124,7 +115,7 @@
 
         start_mr
 
-        start_cr
+        start_cr 1
 
         start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -176,8 +167,8 @@
         fi
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            cr_equal received_callbacks 3 120
-            cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
+            cr_equal 0 received_callbacks 3 120
+            cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
         fi
         mr_equal requests_submitted 0
 
@@ -194,14 +185,14 @@
 
         api_get_services 404 "service1"
 
-        api_put_service 201 "service1" 1000 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 201 "service1" 1000 "$CR_SERVICE_APP_PATH_0/1"
 
-        api_put_service 200 "service1" 2000 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 200 "service1" 2000 "$CR_SERVICE_APP_PATH_0/1"
 
 
-        api_put_service 400 "service2" -1 "$CR_SERVICE_APP_PATH/2"
+        api_put_service 400 "service2" -1 "$CR_SERVICE_APP_PATH_0/2"
 
-        api_put_service 400 "service2" "wrong" "$CR_SERVICE_APP_PATH/2"
+        api_put_service 400 "service2" "wrong" "$CR_SERVICE_APP_PATH_0/2"
 
         api_put_service 400 "service2" 100 "/test"
 
@@ -209,20 +200,20 @@
 
         api_put_service 201 "service2" 300 "ftp://localhost:80/test"
 
-        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH/1"
+        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH_0/1"
 
         api_get_service_ids 200 "service1" "service2" "ric-registration"
 
 
-        api_put_service 201 "service3" 5000 "$CR_SERVICE_APP_PATH/3"
+        api_put_service 201 "service3" 5000 "$CR_SERVICE_APP_PATH_0/3"
 
 
         api_get_service_ids 200 "service1" "service2" "service3" "ric-registration"
 
 
-        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH/1"
+        api_get_services 200 "service1" "service1" 2000 "$CR_SERVICE_APP_PATH_0/1"
 
-        api_get_services 200 NOSERVICE "service1" 2000 "$CR_SERVICE_APP_PATH/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_SERVICE_APP_PATH/3"  "ric-registration" 0 "$CR_SERVICE_APP_PATH/ric-registration"
+        api_get_services 200 NOSERVICE "service1" 2000 "$CR_SERVICE_APP_PATH_0/1" "service2" 300 "ftp://localhost:80/test" "service3" 5000 "$CR_SERVICE_APP_PATH_0/3"  "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
         api_get_services 200
 
@@ -251,7 +242,7 @@
         api_get_service_ids 200 "service2" "service3" "ric-registration"
 
 
-        api_put_service 201 "service1" 50 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 201 "service1" 50 "$CR_SERVICE_APP_PATH_0/1"
 
         api_get_service_ids 200 "service1" "service2" "service3"  "ric-registration"
 
@@ -386,10 +377,10 @@
 
 
 
-        api_put_service 201 "service10" 3600 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 201 "service10" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH"/test"
+            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
         else
             notificationurl=""
         fi
@@ -544,7 +535,7 @@
         fi
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            cr_equal received_callbacks 3
+            cr_equal 0 received_callbacks 3
         fi
 
         if [[ $interface = *"DMAAP"* ]]; then
diff --git a/test/auto-test/FTC110.sh b/test/auto-test/FTC110.sh
index e3b96a5..f855f6f 100755
--- a/test/auto-test/FTC110.sh
+++ b/test/auto-test/FTC110.sh
@@ -38,15 +38,7 @@
 #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/cr_api_functions.sh
-. ../common/mr_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -71,7 +63,7 @@
 
 start_mr
 
-start_cr
+start_cr 1
 
 if [ $RUNMODE == "DOCKER" ]; then
     start_consul_cbs
@@ -107,60 +99,60 @@
     sim_print ricsim_g3_1 interface
 fi
 
-api_put_service 201 "service1" 15 "$CR_SERVICE_APP_PATH/service1"
+api_put_service 201 "service1" 15 "$CR_SERVICE_APP_PATH_0/service1"
 
-api_get_services 200 "service1" "service1" 15 "$CR_SERVICE_APP_PATH/service1"
+api_get_services 200 "service1" "service1" 15 "$CR_SERVICE_APP_PATH_0/service1"
 
-api_put_service 201 "service2" 120 "$CR_SERVICE_APP_PATH/service2"
+api_put_service 201 "service2" 120 "$CR_SERVICE_APP_PATH_0/service2"
 
-api_get_services 200 "service2" "service2" 120 "$CR_SERVICE_APP_PATH/service2"
+api_get_services 200 "service2" "service2" 120 "$CR_SERVICE_APP_PATH_0/service2"
 
-api_put_service 200 "service1" 50 "$CR_SERVICE_APP_PATH/service1"
-api_put_service 200 "service2" 180 "$CR_SERVICE_APP_PATH/service2"
+api_put_service 200 "service1" 50 "$CR_SERVICE_APP_PATH_0/service1"
+api_put_service 200 "service2" 180 "$CR_SERVICE_APP_PATH_0/service2"
 
-api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH_0/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH_0/service2"
 
 api_get_service_ids 200 "service1" "service2"
 
 sleep_wait 30 "Waiting for keep alive timeout"
 
-api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH/service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
+api_get_services 200 "service1" "service1" 50 "$CR_SERVICE_APP_PATH_0/service1"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH_0/service2"
 
 sleep_wait 100 "Waiting for keep alive timeout"
 
 api_get_services 404 "service1"
-api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH/service2"
+api_get_services 200 "service2" "service2" 180 "$CR_SERVICE_APP_PATH_0/service2"
 
 api_delete_services 204 "service2"
 
 api_get_services 404 "service1"
 api_get_services 404 "service2"
 
-api_put_service 201 "service3" 60 "$CR_SERVICE_APP_PATH/service3"
+api_put_service 201 "service3" 60 "$CR_SERVICE_APP_PATH_0/service3"
 
-api_get_services 200 "service3" "service3" 60 "$CR_SERVICE_APP_PATH/service3"
+api_get_services 200 "service3" "service3" 60 "$CR_SERVICE_APP_PATH_0/service3"
 
 sleep_wait 30 "Waiting for keep alive timeout"
 
-api_put_service 200 "service3" 60 "$CR_SERVICE_APP_PATH/service3"
+api_put_service 200 "service3" 60 "$CR_SERVICE_APP_PATH_0/service3"
 
 sleep_wait 100 "Waiting for keep alive timeout"
 
 api_get_services 404 "service3"
 
-api_put_service 201 "service4" 120 "$CR_SERVICE_APP_PATH/service4"
+api_put_service 201 "service4" 120 "$CR_SERVICE_APP_PATH_0/service4"
 
 sleep_wait 60 "Waiting for keep alive timeout"
 
-api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH_0/service4"
 
 api_put_services_keepalive 200 "service4"
 
 sleep_wait 90 "Waiting for keep alive timeout"
 
-api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH/service4"
+api_get_services 200 "service4" "service4" 120 "$CR_SERVICE_APP_PATH_0/service4"
 
 api_delete_services 204 "service4"
 
@@ -183,7 +175,7 @@
 api_put_services_keepalive 404 "service4"
 
 # Policy delete after timeout
-api_put_service 201 "service10" 600 "$CR_SERVICE_APP_PATH/service10"
+api_put_service 201 "service10" 600 "$CR_SERVICE_APP_PATH_0/service10"
 
 sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
@@ -209,7 +201,7 @@
 fi
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
@@ -263,7 +255,7 @@
     sim_equal ricsim_g3_1 num_instances 1
 fi
 
-api_put_service 200 "service10" 10 "$CR_SERVICE_APP_PATH/service10"
+api_put_service 200 "service10" 10 "$CR_SERVICE_APP_PATH_0/service10"
 
 #Wait for service expiry
 api_equal json:policies 0 120
diff --git a/test/auto-test/FTC1100.sh b/test/auto-test/FTC1100.sh
index 0e4f4a7..cc23abb 100755
--- a/test/auto-test/FTC1100.sh
+++ b/test/auto-test/FTC1100.sh
@@ -38,16 +38,7 @@
 #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
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -89,7 +80,7 @@
     start_ric_simulators ricsim_g3 4  STD_2.0.0
 fi
 
-start_cr
+start_cr 1
 
 CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
 CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
@@ -110,25 +101,25 @@
 TARGET160="http://localhost:80/target"  # Dummy target, no target for info data in this env...
 
 #Status callbacks for eijobs
-STATUS1="$CR_SERVICE_APP_PATH/job1-status"
-STATUS2="$CR_SERVICE_APP_PATH/job2-status"
-STATUS3="$CR_SERVICE_APP_PATH/job3-status"
-STATUS8="$CR_SERVICE_APP_PATH/job8-status"
-STATUS10="$CR_SERVICE_APP_PATH/job10-status"
+STATUS1="$CR_SERVICE_APP_PATH_0/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH_0/job2-status"
+STATUS3="$CR_SERVICE_APP_PATH_0/job3-status"
+STATUS8="$CR_SERVICE_APP_PATH_0/job8-status"
+STATUS10="$CR_SERVICE_APP_PATH_0/job10-status"
 
 #Status callbacks for infojobs
-INFOSTATUS101="$CR_SERVICE_APP_PATH/info-job101-status"
-INFOSTATUS102="$CR_SERVICE_APP_PATH/info-job102-status"
-INFOSTATUS103="$CR_SERVICE_APP_PATH/info-job103-status"
-INFOSTATUS108="$CR_SERVICE_APP_PATH/info-job108-status"
-INFOSTATUS110="$CR_SERVICE_APP_PATH/info-job110-status"
-INFOSTATUS150="$CR_SERVICE_APP_PATH/info-job150-status"
-INFOSTATUS160="$CR_SERVICE_APP_PATH/info-job160-status"
+INFOSTATUS101="$CR_SERVICE_APP_PATH_0/info-job101-status"
+INFOSTATUS102="$CR_SERVICE_APP_PATH_0/info-job102-status"
+INFOSTATUS103="$CR_SERVICE_APP_PATH_0/info-job103-status"
+INFOSTATUS108="$CR_SERVICE_APP_PATH_0/info-job108-status"
+INFOSTATUS110="$CR_SERVICE_APP_PATH_0/info-job110-status"
+INFOSTATUS150="$CR_SERVICE_APP_PATH_0/info-job150-status"
+INFOSTATUS160="$CR_SERVICE_APP_PATH_0/info-job160-status"
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
     #Type registration status callbacks
-    TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
-    TYPESTATUS2="$CR_SERVICE_APP_PATH/type-status2"
+    TYPESTATUS1="$CR_SERVICE_APP_PATH_0/type-status1"
+    TYPESTATUS2="$CR_SERVICE_APP_PATH_0/type-status2"
 
     ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
 
@@ -163,36 +154,36 @@
 
     ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
 
-    cr_equal received_callbacks 1 30
-    cr_equal received_callbacks?id=type-status1 1
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
+    cr_equal 0 received_callbacks 1 30
+    cr_equal 0 received_callbacks?id=type-status1 1
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
 
     ecs_api_edp_delete_type_2 204 type1
 
-    cr_equal received_callbacks 2 30
-    cr_equal received_callbacks?id=type-status1 2
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json DEREGISTERED
+    cr_equal 0 received_callbacks 2 30
+    cr_equal 0 received_callbacks?id=type-status1 2
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json DEREGISTERED
 
     ecs_api_idc_put_subscription 201 subscription-id-2 owner2 $TYPESTATUS2
     ecs_api_idc_get_subscription_ids 200 NOOWNER subscription-id-1 subscription-id-2
 
     ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
 
-    cr_equal received_callbacks 4 30
-    cr_equal received_callbacks?id=type-status1 3
-    cr_equal received_callbacks?id=type-status2 1
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
+    cr_equal 0 received_callbacks 4 30
+    cr_equal 0 received_callbacks?id=type-status1 3
+    cr_equal 0 received_callbacks?id=type-status2 1
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
 
     ecs_api_idc_delete_subscription 204 subscription-id-2
 
     ecs_api_edp_delete_type_2 204 type1
 
-    cr_equal received_callbacks 5 30
-    cr_equal received_callbacks?id=type-status1 4
-    cr_equal received_callbacks?id=type-status2 1
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json DEREGISTERED
+    cr_equal 0 received_callbacks 5 30
+    cr_equal 0 received_callbacks?id=type-status1 4
+    cr_equal 0 received_callbacks?id=type-status2 1
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json DEREGISTERED
 
-    cr_api_reset
+    cr_api_reset 0
 fi
 
 ### Setup prodstub sim to accept calls for producers, types and jobs
@@ -251,7 +242,7 @@
 ### ecs status
 ecs_api_service_status 200
 
-cr_equal received_callbacks 0
+cr_equal 0 received_callbacks 0
 
 ### Initial tests - no config made
 ### GET: type ids, types, producer ids, producers, job ids, jobs
@@ -345,11 +336,11 @@
     ecs_api_edp_put_producer_2 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
 
     if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-        cr_equal received_callbacks 3 30
-        cr_equal received_callbacks?id=type-status1 3
-        cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED type1 testdata/ecs/ei-type-1.json DEREGISTERED type1 testdata/ecs/ei-type-1.json REGISTERED
+        cr_equal 0 received_callbacks 3 30
+        cr_equal 0 received_callbacks?id=type-status1 3
+        cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED type1 testdata/ecs/ei-type-1.json DEREGISTERED type1 testdata/ecs/ei-type-1.json REGISTERED
     else
-        cr_equal received_callbacks 0
+        cr_equal 0 received_callbacks 0
     fi
 fi
 
@@ -500,11 +491,11 @@
     ecs_api_edp_put_type_2 201 type2 testdata/ecs/ei-type-2.json
     ecs_api_edp_put_producer_2 201 prod-b $CB_JOB/prod-b $CB_SV/prod-b type2
     if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-        cr_equal received_callbacks 4 30
-        cr_equal received_callbacks?id=type-status1 4
-        cr_api_check_all_ecs_subscription_events 200 type-status1 type2 testdata/ecs/ei-type-2.json REGISTERED
+        cr_equal 0 received_callbacks 4 30
+        cr_equal 0 received_callbacks?id=type-status1 4
+        cr_api_check_all_ecs_subscription_events 200 0 type-status1 type2 testdata/ecs/ei-type-2.json REGISTERED
     else
-        cr_equal received_callbacks 0
+        cr_equal 0 received_callbacks 0
     fi
 fi
 
@@ -729,14 +720,14 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 5 30
-    cr_equal received_callbacks?id=type-status1 4
-    cr_equal received_callbacks?id=job3-status 1
-    cr_api_check_all_ecs_events 200 job3-status DISABLED
+    cr_equal 0 received_callbacks 5 30
+    cr_equal 0 received_callbacks?id=type-status1 4
+    cr_equal 0 received_callbacks?id=job3-status 1
+    cr_api_check_all_ecs_events 200 0 job3-status DISABLED
 else
-    cr_equal received_callbacks 1 30
-    cr_equal received_callbacks?id=job3-status 1
-    cr_api_check_all_ecs_events 200 job3-status DISABLED
+    cr_equal 0 received_callbacks 1 30
+    cr_equal 0 received_callbacks?id=job3-status 1
+    cr_api_check_all_ecs_events 200 0 job3-status DISABLED
 fi
 
 # Re-create the producer
@@ -755,14 +746,14 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 6 30
-    cr_equal received_callbacks?id=type-status1 4
-    cr_equal received_callbacks?id=job3-status 2
-    cr_api_check_all_ecs_events 200 job3-status ENABLED
+    cr_equal 0 received_callbacks 6 30
+    cr_equal 0 received_callbacks?id=type-status1 4
+    cr_equal 0 received_callbacks?id=job3-status 2
+    cr_api_check_all_ecs_events 200 0 job3-status ENABLED
 else
-    cr_equal received_callbacks 2 30
-    cr_equal received_callbacks?id=job3-status 2
-    cr_api_check_all_ecs_events 200 job3-status ENABLED
+    cr_equal 0 received_callbacks 2 30
+    cr_equal 0 received_callbacks?id=job3-status 2
+    cr_api_check_all_ecs_events 200 0 job3-status ENABLED
 fi
 
 if [ $ECS_VERSION == "V1-1" ]; then
@@ -784,9 +775,9 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 7 30
-    cr_equal received_callbacks?id=type-status1 5
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type4 testdata/ecs/ei-type-4.json REGISTERED
+    cr_equal 0 received_callbacks 7 30
+    cr_equal 0 received_callbacks?id=type-status1 5
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type4 testdata/ecs/ei-type-4.json REGISTERED
 fi
 
 ecs_api_a1_get_job_ids 200 type4 NOWNER EMPTY
@@ -839,14 +830,14 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 8 30
-    cr_equal received_callbacks?id=type-status1 5
-    cr_equal received_callbacks?id=job8-status 1
-    cr_api_check_all_ecs_events 200 job8-status DISABLED
+    cr_equal 0 received_callbacks 8 30
+    cr_equal 0 received_callbacks?id=type-status1 5
+    cr_equal 0 received_callbacks?id=job8-status 1
+    cr_api_check_all_ecs_events 200 0 job8-status DISABLED
 else
-    cr_equal received_callbacks 3 30
-    cr_equal received_callbacks?id=job8-status 1
-    cr_api_check_all_ecs_events 200 job8-status DISABLED
+    cr_equal 0 received_callbacks 3 30
+    cr_equal 0 received_callbacks?id=job8-status 1
+    cr_api_check_all_ecs_events 200 0 job8-status DISABLED
 fi
 
 prodstub_equal create/prod-d/job8 1
@@ -879,16 +870,16 @@
 ecs_api_edp_get_producer_status 200 prod-d ENABLED
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 10 30
-    cr_equal received_callbacks?id=type-status1 6
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type4 testdata/ecs/ei-type-4.json REGISTERED
+    cr_equal 0 received_callbacks 10 30
+    cr_equal 0 received_callbacks?id=type-status1 6
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type4 testdata/ecs/ei-type-4.json REGISTERED
 
-    cr_equal received_callbacks?id=job8-status 2
-    cr_api_check_all_ecs_events 200 job8-status ENABLED
+    cr_equal 0 received_callbacks?id=job8-status 2
+    cr_api_check_all_ecs_events 200 0 job8-status ENABLED
 else
-    cr_equal received_callbacks 4 30
-    cr_equal received_callbacks?id=job8-status 2
-    cr_api_check_all_ecs_events 200 job8-status ENABLED
+    cr_equal 0 received_callbacks 4 30
+    cr_equal 0 received_callbacks?id=job8-status 2
+    cr_api_check_all_ecs_events 200 0 job8-status ENABLED
 fi
 
 prodstub_equal create/prod-d/job8 2
@@ -903,9 +894,9 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 11 30
-    cr_equal received_callbacks?id=type-status1 7
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type6 testdata/ecs/ei-type-6.json REGISTERED
+    cr_equal 0 received_callbacks 11 30
+    cr_equal 0 received_callbacks?id=type-status1 7
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type6 testdata/ecs/ei-type-6.json REGISTERED
 fi
 
 ecs_api_a1_get_job_ids 200 type6 NOWNER EMPTY
@@ -946,9 +937,9 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 12 30
-    cr_equal received_callbacks?id=type-status1 8
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type6 testdata/ecs/ei-type-6.json REGISTERED
+    cr_equal 0 received_callbacks 12 30
+    cr_equal 0 received_callbacks?id=type-status1 8
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type6 testdata/ecs/ei-type-6.json REGISTERED
 fi
 
 ecs_api_a1_get_job_ids 200 type6 NOWNER job10
@@ -1125,16 +1116,16 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 14 30
+    cr_equal 0 received_callbacks 14 30
 else
-    cr_equal received_callbacks 6 30
+    cr_equal 0 received_callbacks 6 30
 fi
 
-cr_equal received_callbacks?id=job1-status 1
-cr_equal received_callbacks?id=job2-status 1
+cr_equal 0 received_callbacks?id=job1-status 1
+cr_equal 0 received_callbacks?id=job2-status 1
 
-cr_api_check_all_ecs_events 200 job1-status DISABLED
-cr_api_check_all_ecs_events 200 job2-status DISABLED
+cr_api_check_all_ecs_events 200 0 job1-status DISABLED
+cr_api_check_all_ecs_events 200 0 job2-status DISABLED
 
 
 # Arm producer prod-e for supervision failure
@@ -1241,9 +1232,9 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 14 30
+    cr_equal 0 received_callbacks 14 30
 else
-    cr_equal received_callbacks 6 30
+    cr_equal 0 received_callbacks 6 30
 fi
 
 
@@ -1379,11 +1370,11 @@
 ecs_api_edp_delete_type_2 406 type101
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 17 30
-    cr_equal received_callbacks?id=type-status1 11
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type101 testdata/ecs/info-type-1.json REGISTERED type101 testdata/ecs/info-type-1.json DEREGISTERED type101 testdata/ecs/info-type-1.json REGISTERED
+    cr_equal 0 received_callbacks 17 30
+    cr_equal 0 received_callbacks?id=type-status1 11
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type101 testdata/ecs/info-type-1.json REGISTERED type101 testdata/ecs/info-type-1.json DEREGISTERED type101 testdata/ecs/info-type-1.json REGISTERED
 else
-    cr_equal received_callbacks 6
+    cr_equal 0 received_callbacks 6
 fi
 
 ecs_api_edp_get_type_ids 200 type101 type1 type2 type4 type6
@@ -1450,11 +1441,11 @@
 ecs_api_edp_put_producer_2 201 prod-ib $CB_JOB/prod-ib $CB_SV/prod-ib type102
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 18 30
-    cr_equal received_callbacks?id=type-status1 12
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type102 testdata/ecs/info-type-2.json REGISTERED
+    cr_equal 0 received_callbacks 18 30
+    cr_equal 0 received_callbacks?id=type-status1 12
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type102 testdata/ecs/info-type-2.json REGISTERED
 else
-    cr_equal received_callbacks 6
+    cr_equal 0 received_callbacks 6
 fi
 
 ecs_api_idc_get_type_ids 200 type101 type102 type1 type2 type4 type6
@@ -1564,14 +1555,14 @@
 ecs_api_idc_get_job_status2 200 job103 DISABLED EMPTYPROD
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 19 30
+    cr_equal 0 received_callbacks 19 30
 
-    cr_equal received_callbacks?id=info-job103-status 1
-    cr_api_check_all_ecs_events 200 info-job103-status DISABLED
+    cr_equal 0 received_callbacks?id=info-job103-status 1
+    cr_api_check_all_ecs_events 200 0 info-job103-status DISABLED
 else
-    cr_equal received_callbacks 7 30
-    cr_equal received_callbacks?id=info-job103-status 1
-    cr_api_check_all_ecs_events 200 info-job103-status DISABLED
+    cr_equal 0 received_callbacks 7 30
+    cr_equal 0 received_callbacks?id=info-job103-status 1
+    cr_api_check_all_ecs_events 200 0 info-job103-status DISABLED
 fi
 
 # Re-create the producer
@@ -1582,13 +1573,13 @@
 ecs_api_idc_get_job_status2 200 job103 ENABLED 1 prod-ib
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 20 30
-    cr_equal received_callbacks?id=info-job103-status 2
-    cr_api_check_all_ecs_events 200 info-job103-status ENABLED
+    cr_equal 0 received_callbacks 20 30
+    cr_equal 0 received_callbacks?id=info-job103-status 2
+    cr_api_check_all_ecs_events 200 0 info-job103-status ENABLED
 else
-    cr_equal received_callbacks 8 30
-    cr_equal received_callbacks?id=info-job103-status 2
-    cr_api_check_all_ecs_events 200 info-job103-status ENABLED
+    cr_equal 0 received_callbacks 8 30
+    cr_equal 0 received_callbacks?id=info-job103-status 2
+    cr_api_check_all_ecs_events 200 0 info-job103-status ENABLED
 fi
 
 prodstub_check_jobdata_3 200 prod-ib job103 type102 $TARGET103 info-owner-3 testdata/ecs/job-template2.json
@@ -1619,16 +1610,16 @@
 ecs_api_idc_get_job_status2 200 job108 DISABLED EMPTYPROD
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 22 30
-    cr_equal received_callbacks?id=type-status1 13
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type104 testdata/ecs/info-type-4.json REGISTERED
+    cr_equal 0 received_callbacks 22 30
+    cr_equal 0 received_callbacks?id=type-status1 13
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type104 testdata/ecs/info-type-4.json REGISTERED
 
-    cr_equal received_callbacks?id=info-job108-status 1
-    cr_api_check_all_ecs_events 200 info-job108-status DISABLED
+    cr_equal 0 received_callbacks?id=info-job108-status 1
+    cr_api_check_all_ecs_events 200 0 info-job108-status DISABLED
 else
-    cr_equal received_callbacks 9 30
-    cr_equal received_callbacks?id=info-job108-status 1
-    cr_api_check_all_ecs_events 200 info-job108-status DISABLED
+    cr_equal 0 received_callbacks 9 30
+    cr_equal 0 received_callbacks?id=info-job108-status 1
+    cr_api_check_all_ecs_events 200 0 info-job108-status DISABLED
 fi
 
 prodstub_equal create/prod-id/job108 1
@@ -1650,17 +1641,17 @@
 ecs_api_edp_get_producer_status 200 prod-id ENABLED
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 24 30
+    cr_equal 0 received_callbacks 24 30
 
-    cr_equal received_callbacks?id=type-status1 14
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type104 testdata/ecs/info-type-4.json REGISTERED
+    cr_equal 0 received_callbacks?id=type-status1 14
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type104 testdata/ecs/info-type-4.json REGISTERED
 
-    cr_equal received_callbacks?id=info-job108-status 2
-    cr_api_check_all_ecs_events 200 info-job108-status ENABLED
+    cr_equal 0 received_callbacks?id=info-job108-status 2
+    cr_api_check_all_ecs_events 200 0 info-job108-status ENABLED
 else
-    cr_equal received_callbacks 10 30
-    cr_equal received_callbacks?id=info-job108-status 2
-    cr_api_check_all_ecs_events 200 info-job108-status ENABLED
+    cr_equal 0 received_callbacks 10 30
+    cr_equal 0 received_callbacks?id=info-job108-status 2
+    cr_api_check_all_ecs_events 200 0 info-job108-status ENABLED
 fi
 
 prodstub_equal create/prod-id/job108 2
@@ -1689,10 +1680,10 @@
 ecs_api_edp_put_producer_2 201 prod-if $CB_JOB/prod-if $CB_SV/prod-if type106
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 26 30
+    cr_equal 0 received_callbacks 26 30
 
-    cr_equal received_callbacks?id=type-status1 16
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type106 testdata/ecs/info-type-6.json REGISTERED type106 testdata/ecs/info-type-6.json REGISTERED
+    cr_equal 0 received_callbacks?id=type-status1 16
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type106 testdata/ecs/info-type-6.json REGISTERED type106 testdata/ecs/info-type-6.json REGISTERED
 fi
 
 
@@ -1807,19 +1798,19 @@
 
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 28 30
+    cr_equal 0 received_callbacks 28 30
 
-    cr_equal received_callbacks?id=info-job101-status 1
-    cr_equal received_callbacks?id=info-job102-status 1
-    cr_api_check_all_ecs_events 200 info-job101-status DISABLED
-    cr_api_check_all_ecs_events 200 info-job102-status DISABLED
+    cr_equal 0 received_callbacks?id=info-job101-status 1
+    cr_equal 0 received_callbacks?id=info-job102-status 1
+    cr_api_check_all_ecs_events 200 0 info-job101-status DISABLED
+    cr_api_check_all_ecs_events 200 0 info-job102-status DISABLED
 else
-    cr_equal received_callbacks 12 30
+    cr_equal 0 received_callbacks 12 30
 
-    cr_equal received_callbacks?id=info-job101-status 1
-    cr_equal received_callbacks?id=info-job102-status 1
-    cr_api_check_all_ecs_events 200 info-job101-status DISABLED
-    cr_api_check_all_ecs_events 200 info-job102-status DISABLED
+    cr_equal 0 received_callbacks?id=info-job101-status 1
+    cr_equal 0 received_callbacks?id=info-job102-status 1
+    cr_api_check_all_ecs_events 200 0 info-job101-status DISABLED
+    cr_api_check_all_ecs_events 200 0 info-job102-status DISABLED
 fi
 
 
@@ -1887,9 +1878,9 @@
 ecs_api_idc_get_job_status2 200 job110 ENABLED 1 prod-ie
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 28
+    cr_equal 0 received_callbacks 28
 else
-    cr_equal received_callbacks 12
+    cr_equal 0 received_callbacks 12
 fi
 ### Test of pre and post validation
 
@@ -1937,11 +1928,11 @@
 ecs_api_idc_get_type_ids 200 type1 type2 type4 type6 type101 type102 type104 type106 type160 type150
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 30 30
-    cr_equal received_callbacks?id=type-status1 18
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type160 testdata/ecs/info-type-60.json REGISTERED type150 testdata/ecs/info-type-50.json REGISTERED
+    cr_equal 0 received_callbacks 30 30
+    cr_equal 0 received_callbacks?id=type-status1 18
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type160 testdata/ecs/info-type-60.json REGISTERED type150 testdata/ecs/info-type-50.json REGISTERED
 else
-    cr_equal received_callbacks 12
+    cr_equal 0 received_callbacks 12
 fi
 
 ecs_api_edp_put_producer_2 200 prod-ig $CB_JOB/prod-ig $CB_SV/prod-ig type160 type150
@@ -1958,10 +1949,10 @@
 ecs_api_idc_get_job_status2 200 job160 ENABLED  1 prod-ig
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 30 30
-    cr_equal received_callbacks?id=type-status1 18
+    cr_equal 0 received_callbacks 30 30
+    cr_equal 0 received_callbacks?id=type-status1 18
 else
-    cr_equal received_callbacks 12
+    cr_equal 0 received_callbacks 12
 fi
 
 # Test job deletion at type delete
@@ -1974,18 +1965,18 @@
 
     ecs_api_edp_delete_type_2 204 type104
 
-    cr_equal received_callbacks 32 30
-    cr_equal received_callbacks?id=info-job108-status 3
-    cr_equal received_callbacks?id=type-status1 19
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type104 testdata/ecs/info-type-4.json DEREGISTERED
-    cr_api_check_all_ecs_events 200 info-job108-status DISABLED
+    cr_equal 0 received_callbacks 32 30
+    cr_equal 0 received_callbacks?id=info-job108-status 3
+    cr_equal 0 received_callbacks?id=type-status1 19
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type104 testdata/ecs/info-type-4.json DEREGISTERED
+    cr_api_check_all_ecs_events 200 0 info-job108-status DISABLED
 
     ecs_api_edp_get_producer 404 prod-id
 
     ecs_api_idc_get_job 404 job-108
 
 else
-    cr_equal received_callbacks 12
+    cr_equal 0 received_callbacks 12
 fi
 
 check_ecs_logs
diff --git a/test/auto-test/FTC150.sh b/test/auto-test/FTC150.sh
index f011a21..822f835 100755
--- a/test/auto-test/FTC150.sh
+++ b/test/auto-test/FTC150.sh
@@ -32,10 +32,7 @@
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
-. ../common/testcase_common.sh  $@
-. ../common/controller_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
diff --git a/test/auto-test/FTC1800.sh b/test/auto-test/FTC1800.sh
index 6241f3c..232f901 100755
--- a/test/auto-test/FTC1800.sh
+++ b/test/auto-test/FTC1800.sh
@@ -38,14 +38,7 @@
 #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
-. ../common/cr_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -73,7 +66,7 @@
     start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
 fi
 
-start_cr
+start_cr 1
 
 CB_JOB="$PROD_STUB_SERVICE_PATH$PROD_STUB_JOB_CALLBACK"
 CB_SV="$PROD_STUB_SERVICE_PATH$PROD_STUB_SUPERVISION_CALLBACK"
@@ -88,8 +81,8 @@
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
     #Type registration status callbacks
-    TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
-    TYPESTATUS2="$CR_SERVICE_APP_PATH/type-status2"
+    TYPESTATUS1="$CR_SERVICE_APP_PATH_0/type-status1"
+    TYPESTATUS2="$CR_SERVICE_APP_PATH_0/type-status2"
 
     ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
 
@@ -219,11 +212,11 @@
 
 
         if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-            cr_equal received_callbacks 20 30
-            cr_equal received_callbacks?id=type-status1 10
-            cr_equal received_callbacks?id=type-status2 10
+            cr_equal 0 received_callbacks 20 30
+            cr_equal 0 received_callbacks?id=type-status1 10
+            cr_equal 0 received_callbacks?id=type-status2 10
 
-            cr_api_check_all_ecs_subscription_events 200 type-status1 \
+            cr_api_check_all_ecs_subscription_events 200 0 type-status1 \
                 type1 testdata/ecs/ei-type-1.json REGISTERED \
                 type2 testdata/ecs/ei-type-2.json REGISTERED \
                 type3 testdata/ecs/ei-type-3.json REGISTERED \
@@ -235,7 +228,7 @@
                 type104 testdata/ecs/info-type-4.json REGISTERED \
                 type105 testdata/ecs/info-type-5.json REGISTERED
 
-            cr_api_check_all_ecs_subscription_events 200 type-status2 \
+            cr_api_check_all_ecs_subscription_events 200 0 type-status2 \
                 type1 testdata/ecs/ei-type-1.json REGISTERED \
                 type2 testdata/ecs/ei-type-2.json REGISTERED \
                 type3 testdata/ecs/ei-type-3.json REGISTERED \
@@ -273,62 +266,62 @@
 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_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type1 $TARGET ric1 $CR_SERVICE_APP_PATH_0/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
             ecs_api_a1_get_job_status 200 job$i ENABLED 120
         fi
         if [ $use_info_jobs ]; then
-            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type101 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type101 $TARGET info-owner $CR_SERVICE_APP_PATH_0/job_status_info-owner testdata/ecs/job-template.json VALIDATE
             ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 3 prod-a prod-b prod-c 120
         fi
     fi
     if [ $(($i%5)) -eq 1 ]; then
-        ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type2 $TARGET ric1 $CR_SERVICE_APP_PATH_0/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
             ecs_api_a1_get_job_status 200 job$i ENABLED 120
         fi
         if [ $use_info_jobs ]; then
-            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type102 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type102 $TARGET info-owner $CR_SERVICE_APP_PATH_0/job_status_info-owner testdata/ecs/job-template.json VALIDATE
             ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 2 prod-b prod-c 120
         fi
     fi
     if [ $(($i%5)) -eq 2 ]; then
-        ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type3 $TARGET ric1 $CR_SERVICE_APP_PATH_0/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
             ecs_api_a1_get_job_status 200 job$i ENABLED 120
         fi
         if [ $use_info_jobs ]; then
-            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type103 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type103 $TARGET info-owner $CR_SERVICE_APP_PATH_0/job_status_info-owner testdata/ecs/job-template.json VALIDATE
             ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-c 120
         fi
     fi
     if [ $(($i%5)) -eq 3 ]; then
-        ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type4 $TARGET ric1 $CR_SERVICE_APP_PATH_0/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
             ecs_api_a1_get_job_status 200 job$i ENABLED 120
         fi
         if [ $use_info_jobs ]; then
-            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type104 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type104 $TARGET info-owner $CR_SERVICE_APP_PATH_0/job_status_info-owner testdata/ecs/job-template.json VALIDATE
             ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-d 120
         fi
     fi
     if [ $(($i%5)) -eq 4 ]; then
-        ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_APP_PATH/job_status_ric1 testdata/ecs/job-template.json
+        ecs_api_a1_put_job 201 job$i type5 $TARGET ric1 $CR_SERVICE_APP_PATH_0/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
             ecs_api_a1_get_job_status 200 job$i ENABLED 120
         fi
         if [ $use_info_jobs ]; then
-            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type105 $TARGET info-owner $CR_SERVICE_APP_PATH/job_status_info-owner testdata/ecs/job-template.json VALIDATE
+            ecs_api_idc_put_job 201 job$(($i+$NUM_JOBS)) type105 $TARGET info-owner $CR_SERVICE_APP_PATH_0/job_status_info-owner testdata/ecs/job-template.json VALIDATE
             ecs_api_idc_get_job_status2 200 job$(($i+$NUM_JOBS)) ENABLED 1 prod-d 120
         fi
     fi
@@ -356,10 +349,10 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 20 30
+    cr_equal 0 received_callbacks 20 30
 
 else
-    cr_equal received_callbacks 0 30
+    cr_equal 0 received_callbacks 0 30
 
 fi
 
@@ -381,7 +374,7 @@
 
 stop_ecs
 
-cr_api_reset
+cr_api_reset 0
 
 start_stopped_ecs
 
@@ -401,7 +394,7 @@
     fi
 fi
 
-cr_equal received_callbacks 0
+cr_equal 0 received_callbacks 0
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
@@ -787,18 +780,18 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 10 30
-    cr_equal received_callbacks?id=type-status1 5
-    cr_equal received_callbacks?id=type-status2 5
+    cr_equal 0 received_callbacks 10 30
+    cr_equal 0 received_callbacks?id=type-status1 5
+    cr_equal 0 received_callbacks?id=type-status2 5
 
-    cr_api_check_all_ecs_subscription_events 200 type-status1 \
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 \
         type101 testdata/ecs/info-type-1.json REGISTERED \
         type102 testdata/ecs/info-type-2.json REGISTERED \
         type103 testdata/ecs/info-type-3.json REGISTERED \
         type104 testdata/ecs/info-type-4.json REGISTERED \
         type105 testdata/ecs/info-type-5.json REGISTERED
 
-    cr_api_check_all_ecs_subscription_events 200 type-status2 \
+    cr_api_check_all_ecs_subscription_events 200 0 type-status2 \
         type101 testdata/ecs/info-type-1.json REGISTERED \
         type102 testdata/ecs/info-type-2.json REGISTERED \
         type103 testdata/ecs/info-type-3.json REGISTERED \
@@ -806,7 +799,7 @@
         type105 testdata/ecs/info-type-5.json REGISTERED
 
 else
-    cr_equal received_callbacks 0 30
+    cr_equal 0 received_callbacks 0 30
 fi
 
 check_ecs_logs
diff --git a/test/auto-test/FTC2001.sh b/test/auto-test/FTC2001.sh
index f194817..e7d511f 100755
--- a/test/auto-test/FTC2001.sh
+++ b/test/auto-test/FTC2001.sh
@@ -38,17 +38,6 @@
 SUPPORTED_RUNMODES="DOCKER 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/mr_api_functions.sh
-. ../common/control_panel_api_functions.sh
-. ../common/consul_cbs_functions.sh
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
 
 setup_testenvironment
 
@@ -64,7 +53,7 @@
 use_prod_stub_https
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
    echo "PMS VERSION 2 (V2) is required"
    exit 1
@@ -102,7 +91,7 @@
     consul_config_app                      ".consul_config.json"
 fi
 
-start_cr
+start_cr 1
 
 start_prod_stub
 
@@ -144,7 +133,7 @@
 #Check the number of types
 api_equal json:policy-types 2 300
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/1"
 
 # Create policies in STD
 for ((i=1; i<=$STD_NUM_RICS; i++))
@@ -182,8 +171,8 @@
 TARGET1="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
 TARGET2="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
 
-STATUS1="$CR_SERVICE_APP_PATH/job1-status"
-STATUS2="$CR_SERVICE_APP_PATH/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH_0/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH_0/job2-status"
 
 prodstub_arm_producer 200 prod-a
 prodstub_arm_type 200 prod-a type1
@@ -195,7 +184,7 @@
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
     #Type registration status callbacks
-    TYPESTATUS1="$CR_SERVICE_APP_PATH/type-status1"
+    TYPESTATUS1="$CR_SERVICE_APP_PATH_0/type-status1"
 
     ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
 
@@ -270,17 +259,17 @@
 fi
 
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 3 30
-    cr_api_check_all_ecs_subscription_events 200 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
-    cr_api_check_all_ecs_events 200 job1-status DISABLED
-    cr_api_check_all_ecs_events 200 job2-status DISABLED
+    cr_equal 0 received_callbacks 3 30
+    cr_api_check_all_ecs_subscription_events 200 0 type-status1 type1 testdata/ecs/ei-type-1.json REGISTERED
+    cr_api_check_all_ecs_events 200 0 job1-status DISABLED
+    cr_api_check_all_ecs_events 200 0 job2-status DISABLED
 else
-    cr_equal received_callbacks 2 30
-    cr_api_check_all_ecs_events 200 job1-status DISABLED
-    cr_api_check_all_ecs_events 200 job2-status DISABLED
+    cr_equal 0 received_callbacks 2 30
+    cr_api_check_all_ecs_events 200 0 job1-status DISABLED
+    cr_api_check_all_ecs_events 200 0 job2-status DISABLED
 fi
 
-cr_contains_str remote_hosts $HTTP_PROXY_APP_NAME
+cr_contains_str 0 remote_hosts $HTTP_PROXY_APP_NAME
 
 check_policy_agent_logs
 check_ecs_logs
diff --git a/test/auto-test/FTC2002.sh b/test/auto-test/FTC2002.sh
index 321dd24..1b05763 100755
--- a/test/auto-test/FTC2002.sh
+++ b/test/auto-test/FTC2002.sh
@@ -31,11 +31,7 @@
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER"
 
-. ../common/testcase_common.sh  $@
-. ../common/controller_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/http_proxy_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
diff --git a/test/auto-test/FTC2003.sh b/test/auto-test/FTC2003.sh
index 6e22ced..ae0fbb6 100755
--- a/test/auto-test/FTC2003.sh
+++ b/test/auto-test/FTC2003.sh
@@ -38,12 +38,6 @@
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
 . ../common/testcase_common.sh $@
-. ../common/ecs_api_functions.sh
-. ../common/cr_api_functions.sh
-. ../common/mr_api_functions.sh
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/dmaapadp_api_functions.sh
 
 setup_testenvironment
 
@@ -66,7 +60,7 @@
 
 start_http_proxy
 
-start_cr
+start_cr 1
 
 start_ecs NOPROXY $SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_CONFIG_FILE
 
@@ -92,7 +86,7 @@
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
+    ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH_0/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH_0/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
 done
 
 for ((i=1; i<=$NUM_JOBS; i++))
@@ -105,20 +99,20 @@
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-1"}'
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
 
-cr_equal received_callbacks $(($NUM_JOBS*2)) 60
+cr_equal 0 received_callbacks $(($NUM_JOBS*2)) 60
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_equal received_callbacks?id=joby-data$i 2
+    cr_equal 0 received_callbacks?id=joby-data$i 2
 done
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-1"}'
-    cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-3"}'
+    cr_api_check_single_genric_json_event 200 0 joby-data$i '{"msg":"msg-1"}'
+    cr_api_check_single_genric_json_event 200 0 joby-data$i '{"msg":"msg-3"}'
 done
 
-cr_contains_str remote_hosts $HTTP_PROXY_APP_NAME
+cr_contains_str 0 remote_hosts $HTTP_PROXY_APP_NAME
 
 #### TEST COMPLETE ####
 
diff --git a/test/auto-test/FTC300.sh b/test/auto-test/FTC300.sh
index 4503c88..232e5a8 100755
--- a/test/auto-test/FTC300.sh
+++ b/test/auto-test/FTC300.sh
@@ -37,16 +37,7 @@
 #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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -109,7 +100,7 @@
 
         start_mr
 
-        start_cr
+        start_cr 1
 
         if [ $RUNMODE == "DOCKER" ]; then
             start_consul_cbs
@@ -156,13 +147,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_SERVICE_APP_PATH/1"
+        api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
         START_ID=2000
         NUM_POLICIES=10000  # Must be at least 100
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH"/test"
+            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
         else
             notificationurl=""
         fi
diff --git a/test/auto-test/FTC3000.sh b/test/auto-test/FTC3000.sh
index 4c261b4..a1c4fca 100755
--- a/test/auto-test/FTC3000.sh
+++ b/test/auto-test/FTC3000.sh
@@ -39,21 +39,6 @@
 SUPPORTED_RUNMODES="DOCKER 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
-. ../common/consul_cbs_functions.sh
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
-. ../common/dmaapmed_api_functions.sh
-. ../common/dmaapadp_api_functions.sh
 
 setup_testenvironment
 
@@ -62,7 +47,13 @@
 #Local vars in test script
 ##########################
 FLAT_A1_EI="1"
-NUM_JOBS=100  # Mediator and adapter gets same number of jobs
+NUM_CR=10 # Number of callback receivers, divide all callbacks to this number of servers - for load sharing
+## Note: The number jobs must be a multiple of the number of CRs in order to calculate the number of expected event in each CR
+NUM_JOBS=200  # Mediator and adapter gets same number of jobs for every type
+
+if [ $NUM_JOBS -lt $NUM_CR ]; then
+    __log_conf_fail_general "Number of jobs: $NUM_JOBS must be greater then the number of CRs: $NUM_CR"
+fi
 
 clean_environment
 
@@ -75,7 +66,7 @@
 
 start_kube_proxy
 
-start_cr
+start_cr $NUM_CR
 
 start_ecs NOPROXY $SIM_GROUP/$ECS_COMPOSE_DIR/$ECS_CONFIG_FILE
 
@@ -103,27 +94,36 @@
 start_timer "Create adapter jobs: $NUM_JOBS"
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 job-adp-$i ExampleInformationType $CR_SERVICE_MR_PATH/job-adp-data$i"?storeas=md5" info-owner-adp-$i $CR_SERVICE_APP_PATH/job_status_info-owner-adp-$i testdata/dmaap-adapter/job-template.json
+    cr_index=$(($i%$NUM_CR))
+    service_mr="CR_SERVICE_MR_PATH_"$cr_index
+    service_app="CR_SERVICE_APP_PATH_"$cr_index
+    ecs_api_idc_put_job 201 job-adp-$i ExampleInformationType ${!service_mr}/job-adp-data$i"?storeas=md5" info-owner-adp-$i ${!service_app}/job_status_info-owner-adp-$i testdata/dmaap-adapter/job-template.json
 
 done
-print_timer "Create adapter jobs: $NUM_JOBS"
+print_timer
 
 # Create jobs for adapter kafka - CR stores data as MD5 hash
 start_timer "Create adapter (kafka) jobs: $NUM_JOBS"
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 job-adp-kafka-$i ExampleInformationTypeKafka $CR_SERVICE_TEXT_PATH/job-adp-kafka-data$i"?storeas=md5" info-owner-adp-kafka-$i $CR_SERVICE_APP_PATH/job_status_info-owner-adp-kafka-$i testdata/dmaap-adapter/job-template-1-kafka.json
+    cr_index=$(($i%$NUM_CR))
+    service_text="CR_SERVICE_TEXT_PATH_"$cr_index
+    service_app="CR_SERVICE_APP_PATH_"$cr_index
+    ecs_api_idc_put_job 201 job-adp-kafka-$i ExampleInformationTypeKafka ${!service_text}/job-adp-kafka-data$i"?storeas=md5" info-owner-adp-kafka-$i ${!service_app}/job_status_info-owner-adp-kafka-$i testdata/dmaap-adapter/job-template-1-kafka.json
 
 done
-print_timer "Create adapter (kafka) jobs: $NUM_JOBS"
+print_timer
 
 # Create jobs for mediator - CR stores data as MD5 hash
 start_timer "Create mediator jobs: $NUM_JOBS"
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 job-med-$i STD_Fault_Messages $CR_SERVICE_MR_PATH/job-med-data$i"?storeas=md5" info-owner-med-$i $CR_SERVICE_APP_PATH/job_status_info-owner-med-$i testdata/dmaap-adapter/job-template.json
+    cr_index=$(($i%$NUM_CR))
+    service_mr="CR_SERVICE_MR_PATH_"$cr_index
+    service_app="CR_SERVICE_APP_PATH_"$cr_index
+    ecs_api_idc_put_job 201 job-med-$i STD_Fault_Messages ${!service_mr}/job-med-data$i"?storeas=md5" info-owner-med-$i ${!service_app}/job_status_info-owner-med-$i testdata/dmaap-adapter/job-template.json
 done
-print_timer "Create mediator jobs: $NUM_JOBS"
+print_timer
 
 # Check job status
 for ((i=1; i<=$NUM_JOBS; i++))
@@ -134,109 +134,155 @@
 done
 
 
-EXPECTED_DATA_DELIV=0
+EXPECTED_DATA_DELIV=0 #Total delivered msg per CR
+DATA_DELIV_JOBS=0 #Total delivered msg per job per CR
 
 mr_api_generate_json_payload_file 1 ./tmp/data_for_dmaap_test.json
 mr_api_generate_text_payload_file 1 ./tmp/data_for_dmaap_test.txt
 
 ## Send json file via message-router to adapter
-
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
-
+DATA_DELIV_JOBS=5 #Each job will eventuall get 2 msgs
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapadp.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapadp.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapadp.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapadp.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapadp.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
 # Check received data callbacks from adapter
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_event_md5_file 200 job-adp-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-adp-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-adp-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-adp-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-adp-data$i ./tmp/data_for_dmaap_test.json
+    cr_index=$(($i%$NUM_CR))
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-data$i ./tmp/data_for_dmaap_test.json
 done
 
 
 ## Send text file via message-router to adapter kafka
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
-
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_text_file "/events/unauthenticated.dmaapadp_kafka.text" ./tmp/data_for_dmaap_test.txt
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_text_file "/events/unauthenticated.dmaapadp_kafka.text" ./tmp/data_for_dmaap_test.txt
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_text_file "/events/unauthenticated.dmaapadp_kafka.text" ./tmp/data_for_dmaap_test.txt
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_text_file "/events/unauthenticated.dmaapadp_kafka.text" ./tmp/data_for_dmaap_test.txt
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_text_file "/events/unauthenticated.dmaapadp_kafka.text" ./tmp/data_for_dmaap_test.txt
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
 # Check received data callbacks from adapter kafka
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_event_md5_file 200 job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
-    cr_api_check_single_genric_event_md5_file 200 job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
-    cr_api_check_single_genric_event_md5_file 200 job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
-    cr_api_check_single_genric_event_md5_file 200 job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
-    cr_api_check_single_genric_event_md5_file 200 job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
+    cr_index=$(($i%$NUM_CR))
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-adp-kafka-data$i ./tmp/data_for_dmaap_test.txt
 done
 
 ## Send json file via message-router to mediator
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
-
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapmed.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapmed.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapmed.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapmed.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
-EXPECTED_DATA_DELIV=$(($NUM_JOBS+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS/$NUM_CR+$EXPECTED_DATA_DELIV))
 mr_api_send_json_file "/events/unauthenticated.dmaapmed.json" ./tmp/data_for_dmaap_test.json
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 200
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
 
 # Check received data callbacks from mediator
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_event_md5_file 200 job-med-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-med-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-med-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-med-data$i ./tmp/data_for_dmaap_test.json
-    cr_api_check_single_genric_event_md5_file 200 job-med-data$i ./tmp/data_for_dmaap_test.json
+    cr_index=$(($i%$NUM_CR))
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-med-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-med-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-med-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-med-data$i ./tmp/data_for_dmaap_test.json
+    cr_api_check_single_genric_event_md5_file 200 $cr_index job-med-data$i ./tmp/data_for_dmaap_test.json
 done
 
 
@@ -244,64 +290,83 @@
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-1"}'
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
 
+DATA_DELIV_JOBS=7 #Each job will eventuall get 5+2 msgs
+
 # Wait for data recetption, adapter
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
 start_timer "Data delivery adapter, 2 json per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 100
-print_timer "Data delivery adapter, 2 json per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
+print_timer
 
 # Send small text via message-routere to adapter
 mr_api_send_text "/events/unauthenticated.dmaapadp_kafka.text" 'Message-------1'
 mr_api_send_text "/events/unauthenticated.dmaapadp_kafka.text" 'Message-------3'
 
 # Wait for data recetption, adapter kafka
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
-start_timer "Data delivery adapte kafkar, 2 strings per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 100
-print_timer "Data delivery adapte kafkar, 2 strings per job"
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
+start_timer "Data delivery adapter kafka, 2 strings per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 60
+done
+print_timer
 
 # Send small json via message-router to mediator
 mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-0"}'
 mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-2"}'
 
 # Wait for data reception, mediator
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
 start_timer "Data delivery mediator, 2 json per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 100
-print_timer "Data delivery mediator, 2 json per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 100
+done
+print_timer
 
 # Check received number of messages for mediator and adapter callbacks
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_equal received_callbacks?id=job-med-data$i 7
-    cr_equal received_callbacks?id=job-adp-data$i 7
-    cr_equal received_callbacks?id=job-adp-kafka-data$i 7
+    cr_index=$(($i%$NUM_CR))
+    cr_equal $cr_index received_callbacks?id=job-med-data$i $DATA_DELIV_JOBS
+    cr_equal $cr_index received_callbacks?id=job-adp-data$i $DATA_DELIV_JOBS
+    cr_equal $cr_index received_callbacks?id=job-adp-kafka-data$i $DATA_DELIV_JOBS
 done
 
 # Check received data and order for mediator and adapter callbacks
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_event_md5 200 job-med-data$i '{"msg":"msg-0"}'
-    cr_api_check_single_genric_event_md5 200 job-med-data$i '{"msg":"msg-2"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-data$i '{"msg":"msg-1"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-data$i '{"msg":"msg-3"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-kafka-data$i 'Message-------1'
-    cr_api_check_single_genric_event_md5 200 job-adp-kafka-data$i 'Message-------3'
+    cr_index=$(($i%$NUM_CR))
+    cr_api_check_single_genric_event_md5 200 $cr_index job-med-data$i '{"msg":"msg-0"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-med-data$i '{"msg":"msg-2"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-data$i '{"msg":"msg-1"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-data$i '{"msg":"msg-3"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-kafka-data$i 'Message-------1'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-kafka-data$i 'Message-------3'
 done
 
 # Set delay in the callback receiver to slow down callbacks
 SEC_DELAY=2
-cr_delay_callback 200 $SEC_DELAY
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_delay_callback 200 $i $SEC_DELAY
+done
 
 # Send small json via message-router to adapter
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-5"}'
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-7"}'
 
 # Wait for data recetption, adapter
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
 start_timer "Data delivery adapter with $SEC_DELAY seconds delay in consumer, 2 json per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV $(($NUM_JOBS+300))
-print_timer "Data delivery adapter with $SEC_DELAY seconds delay in consumer, 2 json per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 100
+done
+print_timer
 
 
 # Send small text via message-router to adapter kafka
@@ -309,10 +374,13 @@
 mr_api_send_text "/events/unauthenticated.dmaapadp_kafka.text" 'Message-------7'
 
 # Wait for data recetption, adapter kafka
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
 start_timer "Data delivery adapter kafka with $SEC_DELAY seconds delay in consumer, 2 strings per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV $(($NUM_JOBS+300))
-print_timer "Data delivery adapter with kafka $SEC_DELAY seconds delay in consumer, 2 strings per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 100
+done
+print_timer
 
 
 # Send small json via message-router to mediator
@@ -320,28 +388,33 @@
 mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-6"}'
 
 # Wait for data reception, mediator
-EXPECTED_DATA_DELIV=$(($NUM_JOBS*2+$EXPECTED_DATA_DELIV))
+EXPECTED_DATA_DELIV=$(($NUM_JOBS*2/$NUM_CR+$EXPECTED_DATA_DELIV))
 start_timer "Data delivery mediator with $SEC_DELAY seconds delay in consumer, 2 json per job"
-cr_equal received_callbacks $EXPECTED_DATA_DELIV 1000
-print_timer "Data delivery mediator with $SEC_DELAY seconds delay in consumer, 2 json per job"
+for ((i=0; i<$NUM_CR; i++))
+do
+    cr_equal $i received_callbacks $EXPECTED_DATA_DELIV 100
+done
+print_timer
 
 # Check received number of messages for mediator and adapter callbacks
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_equal received_callbacks?id=job-med-data$i 9
-    cr_equal received_callbacks?id=job-adp-data$i 9
-    cr_equal received_callbacks?id=job-adp-kafka-data$i 9
+    cr_index=$(($i%$NUM_CR))
+    cr_equal $cr_index received_callbacks?id=job-med-data$i 9
+    cr_equal $cr_index received_callbacks?id=job-adp-data$i 9
+    cr_equal $cr_index received_callbacks?id=job-adp-kafka-data$i 9
 done
 
 # Check received data and order for mediator and adapter callbacks
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_event_md5 200 job-med-data$i '{"msg":"msg-4"}'
-    cr_api_check_single_genric_event_md5 200 job-med-data$i '{"msg":"msg-6"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-data$i '{"msg":"msg-5"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-data$i '{"msg":"msg-7"}'
-    cr_api_check_single_genric_event_md5 200 job-adp-kafka-data$i 'Message-------5'
-    cr_api_check_single_genric_event_md5 200 job-adp-kafka-data$i 'Message-------7'
+    cr_index=$(($i%$NUM_CR))
+    cr_api_check_single_genric_event_md5 200 $cr_index job-med-data$i '{"msg":"msg-4"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-med-data$i '{"msg":"msg-6"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-data$i '{"msg":"msg-5"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-data$i '{"msg":"msg-7"}'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-kafka-data$i 'Message-------5'
+    cr_api_check_single_genric_event_md5 200 $cr_index job-adp-kafka-data$i 'Message-------7'
 done
 
 #### TEST COMPLETE ####
diff --git a/test/auto-test/FTC310.sh b/test/auto-test/FTC310.sh
index e017643..53437e8 100755
--- a/test/auto-test/FTC310.sh
+++ b/test/auto-test/FTC310.sh
@@ -28,15 +28,7 @@
 #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
-. ../common/consul_cbs_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -62,7 +54,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_SERVICE_APP_PATH/ric-registration"
+    api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
     # Start one RIC of each type
     start_ric_simulators ricsim_g1 1  OSC_2.1.0
@@ -73,7 +65,7 @@
 
     start_mr
 
-    start_cr
+    start_cr 1
 
     start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -93,9 +85,9 @@
     if [ "$PMS_VERSION" == "V2" ]; then
         api_equal json:rics 3 300
 
-        cr_equal received_callbacks 3 120
+        cr_equal 0 received_callbacks 3 120
 
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
     else
         api_equal json:rics 2 300
     fi
@@ -114,9 +106,9 @@
     if [ "$PMS_VERSION" == "V2" ]; then
         api_equal json:rics 4 120
 
-        cr_equal received_callbacks 4 120
+        cr_equal 0 received_callbacks 4 120
 
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g2_2
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g2_2
     else
         api_equal json:rics 3 120
     fi
@@ -138,7 +130,7 @@
     if [ "$PMS_VERSION" == "V2" ]; then
         api_equal json:rics 3 120
 
-        cr_equal received_callbacks 4 120
+        cr_equal 0 received_callbacks 4 120
     else
         api_equal json:rics 2 120
     fi
diff --git a/test/auto-test/FTC350.sh b/test/auto-test/FTC350.sh
index 25bdc4c..31e40ab 100755
--- a/test/auto-test/FTC350.sh
+++ b/test/auto-test/FTC350.sh
@@ -32,16 +32,7 @@
 #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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -75,7 +66,7 @@
 
     start_ric_simulators ricsim_g1 $NUM_RICS_2 OSC_2.1.0
 
-    start_cr
+    start_cr 1
 
     start_mr
 
@@ -108,7 +99,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_SERVICE_APP_PATH/ric-registration"
+    api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
     #Load first config
     if [ $RUNMODE == "KUBE" ]; then
@@ -126,8 +117,8 @@
     api_equal json:rics 8 300
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        cr_equal received_callbacks?id=ric-registration 8 120
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g1_2  ricsim_g1_3 ricsim_g1_4 ricsim_g1_5 ricsim_g1_6  ricsim_g1_7  ricsim_g1_8
+        cr_equal 0 received_callbacks?id=ric-registration 8 120
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g1_2  ricsim_g1_3 ricsim_g1_4 ricsim_g1_5 ricsim_g1_6  ricsim_g1_7  ricsim_g1_8
     fi
 
     api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:NOTYPE:???? \
@@ -205,8 +196,8 @@
                              ricsim_g1_8:me1_ricsim_g1_8,me2_ricsim_g1_8:4,5:???? "
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        cr_equal received_callbacks?id=ric-registration 16 120
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g1_1 ricsim_g1_2  ricsim_g1_3 ricsim_g1_4 ricsim_g1_5 ricsim_g1_6  ricsim_g1_7  ricsim_g1_8
+        cr_equal 0 received_callbacks?id=ric-registration 16 120
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g1_2  ricsim_g1_3 ricsim_g1_4 ricsim_g1_5 ricsim_g1_6  ricsim_g1_7  ricsim_g1_8
     fi
 
     #Load config with all rics
@@ -219,8 +210,8 @@
     api_equal json:rics 10 120
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        cr_equal received_callbacks?id=ric-registration 18 120
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g1_9  ricsim_g1_10
+        cr_equal 0 received_callbacks?id=ric-registration 18 120
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_9  ricsim_g1_10
     fi
 
     sim_put_policy_type 201 ricsim_g1_9 5 testdata/OSC/sim_5.json
@@ -269,8 +260,8 @@
                              ricsim_g1_10:me1_ricsim_g1_10,me2_ricsim_g1_10:NOTYPE:???? "
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        cr_equal received_callbacks?id=ric-registration 19 120
-        cr_api_check_all_sync_events 200 ric-registration ricsim_g1_9
+        cr_equal 0 received_callbacks?id=ric-registration 19 120
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_9
     fi
 
     #No policy type in sim #10
@@ -281,10 +272,10 @@
         api_equal json:policy_types 5
     fi
 
-    api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH/serv1"
+    api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/serv1"
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        notificationurl=$CR_SERVICE_APP_PATH"/test"
+        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
     else
         notificationurl=""
     fi
@@ -301,8 +292,8 @@
     api_equal json:rics 8 120
 
     if [ "$PMS_VERSION" == "V2" ]; then
-        cr_equal received_callbacks?id=ric-registration 19 120
-        cr_api_check_all_sync_events 200 ric-registration EMPTY
+        cr_equal 0 received_callbacks?id=ric-registration 19 120
+        cr_api_check_all_sync_events 200 0 ric-registration EMPTY
     fi
 
     if [ "$PMS_VERSION" == "V2" ]; then
diff --git a/test/auto-test/FTC800.sh b/test/auto-test/FTC800.sh
index 27675be..e509f6c 100755
--- a/test/auto-test/FTC800.sh
+++ b/test/auto-test/FTC800.sh
@@ -37,16 +37,7 @@
 #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
-. ../common/consul_cbs_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -101,7 +92,7 @@
 
         start_mr
 
-        start_cr
+        start_cr 1
 
         start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -151,10 +142,10 @@
             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_SERVICE_APP_PATH/1"
+        api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
         if [ "$PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH"/test"
+            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
         else
             notificationurl=""
         fi
diff --git a/test/auto-test/FTC805.sh b/test/auto-test/FTC805.sh
index 02f6758..af46814 100755
--- a/test/auto-test/FTC805.sh
+++ b/test/auto-test/FTC805.sh
@@ -37,15 +37,7 @@
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
-. ../common/testcase_common.sh  $@
-. ../common/agent_api_functions.sh
-. ../common/ricsimulator_api_functions.sh
-. ../common/control_panel_api_functions.sh
-. ../common/controller_api_functions.sh
-. ../common/consul_cbs_functions.sh
-. ../common/cr_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -67,7 +59,7 @@
 generate_policy_uuid
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
@@ -131,7 +123,7 @@
             consul_config_app                      ".consul_config.json"
         fi
 
-        start_cr
+        start_cr 1
 
         api_get_status 200
 
@@ -152,7 +144,7 @@
             api_equal json:policy_types 1 300  #Wait for the agent to refresh types from the simulator
         fi
 
-        api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH/1"
+        api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
         echo "Check the number of types in the agent for each ric is 1"
         for ((i=1; i<=$NUM_RICS; i++))
@@ -180,7 +172,7 @@
             sim_equal ricsim_g1_$i num_instances $NUM_POLICIES_PER_RIC
         done
 
-        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
+        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
         stop_policy_agent
 
@@ -217,7 +209,7 @@
 
         print_timer "Restore $((NUM_POLICIES_PER_RIC*$NUM_RICS)) polices after restart over $interface using "$__httpx
 
-        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
+        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
         start_timer "Delete $((NUM_POLICIES_PER_RIC*$NUM_RICS)) polices over $interface using "$__httpx
 
@@ -247,7 +239,7 @@
 
         sleep_wait 200
 
-        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH/1"
+        api_get_services 200 "serv1" "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
         api_equal json:policies 0
 
diff --git a/test/auto-test/FTC810.sh b/test/auto-test/FTC810.sh
index 02b8db9..ad71f46 100755
--- a/test/auto-test/FTC810.sh
+++ b/test/auto-test/FTC810.sh
@@ -37,16 +37,7 @@
 #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
-. ../common/consul_cbs_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -97,7 +88,7 @@
 
 start_mr
 
-start_cr
+start_cr 1
 
 start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -197,7 +188,7 @@
 done
 
 echo "Register a service"
-api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
 TEST_DURATION=$((24*3600*$DAYS))
 TEST_START=$SECONDS
@@ -207,7 +198,7 @@
 MR_MESSAGES=0
 
 if [ "$PMS_VERSION" == "V2" ]; then
-      notificationurl=$CR_SERVICE_APP_PATH"/test"
+      notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
       notificationurl=""
 fi
diff --git a/test/auto-test/FTC850.sh b/test/auto-test/FTC850.sh
index a5f1978..bd61b3a 100755
--- a/test/auto-test/FTC850.sh
+++ b/test/auto-test/FTC850.sh
@@ -37,16 +37,7 @@
 #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/consul_cbs_functions.sh
-. ../common/cr_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
@@ -67,7 +58,7 @@
 generate_policy_uuid
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
@@ -135,7 +126,7 @@
 
         start_mr # Not used, but removes error messages from the agent log
 
-        start_cr
+        start_cr 1
 
         api_get_status 200
 
@@ -156,7 +147,7 @@
             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_SERVICE_APP_PATH/1"
+        api_put_service 201 "serv1" 600 "$CR_SERVICE_APP_PATH_0/1"
 
         echo "Check the number of types in the agent for each ric is 1"
         for ((i=1; i<=$NUM_RICS; i++))
diff --git a/test/auto-test/FTC900.sh b/test/auto-test/FTC900.sh
index e698f62..886b664 100755
--- a/test/auto-test/FTC900.sh
+++ b/test/auto-test/FTC900.sh
@@ -38,15 +38,6 @@
 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/consul_cbs_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
-. ../common/cr_api_functions.sh
 
 setup_testenvironment
 
@@ -184,10 +175,10 @@
 # Create policies
 use_agent_rest_http
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/1"
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
diff --git a/test/auto-test/FTC_HELM_E_RELEASE.sh b/test/auto-test/FTC_HELM_E_RELEASE.sh
index 71a5d50..54f3e4d 100755
--- a/test/auto-test/FTC_HELM_E_RELEASE.sh
+++ b/test/auto-test/FTC_HELM_E_RELEASE.sh
@@ -35,18 +35,6 @@
 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
-. ../common/kube_proxy_api_functions.sh
-. ../common/dmaapmed_api_functions.sh
-. ../common/dmaapadp_api_functions.sh
 
 setup_testenvironment
 
@@ -108,7 +96,7 @@
 
 start_policy_agent
 
-start_cr
+start_cr 1
 
 start_prod_stub
 
@@ -240,16 +228,16 @@
     api_equal json:policy_ids 0
 fi
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/ER-app"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/ER-app"
 
 # Create policies in STD
 for ((i=0; i<$STD_NUM_RICS; i++))
 do
     ricid=$((3+$i))
     generate_policy_uuid
-    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD/pi1_template.json 1
+    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"std2" testdata/STD/pi1_template.json 1
     generate_policy_uuid
-    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD/pi1_template.json 1
+    api_put_policy 201 "Emergency-response-app" ric$ricid NOTYPE $((1200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"std2" testdata/STD/pi1_template.json 1
 done
 
 #Create policies in STD 2
@@ -257,9 +245,9 @@
 do
    ricid=$((5+$i))
    generate_policy_uuid
-   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD2/pi_qos_template.json 1
+   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS_0_2_0 $((2100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"std2" testdata/STD2/pi_qos_template.json 1
    generate_policy_uuid
-   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"std2" testdata/STD2/pi_qos2_template.json 1
+   api_put_policy 201 "Emergency-response-app" ric$ricid STD_QOS2_0.1.0 $((2200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"std2" testdata/STD2/pi_qos2_template.json 1
 done
 
 # Create policies in OSC
@@ -267,9 +255,9 @@
 do
     ricid=$((1+$i))
     generate_policy_uuid
-    api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"osc" testdata/OSC/pi1_template.json 1
+    api_put_policy 201 "Emergency-response-app" ric$ricid 1 $((3100+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"osc" testdata/OSC/pi1_template.json 1
     generate_policy_uuid
-    api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH/"osc" testdata/OSC/pi2_template.json 1
+    api_put_policy 201 "Emergency-response-app" ric$ricid 2 $((3200+$i)) NOTRANSIENT $CR_SERVICE_APP_PATH_0/"osc" testdata/OSC/pi2_template.json 1
 done
 
 
@@ -338,8 +326,8 @@
 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_APP_PATH/job1-status"
-STATUS2="$CR_SERVICE_APP_PATH/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH_0/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH_0/job2-status"
 
 prodstub_arm_producer 200 prod-a
 prodstub_arm_type 200 prod-a type1
@@ -420,12 +408,12 @@
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 jobx$i STD_Fault_Messages $CR_SERVICE_MR_PATH/jobx-data$i info-ownerx$i $CR_SERVICE_MR_PATH/job_status_info-ownerx$i testdata/dmaap-adapter/job-template.json
+    ecs_api_idc_put_job 201 jobx$i STD_Fault_Messages $CR_SERVICE_MR_PATH_0/jobx-data$i info-ownerx$i $CR_SERVICE_MR_PATH_0/job_status_info-ownerx$i testdata/dmaap-adapter/job-template.json
 done
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
+    ecs_api_idc_put_job 201 joby$i ExampleInformationType $CR_SERVICE_MR_PATH_0/joby-data$i info-ownery$i $CR_SERVICE_MR_PATH_0/job_status_info-ownery$i testdata/dmaap-adapter/job-template.json
 done
 
 for ((i=1; i<=$NUM_JOBS; i++))
@@ -438,19 +426,19 @@
 mr_api_send_json "/events/unauthenticated.dmaapmed.json" '{"msg":"msg-2"}'
 mr_api_send_json "/events/unauthenticated.dmaapadp.json" '{"msg":"msg-3"}'
 
-cr_equal received_callbacks $(($NUM_JOBS*2*2)) 60
+cr_equal 0 received_callbacks $(($NUM_JOBS*2*2)) 60
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_equal received_callbacks?id=jobx-data$i 2
-    cr_equal received_callbacks?id=joby-data$i 2
+    cr_equal 0 received_callbacks?id=jobx-data$i 2
+    cr_equal 0 received_callbacks?id=joby-data$i 2
 done
 
 for ((i=1; i<=$NUM_JOBS; i++))
 do
-    cr_api_check_single_genric_json_event 200 jobx-data$i '{"msg":"msg-0"}'
-    cr_api_check_single_genric_json_event 200 jobx-data$i '{"msg":"msg-2"}'
-    cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-1"}'
-    cr_api_check_single_genric_json_event 200 joby-data$i '{"msg":"msg-3"}'
+    cr_api_check_single_genric_json_event 200 0 jobx-data$i '{"msg":"msg-0"}'
+    cr_api_check_single_genric_json_event 200 0 jobx-data$i '{"msg":"msg-2"}'
+    cr_api_check_single_genric_json_event 200 0 joby-data$i '{"msg":"msg-1"}'
+    cr_api_check_single_genric_json_event 200 0 joby-data$i '{"msg":"msg-3"}'
 done
 
 
diff --git a/test/auto-test/ONAP_UC.sh b/test/auto-test/ONAP_UC.sh
index 03697bc..5d23034 100755
--- a/test/auto-test/ONAP_UC.sh
+++ b/test/auto-test/ONAP_UC.sh
@@ -38,15 +38,6 @@
 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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
 
 setup_testenvironment
 
@@ -62,7 +53,7 @@
 use_mr_https
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     echo "Version V2 of PMS is needed, exiting..."
     exit 1
@@ -212,7 +203,7 @@
     # Create policies
     use_agent_rest_http
 
-    api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
+    api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/1"
 
     # Create policies in OSC
     for ((i=1; i<=$OSC_NUM_RICS; i++))
diff --git a/test/auto-test/PM_DEMO.sh b/test/auto-test/PM_DEMO.sh
index 20a02cb..f3d5dd4 100755
--- a/test/auto-test/PM_DEMO.sh
+++ b/test/auto-test/PM_DEMO.sh
@@ -38,15 +38,6 @@
 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
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
 
 setup_testenvironment
 
@@ -61,7 +52,7 @@
 use_simulator_https
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
     notificationurl=""
 fi
@@ -210,7 +201,7 @@
 # Create policies
 use_agent_rest_http
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/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 c93a6d7..deff460 100755
--- a/test/auto-test/PM_EI_DEMO.sh
+++ b/test/auto-test/PM_EI_DEMO.sh
@@ -38,19 +38,6 @@
 SUPPORTED_RUNMODES="DOCKER 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
-. ../common/consul_cbs_functions.sh
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
 
 setup_testenvironment
 
@@ -73,7 +60,7 @@
 
 
 if [ "$PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH"/test"
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 else
    echo "PMS VERSION 2 (V2) is required"
    exit 1
@@ -113,7 +100,7 @@
     consul_config_app                      ".consul_config.json"
 fi
 
-start_cr
+start_cr 1
 
 start_prod_stub
 
@@ -168,7 +155,7 @@
 #Check the number of types
 api_equal json:policy-types 2 300
 
-api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH/1"
+api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/1"
 
 # Create policies in STD
 for ((i=1; i<=$STD_NUM_RICS; i++))
@@ -205,8 +192,8 @@
 TARGET1="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
 TARGET2="$RIC_SIM_HTTPX://$RIC_G1_1:$RIC_SIM_PORT/datadelivery"
 
-STATUS1="$CR_SERVICE_APP_PATH/callbacks/job1-status"
-STATUS2="$CR_SERVICE_APP_PATH/callbacks/job2-status"
+STATUS1="$CR_SERVICE_APP_PATH_0/callbacks/job1-status"
+STATUS2="$CR_SERVICE_APP_PATH_0/callbacks/job2-status"
 
 prodstub_arm_producer 200 prod-a
 prodstub_arm_type 200 prod-a type1
diff --git a/test/auto-test/README.md b/test/auto-test/README.md
index 1f8ef5d..c914c67 100644
--- a/test/auto-test/README.md
+++ b/test/auto-test/README.md
@@ -127,8 +127,7 @@
 
 CONDITIONALLY_IGNORED_IMAGES=<list of images to exclude if it does not exist in the profile file>
 
-. ../common/testcase_common.sh  $@
-< other scripts need to be sourced for specific interfaces>
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
diff --git a/test/auto-test/startMR.sh b/test/auto-test/startMR.sh
index 27bdb4e..d2d0e9a 100755
--- a/test/auto-test/startMR.sh
+++ b/test/auto-test/startMR.sh
@@ -38,17 +38,7 @@
 #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
-. ../common/http_proxy_api_functions.sh
-. ../common/kube_proxy_api_functions.sh
-. ../common/gateway_api_functions.sh
+. ../common/testcase_common.sh $@
 
 setup_testenvironment
 
diff --git a/test/common/README.md b/test/common/README.md
index 3577cfa..11e2a97 100644
--- a/test/common/README.md
+++ b/test/common/README.md
@@ -203,17 +203,6 @@
 | --------- | ----------- |
 | `<timer-message-to-print>` | Any text message to be printed along with the timer result.(It is good practice to use same args for this function as for the `start_timer`) |
 
-## Function: print_and_reset_timer ##
-
-Print the value of the timer (in seconds) previously started by 'start_timer'. Also reset the timer to 0. The result of the timer as well as the args to the function will also be printed in the test report.
-| arg list |
-|--|
-| `<timer-message-to-print>` |
-
-| parameter | description |
-| --------- | ----------- |
-| `<timer-message-to-print>` | Any text message to be printed along with the timer result.(It is good practice to use same args for this function as for the `start_timer`) |
-
 ## Function: deviation ##
 
 Mark a test as a deviation from the requirements. The list of deviations will be printed in the test report.
diff --git a/test/common/cbs_api_functions.sh b/test/common/cbs_api_functions.sh
new file mode 100644
index 0000000..f08b250
--- /dev/null
+++ b/test/common/cbs_api_functions.sh
@@ -0,0 +1,23 @@
+#!/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=================================================
+#
+
+# Functions for CBS is included in consul_api_functions.sh
+
+
+
diff --git a/test/common/clean_kube.sh b/test/common/clean_kube.sh
index 405c194..a3a3e5b 100755
--- a/test/common/clean_kube.sh
+++ b/test/common/clean_kube.sh
@@ -90,7 +90,7 @@
 		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
 			for resid in $result; do
 				echo  "  Deleting $restype $resid in namespace $namespace with label autotest "
-				kubectl delete $restype $resid -n $namespace 1> /dev/null 2> /dev/null
+				kubectl delete --grace-period=1 $restype $resid -n $namespace 1> /dev/null 2> /dev/null
 			done
 		fi
 	done
@@ -104,7 +104,7 @@
 		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
 			for resid in $result; do
 				echo  "  Deleting $restype $resid with label autotest "
-				kubectl delete $restype $resid 1> /dev/null 2> /dev/null
+				kubectl delete --grace-period=1 $restype $resid 1> /dev/null 2> /dev/null
 			done
 		fi
 	done
@@ -119,7 +119,7 @@
 		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
 			for resid in $result; do
 				echo  "  Deleting $restype $resid in namespace $namespace with label autotest "
-				kubectl delete $restype $resid -n $namespace #1> /dev/null 2> /dev/null
+				kubectl delete --grace-period=1 $restype $resid -n $namespace #1> /dev/null 2> /dev/null
 				echo -ne "  Waiting for $restype $resid in namespace $namespace with label autotest to be deleted..."$SAMELINE
 				T_START=$SECONDS
 				result="dummy"
@@ -147,7 +147,7 @@
 		if [ $? -eq 0 ] && [ ! -z "$result" ]; then
 			for resid in $result; do
 				echo  "  Deleting $restype $resid with label autotest "
-				kubectl delete $restype $resid -n $namespace #1> /dev/null 2> /dev/null
+				kubectl delete --grace-period=1 $restype $resid -n $namespace #1> /dev/null 2> /dev/null
 				echo -ne "  Waiting for $restype $resid with label autotest to be deleted..."$SAMELINE
 				T_START=$SECONDS
 				result="dummy"
diff --git a/test/common/consul_cbs_functions.sh b/test/common/consul_api_functions.sh
similarity index 68%
rename from test/common/consul_cbs_functions.sh
rename to test/common/consul_api_functions.sh
index cd1b16c..af85ff3 100644
--- a/test/common/consul_cbs_functions.sh
+++ b/test/common/consul_api_functions.sh
@@ -235,123 +235,6 @@
 
 }
 
-# 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_A1SIM_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_A1SIM_NAMESPACE -o jsonpath='{.spec.subdomain}')
-					rics=$rics" "$im"."$ric_subdomain"."$KUBE_A1SIM_NAMESPACE
-					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 --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "status=running" --format {{.Names}})
-		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
-		echo " Found a1 sim: "$ric_id
-		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)
diff --git a/test/common/control_panel_api_functions.sh b/test/common/cp_api_functions.sh
similarity index 100%
rename from test/common/control_panel_api_functions.sh
rename to test/common/cp_api_functions.sh
diff --git a/test/common/cr_api_functions.sh b/test/common/cr_api_functions.sh
index a537bc8..a9acd6e 100644
--- a/test/common/cr_api_functions.sh
+++ b/test/common/cr_api_functions.sh
@@ -94,9 +94,14 @@
 # args: <log-dir> <file-prexix>
 __CR_store_docker_logs() {
 	if [ $RUNMODE == "KUBE" ]; then
-		kubectl  logs -l "autotest=CR" -n $KUBE_SIM_NAMESPACE --tail=-1 > $1$2_cr.log 2>&1
+		for podname in $(kubectl get pods -n $KUBE_SIM_NAMESPACE -l "autotest=CR" -o custom-columns=":metadata.name"); do
+			kubectl logs -n $KUBE_SIM_NAMESPACE $podname --tail=-1 > $1$2_$podname.log 2>&1
+		done
 	else
-		docker logs $CR_APP_NAME > $1$2_cr.log 2>&1
+		crs=$(docker ps --filter "name=$CR_APP_NAME" --filter "network=$DOCKER_SIM_NWNAME" --filter "status=running" --format {{.Names}})
+		for crid in $crs; do
+			docker logs $crid > $1$2_$crid.log 2>&1
+		done
 	fi
 }
 
@@ -112,11 +117,14 @@
 # This function is called for apps managed by the test script as well as for prestarted apps.
 # args: -
 __CR_statisics_setup() {
-	if [ $RUNMODE == "KUBE" ]; then
-		echo "CR $CR_APP_NAME $KUBE_SIM_NAMESPACE"
-	else
-		echo "CR $CR_APP_NAME"
-	fi
+	for ((CR_INSTANCE=MAX_CR_APP_COUNT; CR_INSTANCE>0; CR_INSTANCE-- )); do
+		if [ $RUNMODE == "KUBE" ]; then
+			CR_INSTANCE_KUBE=$(($CR_INSTANCE-1))
+			echo -n " CR-$CR_INSTANCE_KUBE $CR_APP_NAME-$CR_INSTANCE_KUBE $KUBE_SIM_NAMESPACE "
+		else
+			echo -n " CR_$CR_INSTANCE ${CR_APP_NAME}_cr_$CR_INSTANCE "
+		fi
+	done
 }
 
 #######################################################
@@ -125,6 +133,10 @@
 ### CR functions
 ################
 
+#Var to hold the current number of CR instances
+CR_APP_COUNT=1
+MAX_CR_APP_COUNT=10
+
 # Set http as the protocol to use for all communication to the Dmaap adapter
 # args: -
 # (Function for test scripts)
@@ -142,25 +154,30 @@
 # Setup paths to svc/container for internal and external access
 # args: <protocol> <internal-port> <external-port>
 __cr_set_protocoll() {
+
 	echo -e $BOLD"$CR_DISPLAY_NAME protocol setting"$EBOLD
 	echo -e " Using $BOLD http $EBOLD towards $CR_DISPLAY_NAME"
-
 	## Access to Dmaap adapter
+	for ((CR_INSTANCE=0; CR_INSTANCE<$MAX_CR_APP_COUNT; CR_INSTANCE++ )); do
+		CR_DOCKER_INSTANCE=$(($CR_INSTANCE+1))
+		# CR_SERVICE_PATH is the base path to cr
+		__CR_SERVICE_PATH=$1"://"$CR_APP_NAME"_cr_"${CR_DOCKER_INSTANCE}":"$2  # docker access, container->container and script->container via proxy
+		if [ $RUNMODE == "KUBE" ]; then
+			__CR_SERVICE_PATH=$1"://"$CR_APP_NAME"-"$CR_INSTANCE.$CR_APP_NAME"."$KUBE_SIM_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
+		fi
+		export CR_SERVICE_PATH"_"${CR_INSTANCE}=$__CR_SERVICE_PATH
+		# Service paths are used in test script to provide callbacck urls to app
+		export CR_SERVICE_MR_PATH"_"${CR_INSTANCE}=$__CR_SERVICE_PATH$CR_APP_CALLBACK_MR  #Only for messages from dmaap adapter/mediator
+		export CR_SERVICE_TEXT_PATH"_"${CR_INSTANCE}=$__CR_SERVICE_PATH$CR_APP_CALLBACK_TEXT  #Callbacks for text payload
+		export CR_SERVICE_APP_PATH"_"${CR_INSTANCE}=$__CR_SERVICE_PATH$CR_APP_CALLBACK    #For general callbacks from apps
 
-	# CR_SERVICE_PATH is the base path to cr
-	CR_SERVICE_PATH=$1"://"$CR_APP_NAME":"$2  # docker access, container->container and script->container via proxy
-	if [ $RUNMODE == "KUBE" ]; then
-		CR_SERVICE_PATH=$1"://"$CR_APP_NAME.$KUBE_SIM_NAMESPACE":"$3 # kube access, pod->svc and script->svc via proxy
-	fi
-	# Service paths are used in test script to provide callbacck urls to app
-	CR_SERVICE_MR_PATH=$CR_SERVICE_PATH$CR_APP_CALLBACK_MR  #Only for messages from dmaap adapter/mediator
-	CR_SERVICE_TEXT_PATH=$CR_SERVICE_PATH$CR_APP_CALLBACK_TEXT  #Callbacks for text payload
-	CR_SERVICE_APP_PATH=$CR_SERVICE_PATH$CR_APP_CALLBACK    #For general callbacks from apps
-
-	# CR_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
-	CR_ADAPTER_TYPE="REST"
-	CR_ADAPTER=$CR_SERVICE_PATH
-
+		if [ $CR_INSTANCE -eq 0 ]; then
+			# CR_ADAPTER used for switching between REST and DMAAP (only REST supported currently)
+			# CR_ADDAPTER need to be set before each call to CR....only set for instance 0 here
+			CR_ADAPTER_TYPE="REST"
+			CR_ADAPTER=$__CR_SERVICE_PATH
+		fi
+	done
 	echo ""
 }
 
@@ -179,15 +196,27 @@
 	export CR_INTERNAL_SECURE_PORT
 	export CR_EXTERNAL_PORT
 	export CR_EXTERNAL_SECURE_PORT
+
+	export CR_APP_COUNT
 }
 
 # Start the Callback reciver in the simulator group
-# args: -
+# args: <app-count>
 # (Function for test scripts)
 start_cr() {
 
 	echo -e $BOLD"Starting $CR_DISPLAY_NAME"$EBOLD
 
+	if [ $# -ne 1 ]; then
+		echo -e $RED" Number of CR instances missing, usage: start_cr <app-count>"$ERED
+		exit 1
+	fi
+	if [ $1 -lt 1 ] || [ $1 -gt 10 ]; then
+		echo -e $RED" Number of CR shall be 1...10, usage: start_cr <app-count>"$ERED
+		exit 1
+	fi
+	export CR_APP_COUNT=$1
+
 	if [ $RUNMODE == "KUBE" ]; then
 
 		# Check if app shall be fully managed by the test script
@@ -235,15 +264,13 @@
 
 		fi
 
-		__check_service_start $CR_APP_NAME $CR_SERVICE_PATH$CR_ALIVE_URL
+		for ((CR_INSTANCE=0; CR_INSTANCE<$CR_APP_COUNT; CR_INSTANCE++ )); do
+			__dynvar="CR_SERVICE_PATH_"$CR_INSTANCE
+			__cr_app_name=$CR_APP_NAME"-"$CR_INSTANCE
+			__check_service_start $__cr_app_name ${!__dynvar}$CR_ALIVE_URL
+			result=$(__do_curl ${!__dynvar}/reset)
+		done
 
-		echo -ne " Service $CR_APP_NAME - reset  "$SAMELINE
-		result=$(__do_curl CR $CR_SERVICE_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'
@@ -255,65 +282,124 @@
 
 		__cr_export_vars
 
-		__start_container $CR_COMPOSE_DIR "" NODOCKERARGS 1 $CR_APP_NAME
+		app_data=""
+		cntr=1
+		while [ $cntr -le $CR_APP_COUNT ]; do
+			app=$CR_APP_NAME"_cr_"$cntr
+			app_data="$app_data $app"
+			let cntr=cntr+1
+		done
 
-        __check_service_start $CR_APP_NAME $CR_SERVICE_PATH$CR_ALIVE_URL
+		echo "COMPOSE_PROJECT_NAME="$CR_APP_NAME > $SIM_GROUP/$CR_COMPOSE_DIR/.env
+
+		__start_container $CR_COMPOSE_DIR "" NODOCKERARGS $CR_APP_COUNT $app_data
+
+		cntr=1   #Counter for docker instance, starts on 1
+		cntr2=0  #Couter for env var name, starts with 0 to be compablible with kube
+		while [ $cntr -le $CR_APP_COUNT ]; do
+			app=$CR_APP_NAME"_cr_"$cntr
+			__dynvar="CR_SERVICE_PATH_"$cntr2
+			__check_service_start $app ${!__dynvar}$CR_ALIVE_URL
+			let cntr=cntr+1
+			let cntr2=cntr2+1
+		done
 	fi
 	echo ""
 }
 
+#Convert a cr path id to the value of the environment var holding the url
+# arg: <cr-path-id>
+# returns: <base-url-to-the-app>
+__cr_get_service_path(){
+	if [ $# -ne 1 ]; then
+		echo "DUMMY"
+		return 1
+	fi
+	if [ $1 -lt 0 ] || [ $1 -ge $MAX_CR_APP_COUNT ]; then
+		echo "DUMMY"
+		return 1
+	fi
+	__dynvar="CR_SERVICE_PATH_"$1
+	echo ${!__dynvar}
+	return 0
+}
 
 # 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.
-# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
+# Arg: <cr-path-id> <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)
 cr_equal() {
-	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "CR" "$CR_SERVICE_PATH/counter/" $1 "=" $2 $3
+	if [ $# -eq 3 ] || [ $# -eq 4 ]; then
+		CR_SERVICE_PATH=$(__cr_get_service_path $1)
+		CR_ADAPTER=$CR_SERVICE_PATH
+		if [ $? -ne 0 ]; then
+			__print_err "<cr-path-id> missing or incorrect" $@
+			return 1
+		fi
+		__var_test "CR" "$CR_SERVICE_PATH/counter/" $2 "=" $3 $4
 	else
-		__print_err "Wrong args to cr_equal, needs two or three args: <sim-param> <target-value> [ timeout ]" $@
+		__print_err "Wrong args to cr_equal, needs three or four args: <cr-path-id>  <variable-name> <target-value> [ timeout ]" $@
 	fi
 }
 
 # Tests if a variable value in the CR contains the target string and and optional timeout
 # Arg: <variable-name> <target-value> - This test set pass or fail depending on if the variable contains
 # the target or not.
-# Arg: <variable-name> <target-value> <timeout-in-sec>  - This test waits up to the timeout seconds
+# Arg: <cr-path-id> <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 contains the target
 # value or not.
 # (Function for test scripts)
 cr_contains_str() {
 
-	if [ $# -eq 2 ] || [ $# -eq 3 ]; then
-		__var_test "CR" "$CR_SERVICE_PATH/counter/" $1 "contain_str" $2 $3
+	if [ $# -eq 3 ] || [ $# -eq 4 ]; then
+		CR_SERVICE_PATH=$(__cr_get_service_path $1)
+		CR_ADAPTER=$CR_SERVICE_PATH
+		if [ $? -ne 0 ]; then
+			__print_err "<cr-path-id> missing or incorrect" $@
+			return 1
+		fi
+		__var_test "CR" "$CR_SERVICE_PATH/counter/" $2 "contain_str" $3 $4
 		return 0
 	else
-		__print_err "needs two or three args: <sim-param> <target-value> [ timeout ]"
+		__print_err "needs two or three args: <cr-path-id> <variable-name> <target-value> [ timeout ]"
 		return 1
 	fi
 }
 
 # Read a variable value from CR sim and send to stdout. Arg: <variable-name>
 cr_read() {
+	CR_SERVICE_PATH=$(__cr_get_service_path $1)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return  1
+	fi
 	echo "$(__do_curl $CR_SERVICE_PATH/counter/$1)"
 }
 
 # Function to configure write delay on callbacks
 # Delay given in seconds.
-# arg <response-code> <delay-in-sec>
+# arg <response-code> <cr-path-id>  <delay-in-sec>
 # (Function for test scripts)
 cr_delay_callback() {
 	__log_conf_start $@
 
-	if [ $# -ne 2 ]; then
-        __print_err "<response-code> <delay-in-sec>]" $@
+	if [ $# -ne 3 ]; then
+        __print_err "<response-code> <cr-path-id> <delay-in-sec>]" $@
         return 1
 	fi
 
-	res="$(__do_curl_to_api CR POST /forcedelay?delay=$2)"
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	res="$(__do_curl_to_api CR POST /forcedelay?delay=$3)"
 	status=${res:${#res}-3}
 
 	if [ $status -ne 200 ]; then
@@ -326,7 +412,7 @@
 }
 
 # CR API: Check the contents of all current ric sync events for one id from PMS
-# <response-code> <id> [ EMPTY | ( <ric-id> )+ ]
+# <response-code> <cr-path-id> <id> [ EMPTY | ( <ric-id> )+ ]
 # (Function for test scripts)
 cr_api_check_all_sync_events() {
 	__log_test_start $@
@@ -336,12 +422,19 @@
 		return 1
 	fi
 
-    if [ $# -lt 2 ]; then
-        __print_err "<response-code> <id> [ EMPTY | ( <ric-id> )+ ]" $@
+    if [ $# -lt 3 ]; then
+        __print_err "<response-code> <cr-path-id> <id> [ EMPTY | ( <ric-id> )+ ]" $@
         return 1
     fi
 
-	query="/get-all-events/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-all-events/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -350,15 +443,15 @@
 		return 1
 	fi
 
-	if [ $# -gt 2 ]; then
+	if [ $# -gt 3 ]; then
 		body=${res:0:${#res}-3}
-		if [ $# -eq 3 ] && [ $3 == "EMPTY" ]; then
+		if [ $# -eq 4 ] && [ $4 == "EMPTY" ]; then
 			targetJson="["
 		else
 			targetJson="["
-			arr=(${@:3})
+			arr=(${@:4})
 
-			for ((i=0; i<$(($#-2)); i=i+1)); do
+			for ((i=0; i<$(($#-3)); i=i+1)); do
 
 				if [ "$targetJson" != "[" ]; then
 					targetJson=$targetJson","
@@ -381,17 +474,24 @@
 }
 
 # CR API: Check the contents of all current status events for one id from ECS
-# <response-code> <id> [ EMPTY | ( <status> )+ ]
+# <response-code> <cr-path-id> <id> [ EMPTY | ( <status> )+ ]
 # (Function for test scripts)
 cr_api_check_all_ecs_events() {
 	__log_test_start $@
 
-    if [ $# -lt 2 ]; then
-        __print_err "<response-code> <id> [ EMPTY | ( <status> )+ ]" $@
+    if [ $# -lt 3 ]; then
+        __print_err "<response-code> <cr-path-id> <id> [ EMPTY | ( <status> )+ ]" $@
         return 1
     fi
 
-	query="/get-all-events/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-all-events/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -400,15 +500,15 @@
 		return 1
 	fi
 
-	if [ $# -gt 2 ]; then
+	if [ $# -gt 3 ]; then
 		body=${res:0:${#res}-3}
-		if [ $# -eq 3 ] && [ $3 == "EMPTY" ]; then
+		if [ $# -eq 4 ] && [ $4 == "EMPTY" ]; then
 			targetJson="["
 		else
 			targetJson="["
-			arr=(${@:3})
+			arr=(${@:4})
 
-			for ((i=0; i<$(($#-2)); i=i+1)); do
+			for ((i=0; i<$(($#-3)); i=i+1)); do
 
 				if [ "$targetJson" != "[" ]; then
 					targetJson=$targetJson","
@@ -431,29 +531,36 @@
 }
 
 # CR API: Check the contents of all current type subscription events for one id from ECS
-# <response-code> <id> [ EMPTY | ( <type-id> <schema> <registration-status> )+ ]
+# <response-code> <cr-path-id> <id> [ EMPTY | ( <type-id> <schema> <registration-status> )+ ]
 # (Function for test scripts)
 cr_api_check_all_ecs_subscription_events() {
 	__log_test_start $@
 
-	#Valid number of parameter 2,3,7,11
+	#Valid number of parameter 3,4,8,12
 	paramError=1
-	if [ $# -eq 2 ]; then
+	if [ $# -eq 3 ]; then
 		paramError=0
 	fi
-	if [ $# -eq 3 ] && [ "$3" == "EMPTY" ]; then
+	if [ $# -eq 4 ] && [ "$4" == "EMPTY" ]; then
 		paramError=0
 	fi
-	variablecount=$(($#-2))
-	if [ $# -gt 3 ] && [ $(($variablecount%3)) -eq 0 ]; then
+	variablecount=$(($#-3))
+	if [ $# -gt 4 ] && [ $(($variablecount%3)) -eq 0 ]; then
 		paramError=0
 	fi
 	if [ $paramError -eq 1 ]; then
-		__print_err "<response-code> <id> [ EMPTY | ( <type-id> <schema> <registration-status> )+ ]" $@
+		__print_err "<response-code> <cr-path-id> <id> [ EMPTY | ( <type-id> <schema> <registration-status> )+ ]" $@
 		return 1
 	fi
 
-	query="/get-all-events/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-all-events/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -462,12 +569,12 @@
 		return 1
 	fi
 
-	if [ $# -gt 2 ]; then
+	if [ $# -gt 3 ]; then
 		body=${res:0:${#res}-3}
 		targetJson="["
-		if [ $# -gt 3 ]; then
-			arr=(${@:3})
-			for ((i=0; i<$(($#-3)); i=i+3)); do
+		if [ $# -gt 4 ]; then
+			arr=(${@:4})
+			for ((i=0; i<$(($#-4)); i=i+3)); do
 				if [ "$targetJson" != "[" ]; then
 					targetJson=$targetJson","
 				fi
@@ -497,11 +604,23 @@
 
 
 # CR API: Reset all events and counters
-# Arg: -
+# Arg: <cr-path-id>
 # (Function for test scripts)
 cr_api_reset() {
 	__log_conf_start $@
 
+	if [ $# -ne 0 ]; then
+		__print_err "<cr-path-id>" $@
+		return 1
+	fi
+
+	CR_SERVICE_PATH=$(__cr_get_service_path $1)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
 	res="$(__do_curl_to_api CR GET /reset)"
 	status=${res:${#res}-3}
 
@@ -516,17 +635,24 @@
 
 
 # CR API: Check the contents of all json events for path
-# <response-code> <topic-url> (EMPTY | <json-msg>+ )
+# <response-code> <cr-path-id> <topic-url> (EMPTY | <json-msg>+ )
 # (Function for test scripts)
 cr_api_check_all_genric_json_events() {
 	__log_test_start $@
 
-	if [ $# -lt 3 ]; then
-		__print_err "<response-code> <topic-url> (EMPTY | <json-msg>+ )" $@
+	if [ $# -lt 4 ]; then
+		__print_err "<response-code> <cr-path-id>  <topic-url> (EMPTY | <json-msg>+ )" $@
 		return 1
 	fi
 
-	query="/get-all-events/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-all-events/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -537,7 +663,8 @@
 	body=${res:0:${#res}-3}
 	targetJson="["
 
-	if [ $3 != "EMPTY" ]; then
+	if [ $4 != "EMPTY" ]; then
+		shift
 		shift
 		shift
 		while [ $# -gt 0 ]; do
@@ -563,19 +690,25 @@
 }
 
 
-
 # CR API: Check a single (oldest) json event (or none if empty) for path
-# <response-code> <topic-url> (EMPTY | <json-msg> )
+# <response-code> <cr-path-id> <topic-url> (EMPTY | <json-msg> )
 # (Function for test scripts)
 cr_api_check_single_genric_json_event() {
 	__log_test_start $@
 
-	if [ $# -ne 3 ]; then
-		__print_err "<response-code> <topic-url> (EMPTY | <json-msg> )" $@
+	if [ $# -ne 4 ]; then
+		__print_err "<response-code> <cr-path-id>  <topic-url> (EMPTY | <json-msg> )" $@
 		return 1
 	fi
 
-	query="/get-event/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-event/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -584,7 +717,7 @@
 		return 1
 	fi
 	body=${res:0:${#res}-3}
-	targetJson=$3
+	targetJson=$4
 
 	if [ $targetJson == "EMPTY" ] && [ ${#body} -ne 0 ]; then
 		__log_test_fail_body
@@ -605,17 +738,24 @@
 # CR API: Check a single (oldest) json in md5 format (or none if empty) for path.
 # Note that if a json message is given, it shall be compact, no ws except inside string.
 # The MD5 will generate different hash if ws is present or not in otherwise equivalent json
-# arg: <response-code> <topic-url> (EMPTY | <data-msg> )
+# arg: <response-code> <cr-path-id> <topic-url> (EMPTY | <data-msg> )
 # (Function for test scripts)
 cr_api_check_single_genric_event_md5() {
 	__log_test_start $@
 
-	if [ $# -ne 3 ]; then
-		__print_err "<response-code> <topic-url> (EMPTY | <data-msg> )" $@
+	if [ $# -ne 4 ]; then
+		__print_err "<response-code> <cr-path-id> <topic-url> (EMPTY | <data-msg> )" $@
 		return 1
 	fi
 
-	query="/get-event/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-event/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -624,7 +764,7 @@
 		return 1
 	fi
 	body=${res:0:${#res}-3}
-	if [ $3 == "EMPTY" ]; then
+	if [ $4 == "EMPTY" ]; then
 		if [ ${#body} -ne 0 ]; then
 			__log_test_fail_body
 			return 1
@@ -635,11 +775,11 @@
 	fi
 	command -v md5 > /dev/null # Mac
 	if [ $? -eq 0 ]; then
-		targetMd5=$(echo -n "$3" | md5)
+		targetMd5=$(echo -n "$4" | md5)
 	else
 		command -v md5sum > /dev/null # Linux
 		if [ $? -eq 0 ]; then
-			targetMd5=$(echo -n "$3" | md5sum | cut -d' ' -f 1)  # Need to cut additional info printed by cmd
+			targetMd5=$(echo -n "$4" | md5sum | cut -d' ' -f 1)  # Need to cut additional info printed by cmd
 		else
 			__log_test_fail_general "Command md5 nor md5sum is available"
 			return 1
@@ -661,17 +801,24 @@
 # CR API: Check a single (oldest) event in md5 format (or none if empty) for path.
 # Note that if a file with json message is given, the json shall be compact, no ws except inside string and not newlines.
 # The MD5 will generate different hash if ws/newlines is present or not in otherwise equivalent json
-# arg: <response-code> <topic-url> (EMPTY | <data-file> )
+# arg: <response-code> <cr-path-id> <topic-url> (EMPTY | <data-file> )
 # (Function for test scripts)
 cr_api_check_single_genric_event_md5_file() {
 	__log_test_start $@
 
-	if [ $# -ne 3 ]; then
-		__print_err "<response-code> <topic-url> (EMPTY | <data-file> )" $@
+	if [ $# -ne 4 ]; then
+		__print_err "<response-code> <cr-path-id> <topic-url> (EMPTY | <data-file> )" $@
 		return 1
 	fi
 
-	query="/get-event/"$2
+	CR_SERVICE_PATH=$(__cr_get_service_path $2)
+	CR_ADAPTER=$CR_SERVICE_PATH
+	if [ $? -ne 0 ]; then
+		__print_err "<cr-path-id> missing or incorrect" $@
+		return 1
+	fi
+
+	query="/get-event/"$3
 	res="$(__do_curl_to_api CR GET $query)"
 	status=${res:${#res}-3}
 
@@ -680,7 +827,7 @@
 		return 1
 	fi
 	body=${res:0:${#res}-3}
-	if [ $3 == "EMPTY" ]; then
+	if [ $4 == "EMPTY" ]; then
 		if [ ${#body} -ne 0 ]; then
 			__log_test_fail_body
 			return 1
@@ -690,12 +837,12 @@
 		fi
 	fi
 
-	if [ ! -f $3 ]; then
+	if [ ! -f $4 ]; then
 		__log_test_fail_general "File $3 does not exist"
 		return 1
 	fi
 
-	filedata=$(cat $3)
+	filedata=$(cat $4)
 
 	command -v md5 > /dev/null # Mac
 	if [ $? -eq 0 ]; then
diff --git a/test/common/dmaapmr_api_functions.sh b/test/common/dmaapmr_api_functions.sh
new file mode 100644
index 0000000..d0f3f0c
--- /dev/null
+++ b/test/common/dmaapmr_api_functions.sh
@@ -0,0 +1,23 @@
+#!/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=================================================
+#
+
+# Functions for DMAAPMR is included in mr_api_functions.sh
+
+
+
diff --git a/test/common/genstat.sh b/test/common/genstat.sh
index 3c329d9..2adce1f 100755
--- a/test/common/genstat.sh
+++ b/test/common/genstat.sh
@@ -31,7 +31,7 @@
   echo "or"
   echo "Usage: genstat.sh KUBE <start-time-seconds> <log-file> <app-short-name> <app-name> <namespace> [ <app-short-name> <app-name> <namespace> ]*"
 }
-
+DD=$@
 STARTTIME=-1
 
 if [ $# -lt 4 ]; then
@@ -66,7 +66,8 @@
 fi
 
 
-echo "Time;Name;PIDS;CPU perc;Mem perc" > $LOGFILE
+echo "Name;Time;PIDS;CPU perc;Mem perc" > $LOGFILE
+echo $DD >> $LOGFILE
 
 if [ "$STARTTIME" -ne -1 ]; then
     STARTTIME=$(($SECONDS-$STARTTIME))
diff --git a/test/common/http_proxy_api_functions.sh b/test/common/httpproxy_api_functions.sh
similarity index 100%
rename from test/common/http_proxy_api_functions.sh
rename to test/common/httpproxy_api_functions.sh
diff --git a/test/common/kube_proxy_api_functions.sh b/test/common/kubeproxy_api_functions.sh
similarity index 100%
rename from test/common/kube_proxy_api_functions.sh
rename to test/common/kubeproxy_api_functions.sh
diff --git a/test/common/mr_api_functions.sh b/test/common/mr_api_functions.sh
index da3e34d..2002131 100755
--- a/test/common/mr_api_functions.sh
+++ b/test/common/mr_api_functions.sh
@@ -199,9 +199,9 @@
 # args: -
 __MR_statisics_setup() {
 	if [ $RUNMODE == "KUBE" ]; then
-		echo "MR $MR_STUB_APP_NAME $KUBE_ONAP_NAMESPACE"
+		echo "MR-STUB $MR_STUB_APP_NAME $KUBE_ONAP_NAMESPACE"
 	else
-		echo "MR $MR_STUB_APP_NAME"
+		echo "MR-STUB $MR_STUB_APP_NAME"
 	fi
 }
 
@@ -211,9 +211,9 @@
 # args: -
 __DMAAPMR_statisics_setup() {
 	if [ $RUNMODE == "KUBE" ]; then
-		echo ""
+		echo "KAFKA $MR_KAFKA_APP_NAME $KUBE_ONAP_NAMESPACE MESSAGE-ROUTER $MR_DMAAP_APP_NAME $KUBE_ONAP_NAMESPACE ZOOKEEPER $MR_ZOOKEEPER_APP_NAME $KUBE_ONAP_NAMESPACE"
 	else
-		echo ""
+		echo "KAFKA $MR_KAFKA_APP_NAME MESSAGE-ROUTER $MR_DMAAP_APP_NAME ZOOKEEPER $MR_ZOOKEEPER_APP_NAME"
 	fi
 }
 
@@ -294,12 +294,14 @@
 
 	MR_SERVICE_PATH=$MR_STUB_PATH # access container->container, docker -  access pod->svc, kube
 	MR_KAFKA_SERVICE_PATH=""
+	MR_ZOOKEEPER_SERVICE_PATH=""
 	__check_included_image "DMAAPMR"
 	if [ $? -eq 0 ]; then
 		MR_SERVICE_PATH=$MR_DMAAP_PATH # access container->container, docker -  access pod->svc, kube
 		MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
 
 		MR_KAFKA_SERVICE_PATH=$MR_KAFKA_APP_NAME":"$MR_KAFKA_PORT
+		MR_ZOOKEEPER_SERVICE_PATH=$MR_ZOOKEEPER_APP_NAME":"$MR_ZOOKEEPER_PORT
 	fi
 
 	# For directing calls from script to e.g.PMS via message rounter
@@ -321,12 +323,14 @@
 			MR_SERVICE_PATH=$MR_DMAAP_PATH
 			MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
 			MR_KAFKA_SERVICE_PATH=$MR_KAFKA_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_KAFKA_PORT
+			MR_ZOOKEEPER_SERVICE_PATH=$MR_ZOOKEEPER_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_ZOOKEEPER_PORT
 		fi
 		__check_prestarted_image "DMAAPMR"
 		if [ $? -eq 0 ]; then
 			MR_SERVICE_PATH=$MR_DMAAP_PATH
 			MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
 			MR_KAFKA_SERVICE_PATH=$MR_KAFKA_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_KAFKA_PORT
+			MR_ZOOKEEPER_SERVICE_PATH=$MR_ZOOKEEPER_APP_NAME"."$KUBE_ONAP_NAMESPACE":"$MR_ZOOKEEPER_PORT
 		fi
 
 		# For directing calls from script to e.g.PMS, via message rounter
@@ -343,74 +347,6 @@
 
 }
 
-
-# use_mr_http() {                2                3                  4                5                  6                       7
-# 	__mr_set_protocoll "http" $MR_INTERNAL_PORT $MR_EXTERNAL_PORT $MR_INTERNAL_PORT $MR_EXTERNAL_PORT $MR_INTERNAL_SECURE_PORT $MR_EXT_SECURE_PORT
-# }
-
-# use_mr_https() {
-# 	__mr_set_protocoll "https" $MR_INTERNAL_SECURE_PORT $MR_EXTERNAL_SECURE_PORT
-# }
-
-# # Setup paths to svc/container for internal and external access
-# # args: <protocol> <internal-port> <external-port> <mr-stub-internal-port> <mr-stub-external-port> <mr-stub-internal-secure-port> <mr-stub-external-secure-port>
-# __mr_set_protocoll() {
-# 	echo -e $BOLD"$MR_STUB_DISPLAY_NAME and $MR_DMAAP_DISPLAY_NAME protocol setting"$EBOLD
-# 	echo -e " Using $BOLD http $EBOLD towards $MR_STUB_DISPLAY_NAME and $MR_DMAAP_DISPLAY_NAME"
-
-# 	## Access to Dmaap mediator
-
-# 	MR_HTTPX=$1
-
-# 	# Access via test script
-# 	MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME":"$2  # access from script via proxy, docker
-# 	MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME":"$2 # access from script via proxy, docker
-# 	MR_DMAAP_ADAPTER_HTTP="" # Access to dmaap mr via proyx - set only if app is included
-
-# 	MR_SERVICE_PATH=$MR_STUB_PATH # access container->container, docker -  access pod->svc, kube
-# 	__check_included_image "DMAAPMR"
-# 	if [ $? -eq 0 ]; then
-# 		MR_SERVICE_PATH=$MR_DMAAP_PATH # access container->container, docker -  access pod->svc, kube
-# 		MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
-# 	fi
-
-# 	# For directing calls from script to e.g.PMS via message rounter
-# 	# These cases shall always go though the  mr-stub
-# 	MR_ADAPTER_HTTP="http://"$MR_STUB_APP_NAME":"$4
-# 	MR_ADAPTER_HTTPS="https://"$MR_STUB_APP_NAME":"$6
-
-# 	MR_DMAAP_ADAPTER_TYPE="REST"
-
-# 	if [ $RUNMODE == "KUBE" ]; then
-# 		MR_STUB_PATH=$MR_HTTPX"://"$MR_STUB_APP_NAME.$KUBE_ONAP_NAMESPACE":"$3 # access from script via proxy, kube
-# 		MR_DMAAP_PATH=$MR_HTTPX"://"$MR_DMAAP_APP_NAME.$KUBE_ONAP_NAMESPACE":"$3 # access from script via proxy, kube
-
-# 		MR_SERVICE_PATH=$MR_STUB_PATH
-# 		__check_included_image "DMAAPMR"
-# 		if [ $? -eq 0 ]; then
-# 			MR_SERVICE_PATH=$MR_DMAAP_PATH
-# 			MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
-# 		fi
-# 		__check_prestarted_image "DMAAPMR"
-# 		if [ $? -eq 0 ]; then
-# 			MR_SERVICE_PATH=$MR_DMAAP_PATH
-# 			MR_DMAAP_ADAPTER_HTTP=$MR_DMAAP_PATH
-# 		fi
-
-# 		# For directing calls from script to e.g.PMS, via message rounter
-# 		# These calls shall always go though the  mr-stub
-# 		MR_ADAPTER_HTTP="http://"$MR_STUB_APP_NAME":"$5
-# 		MR_ADAPTER_HTTPS="https://"$MR_STUB_APP_NAME":"$7
-# 	fi
-
-# 	# For calls from script to the mr-stub
-# 	MR_STUB_ADAPTER=$MR_STUB_PATH
-# 	MR_STUB_ADAPTER_TYPE="REST"
-
-# 	echo ""
-
-# }
-
 # Export env vars for config files, docker compose and kube resources
 # args: -
 __dmaapmr_export_vars() {
@@ -435,6 +371,7 @@
 	export MR_ZOOKEEPER_PORT
 
 	export MR_KAFKA_SERVICE_PATH
+	export MR_ZOOKEEPER_SERVICE_PATH
 }
 
 # Export env vars for config files, docker compose and kube resources
@@ -457,6 +394,7 @@
 	export MR_EXTERNAL_PORT
 
 	export MR_KAFKA_SERVICE_PATH
+	export MR_ZOOKEEPER_SERVICE_PATH
 }
 
 
@@ -569,37 +507,8 @@
 			__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
 
-			# Cannot create topics, returns 400 forever.....topics will be created during pipeclean below
-			#__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/$MR_READ_TOPIC" "/events/$MR_READ_TOPIC/users/policy-agent?timeout=1000&limit=100"
-#
-#			__dmaap_pipeclean $MR_WRITE_TOPIC "/events/$MR_WRITE_TOPIC" "/events/$MR_WRITE_TOPIC/users/mr-stub?timeout=1000&limit=100"
-
-
-			#__dmaap_pipeclean "unauthenticated.dmaapmed.json" "/events/unauthenticated.dmaapmed.json" "/events/unauthenticated.dmaapmed.json/dmaapmediatorproducer/STD_Fault_Messages?timeout=1000&limit=100"
-			#__dmaap_pipeclean "unauthenticated.dmaapadp.json" "/events/unauthenticated.dmaapadp.json" "/events/unauthenticated.dmaapadp.json/dmaapadapterproducer/msgs?timeout=1000&limit=100"
-
 			if [ $# -gt 0 ]; then
 				if [ $(($#%3)) -eq 0 ]; then
 					while [ $# -gt 0 ]; do
@@ -650,41 +559,8 @@
 
 		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
-
-		# MR_STUB_ADAPTER=$MR_STUB_PATH
-		# MR_STUB_ADAPTER_TYPE="REST"
-
 		__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_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'
@@ -732,16 +608,6 @@
 
 			__check_service_start $MR_DMAAP_APP_NAME $MR_DMAAP_PATH$MR_DMAAP_ALIVE_URL
 
-
-			# Cannot create topics, returns 400 forever.....topics will be created during pipeclean below
-			#__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/$MR_READ_TOPIC" "/events/$MR_READ_TOPIC/users/policy-agent?timeout=1000&limit=100"
-
-			#__dmaap_pipeclean $MR_WRITE_TOPIC "/events/$MR_WRITE_TOPIC" "/events/$MR_WRITE_TOPIC/users/mr-stub?timeout=1000&limit=100"
-
 			if [ $# -gt 0 ]; then
 				if [ $(($#%3)) -eq 0 ]; then
 					while [ $# -gt 0 ]; do
@@ -755,9 +621,6 @@
 				fi
 			fi
 
-			#__dmaap_pipeclean "unauthenticated.dmaapmed.json" "/events/unauthenticated.dmaapmed.json" "/events/unauthenticated.dmaapmed.json/dmaapmediatorproducer/STD_Fault_Messages?timeout=1000&limit=100"
-			#__dmaap_pipeclean "unauthenticated.dmaapadp.json" "/events/unauthenticated.dmaapadp.json" "/events/unauthenticated.dmaapadp.json/dmaapadapterproducer/msgs?timeout=1000&limit=100"
-
 			echo " Current topics:"
 			curlString="$MR_DMAAP_PATH/topics"
 			result=$(__do_curl "$curlString")
@@ -1017,12 +880,12 @@
 		__log_conf_fail_general "Only size between 1k and 10000k supported"
 		return 1
 	fi
-	echo -n "{\"a\":[" > $2
-	LEN=$(($1*150))
-	echo -n "\"a0\"" >> $2
+	echo -n "{\"abcdefghijklmno\":[" > $2
+	LEN=$(($1*100-2))
+	echo -n "\""ABCDEFG"\"" >> $2
 	for ((idx=1; idx<$LEN; idx++))
 	do
-		echo -n ",\"a$idx\"" >> $2
+		echo -n ",\"ABCDEFG\"" >> $2
 	done
 	echo -n "]}" >> $2
 
diff --git a/test/common/gateway_api_functions.sh b/test/common/ngw_api_functions.sh
similarity index 100%
rename from test/common/gateway_api_functions.sh
rename to test/common/ngw_api_functions.sh
diff --git a/test/common/agent_api_functions.sh b/test/common/pa_api_functions.sh
similarity index 93%
rename from test/common/agent_api_functions.sh
rename to test/common/pa_api_functions.sh
index 4cedad1..5367060 100644
--- a/test/common/agent_api_functions.sh
+++ b/test/common/pa_api_functions.sh
@@ -444,6 +444,122 @@
 }
 
 
+# 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_A1SIM_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_A1SIM_NAMESPACE -o jsonpath='{.spec.subdomain}')
+					rics=$rics" "$im"."$ric_subdomain"."$KUBE_A1SIM_NAMESPACE
+					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 --filter "name=$RIC_SIM_PREFIX" --filter "network=$DOCKER_SIM_NWNAME" --filter "status=running" --format {{.Names}})
+		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
+		echo " Found a1 sim: "$ric_id
+		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 ""
+}
 
 # Load the the appl config for the agent into a config map
 agent_load_config() {
diff --git a/test/common/prodstub_api_functions.sh b/test/common/prodstub_api_functions.sh
index 6c3ce23..17f987a 100644
--- a/test/common/prodstub_api_functions.sh
+++ b/test/common/prodstub_api_functions.sh
@@ -161,7 +161,6 @@
 # args:
 __prodstub_export_vars() {
 	export PROD_STUB_APP_NAME
-	export PROD_STUB_APP_NAME_ALIAS
 	export PROD_STUB_DISPLAY_NAME
 
 	export DOCKER_SIM_NWNAME
diff --git a/test/common/rapp_catalogue_api_functions.sh b/test/common/rc_api_functions.sh
similarity index 100%
rename from test/common/rapp_catalogue_api_functions.sh
rename to test/common/rc_api_functions.sh
diff --git a/test/common/ricsimulator_api_functions.sh b/test/common/ricsim_api_functions.sh
similarity index 95%
rename from test/common/ricsimulator_api_functions.sh
rename to test/common/ricsim_api_functions.sh
index 695b535..0a1a8e3 100644
--- a/test/common/ricsimulator_api_functions.sh
+++ b/test/common/ricsim_api_functions.sh
@@ -96,11 +96,18 @@
 # This function is called for apps managed by the test script as well as for prestarted apps.
 # args: -
 __RICSIM_statisics_setup() {
-	if [ $RUNMODE == "KUBE" ]; then
-		echo ""
-	else
-		echo ""
-	fi
+	for ((RICSIM_INSTANCE=10; RICSIM_INSTANCE>0; RICSIM_INSTANCE-- )); do
+		if [ $RUNMODE == "KUBE" ]; then
+			RICSIM_INSTANCE_KUBE=$(($RICSIM_INSTANCE-1))
+			echo -n " RICSIM_G1_$RICSIM_INSTANCE_KUBE ${RIC_SIM_PREFIX}-g1-$RICSIM_INSTANCE_KUBE $KUBE_A1SIM_NAMESPACE "
+			echo -n " RICSIM_G2_$RICSIM_INSTANCE_KUBE ${RIC_SIM_PREFIX}-g2-$RICSIM_INSTANCE_KUBE $KUBE_A1SIM_NAMESPACE "
+			echo -n " RICSIM_G3_$RICSIM_INSTANCE_KUBE ${RIC_SIM_PREFIX}-g3-$RICSIM_INSTANCE_KUBE $KUBE_A1SIM_NAMESPACE "
+		else
+			echo -n " RICSIM_G1_$RICSIM_INSTANCE ${RIC_SIM_PREFIX}_g1_$RICSIM_INSTANCE "
+			echo -n " RICSIM_G2_$RICSIM_INSTANCE ${RIC_SIM_PREFIX}_g2_$RICSIM_INSTANCE "
+			echo -n " RICSIM_G3_$RICSIM_INSTANCE ${RIC_SIM_PREFIX}_g3_$RICSIM_INSTANCE "
+		fi
+	done
 }
 
 #######################################################
diff --git a/test/common/controller_api_functions.sh b/test/common/sdnc_api_functions.sh
similarity index 100%
rename from test/common/controller_api_functions.sh
rename to test/common/sdnc_api_functions.sh
diff --git a/test/common/test_env-onap-guilin.sh b/test/common/test_env-onap-guilin.sh
index 6cb18f5..4ae753c 100755
--- a/test/common/test_env-onap-guilin.sh
+++ b/test/common/test_env-onap-guilin.sh
@@ -215,7 +215,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs0"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback Reciever"
@@ -226,7 +226,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # Base path for alive check
 CR_COMPOSE_DIR="cr"                                      # Dir in simulator_group for docker-compose
 
 CONSUL_HOST="consul-server"                              # Host name of consul
diff --git a/test/common/test_env-onap-honolulu.sh b/test/common/test_env-onap-honolulu.sh
index c293420..17d738f 100755
--- a/test/common/test_env-onap-honolulu.sh
+++ b/test/common/test_env-onap-honolulu.sh
@@ -259,7 +259,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs0"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback Reciever"
@@ -271,7 +271,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # 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
diff --git a/test/common/test_env-onap-istanbul.sh b/test/common/test_env-onap-istanbul.sh
index 5b11137..2a6268e 100644
--- a/test/common/test_env-onap-istanbul.sh
+++ b/test/common/test_env-onap-istanbul.sh
@@ -262,7 +262,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs1"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback Reciever"
@@ -274,7 +274,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # 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
diff --git a/test/common/test_env-oran-cherry.sh b/test/common/test_env-oran-cherry.sh
index 641aabe..513afaa 100755
--- a/test/common/test_env-oran-cherry.sh
+++ b/test/common/test_env-oran-cherry.sh
@@ -262,7 +262,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs0"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback Reciever"
@@ -273,7 +273,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # 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
diff --git a/test/common/test_env-oran-d-release.sh b/test/common/test_env-oran-d-release.sh
index 18f7e17..7e495ee 100755
--- a/test/common/test_env-oran-d-release.sh
+++ b/test/common/test_env-oran-d-release.sh
@@ -281,7 +281,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs0"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback receiver"
@@ -292,7 +292,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # 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
diff --git a/test/common/test_env-oran-e-release.sh b/test/common/test_env-oran-e-release.sh
index 546e94c..fc547fe 100755
--- a/test/common/test_env-oran-e-release.sh
+++ b/test/common/test_env-oran-e-release.sh
@@ -307,7 +307,7 @@
 MR_ZOOKEEPER_APP_NAME="zookeeper"                        # Zookeeper app name
 MR_ZOOKEEPER_PORT="2181"                                 # Zookeeper port number
 MR_DMAAP_HOST_MNT_DIR="/mnt"                             # Basedir localhost for mounted files
-MR_DMAAP_HOST_CONFIG_DIR="/configs"                      # Config files dir on localhost
+MR_DMAAP_HOST_CONFIG_DIR="/configs1"                      # Config files dir on localhost
 
 CR_APP_NAME="callback-receiver"                          # Name for the Callback receiver
 CR_DISPLAY_NAME="Callback receiver"
@@ -318,7 +318,7 @@
 CR_APP_CALLBACK="/callbacks"                             # Url for callbacks
 CR_APP_CALLBACK_MR="/callbacks-mr"                       # Url for callbacks (data from mr which contains string encoded jsons in a json arr)
 CR_APP_CALLBACK_TEXT="/callbacks-text"                   # Url for callbacks (data containing text data)
-CR_ALIVE_URL="/"                                         # Base path for alive check
+CR_ALIVE_URL="/reset"                                    # 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
diff --git a/test/common/testcase_common.sh b/test/common/testcase_common.sh
index 78eeb54..b47413a 100755
--- a/test/common/testcase_common.sh
+++ b/test/common/testcase_common.sh
@@ -345,9 +345,16 @@
 #Var for measuring execution time
 TCTEST_START=$SECONDS
 
+#Vars to hold the start time and timer text for a custom timer
+TC_TIMER_STARTTIME=""
+TC_TIMER_TIMER_TEXT=""
+TC_TIMER_CURRENT_FAILS="" # Then numer of failed test when timer starts.
+                          # Compared with the current number of fails at timer stop
+						  # to judge the measurement reliability
+
 #File to save timer measurement results
 TIMER_MEASUREMENTS=".timer_measurement.txt"
-echo -e "Activity \t Duration" > $TIMER_MEASUREMENTS
+echo -e "Activity \t Duration \t Info" > $TIMER_MEASUREMENTS
 
 # If this is set, some images (control by the parameter repo-polcy) will be re-tagged and pushed to this repo before any
 IMAGE_REPO_ADR=""
@@ -762,8 +769,21 @@
 else
 	echo " None"
 fi
+
+echo -e $BOLD"Auto adding included apps"$EBOLD
+	for iapp in $INCLUDED_IMAGES; do
+		file_pointer=$(echo $iapp | tr '[:upper:]' '[:lower:]')
+		file_pointer="../common/"$file_pointer"_api_functions.sh"
+		echo " Auto-adding included app $iapp.  Sourcing $file_pointer"
+		. $file_pointer
+		if [ ! -f "$file_pointer" ]; then
+			echo " Include file $file_pointer for app $iapp does not exist"
+			exit 1
+		fi
+	done
 echo ""
 
+
 # Check needed installed sw
 tmp=$(which python3)
 if [ $? -ne 0 ] || [ -z tmp ]; then
@@ -1524,7 +1544,7 @@
 	echo "===================================="
 	column -t -s $'\t' $TIMER_MEASUREMENTS
 	if [ $RES_PASS != $RES_TEST ]; then
-		echo -e $RED"Measurement may not be reliable when there are failed test - script timeouts may cause long measurement values"$ERED
+		echo -e $RED"Measurement may not be reliable when there are failed test - failures may cause long measurement values due to timeouts etc."$ERED
 	fi
 	echo ""
 
@@ -1607,57 +1627,44 @@
 #####################################################################
 
 # Start timer for time measurement
-# args - (any args will be printed though)
+# args:  <timer message to print>  -  timer value and message will be printed both on screen
+#                                     and in the timer measurement report - if at least one "print_timer is called"
 start_timer() {
 	echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
-	TC_TIMER=$SECONDS
+	TC_TIMER_STARTTIME=$SECONDS
+	TC_TIMER_TIMER_TEXT="${@:1}"
+	if [ $# -ne 1 ]; then
+		__print_err "need 1 arg,  <timer message to print>" $@
+		TC_TIMER_TIMER_TEXT=${FUNCNAME[0]}":"${BASH_LINENO[0]}
+		echo " Assigning timer name: "$TC_TIMER_TIMER_TEXT
+	fi
+	TC_TIMER_CURRENT_FAILS=$(($RES_FAIL+$RES_CONF_FAIL))
 	echo " Timer started: $(date)"
 }
 
-# Print the value of the time (in seconds)
-# args - <timer message to print>  -  timer value and message will be printed both on screen
-#                                     and in the timer measurement report
+# Print the running timer  the value of the time (in seconds)
+# Timer value and message will be printed both on screen and in the timer measurement report
 print_timer() {
-	echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
-	if [ $# -lt 1 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need 1 or more args,  <timer message to print>" $@
-		exit 1
+	echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $TC_TIMER_TIMER_TEXT $EBOLD
+	if [ -z  "$TC_TIMER_STARTTIME" ]; then
+		__print_err "timer not started" $@
+		return 1
 	fi
-	duration=$(($SECONDS-$TC_TIMER))
+	duration=$(($SECONDS-$TC_TIMER_STARTTIME))
 	if [ $duration -eq 0 ]; then
 		duration="<1 second"
 	else
 		duration=$duration" seconds"
 	fi
 	echo " Timer duration :" $duration
+	res="-"
+	if [ $(($RES_FAIL+$RES_CONF_FAIL)) -ne $TC_TIMER_CURRENT_FAILS ]; then
+		res="Failures occured during test - timer not reliabled"
+	fi
 
-	echo -e "${@:1} \t $duration" >> $TIMER_MEASUREMENTS
+	echo -e "$TC_TIMER_TIMER_TEXT \t $duration \t $res" >> $TIMER_MEASUREMENTS
 }
 
-# Print the value of the time (in seconds) and reset the timer
-# args - <timer message to print>  -  timer value and message will be printed both on screen
-#                                     and in the timer measurement report
-print_and_reset_timer() {
-	echo -e $BOLD"INFO(${BASH_LINENO[0]}): "${FUNCNAME[0]}"," $@ $EBOLD
-	if [ $# -lt 1 ]; then
-		((RES_CONF_FAIL++))
-    	__print_err "need 1 or more args,  <timer message to print>" $@
-		exit 1
-	fi
-	duration=$(($SECONDS-$TC_TIMER))" seconds"
-	if [ $duration -eq 0 ]; then
-		duration="<1 second"
-	else
-		duration=$duration" seconds"
-	fi
-	echo " Timer duration :" $duration
-	TC_TIMER=$SECONDS
-	echo " Timer reset"
-
-	echo -e "${@:1} \t $duration" >> $TIMER_MEASUREMENTS
-
-}
 # Print info about a deviations from intended tests
 # Each deviation counted is also printed in the testreport
 # args <deviation message to print>
@@ -1989,7 +1996,7 @@
 					echo -e "  Scaled $restype $resid $ns_text with label $labelname=$labelid to 0, current count=$count $GREEN OK $EGREEN"
 				fi
 				echo -ne "  Deleting $restype $resid $ns_text with label $labelname=$labelid "$SAMELINE
-				kubectl delete $restype $resid $ns_flag 1> /dev/null 2> ./tmp/kubeerr
+				kubectl delete --grace-period=1 $restype $resid $ns_flag 1> /dev/null 2> ./tmp/kubeerr
 				if [ $? -eq 0 ]; then
 					echo -e "  Deleted $restype $resid $ns_text with label $labelname=$labelid $GREEN OK $EGREEN"
 				else
@@ -2290,7 +2297,7 @@
 	if [ $RUNMODE == "KUBE" ]; then
 		__clean_kube
 		if [ $PRE_CLEAN -eq 1 ]; then
-			echo " Clean docker resouces to free up resources, may take time..."
+			echo " Cleaning docker resouces to free up resources, may take time..."
 			../common/clean_docker.sh 2&>1 /dev/null
 			echo ""
 		fi
@@ -2399,6 +2406,9 @@
 	appcount=$1
 	shift
 
+	envsubst < $compose_file > "gen_"$compose_file
+	compose_file="gen_"$compose_file
+
 	if [ "$compose_args" == "NODOCKERARGS" ]; then
 		docker-compose -f $compose_file up -d &> .dockererr
 		if [ $? -ne 0 ]; then
diff --git a/test/cr/.gitignore b/test/cr/.gitignore
index 4aa3a7a..6409fa2 100644
--- a/test/cr/.gitignore
+++ b/test/cr/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+.env
\ No newline at end of file
diff --git a/test/simulator-group/consul_cbs/.gitignore b/test/simulator-group/consul_cbs/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/consul_cbs/.gitignore
+++ b/test/simulator-group/consul_cbs/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/control_panel/.gitignore b/test/simulator-group/control_panel/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/control_panel/.gitignore
+++ b/test/simulator-group/control_panel/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/cr/.env b/test/simulator-group/cr/.env
new file mode 100644
index 0000000..a64de54
--- /dev/null
+++ b/test/simulator-group/cr/.env
@@ -0,0 +1 @@
+COMPOSE_PROJECT_NAME=callback-receiver
diff --git a/test/simulator-group/cr/.gitignore b/test/simulator-group/cr/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/cr/.gitignore
+++ b/test/simulator-group/cr/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/cr/app.yaml b/test/simulator-group/cr/app.yaml
index 0cb36d2..7953662 100644
--- a/test/simulator-group/cr/app.yaml
+++ b/test/simulator-group/cr/app.yaml
@@ -1,5 +1,5 @@
 apiVersion: apps/v1
-kind: Deployment
+kind: StatefulSet
 metadata:
   name: $CR_APP_NAME
   namespace: $KUBE_SIM_NAMESPACE
@@ -7,7 +7,8 @@
     run: $CR_APP_NAME
     autotest: CR
 spec:
-  replicas: 1
+  replicas: $CR_APP_COUNT
+  serviceName: $CR_APP_NAME
   selector:
     matchLabels:
       run: $CR_APP_NAME
diff --git a/test/simulator-group/cr/docker-compose.yml b/test/simulator-group/cr/docker-compose.yml
index 634a464..3b63451 100644
--- a/test/simulator-group/cr/docker-compose.yml
+++ b/test/simulator-group/cr/docker-compose.yml
@@ -21,14 +21,14 @@
     external:
       name: ${DOCKER_SIM_NWNAME}
 services:
-  callback-receiver:
+  cr:
+    scale: $CR_APP_COUNT
     networks:
       - default
-    container_name: ${CR_APP_NAME}
     image: ${CR_IMAGE}
     ports:
-      - ${CR_EXTERNAL_PORT}:${CR_INTERNAL_PORT}
-      - ${CR_EXTERNAL_SECURE_PORT}:${CR_INTERNAL_SECURE_PORT}
+      - ${CR_INTERNAL_PORT}/tcp
+      - ${CR_INTERNAL_SECURE_PORT}/tcp
     labels:
       - "nrttest_app=CR"
       - "nrttest_dp=${CR_DISPLAY_NAME}"
diff --git a/test/simulator-group/cr/svc.yaml b/test/simulator-group/cr/svc.yaml
index 43e532b..0367643 100644
--- a/test/simulator-group/cr/svc.yaml
+++ b/test/simulator-group/cr/svc.yaml
@@ -7,15 +7,9 @@
     run: $CR_APP_NAME
     autotest: CR
 spec:
-  type: ClusterIP
   ports:
-  - port: $CR_EXTERNAL_PORT
-    targetPort: $CR_INTERNAL_PORT
-    protocol: TCP
+  - port: 80
     name: http
-  - port: $CR_EXTERNAL_SECURE_PORT
-    targetPort: $CR_INTERNAL_SECURE_PORT
-    protocol: TCP
-    name: https
+  clusterIP: None
   selector:
-    run: $CR_APP_NAME
\ No newline at end of file
+    run: $CR_APP_NAME
diff --git a/test/simulator-group/dmaapadp/.gitignore b/test/simulator-group/dmaapadp/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/dmaapadp/.gitignore
+++ b/test/simulator-group/dmaapadp/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmed/.gitignore b/test/simulator-group/dmaapmed/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/dmaapmed/.gitignore
+++ b/test/simulator-group/dmaapmed/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/.gitignore b/test/simulator-group/dmaapmr/.gitignore
new file mode 100644
index 0000000..7dc00c5
--- /dev/null
+++ b/test/simulator-group/dmaapmr/.gitignore
@@ -0,0 +1,3 @@
+.tmp.json
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/dmaapmr/app.yaml b/test/simulator-group/dmaapmr/app.yaml
index a4ecc91..01c9014 100644
--- a/test/simulator-group/dmaapmr/app.yaml
+++ b/test/simulator-group/dmaapmr/app.yaml
@@ -1,6 +1,125 @@
 apiVersion: apps/v1
 kind: Deployment
 metadata:
+  name: $MR_ZOOKEEPER_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_ZOOKEEPER_APP_NAME
+    autotest: DMAAPMR
+spec:
+  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: $KUBE_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: $MR_ZOOKEEPER_PORT
+        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: '$MR_ZOOKEEPER_PORT'
+        - 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
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: $MR_KAFKA_APP_NAME
+  namespace: $KUBE_ONAP_NAMESPACE
+  labels:
+    run: $MR_KAFKA_APP_NAME
+    autotest: DMAAPMR
+spec:
+  replicas: 1
+  selector:
+    matchLabels:
+      run: $MR_KAFKA_APP_NAME
+  template:
+    metadata:
+      labels:
+        run: $MR_KAFKA_APP_NAME
+        autotest: DMAAPMR
+    spec:
+      containers:
+      - name: $MR_KAFKA_APP_NAME
+        image: $ONAP_KAFKA_IMAGE
+        imagePullPolicy: $KUBE_IMAGE_PULL_POLICY
+        ports:
+        - name: http
+          containerPort: $MR_KAFKA_PORT
+        env:
+        - name: enableCadi
+          value: 'false'
+        - name: KAFKA_ZOOKEEPER_CONNECT
+          value: '$MR_ZOOKEEPER_APP_NAME:$MR_ZOOKEEPER_PORT'
+        - 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://$MR_KAFKA_SERVICE_PATH'
+        - name: KAFKA_LISTENERS
+          value: 'INTERNAL_PLAINTEXT://0.0.0.0:$MR_KAFKA_PORT'
+        - 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_DMAAP_APP_NAME
   namespace: $KUBE_ONAP_NAMESPACE
   labels:
@@ -52,127 +171,4 @@
           defaultMode: 420
           name: dmaapmr-cadi.properties
         name: dmaapmr-cadi
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
-  name: $MR_KAFKA_APP_NAME
-  namespace: $KUBE_ONAP_NAMESPACE
-  labels:
-    run: $MR_KAFKA_APP_NAME
-    autotest: DMAAPMR
-spec:
-  replicas: 1
-  selector:
-    matchLabels:
-      run: $MR_KAFKA_APP_NAME
-  template:
-    metadata:
-      labels:
-        run: $MR_KAFKA_APP_NAME
-        autotest: DMAAPMR
-    spec:
-      containers:
-      - name: $MR_KAFKA_APP_NAME
-        image: $ONAP_KAFKA_IMAGE
-        imagePullPolicy: $KUBE_IMAGE_PULL_POLICY
-        ports:
-        - name: http
-          containerPort: $MR_KAFKA_PORT
-        env:
-        - name: enableCadi
-          value: 'false'
-        - name: KAFKA_ZOOKEEPER_CONNECT
-          value: '$MR_ZOOKEEPER_APP_NAME:$MR_ZOOKEEPER_PORT'
-        - 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://$MR_KAFKA_APP_NAME:$MR_KAFKA_PORT'
-        - name: KAFKA_LISTENERS
-          value: 'INTERNAL_PLAINTEXT://0.0.0.0:$MR_KAFKA_PORT'
-        # - name: KAFKA_LISTENERS
-        #   value: 'EXTERNAL_PLAINTEXT://0.0.0.0:9091,INTERNAL_PLAINTEXT://0.0.0.0:$MR_KAFKA_PORT'
-        - 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: 'false'
-        - 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: $KUBE_IMAGE_PULL_POLICY
-        ports:
-        - name: http
-          containerPort: $MR_ZOOKEEPER_PORT
-        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: '$MR_ZOOKEEPER_PORT'
-        - 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'
-        - name: ZOOKEEPER_SASL_ENABLED
-          value: 'false'
-        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/configs0/kafka/zk_client_jaas.conf b/test/simulator-group/dmaapmr/configs0/kafka/zk_client_jaas.conf
new file mode 100644
index 0000000..dca46d5
--- /dev/null
+++ b/test/simulator-group/dmaapmr/configs0/kafka/zk_client_jaas.conf
@@ -0,0 +1,6 @@
+Client {
+   org.apache.zookeeper.server.auth.DigestLoginModule required
+   username="kafka"
+   password="kafka_secret";
+ };
+
diff --git a/test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties b/test/simulator-group/dmaapmr/configs0/mr/MsgRtrApi.properties
similarity index 90%
rename from test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties
rename to test/simulator-group/dmaapmr/configs0/mr/MsgRtrApi.properties
index 3476d5d..ecb3da5 100644
--- a/test/simulator-group/dmaapmr/mnt/mr/MsgRtrApi.properties
+++ b/test/simulator-group/dmaapmr/configs0/mr/MsgRtrApi.properties
@@ -1,7 +1,8 @@
 # LICENSE_START=======================================================
 #  org.onap.dmaap
 #  ================================================================================
-#  Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+#  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.
@@ -34,7 +35,12 @@
 ##
 ## Both Cambria and Kafka make use of Zookeeper.
 ##
-config.zk.servers=zookeeper:2181
+#config.zk.servers=172.18.1.1
+#config.zk.servers={{.Values.zookeeper.name}}:{{.Values.zookeeper.port}}
+config.zk.servers=$MR_ZOOKEEPER_SERVICE_PATH
+
+#config.zk.root=/fe3c/cambria/config
+
 
 ###############################################################################
 ##
@@ -45,7 +51,7 @@
 ##        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=message-router-kafka:9092
+kafka.metadata.broker.list=$MR_KAFKA_SERVICE_PATH
 ##kafka.request.required.acks=-1
 #kafka.client.zookeeper=${config.zk.servers}
 consumer.timeout.ms=100
@@ -81,6 +87,8 @@
 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==
 
 
 ###############################################################################
@@ -128,14 +136,13 @@
 ##        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.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=1
+default.replicas=3
 ##############################################################################
 #100mb
 maxcontentlength=10000
@@ -163,4 +170,5 @@
 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
+kafka.max.poll.records=1000
+
diff --git a/test/simulator-group/dmaapmr/mnt/mr/cadi.properties b/test/simulator-group/dmaapmr/configs0/mr/cadi.properties
similarity index 61%
rename from test/simulator-group/dmaapmr/mnt/mr/cadi.properties
rename to test/simulator-group/dmaapmr/configs0/mr/cadi.properties
index cccfbdf..4d28b52 100644
--- a/test/simulator-group/dmaapmr/mnt/mr/cadi.properties
+++ b/test/simulator-group/dmaapmr/configs0/mr/cadi.properties
@@ -1,21 +1,20 @@
-#Removed to be disable aaf in test env
-#aaf_locate_url=https://aaf-onap-test.osaaf.org:8095\
+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
 
-#Removed to be disable aaf in test env
-# cadi_truststore=/appl/dmaapMR1/etc/org.onap.dmaap.mr.trust.jks
-# cadi_truststore_password=8FyfX+ar;0$uZQ0h9*oXchNX
+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=GDQttV7)BlOvWMf6F7tz&cjy
+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
+cadi_longitude=-122.26147
+
diff --git a/test/simulator-group/dmaapmr/mnt/mr/logback.xml b/test/simulator-group/dmaapmr/configs0/mr/logback.xml
similarity index 98%
rename from test/simulator-group/dmaapmr/mnt/mr/logback.xml
rename to test/simulator-group/dmaapmr/configs0/mr/logback.xml
index f02a2db..02499fb 100644
--- a/test/simulator-group/dmaapmr/mnt/mr/logback.xml
+++ b/test/simulator-group/dmaapmr/configs0/mr/logback.xml
@@ -1,6 +1,7 @@
 <!--
      ============LICENSE_START=======================================================
-     Copyright © 2019 AT&T Intellectual Property. All rights reserved.
+     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.
@@ -206,3 +207,4 @@
   </root>
 
 </configuration>
+
diff --git a/test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf b/test/simulator-group/dmaapmr/configs0/zk/zk_server_jaas.conf
similarity index 69%
rename from test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf
rename to test/simulator-group/dmaapmr/configs0/zk/zk_server_jaas.conf
index 3d2767f..9a32a72 100644
--- a/test/simulator-group/dmaapmr/mnt/zk/zk_server_jaas.conf
+++ b/test/simulator-group/dmaapmr/configs0/zk/zk_server_jaas.conf
@@ -1,4 +1,5 @@
 Server {
        org.apache.zookeeper.server.auth.DigestLoginModule required
-       user_kafka="kafka_secret";
-};
\ No newline at end of file
+       user_kafka=kafka_secret;
+};
+
diff --git a/test/simulator-group/dmaapmr/configs/kafka/zk_client_jaas.conf b/test/simulator-group/dmaapmr/configs1/kafka/zk_client_jaas.conf
similarity index 100%
rename from test/simulator-group/dmaapmr/configs/kafka/zk_client_jaas.conf
rename to test/simulator-group/dmaapmr/configs1/kafka/zk_client_jaas.conf
diff --git a/test/simulator-group/dmaapmr/configs/mr/MsgRtrApi.properties b/test/simulator-group/dmaapmr/configs1/mr/MsgRtrApi.properties
similarity index 97%
rename from test/simulator-group/dmaapmr/configs/mr/MsgRtrApi.properties
rename to test/simulator-group/dmaapmr/configs1/mr/MsgRtrApi.properties
index 3e0b001..3f7f46d 100644
--- a/test/simulator-group/dmaapmr/configs/mr/MsgRtrApi.properties
+++ b/test/simulator-group/dmaapmr/configs1/mr/MsgRtrApi.properties
@@ -35,7 +35,8 @@
 ##
 ## Both Cambria and Kafka make use of Zookeeper.
 ##
-config.zk.servers=$MR_ZOOKEEPER_APP_NAME:$MR_ZOOKEEPER_PORT
+config.zk.servers=$MR_ZOOKEEPER_SERVICE_PATH
+#$MR_ZOOKEEPER_APP_NAME:$MR_ZOOKEEPER_PORT
 
 ###############################################################################
 ##
@@ -46,7 +47,8 @@
 ##        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=$MR_KAFKA_APP_NAME:$MR_KAFKA_PORT
+kafka.metadata.broker.list=$MR_KAFKA_SERVICE_PATH
+#$MR_KAFKA_APP_NAME:$MR_KAFKA_PORT
 ##kafka.request.required.acks=-1
 #kafka.client.zookeeper=${config.zk.servers}
 consumer.timeout.ms=100
@@ -61,7 +63,6 @@
 kafka.rebalance.backoff.ms=10000
 kafka.rebalance.max.retries=6
 
-
 ###############################################################################
 ##
 ##        Secured Config
diff --git a/test/simulator-group/dmaapmr/configs/mr/cadi.properties b/test/simulator-group/dmaapmr/configs1/mr/cadi.properties
similarity index 100%
rename from test/simulator-group/dmaapmr/configs/mr/cadi.properties
rename to test/simulator-group/dmaapmr/configs1/mr/cadi.properties
diff --git a/test/simulator-group/dmaapmr/configs/mr/logback.xml b/test/simulator-group/dmaapmr/configs1/mr/logback.xml
similarity index 100%
rename from test/simulator-group/dmaapmr/configs/mr/logback.xml
rename to test/simulator-group/dmaapmr/configs1/mr/logback.xml
diff --git a/test/simulator-group/dmaapmr/configs/zk/zk_server_jaas.conf b/test/simulator-group/dmaapmr/configs1/zk/zk_server_jaas.conf
similarity index 100%
rename from test/simulator-group/dmaapmr/configs/zk/zk_server_jaas.conf
rename to test/simulator-group/dmaapmr/configs1/zk/zk_server_jaas.conf
diff --git a/test/simulator-group/dmaapmr/docker-compose.yml b/test/simulator-group/dmaapmr/docker-compose.yml
index f9a5f21..2060ce7 100644
--- a/test/simulator-group/dmaapmr/docker-compose.yml
+++ b/test/simulator-group/dmaapmr/docker-compose.yml
@@ -57,7 +57,7 @@
     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://$MR_KAFKA_APP_NAME:$MR_KAFKA_PORT
+    KAFKA_ADVERTISED_LISTENERS: INTERNAL_PLAINTEXT://$MR_KAFKA_SERVICE_PATH
     KAFKA_LISTENERS: INTERNAL_PLAINTEXT://0.0.0.0:$MR_KAFKA_PORT
     KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL_PLAINTEXT
     KAFKA_CONFLUENT_SUPPORT_METRICS_ENABLE: 'false'
diff --git a/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf b/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf
deleted file mode 100644
index 79a7601..0000000
--- a/test/simulator-group/dmaapmr/mnt/kafka/zk_client_jaas.conf
+++ /dev/null
@@ -1,5 +0,0 @@
-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/svc.yaml b/test/simulator-group/dmaapmr/svc.yaml
index 7fb0962..446c59d 100644
--- a/test/simulator-group/dmaapmr/svc.yaml
+++ b/test/simulator-group/dmaapmr/svc.yaml
@@ -1,24 +1,20 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: $MR_DMAAP_APP_NAME
+  name: $MR_ZOOKEEPER_APP_NAME
   namespace: $KUBE_ONAP_NAMESPACE
   labels:
-    run: $MR_DMAAP_APP_NAME
+    run: $MR_ZOOKEEPER_APP_NAME
     autotest: DMAAPMR
 spec:
   type: ClusterIP
   ports:
-  - port: $MR_EXTERNAL_PORT
-    targetPort: $MR_INTERNAL_PORT
+  - port: $MR_ZOOKEEPER_PORT
+    targetPort: $MR_ZOOKEEPER_PORT
     protocol: TCP
     name: http
-  - port: $MR_EXTERNAL_SECURE_PORT
-    targetPort: $MR_INTERNAL_SECURE_PORT
-    protocol: TCP
-    name: https
   selector:
-    run: $MR_DMAAP_APP_NAME
+    run: $MR_ZOOKEEPER_APP_NAME
 ---
 apiVersion: v1
 kind: Service
@@ -41,17 +37,23 @@
 apiVersion: v1
 kind: Service
 metadata:
-  name: $MR_ZOOKEEPER_APP_NAME
+  name: $MR_DMAAP_APP_NAME
   namespace: $KUBE_ONAP_NAMESPACE
   labels:
-    run: $MR_ZOOKEEPER_APP_NAME
+    run: $MR_DMAAP_APP_NAME
     autotest: DMAAPMR
 spec:
   type: ClusterIP
   ports:
-  - port: $MR_ZOOKEEPER_PORT
-    targetPort: $MR_ZOOKEEPER_PORT
+  - 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_ZOOKEEPER_APP_NAME
+    run: $MR_DMAAP_APP_NAME
+
+
diff --git a/test/simulator-group/ecs/.gitignore b/test/simulator-group/ecs/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/ecs/.gitignore
+++ b/test/simulator-group/ecs/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/httpproxy/.gitignore b/test/simulator-group/httpproxy/.gitignore
index 3384196..edfe9f8 100644
--- a/test/simulator-group/httpproxy/.gitignore
+++ b/test/simulator-group/httpproxy/.gitignore
@@ -1 +1,2 @@
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/kubeproxy/.gitignore b/test/simulator-group/kubeproxy/.gitignore
index ab8f024..36f67e1 100644
--- a/test/simulator-group/kubeproxy/.gitignore
+++ b/test/simulator-group/kubeproxy/.gitignore
@@ -1 +1,2 @@
 .dockererr
+gen_docker-compose*
diff --git a/test/simulator-group/mrstub/.gitignore b/test/simulator-group/mrstub/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/mrstub/.gitignore
+++ b/test/simulator-group/mrstub/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/ngw/.gitignore b/test/simulator-group/ngw/.gitignore
index 59aac41..b676cf8 100644
--- a/test/simulator-group/ngw/.gitignore
+++ b/test/simulator-group/ngw/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
 .dockererr
+gen_docker-compose*
diff --git a/test/simulator-group/policy_agent/.gitignore b/test/simulator-group/policy_agent/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/policy_agent/.gitignore
+++ b/test/simulator-group/policy_agent/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/prodstub/.gitignore b/test/simulator-group/prodstub/.gitignore
index 4aa3a7a..b676cf8 100644
--- a/test/simulator-group/prodstub/.gitignore
+++ b/test/simulator-group/prodstub/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
diff --git a/test/simulator-group/prodstub/docker-compose.yml b/test/simulator-group/prodstub/docker-compose.yml
index f771352..e46c546 100644
--- a/test/simulator-group/prodstub/docker-compose.yml
+++ b/test/simulator-group/prodstub/docker-compose.yml
@@ -23,9 +23,7 @@
 services:
   producer-stub:
     networks:
-      default:
-        aliases:
-          - ${PROD_STUB_APP_NAME_ALIAS}
+      - default
     container_name: ${PROD_STUB_APP_NAME}
     image: ${PROD_STUB_IMAGE}
     ports:
diff --git a/test/simulator-group/rapp_catalogue/.gitignore b/test/simulator-group/rapp_catalogue/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/rapp_catalogue/.gitignore
+++ b/test/simulator-group/rapp_catalogue/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/ric/.gitignore b/test/simulator-group/ric/.gitignore
index c0c4339..1f9d6f9 100644
--- a/test/simulator-group/ric/.gitignore
+++ b/test/simulator-group/ric/.gitignore
@@ -1,4 +1,5 @@
 .tmp.json
 .dockererr
 .env
-fakedir
\ No newline at end of file
+fakedir
+gen_docker-compose*
\ No newline at end of file
diff --git a/test/simulator-group/sdnc/.gitignore b/test/simulator-group/sdnc/.gitignore
index 4aa3a7a..7dc00c5 100644
--- a/test/simulator-group/sdnc/.gitignore
+++ b/test/simulator-group/sdnc/.gitignore
@@ -1,2 +1,3 @@
 .tmp.json
-.dockererr
\ No newline at end of file
+.dockererr
+gen_docker-compose*
\ No newline at end of file