diff --git a/test/auto-test/FTC1.sh b/test/auto-test/FTC1.sh
index e1526ff..092efe5 100755
--- a/test/auto-test/FTC1.sh
+++ b/test/auto-test/FTC1.sh
@@ -21,7 +21,7 @@
 TC_ONELINE_DESCR="Sanity test, create service and then create,update and delete a policy using http/https and A1PMS REST/DMAAP with/without SDNC controller"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR DMAAPMR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR DMAAPMR A1PMS RICSIM SDNC NGW KUBEPROXY "
@@ -31,10 +31,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="NGW CBS CONSUL"
+CONDITIONALLY_IGNORED_IMAGES="NGW "
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -48,6 +48,11 @@
 
 # Tested variants of REST/DMAAP/SDNC config
 TESTED_VARIANTS="REST   DMAAP   REST+SDNC   DMAAP+SDNC"
+
+if [[ "$A1PMS_FEATURE_LEVEL" == *"NO-DMAAP"* ]]; then
+    TESTED_VARIANTS="REST   REST+SDNC"
+fi
+
 #Test a1pms and simulator protocol versions (others are http only)
 TESTED_PROTOCOLS="HTTP HTTPS"
 for __httpx in $TESTED_PROTOCOLS ; do
@@ -80,7 +85,6 @@
         if [ $__httpx == "HTTPS" ]; then
             use_cr_https
             use_simulator_https
-            use_mr_https
             if [[ $interface = *"SDNC"* ]]; then
                 use_sdnc_https
             fi
@@ -92,7 +96,6 @@
         else
             use_cr_http
             use_simulator_http
-            use_mr_http
             if [[ $interface = *"SDNC"* ]]; then
                 use_sdnc_http
             fi
@@ -102,15 +105,26 @@
                 use_a1pms_rest_http
             fi
         fi
+        if [[ "$A1PMS_FEATURE_LEVEL" == *"NO-DMAAP"* ]]; then
+            :
+        else
+            if [ $__httpx == "HTTPS" ]; then
+                use_mr_https
+            else
+                use_mr_http
+            fi
+        fi
 
         start_ric_simulators ricsim_g1 1  OSC_2.1.0
         start_ric_simulators ricsim_g2 1  STD_1.1.3
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 1  STD_2.0.0
-        fi
+        start_ric_simulators ricsim_g3 1  STD_2.0.0
 
-        start_mr    "$MR_READ_TOPIC"  "/events" "users/policy-agent" \
-                    "$MR_WRITE_TOPIC" "/events" "users/mr-stub"
+        if [[ "$A1PMS_FEATURE_LEVEL" == *"NO-DMAAP"* ]]; then
+            :
+        else
+            start_mr    "$MR_READ_TOPIC"  "/events" "users/policy-agent" \
+                        "$MR_WRITE_TOPIC" "/events" "users/mr-stub"
+        fi
 
         start_cr 1
 
@@ -120,82 +134,60 @@
             start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
         fi
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
-            prepare_consul_config      SDNC    ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC    ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
-                if [ $__httpx == "HTTPS" ]; then
+            #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
+            if [ $__httpx == "HTTPS" ]; then
+                use_a1pms_rest_https
+            else
+                use_a1pms_rest_http
+            fi
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
+            if [ $__httpx == "HTTPS" ]; then
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_https
+                else
                     use_a1pms_rest_https
+                fi
+            else
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_http
                 else
                     use_a1pms_rest_http
                 fi
-                a1pms_api_put_configuration 200 ".consul_config.json"
-                if [ $__httpx == "HTTPS" ]; then
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_https
-                    else
-                        use_a1pms_rest_https
-                    fi
-                else
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_http
-                    else
-                        use_a1pms_rest_http
-                    fi
-                fi
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
             fi
         fi
 
-        mr_equal requests_submitted 0
+        if [[ "$A1PMS_FEATURE_LEVEL" == *"NO-DMAAP"* ]]; then
+            :
+        else
+            mr_equal requests_submitted 0
+        fi
 
         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
+        sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
 
-            sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
+        a1pms_equal json:rics 3 300
 
-            a1pms_equal json:rics 3 300
+        a1pms_equal json:policy-types 3 120
 
-            a1pms_equal json:policy-types 3 120
+        a1pms_equal json:policies 0
 
-            a1pms_equal json:policies 0
+        a1pms_equal json:policy-instances 0
 
-            a1pms_equal json:policy-instances 0
+        cr_equal 0 received_callbacks 3 120
 
-            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
-
-        else
-            a1pms_equal json:rics 2 300
-
-            a1pms_equal json:policy_schemas 2 120
-
-            a1pms_equal json:policy_types 2
-
-            a1pms_equal json:policies 0
-
-            a1pms_equal json:policy_ids 0
-        fi
+        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_1 ricsim_g2_1 ricsim_g3_1
 
         echo "############################################"
         echo "############## Health check ################"
@@ -219,87 +211,59 @@
         echo "############## RIC Repository ##############"
         echo "############################################"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0:AVAILABLE"
-        else
-            a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
-        fi
+        a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0:AVAILABLE"
 
         echo "############################################"
         echo "########### A1 Policy Management ###########"
         echo "############################################"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-        else
-            notificationurl=""
-        fi
+        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
         a1pms_api_put_policy 201 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json
         a1pms_api_put_policy 200 "serv1" ricsim_g1_1 1 5000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
-            a1pms_api_put_policy 200 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
-        fi
+        a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
+        a1pms_api_put_policy 200 "serv1" ricsim_g3_1 STD_QOS_0_2_0 5200 true $notificationurl testdata/STD2/pi_qos_template.json
 
         a1pms_api_put_policy 201 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT $notificationurl testdata/STD/pi1_template.json
         a1pms_api_put_policy 200 "serv1" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT $notificationurl testdata/STD/pi1_template.json
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policies 3
-        else
-            a1pms_equal json:policies 2
-        fi
+        a1pms_equal json:policies 3
 
         a1pms_api_delete_policy 204 5000
 
         a1pms_api_delete_policy 204 5100
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_delete_policy 204 5200
-        fi
+        a1pms_api_delete_policy 204 5200
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policies 0
+        a1pms_equal json:policies 0
 
-            a1pms_equal json:policy-instances 0
-        else
-            a1pms_equal json:policies 0
+        a1pms_equal json:policy-instances 0
 
-            a1pms_equal json:policy_ids 0
-        fi
-
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            cr_equal 0 received_callbacks 3
-        fi
+        cr_equal 0 received_callbacks 3
 
         if [[ $interface = *"DMAAP"* ]]; then
 
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                VAL=14 # Number of a1pms API calls over DMAAP
-            else
-                VAL=11 # Number of a1pms API calls over DMAAP
-            fi
+            VAL=14 # Number of a1pms API calls over DMAAP
             mr_equal requests_fetched $VAL
             mr_equal responses_submitted $VAL
             mr_equal responses_fetched $VAL
             mr_equal current_requests 0
             mr_equal current_responses 0
         else
-            mr_equal requests_submitted 0
+            if [[ "$A1PMS_FEATURE_LEVEL" == *"NO-DMAAP"* ]]; then
+                :
+            else
+                mr_equal requests_submitted 0
+            fi
         fi
 
         if [[ $interface = *"SDNC"* ]]; then
             sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
             sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
-            fi
+            sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
         else
             sim_contains_str ricsim_g1_1 remote_hosts $A1PMS_APP_NAME
             sim_contains_str ricsim_g2_1 remote_hosts $A1PMS_APP_NAME
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
-            fi
+            sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
         fi
 
         check_a1pms_logs
diff --git a/test/auto-test/FTC10.sh b/test/auto-test/FTC10.sh
index 61bd722..32b6b1c 100755
--- a/test/auto-test/FTC10.sh
+++ b/test/auto-test/FTC10.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Basic use case, register service, create/update policy, delete policy, de-register service using both STD and OSC interface while mixing REST and Dmaap"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES=" MR CR A1PMS RICSIM CP KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -58,19 +58,12 @@
 
 start_ric_simulators  ricsim_g2 5 STD_1.1.3
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    start_ric_simulators ricsim_g3 1  STD_2.0.0
-fi
+start_ric_simulators ricsim_g3 1  STD_2.0.0
 
 start_mr
 
 start_cr 1
 
-if [ $RUNMODE == "DOCKER" ]; then
-    if [[ "$A1PMS_FEATURE_LEVEL" != *"NOCONSUL"* ]]; then
-        start_consul_cbs
-    fi
-fi
 
 start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
 
@@ -84,24 +77,13 @@
 
 use_a1pms_rest_http
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        __CONFIG_HEADER="HEADER"
-    fi
-fi
-prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 sleep_wait 120 "Let A1PMS cofiguration take effect"
@@ -112,26 +94,16 @@
 
 sim_print ricsim_g2_1 interface
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_print ricsim_g3_1 interface
-fi
+sim_print ricsim_g3_1 interface
 
 sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
-    a1pms_equal json:policy-types 3 300
-else
-    a1pms_equal json:policy_types 2 300
-fi
+sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
+a1pms_equal json:policy-types 3 300
 
 # Create policies
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 use_a1pms_rest_http
 
@@ -162,20 +134,17 @@
 
 sim_equal ricsim_g2_1 num_instances 2
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    use_a1pms_rest_http
+use_a1pms_rest_http
 
-    a1pms_api_put_policy 201 "service1" ricsim_g3_1 STD_QOS_0_2_0 2200 true $notificationurl testdata/STD2/pi_qos_template.json 1
+a1pms_api_put_policy 201 "service1" ricsim_g3_1 STD_QOS_0_2_0 2200 true $notificationurl testdata/STD2/pi_qos_template.json 1
 
-    sim_equal ricsim_g3_1 num_instances 1
+sim_equal ricsim_g3_1 num_instances 1
 
-    use_a1pms_dmaap_http
+use_a1pms_dmaap_http
 
-    a1pms_api_put_policy 201 "service1" ricsim_g3_1 STD_QOS_0_2_0 3200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos_template.json 1
+a1pms_api_put_policy 201 "service1" ricsim_g3_1 STD_QOS_0_2_0 3200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos_template.json 1
 
-    sim_equal ricsim_g3_1 num_instances 2
-
-fi
+sim_equal ricsim_g3_1 num_instances 2
 
 #Update policies
 use_a1pms_rest_http
@@ -208,42 +177,31 @@
 
 sim_equal ricsim_g2_1 num_instances 2
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    use_a1pms_rest_http
+use_a1pms_rest_http
 
-    a1pms_api_put_policy 200 "service1" ricsim_g3_1 STD_QOS_0_2_0 2200 true $notificationurl testdata/STD2/pi_qos_template.json 1
+a1pms_api_put_policy 200 "service1" ricsim_g3_1 STD_QOS_0_2_0 2200 true $notificationurl testdata/STD2/pi_qos_template.json 1
 
-    sim_equal ricsim_g3_1 num_instances 2
+sim_equal ricsim_g3_1 num_instances 2
 
 
-    use_a1pms_dmaap_http
+use_a1pms_dmaap_http
 
-    a1pms_api_put_policy 200 "service1" ricsim_g3_1 STD_QOS_0_2_0 3200 true $notificationurl testdata/STD2/pi_qos_template.json 1
+a1pms_api_put_policy 200 "service1" ricsim_g3_1 STD_QOS_0_2_0 3200 true $notificationurl testdata/STD2/pi_qos_template.json 1
 
-    sim_equal ricsim_g3_1 num_instances 2
-fi
+sim_equal ricsim_g3_1 num_instances 2
 
 # Check policies
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_api_get_policy 200 2000 testdata/OSC/pi1_template.json "service1" ricsim_g1_1 1 false $notificationurl
-    a1pms_api_get_policy 200 3000 testdata/OSC/pi1_template.json "service1" ricsim_g1_1 1 false $notificationurl
-    a1pms_api_get_policy 200 2100 testdata/STD/pi1_template.json "service1" ricsim_g2_1 NOTYPE false $notificationurl
-    a1pms_api_get_policy 200 3100 testdata/STD/pi1_template.json "service1" ricsim_g2_1 NOTYPE false $notificationurl
-    a1pms_api_get_policy 200 2200 testdata/STD2/pi_qos_template.json "service1" ricsim_g3_1 STD_QOS_0_2_0 true $notificationurl
-    a1pms_api_get_policy 200 3200 testdata/STD2/pi_qos_template.json "service1" ricsim_g3_1 STD_QOS_0_2_0 true $notificationurl
-else
-    a1pms_api_get_policy 200 2000 testdata/OSC/pi1_template.json
-    a1pms_api_get_policy 200 3000 testdata/OSC/pi1_template.json
-    a1pms_api_get_policy 200 2100 testdata/STD/pi1_template.json
-    a1pms_api_get_policy 200 3100 testdata/STD/pi1_template.json
-fi
+a1pms_api_get_policy 200 2000 testdata/OSC/pi1_template.json "service1" ricsim_g1_1 1 false $notificationurl
+a1pms_api_get_policy 200 3000 testdata/OSC/pi1_template.json "service1" ricsim_g1_1 1 false $notificationurl
+a1pms_api_get_policy 200 2100 testdata/STD/pi1_template.json "service1" ricsim_g2_1 NOTYPE false $notificationurl
+a1pms_api_get_policy 200 3100 testdata/STD/pi1_template.json "service1" ricsim_g2_1 NOTYPE false $notificationurl
+a1pms_api_get_policy 200 2200 testdata/STD2/pi_qos_template.json "service1" ricsim_g3_1 STD_QOS_0_2_0 true $notificationurl
+a1pms_api_get_policy 200 3200 testdata/STD2/pi_qos_template.json "service1" ricsim_g3_1 STD_QOS_0_2_0 true $notificationurl
 
 sim_equal ricsim_g1_1 num_instances 2
 sim_equal ricsim_g2_1 num_instances 2
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_equal ricsim_g3_1 num_instances 2
-fi
+sim_equal ricsim_g3_1 num_instances 2
 
 # Remove policies
 
@@ -255,27 +213,21 @@
 a1pms_api_delete_policy 204 2100
 use_a1pms_rest_http
 a1pms_api_delete_policy 204 3100
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    use_a1pms_dmaap_http
-    a1pms_api_delete_policy 204 2200
-    use_a1pms_rest_http
-    a1pms_api_delete_policy 204 3200
-fi
+use_a1pms_dmaap_http
+a1pms_api_delete_policy 204 2200
+use_a1pms_rest_http
+a1pms_api_delete_policy 204 3200
 
 sim_equal ricsim_g1_1 num_instances 0
 sim_equal ricsim_g2_1 num_instances 0
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_equal ricsim_g3_1 num_instances 0
-fi
+sim_equal ricsim_g3_1 num_instances 0
 
 # Check remote host access to simulator
 
 sim_contains_str ricsim_g1_1 remote_hosts $A1PMS_APP_NAME
 sim_contains_str ricsim_g2_1 remote_hosts $A1PMS_APP_NAME
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
-fi
+sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
 
 # Check policy removal
 use_a1pms_rest_http
@@ -284,10 +236,8 @@
 a1pms_api_get_policy 404 2100
 a1pms_api_get_policy 404 3100
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_api_get_policy 404 2200
-    a1pms_api_get_policy 404 3200
-fi
+a1pms_api_get_policy 404 2200
+a1pms_api_get_policy 404 3200
 
 # Remove the service
 use_a1pms_dmaap_http
diff --git a/test/auto-test/FTC100.sh b/test/auto-test/FTC100.sh
index 7b8478d..c7c80aa 100755
--- a/test/auto-test/FTC100.sh
+++ b/test/auto-test/FTC100.sh
@@ -23,7 +23,7 @@
 USE_ISTIO=0
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 if [ $USE_ISTIO -eq 0 ]; then
@@ -37,10 +37,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -205,11 +205,9 @@
         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
         sim_put_policy_type 201 ricsim_g1_1 2 testdata/OSC/sim_2.json
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 1  STD_2.0.0
-            sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
-            sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
-        fi
+        start_ric_simulators ricsim_g3 1  STD_2.0.0
+        sim_put_policy_type 201 ricsim_g3_1 STD_QOS_0_2_0 testdata/STD2/sim_qos.json
+        sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
         start_mr
 
@@ -221,83 +219,57 @@
             start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
         fi
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
-            prepare_consul_config      SDNC    ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC    ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
-                if [ $__httpx == "HTTPS" ]; then
+            #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
+            if [ $__httpx == "HTTPS" ]; then
+                use_a1pms_rest_https
+            else
+                use_a1pms_rest_http
+            fi
+
+            if [[ $interface != *"DMAAP"* ]]; then
+                echo "{}" > ".a1pms_config_incorrect.json"
+                a1pms_api_put_configuration 400 ".a1pms_config_incorrect.json"
+            fi
+
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
+            a1pms_api_get_configuration 200 ".a1pms_config.json"
+            if [ $__httpx == "HTTPS" ]; then
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_https
+                else
                     use_a1pms_rest_https
+                fi
+            else
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_http
                 else
                     use_a1pms_rest_http
                 fi
-
-                if [[ $interface != *"DMAAP"* ]]; then
-                    echo "{}" > ".consul_config_incorrect.json"
-                    a1pms_api_put_configuration 400 ".consul_config_incorrect.json"
-                fi
-
-                a1pms_api_put_configuration 200 ".consul_config.json"
-                a1pms_api_get_configuration 200 ".consul_config.json"
-                if [ $__httpx == "HTTPS" ]; then
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_https
-                    else
-                        use_a1pms_rest_https
-                    fi
-                else
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_http
-                    else
-                        use_a1pms_rest_http
-                    fi
-                fi
-
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
             fi
         fi
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:rics 3 300
+        a1pms_equal json:rics 3 300
 
-            a1pms_equal json:policy-types 5 120
+        a1pms_equal json:policy-types 5 120
 
-            a1pms_equal json:policies 0
+        a1pms_equal json:policies 0
 
-            a1pms_equal json:policy-instances 0
-        else
-            a1pms_equal json:rics 2 300
+        a1pms_equal json:policy-instances 0
 
-            a1pms_equal json:policy_schemas 3 120
+        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
 
-            a1pms_equal json:policy_types 3
-
-            a1pms_equal json:policies 0
-
-            a1pms_equal json:policy_ids 0
-        fi
-
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            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
 
 
@@ -393,117 +365,71 @@
         echo "############## RIC Repository ##############"
         echo "############################################"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
-        else
-            a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
-        fi
+        a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE  ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
+
         a1pms_api_get_rics 200 1 "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
 
         a1pms_api_get_rics 404 47
 
         a1pms_api_get_rics 404 "test"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_ric 200 me1_ricsim_g1_1 NORIC "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
+        a1pms_api_get_ric 200 me1_ricsim_g1_1 NORIC "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
 
-            a1pms_api_get_ric 200 me2_ricsim_g1_1 NORIC "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
+        a1pms_api_get_ric 200 me2_ricsim_g1_1 NORIC "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
 
-            a1pms_api_get_ric 200 me1_ricsim_g2_1 NORIC "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
+        a1pms_api_get_ric 200 me1_ricsim_g2_1 NORIC "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
 
-            a1pms_api_get_ric 200 me2_ricsim_g2_1 NORIC "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
+        a1pms_api_get_ric 200 me2_ricsim_g2_1 NORIC "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
 
-            a1pms_api_get_ric 200 me1_ricsim_g3_1 NORIC "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
+        a1pms_api_get_ric 200 me1_ricsim_g3_1 NORIC "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
 
-            a1pms_api_get_ric 200 me2_ricsim_g3_1 NORIC "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
+        a1pms_api_get_ric 200 me2_ricsim_g3_1 NORIC "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
 
-            a1pms_api_get_ric 200 NOME      ricsim_g1_1 "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
+        a1pms_api_get_ric 200 NOME      ricsim_g1_1 "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1,2:AVAILABLE"
 
-            a1pms_api_get_ric 200 NOME      ricsim_g2_1 "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
+        a1pms_api_get_ric 200 NOME      ricsim_g2_1 "ricsim_g2_1:me1_ricsim_g2_1,me2_ricsim_g2_1:EMPTYTYPE:AVAILABLE"
 
-            a1pms_api_get_ric 200 NOME      ricsim_g3_1 "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
+        a1pms_api_get_ric 200 NOME      ricsim_g3_1 "ricsim_g3_1:me1_ricsim_g3_1,me2_ricsim_g3_1:STD_QOS_0_2_0,STD_QOS2_0.1.0:AVAILABLE"
 
-            a1pms_api_get_ric 404 NOME test1
+        a1pms_api_get_ric 404 NOME test1
 
-            a1pms_api_get_ric 404 test NORIC
+        a1pms_api_get_ric 404 test NORIC
 
-            a1pms_api_get_ric 400 me1_ricsim_g1_1 ricsim_g1_1
+        a1pms_api_get_ric 400 me1_ricsim_g1_1 ricsim_g1_1
 
-            a1pms_api_get_ric 400 me1_ricsim_g1_1 TESTRIC
+        a1pms_api_get_ric 400 me1_ricsim_g1_1 TESTRIC
 
-            a1pms_api_get_ric 400 TESTME ricsim_g1_1
-
-        else
-            a1pms_api_get_ric 200 me1_ricsim_g1_1 ricsim_g1_1
-
-            a1pms_api_get_ric 200 me2_ricsim_g1_1 ricsim_g1_1
-
-            a1pms_api_get_ric 200 me1_ricsim_g2_1 ricsim_g2_1
-
-            a1pms_api_get_ric 200 me2_ricsim_g2_1 ricsim_g2_1
-
-            a1pms_api_get_ric 404 test
-        fi
+        a1pms_api_get_ric 400 TESTME ricsim_g1_1
 
         echo "############################################"
         echo "########### A1 Policy Management ###########"
         echo "############################################"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_type 200 1 testdata/OSC/1-a1pms-modified.json
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_type 200 2 testdata/OSC/2-a1pms-modified.json
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_type 200 STD_QOS_0_2_0 testdata/STD2/qos-a1pms-modified.json
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_type 200 STD_QOS2_0.1.0 testdata/STD2/qos2-a1pms-modified.json
+        deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
+        #Behaviour accepted for now
+        a1pms_api_get_policy_type 200 1 testdata/OSC/1-a1pms-modified.json
+        deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
+        #Behaviour accepted for now
+        a1pms_api_get_policy_type 200 2 testdata/OSC/2-a1pms-modified.json
+        deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
+        #Behaviour accepted for now
+        a1pms_api_get_policy_type 200 STD_QOS_0_2_0 testdata/STD2/qos-a1pms-modified.json
+        deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
+        #Behaviour accepted for now
+        a1pms_api_get_policy_type 200 STD_QOS2_0.1.0 testdata/STD2/qos2-a1pms-modified.json
 
-            a1pms_api_get_policy_type 404 3
-        else
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_schema 200 1 testdata/OSC/1-a1pms-modified.json
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_schema 200 2 testdata/OSC/2-a1pms-modified.json
+        a1pms_api_get_policy_type 404 3
 
-            a1pms_api_get_policy_schema 404 3
-        fi
-
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_schemas 404
-        else
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_schemas 200 NORIC testdata/OSC/1-a1pms-modified.json testdata/OSC/2-a1pms-modified.json NOFILE
-            deviation "TR9 - a1pms modify the type with type id - test combo $interface and $__httpx"
-            #Behaviour accepted for now
-            a1pms_api_get_policy_schemas 200 ricsim_g1_1 testdata/OSC/1-a1pms-modified.json testdata/OSC/2-a1pms-modified.json
-
-            a1pms_api_get_policy_schemas 200 ricsim_g2_1 NOFILE
-
-            a1pms_api_get_policy_schemas 404 test
-        fi
+        a1pms_api_get_policy_schemas 404
 
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_types 200 NORIC 1 2 EMPTY STD_QOS_0_2_0 STD_QOS2_0.1.0
-        else
-            a1pms_api_get_policy_types 200 NORIC 1 2 EMPTY
-        fi
+        a1pms_api_get_policy_types 200 NORIC 1 2 EMPTY STD_QOS_0_2_0 STD_QOS2_0.1.0
 
         a1pms_api_get_policy_types 200 ricsim_g1_1 1 2
 
         a1pms_api_get_policy_types 200 ricsim_g2_1 EMPTY
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_types 200 ricsim_g3_1 STD_QOS_0_2_0 STD_QOS2_0.1.0
-        fi
+        a1pms_api_get_policy_types 200 ricsim_g3_1 STD_QOS_0_2_0 STD_QOS2_0.1.0
 
         a1pms_api_get_policy_types 404 dummy-ric
 
@@ -511,11 +437,8 @@
 
         a1pms_api_put_service 201 "service10" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-        else
-            notificationurl=""
-        fi
+        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
+
         if [[ $interface != *"DMAAP"* ]]; then
             # Badly formatted json is not possible to send via dmaap
             a1pms_api_put_policy 400 "unregistered-service" ricsim_g1_1 1 2000 NOTRANSIENT $notificationurl testdata/OSC/pi_bad_template.json
@@ -538,74 +461,49 @@
         a1pms_api_put_policy 200 "service10" ricsim_g2_1 NOTYPE 5100 true $notificationurl testdata/STD/pi1_template.json
         a1pms_api_put_policy 200 "service10" ricsim_g2_1 NOTYPE 5100 false $notificationurl testdata/STD/pi1_template.json
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
-            a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
+        a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
+        a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
 
-            a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 true $notificationurl testdata/STD2/pi_qos2_template.json
-            a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 false $notificationurl testdata/STD2/pi_qos2_template.json
-        fi
+        a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 true $notificationurl testdata/STD2/pi_qos2_template.json
+        a1pms_api_put_policy 200 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 false $notificationurl testdata/STD2/pi_qos2_template.json
 
         a1pms_api_get_policy_status 404 1
         a1pms_api_get_policy_status 404 2
         VAL='NOT IN EFFECT'
         a1pms_api_get_policy_status 200 5000 OSC "$VAL" "false"
         a1pms_api_get_policy_status 200 5100 STD "UNDEFINED"
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_status 200 5200 STD2 EMPTY EMPTY
-        fi
+        a1pms_api_get_policy_status 200 5200 STD2 EMPTY EMPTY
 
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
         #a1pms_equal json:policies 2
         #Allow 3 for now
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policies 4
-        else
-            a1pms_equal json:policies 3
-        fi
+        a1pms_equal json:policies 4
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
         #a1pms_equal json:policy_ids 2
         #Allow 3 for now
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-instances 4
-        else
-            a1pms_equal json:policy_ids 3
-        fi
+        a1pms_equal json:policy-instances 4
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
         #a1pms_api_get_policy_ids 200 NORIC NOSERVICE NOTYPE 5000 5100
         #Allow policy create with unregistered service for now
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_ids 200 NORIC NOSERVICE NOTYPE 5000 5100 2000 5200
-        else
-            a1pms_api_get_policy_ids 200 NORIC NOSERVICE NOTYPE 5000 5100 2000
-        fi
+        a1pms_api_get_policy_ids 200 NORIC NOSERVICE NOTYPE 5000 5100 2000 5200
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
         #a1pms_api_get_policy_ids 200 ricsim_g1_1 NOSERVICE NOTYPE 5000
         #Allow policy create with unregistered service for now
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_ids 200 ricsim_g1_1 NOSERVICE NOTYPE 5000 2000
+        a1pms_api_get_policy_ids 200 ricsim_g1_1 NOSERVICE NOTYPE 5000 2000
 
-            a1pms_api_get_policy_ids 200 ricsim_g2_1 NOSERVICE NOTYPE 5100
+        a1pms_api_get_policy_ids 200 ricsim_g2_1 NOSERVICE NOTYPE 5100
 
-            a1pms_api_get_policy_ids 200 ricsim_g3_1 NOSERVICE NOTYPE 5200
+        a1pms_api_get_policy_ids 200 ricsim_g3_1 NOSERVICE NOTYPE 5200
 
-            a1pms_api_get_policy_ids 200 NORIC "service10" NOTYPE 5000 5100 5200
-        else
-            a1pms_api_get_policy_ids 200 ricsim_g1_1 NOSERVICE NOTYPE 5000 2000
-
-            a1pms_api_get_policy_ids 200 ricsim_g2_1 NOSERVICE NOTYPE 5100
-
-
-            a1pms_api_get_policy_ids 200 NORIC "service10" NOTYPE 5000 5100
-        fi
+        a1pms_api_get_policy_ids 200 NORIC "service10" NOTYPE 5000 5100 5200
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
@@ -616,27 +514,17 @@
 
         a1pms_api_get_policy_ids 200 NORIC NOSERVICE 2 NOID
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy_ids 200 NORIC NOSERVICE STD_QOS2_0.1.0 5200
-        fi
+        a1pms_api_get_policy_ids 200 NORIC NOSERVICE STD_QOS2_0.1.0 5200
 
         a1pms_api_get_policy_ids 200 ricsim_g2_1 NOSERVICE 1 NOID
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_api_get_policy 200 5000 testdata/OSC/pi1_template.json "service10" ricsim_g1_1 1 false $notificationurl
+        a1pms_api_get_policy 200 5000 testdata/OSC/pi1_template.json "service10" ricsim_g1_1 1 false $notificationurl
 
-            a1pms_api_get_policy 200 5100 testdata/STD/pi1_template.json "service10" ricsim_g2_1 NOTYPE false $notificationurl
+        a1pms_api_get_policy 200 5100 testdata/STD/pi1_template.json "service10" ricsim_g2_1 NOTYPE false $notificationurl
 
-            a1pms_api_get_policy 200 5200 testdata/STD2/pi_qos2_template.json "service10" ricsim_g3_1 STD_QOS2_0.1.0 false $notificationurl
+        a1pms_api_get_policy 200 5200 testdata/STD2/pi_qos2_template.json "service10" ricsim_g3_1 STD_QOS2_0.1.0 false $notificationurl
 
-            a1pms_api_get_policies 200 ricsim_g1_1 "service10" 1 5000 ricsim_g1_1 "service10" 1 false $notificationurl testdata/OSC/pi1_template.json
-        else
-            a1pms_api_get_policy 200 5000 testdata/OSC/pi1_template.json
-
-            a1pms_api_get_policy 200 5100 testdata/STD/pi1_template.json
-
-            a1pms_api_get_policies 200 ricsim_g1_1 "service10" 1 5000 ricsim_g1_1 "service10" 1 testdata/OSC/pi1_template.json
-        fi
+        a1pms_api_get_policies 200 ricsim_g1_1 "service10" 1 5000 ricsim_g1_1 "service10" 1 false $notificationurl testdata/OSC/pi1_template.json
 
         deviation "TR10 - a1pms allows policy creation on unregistered service (side effect of orig. problem)- test combo $interface and $__httpx"
         #kept until decision
@@ -648,33 +536,20 @@
 
         a1pms_api_delete_policy 204 5000
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-
-            a1pms_api_delete_policy 204 5200
-        fi
+        a1pms_api_delete_policy 204 5200
 
         a1pms_equal json:policies 1
 
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-instances 1
-        else
-            a1pms_equal json:policy_ids 1
-        fi
+        a1pms_equal json:policy-instances 1
 
         a1pms_api_delete_policy 204 5100
 
         a1pms_equal json:policies 0
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-instances 0
-        else
-            a1pms_equal json:policy_ids 0
-        fi
+        a1pms_equal json:policy-instances 0
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            cr_equal 0 received_callbacks 3
-        fi
+        cr_equal 0 received_callbacks 3
 
         if [[ $interface = *"DMAAP"* ]]; then
             mr_greater requests_submitted 0
@@ -691,15 +566,11 @@
             if [[ $interface = *"SDNC"* ]]; then
                 sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
                 sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
-                if [ "$A1PMS_VERSION" == "V2" ]; then
-                    sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
-                fi
+                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
             else
                 sim_contains_str ricsim_g1_1 remote_hosts $A1PMS_APP_NAME
                 sim_contains_str ricsim_g2_1 remote_hosts $A1PMS_APP_NAME
-                if [ "$A1PMS_VERSION" == "V2" ]; then
-                    sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
-                fi
+                sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
             fi
         fi
 
diff --git a/test/auto-test/FTC110.sh b/test/auto-test/FTC110.sh
index b9168cd..e3f3c85 100755
--- a/test/auto-test/FTC110.sh
+++ b/test/auto-test/FTC110.sh
@@ -21,7 +21,7 @@
 TC_ONELINE_DESCR="Testing of service registration timeouts and keepalive"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM KUBEPROXY NGW"
@@ -31,10 +31,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -57,9 +57,7 @@
 
 start_ric_simulators ricsim_g1 1  OSC_2.1.0
 start_ric_simulators ricsim_g2 1  STD_1.1.3
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    start_ric_simulators ricsim_g3 1  STD_2.0.0
-fi
+start_ric_simulators ricsim_g3 1  STD_2.0.0
 
 start_mr
 
@@ -73,25 +71,13 @@
 
 start_a1pms NORPOXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        __CONFIG_HEADER="HEADER"
-    fi
-fi
-prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 set_a1pms_debug
@@ -106,9 +92,7 @@
 #Print simulator interface version
 sim_print ricsim_g1_1 interface
 sim_print ricsim_g2_1 interface
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_print ricsim_g3_1 interface
-fi
+sim_print ricsim_g3_1 interface
 
 a1pms_api_put_service 201 "service1" 15 "$CR_SERVICE_APP_PATH_0/service1"
 
@@ -190,42 +174,23 @@
 
 sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
+sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
-    sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
+a1pms_equal json:rics 3 300
 
-    a1pms_equal json:rics 3 300
+#a1pms_equal json:policy_schemas 2 120
 
-    #a1pms_equal json:policy_schemas 2 120
+a1pms_equal json:policy-types 3 120
 
-    a1pms_equal json:policy-types 3 120
+a1pms_equal json:policies 0
 
-    a1pms_equal json:policies 0
-else
-    a1pms_equal json:rics 2 300
-
-    a1pms_equal json:policy_schemas 2 120
-
-    a1pms_equal json:policy_types 2
-
-    a1pms_equal json:policies 0
-fi
-
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 a1pms_api_put_policy 201 "service10" ricsim_g1_1 1 5000 NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json
 a1pms_api_put_policy 201 "service10" ricsim_g2_1 NOTYPE 5100 NOTRANSIENT $notificationurl testdata/STD/pi1_template.json
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
-    a1pms_equal json:policies 3
-else
-    a1pms_equal json:policies 2
-fi
+a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5200 NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json
+a1pms_equal json:policies 3
 
 sim_equal ricsim_g1_1 num_instances 1
 sim_equal ricsim_g2_1 num_instances 1
@@ -233,38 +198,24 @@
 a1pms_api_put_policy 201 "service10" ricsim_g1_1 1 5001 true $notificationurl testdata/OSC/pi1_template.json
 a1pms_api_put_policy 201 "service10" ricsim_g2_1 NOTYPE 5101 true $notificationurl testdata/STD/pi1_template.json
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5201 true $notificationurl testdata/STD2/pi_qos2_template.json
-    a1pms_equal json:policies 6
-else
-    a1pms_equal json:policies 4
-fi
+a1pms_api_put_policy 201 "service10" ricsim_g3_1 STD_QOS2_0.1.0 5201 true $notificationurl testdata/STD2/pi_qos2_template.json
+a1pms_equal json:policies 6
 
 sim_equal ricsim_g1_1 num_instances 2
 sim_equal ricsim_g2_1 num_instances 2
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_equal ricsim_g3_1 num_instances 2
-fi
+sim_equal ricsim_g3_1 num_instances 2
 
 sim_post_delete_instances 200 ricsim_g1_1
 sim_post_delete_instances 200 ricsim_g2_1
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_post_delete_instances 200 ricsim_g3_1
-fi
+sim_post_delete_instances 200 ricsim_g3_1
 
 #Wait for recreate of non transient policy
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_equal json:policies 3 180
-else
-    a1pms_equal json:policies 2 180
-fi
+a1pms_equal json:policies 3 180
 
 sim_equal ricsim_g1_1 num_instances 1
 sim_equal ricsim_g2_1 num_instances 1
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_equal ricsim_g3_1 num_instances 1
-fi
+sim_equal ricsim_g3_1 num_instances 1
 
 a1pms_api_put_service 200 "service10" 10 "$CR_SERVICE_APP_PATH_0/service10"
 
@@ -273,9 +224,7 @@
 
 sim_equal ricsim_g1_1 num_instances 0
 sim_equal ricsim_g2_1 num_instances 0
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    sim_equal ricsim_g3_1 num_instances 0
-fi
+sim_equal ricsim_g3_1 num_instances 0
 
 a1pms_api_get_service_ids 200
 
diff --git a/test/auto-test/FTC1100.sh b/test/auto-test/FTC1100.sh
index 932cddb..2c3cd3b 100755
--- a/test/auto-test/FTC1100.sh
+++ b/test/auto-test/FTC1100.sh
@@ -40,7 +40,7 @@
 CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -150,9 +150,7 @@
     start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
 fi
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    start_ric_simulators ricsim_g3 4  STD_2.0.0
-fi
+start_ric_simulators ricsim_g3 4  STD_2.0.0
 
 start_cr 1
 
diff --git a/test/auto-test/FTC150.sh b/test/auto-test/FTC150.sh
index b88daf5..a0110d9 100755
--- a/test/auto-test/FTC150.sh
+++ b/test/auto-test/FTC150.sh
@@ -33,7 +33,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -66,9 +66,7 @@
 
         start_ric_simulators ricsim_g1 1  OSC_2.1.0
         start_ric_simulators ricsim_g2 1  STD_1.1.3
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 1  STD_2.0.0
-        fi
+        start_ric_simulators ricsim_g3 1  STD_2.0.0
 
         start_sdnc
 
diff --git a/test/auto-test/FTC1800.sh b/test/auto-test/FTC1800.sh
index 472444f..8447049 100755
--- a/test/auto-test/FTC1800.sh
+++ b/test/auto-test/FTC1800.sh
@@ -34,7 +34,7 @@
 CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
diff --git a/test/auto-test/FTC2001.sh b/test/auto-test/FTC2001.sh
index 63ab798..3b53e8e 100755
--- a/test/auto-test/FTC2001.sh
+++ b/test/auto-test/FTC2001.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Testing southbound proxy for A1PMS and ICS"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM ICS PRODSTUB HTTPPROXY NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM ICS PRODSTUB HTTPPROXY NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES=" MR CR A1PMS PRODSTUB RICSIM CP ICS HTTPPROXY KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -52,12 +52,7 @@
 use_ics_rest_https
 use_prod_stub_https
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-   echo "A1PMS VERSION 2 (V2) is required"
-   exit 1
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 clean_environment
 
@@ -79,26 +74,14 @@
 
 start_a1pms PROXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-    __CONFIG_HEADER="HEADER"
-    fi
-fi
 
-prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 start_cr 1
diff --git a/test/auto-test/FTC2002.sh b/test/auto-test/FTC2002.sh
index 8143de3..3774b69 100755
--- a/test/auto-test/FTC2002.sh
+++ b/test/auto-test/FTC2002.sh
@@ -32,7 +32,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON "
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON "
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER"
 
@@ -72,9 +72,7 @@
 
         start_ric_simulators ricsim_g1 1  OSC_2.1.0
         start_ric_simulators ricsim_g2 1  STD_1.1.3
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 1  STD_2.0.0
-        fi
+        start_ric_simulators ricsim_g3 1  STD_2.0.0
 
         start_sdnc
 
diff --git a/test/auto-test/FTC2003.sh b/test/auto-test/FTC2003.sh
index e04e8b5..c98eeac 100755
--- a/test/auto-test/FTC2003.sh
+++ b/test/auto-test/FTC2003.sh
@@ -33,7 +33,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
diff --git a/test/auto-test/FTC300.sh b/test/auto-test/FTC300.sh
index 1a6d686..b260c55 100755
--- a/test/auto-test/FTC300.sh
+++ b/test/auto-test/FTC300.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Resync 10000 policies using OSC and STD interface"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -94,9 +94,7 @@
 
         start_ric_simulators ricsim_g2 4 STD_1.1.3
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 4  STD_2.0.0
-        fi
+        start_ric_simulators ricsim_g3 4  STD_2.0.0
 
         start_mr
 
@@ -112,48 +110,36 @@
 
         set_a1pms_debug
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
-            prepare_consul_config      SDNC    ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC    ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
-                if [ $__httpx == "HTTPS" ]; then
+            #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
+            if [ $__httpx == "HTTPS" ]; then
+                use_a1pms_rest_https
+            else
+                use_a1pms_rest_http
+            fi
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
+            if [ $__httpx == "HTTPS" ]; then
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_https
+                else
                     use_a1pms_rest_https
+                fi
+            else
+                if [[ $interface = *"DMAAP"* ]]; then
+                    use_a1pms_dmaap_http
                 else
                     use_a1pms_rest_http
                 fi
-                a1pms_api_put_configuration 200 ".consul_config.json"
-                if [ $__httpx == "HTTPS" ]; then
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_https
-                    else
-                        use_a1pms_rest_https
-                    fi
-                else
-                    if [[ $interface = *"DMAAP"* ]]; then
-                        use_a1pms_dmaap_http
-                    else
-                        use_a1pms_rest_http
-                    fi
-                fi
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
             fi
         fi
 
@@ -165,28 +151,18 @@
 
         sim_print ricsim_g2_1 interface
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            sim_print ricsim_g3_1 interface
-        fi
+        sim_print ricsim_g3_1 interface
 
         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-types 2 120  #Wait for the a1pms to refresh types from the simulator
-        else
-            a1pms_equal json:policy_types 2 120  #Wait for the a1pms to refresh types from the simulator
-        fi
+        a1pms_equal json:policy-types 2 120  #Wait for the a1pms to refresh types from the simulator
 
         a1pms_api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
         START_ID=2000
         NUM_POLICIES=10000  # Must be at least 100
-   NUM_POLICIES=110
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-        else
-            notificationurl=""
-        fi
+
+        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
         if [[ $interface == *"BATCH"* ]]; then
             a1pms_api_put_policy_batch 201 "serv1" ricsim_g1_1 1 $START_ID NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json $NUM_POLICIES
diff --git a/test/auto-test/FTC3000.sh b/test/auto-test/FTC3000.sh
index 9f2a609..2eb1d9f 100755
--- a/test/auto-test/FTC3000.sh
+++ b/test/auto-test/FTC3000.sh
@@ -34,7 +34,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
diff --git a/test/auto-test/FTC3001.sh b/test/auto-test/FTC3001.sh
index ca31ab7..7123665 100755
--- a/test/auto-test/FTC3001.sh
+++ b/test/auto-test/FTC3001.sh
@@ -34,7 +34,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
diff --git a/test/auto-test/FTC310.sh b/test/auto-test/FTC310.sh
index ba07999..6d024d7 100755
--- a/test/auto-test/FTC310.sh
+++ b/test/auto-test/FTC310.sh
@@ -18,18 +18,18 @@
 #
 
 
-TC_ONELINE_DESCR="Resync of RIC via changes in the consul config or pushed config"
+TC_ONELINE_DESCR="Resync of RIC via changes in the pushed config"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM KUBEPROXY"
 
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL"
+CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER"
 
@@ -39,126 +39,81 @@
 
 #### TEST BEGIN ####
 
+generate_policy_uuid
+
+# Clean container and start all needed containers #
+clean_environment
+
+start_kube_proxy
+
+start_a1pms NOPROXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
+
+set_a1pms_trace
+
+# Create service to be able to receive events when rics becomes available
+# Must use rest towards the a1pms since dmaap is not configured yet
+a1pms_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
+start_ric_simulators ricsim_g2 1  STD_1.1.3
+start_ric_simulators ricsim_g3 1  STD_2.0.0
+
+start_mr
+
+start_cr 1
+
+start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
+
+
+
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
+
+a1pms_api_put_configuration 200 ".a1pms_config.json"
+a1pms_api_get_configuration 200 ".a1pms_config.json"
+
+a1pms_equal json:rics 3 300
+
+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
+
+# Add an STD RIC and check
+start_ric_simulators ricsim_g2 2  STD_1.1.3
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
+a1pms_api_put_configuration 200 ".a1pms_config.json"
+a1pms_api_get_configuration 200 ".a1pms_config.json"
+
+a1pms_equal json:rics 4 120
+
+cr_equal 0 received_callbacks 4 120
+
+cr_api_check_all_sync_events 200 0 ric-registration ricsim_g2_2
+
+check_a1pms_logs
+
+
+# Remove one RIC RIC and check
+start_ric_simulators ricsim_g2 1  STD_1.1.3
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
+a1pms_api_put_configuration 200 ".a1pms_config.json"
+a1pms_api_get_configuration 200 ".a1pms_config.json"
+
+a1pms_equal json:rics 3 120
+
+cr_equal 0 received_callbacks 4 120
+
 if [ "$A1PMS_VERSION" == "V2" ]; then
-    TESTED_VARIANTS="CONSUL NOCONSUL"
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        TESTED_VARIANTS="NOCONSUL"
-    fi
-else
-    TESTED_VARIANTS="CONSUL"
+    a1pms_api_get_configuration 200 ".a1pms_config.json"
 fi
 
-for consul_conf in $TESTED_VARIANTS ; do
-    generate_policy_uuid
+check_a1pms_logs
 
-    # Clean container and start all needed containers #
-    clean_environment
+store_logs          END_$consul_conf
 
-    start_kube_proxy
-
-    start_a1pms NOPROXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
-
-    set_a1pms_trace
-
-    # Create service to be able to receive events when rics becomes available
-    # Must use rest towards the a1pms since dmaap is not configured yet
-    a1pms_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
-    start_ric_simulators ricsim_g2 1  STD_1.1.3
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        start_ric_simulators ricsim_g3 1  STD_2.0.0
-    fi
-
-    start_mr
-
-    start_cr 1
-
-    start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
-
-    if [ $consul_conf == "CONSUL" ]; then
-        start_consul_cbs
-    fi
-
-    __CONFIG_HEADER="NOHEADER"
-    if [ $RUNMODE == "KUBE" ]; then
-        __CONFIG_HEADER="HEADER"
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            __CONFIG_HEADER="HEADER"
-        fi
-    fi
-    prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
-
-    if [ "$A1PMS_VERSION" == "V2" ] && [ $consul_conf == "NOCONSUL" ]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-        a1pms_api_get_configuration 200 ".consul_config.json"
-    else
-        consul_config_app                  ".consul_config.json"
-    fi
-
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:rics 3 300
-
-        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
-    else
-        a1pms_equal json:rics 2 300
-    fi
-
-    # Add an STD RIC and check
-    start_ric_simulators ricsim_g2 2  STD_1.1.3
-
-    prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
-    if [ "$A1PMS_VERSION" == "V2" ] && [ $consul_conf == "NOCONSUL" ]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-        a1pms_api_get_configuration 200 ".consul_config.json"
-    else
-        consul_config_app                  ".consul_config.json"
-    fi
-
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:rics 4 120
-
-        cr_equal 0 received_callbacks 4 120
-
-        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g2_2
-    else
-        a1pms_equal json:rics 3 120
-    fi
-
-    check_a1pms_logs
-
-
-    # Remove one RIC RIC and check
-    start_ric_simulators ricsim_g2 1  STD_1.1.3
-
-    prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
-    if [ "$A1PMS_VERSION" == "V2" ] && [ $consul_conf == "NOCONSUL" ]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-        a1pms_api_get_configuration 200 ".consul_config.json"
-    else
-        consul_config_app                  ".consul_config.json"
-    fi
-
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:rics 3 120
-
-        cr_equal 0 received_callbacks 4 120
-    else
-        a1pms_equal json:rics 2 120
-    fi
-
-    if [ "$A1PMS_VERSION" == "V2" ] && [ $consul_conf == "NOCONSUL" ]; then
-        a1pms_api_get_configuration 200 ".consul_config.json"
-    fi
-
-    check_a1pms_logs
-
-    store_logs          END_$consul_conf
-done
 
 
 #### TEST COMPLETE ####
diff --git a/test/auto-test/FTC350.sh b/test/auto-test/FTC350.sh
index 379eb04..2b677d0 100755
--- a/test/auto-test/FTC350.sh
+++ b/test/auto-test/FTC350.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Change supported policy types and reconfigure rics"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL"
+CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -75,39 +75,26 @@
 
     start_mr
 
-    if [ $RUNMODE == "DOCKER" ]; then
-        if [[ "$A1PMS_FEATURE_LEVEL" != *"NOCONSUL"* ]]; then
-            start_consul_cbs
-        fi
-    fi
 
-    __CONFIG_HEADER="NOHEADER"
-    if [ $RUNMODE == "KUBE" ]; then
-        __CONFIG_HEADER="HEADER"
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        __CONFIG_HEADER="HEADER"
-        fi
-    fi
 
     # Create first config
     if [[ $interface = *"SDNC"* ]]; then
         start_sdnc
-        prepare_consul_config      SDNC  ".consul_config_initial.json"  $__CONFIG_HEADER
+        prepare_a1pms_config      SDNC  ".a1pms_config_initial.json"
     else
-        prepare_consul_config      NOSDNC  ".consul_config_initial.json" $__CONFIG_HEADER
+        prepare_a1pms_config      NOSDNC  ".a1pms_config_initial.json"
     fi
 
     # Create 2nd config and save for later
     start_ric_simulators ricsim_g1 $NUM_RICS OSC_2.1.0
 
     if [[ $interface = *"SDNC"* ]]; then
-        prepare_consul_config      SDNC  ".consul_config_all.json" $__CONFIG_HEADER
+        prepare_a1pms_config      SDNC  ".a1pms_config_all.json"
     else
-        prepare_consul_config      NOSDNC  ".consul_config_all.json" $__CONFIG_HEADER
+        prepare_a1pms_config      NOSDNC  ".a1pms_config_all.json"
     fi
 
-    if [ $RUNMODE == "KUBE" ] && [[ "$A1PMS_FEATURE_LEVEL" == *"INITIALCONFIGMAP"* ]]; then
+    if [ $RUNMODE == "KUBE" ]; then
         start_a1pms NORPOXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/application2.yaml
     else
         start_a1pms NORPOXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
@@ -124,21 +111,8 @@
     a1pms_api_put_service 201 "ric-registration" 0 "$CR_SERVICE_APP_PATH_0/ric-registration"
 
     #Load first config
-    if [ $RUNMODE == "KUBE" ]; then
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"INITIALCONFIGMAP"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_initial.json"
-            a1pms_api_get_configuration 200              ".consul_config_initial.json"
-        else
-            a1pms_load_config                      ".consul_config_initial.json"
-        fi
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_initial.json"
-            a1pms_api_get_configuration 200              ".consul_config_initial.json"
-        else
-            consul_config_app                      ".consul_config_initial.json"
-        fi
-    fi
+    a1pms_api_put_configuration 200              ".a1pms_config_initial.json"
+    a1pms_api_get_configuration 200              ".a1pms_config_initial.json"
 
     for ((i=1; i<=${NUM_RICS}; i++))
     do
@@ -148,10 +122,8 @@
     # All sims running but 2 are not configured in consul
     a1pms_equal json:rics 8 300
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        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
+    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
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:NOTYPE:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:NOTYPE:???? \
@@ -192,31 +164,17 @@
     sim_put_policy_type 201 ricsim_g1_7 5 testdata/OSC/sim_5.json
     sim_put_policy_type 201 ricsim_g1_8 5 testdata/OSC/sim_5.json
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:policy-types 5 120
+    a1pms_equal json:policy-types 5 120
 
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
-    else
-        a1pms_equal json:policy_types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy_types?ric=ricsim_g1_1 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_2 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_3 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_4 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_5 5 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_6 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_7 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 2 120
-    fi
+    echo "Check the number of types in the a1pms for each ric"
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
@@ -227,68 +185,33 @@
                              ricsim_g1_7:me1_ricsim_g1_7,me2_ricsim_g1_7:3,4,5:???? \
                              ricsim_g1_8:me1_ricsim_g1_8,me2_ricsim_g1_8:4,5:???? "
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        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
+    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
 
     #Load config with all rics
-    if [ $RUNMODE == "KUBE" ]; then
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"INITIALCONFIGMAP"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_all.json"
-            a1pms_api_get_configuration 200              ".consul_config_all.json"
-        else
-            a1pms_load_config                      ".consul_config_all.json"
-        fi
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            a1pms_api_put_configuration 200               ".consul_config_all.json"
-            a1pms_api_get_configuration 200               ".consul_config_all.json"
-        else
-            consul_config_app                       ".consul_config_all.json"
-        fi
-    fi
+    a1pms_api_put_configuration 200               ".a1pms_config_all.json"
+    a1pms_api_get_configuration 200               ".a1pms_config_all.json"
 
     a1pms_equal json:rics 10 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        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
+    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
 
     sim_put_policy_type 201 ricsim_g1_9 5 testdata/OSC/sim_5.json
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
+    a1pms_equal json:policy-types 5 120
 
-        a1pms_equal json:policy-types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
-    else
-
-        a1pms_equal json:policy_types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy_types?ric=ricsim_g1_1 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_2 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_3 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_4 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_5 5 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_6 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_7 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_9 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_10 0 120
-    fi
+    echo "Check the number of types in the a1pms for each ric"
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
@@ -301,80 +224,39 @@
                              ricsim_g1_9:me1_ricsim_g1_9,me2_ricsim_g1_9:5:???? \
                              ricsim_g1_10:me1_ricsim_g1_10,me2_ricsim_g1_10:NOTYPE:???? "
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        cr_equal 0 received_callbacks?id=ric-registration 19 120
-        cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_9
-    fi
+    cr_equal 0 received_callbacks?id=ric-registration 19 120
+    cr_api_check_all_sync_events 200 0 ric-registration ricsim_g1_9
 
     #No policy type in sim #10
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:policy-types 5
-    else
-        a1pms_equal json:policy_types 5
-    fi
+    a1pms_equal json:policy-types 5
 
     a1pms_api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/serv1"
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-    else
-        notificationurl=""
-    fi
+    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
     sleep_wait 120
 
     # Load config with reduced number of rics
-    if [ $RUNMODE == "KUBE" ]; then
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"INITIALCONFIGMAP"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_initial.json"
-            a1pms_api_get_configuration 200              ".consul_config_initial.json"
-        else
-            a1pms_load_config                      ".consul_config_initial.json"
-        fi
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_initial.json"
-            a1pms_api_get_configuration 200              ".consul_config_initial.json"
-        else
-            consul_config_app                      ".consul_config_initial.json"
-        fi
-    fi
+    a1pms_api_put_configuration 200              ".a1pms_config_initial.json"
+    a1pms_api_get_configuration 200              ".a1pms_config_initial.json"
 
     a1pms_equal json:rics 8 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        cr_equal 0 received_callbacks?id=ric-registration 19 120
-        cr_api_check_all_sync_events 200 0 ric-registration EMPTY
-    fi
+    cr_equal 0 received_callbacks?id=ric-registration 19 120
+    cr_api_check_all_sync_events 200 0 ric-registration EMPTY
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
+    a1pms_equal json:policy-types 5 120
 
-        a1pms_equal json:policy-types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
-    else
-
-        a1pms_equal json:policy_types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy_types?ric=ricsim_g1_1 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_2 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_3 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_4 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_5 5 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_6 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_7 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 2 120
-    fi
+    echo "Check the number of types in the a1pms for each ric"
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
@@ -387,64 +269,29 @@
 
     sleep_wait 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:policy-instances 0
-    else
-        a1pms_equal json:policy_ids 0
-    fi
+    a1pms_equal json:policy-instances 0
 
     a1pms_api_get_policy_types 404 ricsim_g1_9
 
     # Load config with all rics
-    if [ $RUNMODE == "KUBE" ]; then
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"INITIALCONFIGMAP"* ]]; then
-            a1pms_api_put_configuration 200              ".consul_config_all.json"
-            a1pms_api_get_configuration 200              ".consul_config_all.json"
-        else
-            a1pms_load_config                      ".consul_config_all.json"
-        fi
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            a1pms_api_put_configuration 200               ".consul_config_all.json"
-            a1pms_api_get_configuration 200               ".consul_config_all.json"
-        else
-            consul_config_app                      ".consul_config_all.json"
-        fi
-    fi
+    a1pms_api_put_configuration 200              ".a1pms_config_all.json"
+    a1pms_api_get_configuration 200              ".a1pms_config_all.json"
 
     a1pms_equal json:rics 10 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
+    a1pms_equal json:policy-types 5 120
 
-        a1pms_equal json:policy-types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
-    else
-
-        a1pms_equal json:policy_types 5 120
-
-        echo "Check the number of types in the a1pms for each ric"
-        a1pms_equal json:policy_types?ric=ricsim_g1_1 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_2 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_3 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_4 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_5 5 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_6 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_7 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_9 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_10 0 120
-    fi
+    echo "Check the number of types in the a1pms for each ric"
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_4 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_5 5 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_6 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_7 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
@@ -459,11 +306,7 @@
 
     sleep_wait 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:policy-instances 0
-    else
-        a1pms_equal json:policy_ids 0
-    fi
+    a1pms_equal json:policy-instances 0
 
     sim_equal ricsim_g1_9 num_instances 0
 
@@ -475,35 +318,18 @@
 
     sleep_wait 120
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
+    a1pms_equal json:policy-types 5 120
 
-        a1pms_equal json:policy-types 5 120
-
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_4 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_5 4 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_6 3 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_7 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
-    else
-
-        a1pms_equal json:policy_types 5 120
-
-        a1pms_equal json:policy_types?ric=ricsim_g1_1 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_2 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_3 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_4 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_5 4 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_6 3 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_7 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 2 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_9 1 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_10 0 120
-    fi
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_1 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_2 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_3 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_4 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_5 4 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_6 3 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_7 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 2 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_9 1 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_10 0 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                              ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
@@ -518,13 +344,8 @@
 
     sim_delete_policy_type 204 ricsim_g1_8 4
 
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        a1pms_equal json:policy-types 5 120
-        a1pms_equal json:policy-types?ric_id=ricsim_g1_8 1 120
-    else
-        a1pms_equal json:policy_types 5 120
-        a1pms_equal json:policy_types?ric=ricsim_g1_8 1 120
-    fi
+    a1pms_equal json:policy-types 5 120
+    a1pms_equal json:policy-types?ric_id=ricsim_g1_8 1 120
 
     a1pms_api_get_rics 200 NOTYPE "ricsim_g1_1:me1_ricsim_g1_1,me2_ricsim_g1_1:1:???? \
                             ricsim_g1_2:me1_ricsim_g1_2,me2_ricsim_g1_2:1,2:???? \
diff --git a/test/auto-test/FTC4000.sh b/test/auto-test/FTC4000.sh
index c572ca5..d8783ba 100755
--- a/test/auto-test/FTC4000.sh
+++ b/test/auto-test/FTC4000.sh
@@ -33,7 +33,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
diff --git a/test/auto-test/FTC800.sh b/test/auto-test/FTC800.sh
index 786832a..1ecd5ff 100755
--- a/test/auto-test/FTC800.sh
+++ b/test/auto-test/FTC800.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Create 10000 policies in sequence using http/https and a1pms REST/DMAAP with/without SDNC controller"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -86,9 +86,7 @@
 
         start_ric_simulators ricsim_g1 1 OSC_2.1.0
         start_ric_simulators ricsim_g2 1 STD_1.1.3
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            start_ric_simulators ricsim_g3 1  STD_2.0.0
-        fi
+        start_ric_simulators ricsim_g3 1  STD_2.0.0
 
         start_mr
 
@@ -107,34 +105,20 @@
         mr_equal requests_submitted 0
 
         sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
-        fi
+        sim_put_policy_type 201 ricsim_g3_1 STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
         if [[ $interface == "SDNC" ]]; then
             start_sdnc
-            prepare_consul_config      SDNC    ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC    ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                a1pms_api_put_configuration 200 ".consul_config.json"
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
-            fi
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
         fi
 
         sleep_wait 120 "Let A1PMS cofiguration take effect"
@@ -143,23 +127,13 @@
 
         sim_print ricsim_g1_1 interface
         sim_print ricsim_g2_1 interface
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            sim_print ricsim_g3_1 interface
-        fi
+        sim_print ricsim_g3_1 interface
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-types 3 300  #Wait for the a1pms to refresh types from the simulators
-        else
-            a1pms_equal json:policy_types 2 300  #Wait for the a1pms to refresh types from the simulators
-        fi
+        a1pms_equal json:policy-types 3 300  #Wait for the a1pms to refresh types from the simulators
 
         a1pms_api_put_service 201 "serv1" 3600 "$CR_SERVICE_APP_PATH_0/1"
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-        else
-            notificationurl=""
-        fi
+        notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
         start_timer "Create polices in OSC via a1pms REST and $interface using "$__httpx
         a1pms_api_put_policy 201 "serv1" ricsim_g1_1 1 $START_ID NOTRANSIENT $notificationurl testdata/OSC/pi1_template.json $NUM_POLICIES
@@ -175,16 +149,16 @@
 
         sim_equal ricsim_g2_1 num_instances $NUM_POLICIES
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
 
-            START_ID=$(($START_ID+$NUM_POLICIES))
 
-            start_timer "Create polices in STD 2 via a1pms REST and $interface using "$__httpx
-            a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
-            print_timer "Create polices in STD via a1pms REST and $interface using "$__httpx
+        START_ID=$(($START_ID+$NUM_POLICIES))
 
-            sim_equal ricsim_g3_1 num_instances $NUM_POLICIES
-        fi
+        start_timer "Create polices in STD 2 via a1pms REST and $interface using "$__httpx
+        a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
+        print_timer "Create polices in STD via a1pms REST and $interface using "$__httpx
+
+        sim_equal ricsim_g3_1 num_instances $NUM_POLICIES
+
 
         if [ $__httpx == "HTTPS" ]; then
             echo "Using secure ports towards dmaap"
@@ -210,16 +184,15 @@
 
         sim_equal ricsim_g2_1 num_instances $((2*$NUM_POLICIES))
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
 
-            START_ID=$(($START_ID+$NUM_POLICIES))
+        START_ID=$(($START_ID+$NUM_POLICIES))
 
-            start_timer "Create polices in STD 2 via a1pms DMAAP, one by one, and $interface using "$__httpx
-            a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
-            print_timer "Create polices in STD via a1pms DMAAP, one by one, and $interface using "$__httpx
+        start_timer "Create polices in STD 2 via a1pms DMAAP, one by one, and $interface using "$__httpx
+        a1pms_api_put_policy 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
+        print_timer "Create polices in STD via a1pms DMAAP, one by one, and $interface using "$__httpx
 
-            sim_equal ricsim_g3_1 num_instances $((2*$NUM_POLICIES))
-        fi
+        sim_equal ricsim_g3_1 num_instances $((2*$NUM_POLICIES))
+
 
         START_ID=$(($START_ID+$NUM_POLICIES))
 
@@ -237,29 +210,24 @@
 
         sim_equal ricsim_g2_1 num_instances $((3*$NUM_POLICIES))
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
 
-            START_ID=$(($START_ID+$NUM_POLICIES))
+        START_ID=$(($START_ID+$NUM_POLICIES))
 
-            start_timer "Create polices in STD via a1pms DMAAP in batch and $interface using "$__httpx
-            a1pms_api_put_policy_batch 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
-            print_timer "Create polices in STD via a1pms DMAAP in batch and $interface using "$__httpx
+        start_timer "Create polices in STD via a1pms DMAAP in batch and $interface using "$__httpx
+        a1pms_api_put_policy_batch 201 "serv1" ricsim_g3_1 STD_QOS2_0.1.0 $START_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_POLICIES
+        print_timer "Create polices in STD via a1pms DMAAP in batch and $interface using "$__httpx
 
-            sim_equal ricsim_g3_1 num_instances $((3*$NUM_POLICIES))
-        fi
+        sim_equal ricsim_g3_1 num_instances $((3*$NUM_POLICIES))
+
 
         if [ $interface == "SDNC" ]; then
             sim_contains_str ricsim_g1_1 remote_hosts $SDNC_APP_NAME
             sim_contains_str ricsim_g2_1 remote_hosts $SDNC_APP_NAME
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
-            fi
+            sim_contains_str ricsim_g3_1 remote_hosts $SDNC_APP_NAME
         else
             sim_contains_str ricsim_g1_1 remote_hosts $A1PMS_APP_NAME
             sim_contains_str ricsim_g2_1 remote_hosts $A1PMS_APP_NAME
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
-            fi
+            sim_contains_str ricsim_g3_1 remote_hosts $A1PMS_APP_NAME
         fi
 
         check_a1pms_logs
diff --git a/test/auto-test/FTC805.sh b/test/auto-test/FTC805.sh
index 01a774a..e652757 100755
--- a/test/auto-test/FTC805.sh
+++ b/test/auto-test/FTC805.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="A1PMS Create 10000 policies and restart, test polices persistency"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -58,11 +58,7 @@
 
 generate_policy_uuid
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 for __httpx in $TESTED_PROTOCOLS ; do
     for interface in $TESTED_VARIANTS ; do
@@ -106,31 +102,19 @@
 
         set_a1pms_debug
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
-            prepare_consul_config      SDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC  ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json"  $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                a1pms_api_put_configuration 200 ".consul_config.json"
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
-            fi
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
         fi
 
         start_cr 1
@@ -150,22 +134,14 @@
             sim_put_policy_type 201 ricsim_g1_$i STD_QOS_0_2_0 testdata/STD2/sim_qos.json
         done
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-types 1 300  #Wait for the a1pms to refresh types from the simulator
-        else
-            a1pms_equal json:policy_types 1 300  #Wait for the a1pms to refresh types from the simulator
-        fi
+        a1pms_equal json:policy-types 1 300  #Wait for the a1pms to refresh types from the simulator
 
         a1pms_api_put_service 201 "serv1" 0 "$CR_SERVICE_APP_PATH_0/1"
 
         echo "Check the number of types in the a1pms for each ric is 1"
         for ((i=1; i<=$NUM_RICS; i++))
         do
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
-            else
-                a1pms_equal json:policy_types?ric=ricsim_g1_$i 1 120
-            fi
+            a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
         done
 
         START_ID=2000
diff --git a/test/auto-test/FTC810.sh b/test/auto-test/FTC810.sh
index ac2f88a..5ce79c0 100755
--- a/test/auto-test/FTC810.sh
+++ b/test/auto-test/FTC810.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Repeatedly create and delete policies in each RICs for 24h (or configured number of days). Via a1pms REST/DMAAP/DMAAP_BATCH and SDNC using http or https"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -48,11 +48,8 @@
 #Local vars in test script
 ##########################
 
-# Number of RICs per interface type (OSC and STD)
-NUM_RICS=30
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   NUM_RICS=20 # 3 A1 interfaces test, less sims per interface. total sims will be same
-fi
+# Number of RICs per interface type (OSC and STD x 2)
+NUM_RICS=20
 
 # Number of policy instances per RIC
 NUM_INSTANCES=5
@@ -82,9 +79,7 @@
 
 start_ric_simulators ricsim_g2 $NUM_RICS STD_1.1.3
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   start_ric_simulators ricsim_g3 $NUM_RICS  STD_2.0.0
-fi
+start_ric_simulators ricsim_g3 $NUM_RICS  STD_2.0.0
 
 start_mr
 
@@ -99,26 +94,14 @@
 A1PMS_RETRY_CODES=423
 start_a1pms NORPOXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-   __CONFIG_HEADER="HEADER"
-else
-   if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-   __CONFIG_HEADER="HEADER"
-   fi
-fi
 
-prepare_consul_config      SDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      SDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 start_sdnc
@@ -139,13 +122,11 @@
    sim_print ricsim_g2_$i interface
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   echo "Print the interface for group 2 simulators, shall be STD 2"
-   for ((i=1; i<=$NUM_RICS; i++))
-   do
-      sim_print ricsim_g3_$i interface
-   done
-fi
+echo "Print the interface for group 2 simulators, shall be STD 2"
+for ((i=1; i<=$NUM_RICS; i++))
+do
+   sim_print ricsim_g3_$i interface
+done
 
 echo "Load policy type in group 1 simulators"
 for ((i=1; i<=$NUM_RICS; i++))
@@ -153,13 +134,11 @@
    sim_put_policy_type 201 ricsim_g1_$i 1 testdata/OSC/sim_1.json
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   echo "Load policy type in group 3 simulators"
-   for ((i=1; i<=$NUM_RICS; i++))
-   do
-      sim_put_policy_type 201 ricsim_g3_$i STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
-   done
-fi
+echo "Load policy type in group 3 simulators"
+for ((i=1; i<=$NUM_RICS; i++))
+do
+   sim_put_policy_type 201 ricsim_g3_$i STD_QOS2_0.1.0 testdata/STD2/sim_qos2.json
+done
 
 echo "Check the number of instances in  group 1 simulators, shall be 0"
 for ((i=1; i<=$NUM_RICS; i++))
@@ -173,30 +152,20 @@
    sim_equal ricsim_g2_$i num_instances 0
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   echo "Check the number of instances in group 3 simulators, shall be 0"
-   for ((i=1; i<=$NUM_RICS; i++))
-   do
-      sim_equal ricsim_g3_$i num_instances 0
-   done
-fi
+echo "Check the number of instances in group 3 simulators, shall be 0"
+for ((i=1; i<=$NUM_RICS; i++))
+do
+   sim_equal ricsim_g3_$i num_instances 0
+done
 
 echo "Wait for the a1pms to refresh types from the simulator"
-if [ "$A1PMS_VERSION" == "V2" ]; then
-   a1pms_equal json:policy-types 3 300
-else
-   a1pms_equal json:policy_types 2 300
-fi
+a1pms_equal json:policy-types 3 300
 
 echo "Check the number of types in the a1pms for each ric is 1"
 for ((i=1; i<=$NUM_RICS; i++))
 do
-   if [ "$A1PMS_VERSION" == "V2" ]; then
-      a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
-      a1pms_equal json:policy-types?ric_id=ricsim_g3_$i 1 120
-   else
-      a1pms_equal json:policy_types?ric=ricsim_g1_$i 1 120
-   fi
+   a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
+   a1pms_equal json:policy-types?ric_id=ricsim_g3_$i 1 120
 done
 
 echo "Register a service"
@@ -209,11 +178,7 @@
 
 MR_MESSAGES=0
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-      notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-      notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 while [ $(($SECONDS-$TEST_START)) -lt $TEST_DURATION ]; do
 
@@ -266,11 +231,7 @@
          INSTANCES=$(($INSTANCES+$NUM_INSTANCES))
       done
 
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         a1pms_equal json:policy-instances $INSTANCES
-      else
-         a1pms_equal json:policy_ids $INSTANCES
-      fi
+      a1pms_equal json:policy-instances $INSTANCES
 
       echo "Create $NUM_INSTANCES instances in each STD RIC"
       if [ $interface == "REST_PARALLEL" ]; then
@@ -291,39 +252,28 @@
          INSTANCES=$(($INSTANCES+$NUM_INSTANCES))
       done
 
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         a1pms_equal json:policy-instances $INSTANCES
-      else
-         a1pms_equal json:policy_ids $INSTANCES
+      a1pms_equal json:policy-instances $INSTANCES
+
+      echo "Create $NUM_INSTANCES instances in each STD 2 RIC"
+      if [ $interface == "REST_PARALLEL" ]; then
+         a1pms_api_put_policy_parallel 201 "serv1" ricsim_g3_ $NUM_RICS STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES 3
       fi
-
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         echo "Create $NUM_INSTANCES instances in each STD 2 RIC"
-         if [ $interface == "REST_PARALLEL" ]; then
-            a1pms_api_put_policy_parallel 201 "serv1" ricsim_g3_ $NUM_RICS STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES 3
+      for ((i=1; i<=$NUM_RICS; i++))
+      do
+         if [ $interface == "DMAAP-BATCH" ]; then
+            a1pms_api_put_policy_batch 201 "serv1" ricsim_g3_$i STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES
+         elif [ $interface == "DMAAP" ] || [ $interface == "REST" ]; then
+            a1pms_api_put_policy 201 "serv1" ricsim_g3_$i STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES
          fi
-         for ((i=1; i<=$NUM_RICS; i++))
-         do
-            if [ $interface == "DMAAP-BATCH" ]; then
-               a1pms_api_put_policy_batch 201 "serv1" ricsim_g3_$i STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES
-            elif [ $interface == "DMAAP" ] || [ $interface == "REST" ]; then
-               a1pms_api_put_policy 201 "serv1" ricsim_g3_$i STD_QOS2_0.1.0 $INSTANCE_ID NOTRANSIENT $notificationurl testdata/STD2/pi_qos2_template.json $NUM_INSTANCES
-            fi
-            if [ $interface == "DMAAP" ] || [ $interface == "DMAAP-BATCH" ]; then
-               MR_MESSAGES=$(($MR_MESSAGES+$NUM_INSTANCES))
-            fi
-            sim_equal ricsim_g3_$i num_instances $NUM_INSTANCES
-            INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
-            INSTANCES=$(($INSTANCES+$NUM_INSTANCES))
-         done
-
-         if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-instances $INSTANCES
-         else
-            a1pms_equal json:policy_ids $INSTANCES
+         if [ $interface == "DMAAP" ] || [ $interface == "DMAAP-BATCH" ]; then
+            MR_MESSAGES=$(($MR_MESSAGES+$NUM_INSTANCES))
          fi
-      fi
+         sim_equal ricsim_g3_$i num_instances $NUM_INSTANCES
+         INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
+         INSTANCES=$(($INSTANCES+$NUM_INSTANCES))
+      done
 
+      a1pms_equal json:policy-instances $INSTANCES
 
       echo "Delete all instances in each OSC RIC"
 
@@ -346,11 +296,7 @@
          INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
       done
 
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         a1pms_equal json:policy-instances $INSTANCES
-      else
-         a1pms_equal json:policy_ids $INSTANCES
-      fi
+      a1pms_equal json:policy-instances $INSTANCES
 
       echo "Delete all instances in each STD RIC"
 
@@ -372,39 +318,29 @@
          INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
       done
 
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         a1pms_equal json:policy-instances $INSTANCES
-      else
-         a1pms_equal json:policy_ids $INSTANCES
+      a1pms_equal json:policy-instances $INSTANCES
+
+      echo "Delete all instances in each STD 2 RIC"
+
+      if [ $interface == "REST_PARALLEL" ]; then
+         a1pms_api_delete_policy_parallel 204 $NUM_RICS $INSTANCE_ID $NUM_INSTANCES 3
       fi
-
-      if [ "$A1PMS_VERSION" == "V2" ]; then
-         echo "Delete all instances in each STD 2 RIC"
-
-         if [ $interface == "REST_PARALLEL" ]; then
-            a1pms_api_delete_policy_parallel 204 $NUM_RICS $INSTANCE_ID $NUM_INSTANCES 3
+      for ((i=1; i<=$NUM_RICS; i++))
+      do
+         if [ $interface == "DMAAP-BATCH" ]; then
+            a1pms_api_delete_policy_batch 204 $INSTANCE_ID $NUM_INSTANCES
+         elif [ $interface == "DMAAP" ] || [ $interface == "REST" ]; then
+            a1pms_api_delete_policy 204 $INSTANCE_ID $NUM_INSTANCES
          fi
-         for ((i=1; i<=$NUM_RICS; i++))
-         do
-            if [ $interface == "DMAAP-BATCH" ]; then
-               a1pms_api_delete_policy_batch 204 $INSTANCE_ID $NUM_INSTANCES
-            elif [ $interface == "DMAAP" ] || [ $interface == "REST" ]; then
-               a1pms_api_delete_policy 204 $INSTANCE_ID $NUM_INSTANCES
-            fi
-            if [ $interface == "DMAAP" ] || [ $interface == "DMAAP-BATCH" ]; then
-               MR_MESSAGES=$(($MR_MESSAGES+$NUM_INSTANCES))
-            fi
-            INSTANCES=$(($INSTANCES-$NUM_INSTANCES))
-            sim_equal ricsim_g3_$i num_instances 0
-            INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
-         done
-
-         if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-instances $INSTANCES
-         else
-            a1pms_equal json:policy_ids $INSTANCES
+         if [ $interface == "DMAAP" ] || [ $interface == "DMAAP-BATCH" ]; then
+            MR_MESSAGES=$(($MR_MESSAGES+$NUM_INSTANCES))
          fi
-      fi
+         INSTANCES=$(($INSTANCES-$NUM_INSTANCES))
+         sim_equal ricsim_g3_$i num_instances 0
+         INSTANCE_ID=$(($INSTANCE_ID+$NUM_INSTANCES))
+      done
+
+      a1pms_equal json:policy-instances $INSTANCES
 
       mr_equal requests_submitted $MR_MESSAGES
       mr_equal requests_fetched $MR_MESSAGES
@@ -419,9 +355,7 @@
          sim_contains_str ricsim_g1_$i remote_hosts $SDNC_APP_NAME
          sim_contains_str ricsim_g2_$i remote_hosts $SDNC_APP_NAME
 
-         if [ "$A1PMS_VERSION" == "V2" ]; then
-            sim_contains_str ricsim_g3_$i remote_hosts $SDNC_APP_NAME
-         fi
+         sim_contains_str ricsim_g3_$i remote_hosts $SDNC_APP_NAME
       done
 
    done
diff --git a/test/auto-test/FTC850.sh b/test/auto-test/FTC850.sh
index 0a9f0b8..4b795c0 100755
--- a/test/auto-test/FTC850.sh
+++ b/test/auto-test/FTC850.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Create/delete policies in parallel over a number of rics using a number of child process"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -57,11 +57,7 @@
 
 generate_policy_uuid
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 for __httpx in $TESTED_PROTOCOLS ; do
     for interface in $TESTED_VARIANTS ; do
@@ -107,31 +103,19 @@
 
         set_a1pms_debug
 
-        __CONFIG_HEADER="NOHEADER"
-        if [ $RUNMODE == "KUBE" ]; then
-            __CONFIG_HEADER="HEADER"
-        else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            __CONFIG_HEADER="HEADER"
-            fi
-        fi
+
 
         if [[ $interface = *"SDNC"* ]]; then
             start_sdnc
-            prepare_consul_config      SDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      SDNC  ".a1pms_config.json"
         else
-            prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+            prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
         fi
 
         if [ $RUNMODE == "KUBE" ]; then
-            a1pms_load_config                       ".consul_config.json"
+            a1pms_load_config                       ".a1pms_config.json"
         else
-            if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-                a1pms_api_put_configuration 200 ".consul_config.json"
-            else
-                start_consul_cbs
-                consul_config_app                   ".consul_config.json"
-            fi
+            a1pms_api_put_configuration 200 ".a1pms_config.json"
         fi
 
         start_mr # Not used, but removes error messages from the a1pms log
@@ -153,22 +137,14 @@
             sim_put_policy_type 201 ricsim_g1_$i 1 testdata/OSC/sim_1.json
         done
 
-        if [ "$A1PMS_VERSION" == "V2" ]; then
-            a1pms_equal json:policy-types 1 300  #Wait for the a1pms to refresh types from the simulator
-        else
-            a1pms_equal json:policy_types 1 300  #Wait for the a1pms to refresh types from the simulator
-        fi
+         a1pms_equal json:policy-types 1 300  #Wait for the a1pms to refresh types from the simulator
 
         a1pms_api_put_service 201 "serv1" 600 "$CR_SERVICE_APP_PATH_0/1"
 
         echo "Check the number of types in the a1pms for each ric is 1"
         for ((i=1; i<=$NUM_RICS; i++))
         do
-            if [ "$A1PMS_VERSION" == "V2" ]; then
-                a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
-            else
-                a1pms_equal json:policy_types?ric=ricsim_g1_$i 1 120
-            fi
+            a1pms_equal json:policy-types?ric_id=ricsim_g1_$i 1 120
         done
 
         START_ID=2000
diff --git a/test/auto-test/FTC900.sh b/test/auto-test/FTC900.sh
index 3d87934..b9a6654 100755
--- a/test/auto-test/FTC900.sh
+++ b/test/auto-test/FTC900.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Preparation for test of the Control Panel and the Health Check app - populating a number of ric simulators with types and instances"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -54,9 +54,7 @@
 
 start_ric_simulators  $RIC_SIM_PREFIX"_g2" $STD_NUM_RICS STD_1.1.3
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    start_ric_simulators  $RIC_SIM_PREFIX"_g3" $STD_NUM_RICS STD_2.0.0
-fi
+start_ric_simulators  $RIC_SIM_PREFIX"_g3" $STD_NUM_RICS STD_2.0.0
 
 start_mr #Just to prevent errors in the a1pms log...
 
@@ -70,26 +68,14 @@
 
 use_a1pms_rest_http
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-    __CONFIG_HEADER="HEADER"
-    fi
-fi
 
-prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 sleep_wait 120 "Let A1PMS cofiguration take effect"
@@ -109,13 +95,11 @@
     sim_print $RIC_SIM_PREFIX"_g2_"$i interface
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    # Print the A1 version for STD 2.X
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        sim_print $RIC_SIM_PREFIX"_g3_"$i interface
-    done
-fi
+# Print the A1 version for STD 2.X
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    sim_print $RIC_SIM_PREFIX"_g3_"$i interface
+done
 
 # Load the polictypes in osc
 for ((i=1; i<=$OSC_NUM_RICS; i++))
@@ -127,73 +111,49 @@
 
 
 #Check the number of schemas and the individual schemas in OSC
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_equal json:policy-types 4 300
+a1pms_equal json:policy-types 4 300
 
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g1_"$i 3 120
-    done
+for ((i=1; i<=$OSC_NUM_RICS; i++))
+do
+    a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g1_"$i 3 120
+done
 
-    # Check the schemas in OSC
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_type 200 2 testdata/OSC/hw-a1pms-modified.json
-        a1pms_api_get_policy_type 200 100 testdata/OSC/qos-a1pms-modified.json
-        a1pms_api_get_policy_type 200 20008 testdata/OSC/tsa-a1pms-modified.json
-    done
-else
-    a1pms_equal json:policy_types 4 300
+# Check the schemas in OSC
+for ((i=1; i<=$OSC_NUM_RICS; i++))
+do
+    a1pms_api_get_policy_type 200 2 testdata/OSC/hw-a1pms-modified.json
+    a1pms_api_get_policy_type 200 100 testdata/OSC/qos-a1pms-modified.json
+    a1pms_api_get_policy_type 200 20008 testdata/OSC/tsa-a1pms-modified.json
+done
 
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy_types?ric=$RIC_SIM_PREFIX"_g1_"$i 3 120
-    done
+# Load the polictypes in std
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 demo-testdata/STD2/sim_qos.json
+    sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS2_0.1.0 demo-testdata/STD2/sim_qos2.json
+done
 
-    # Check the schemas in OSC
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_schema 200 2 testdata/OSC/hw-a1pms-modified.json
-        a1pms_api_get_policy_schema 200 100 testdata/OSC/qos-a1pms-modified.json
-        a1pms_api_get_policy_schema 200 20008 testdata/OSC/tsa-a1pms-modified.json
-    done
-fi
+#Check the number of schemas and the individual schemas in STD
+a1pms_equal json:policy-types 6 120
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g3_"$i 2 120
+done
 
-    # Load the polictypes in std
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 demo-testdata/STD2/sim_qos.json
-        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS2_0.1.0 demo-testdata/STD2/sim_qos2.json
-    done
-
-    #Check the number of schemas and the individual schemas in STD
-    a1pms_equal json:policy-types 6 120
-
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g3_"$i 2 120
-    done
-
-    # Check the schemas in STD
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_type 200 STD_QOS_0_2_0 demo-testdata/STD2/qos-a1pms-modified.json
-        a1pms_api_get_policy_type 200 'STD_QOS2_0.1.0' demo-testdata/STD2/qos2-a1pms-modified.json
-    done
-fi
+# Check the schemas in STD
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    a1pms_api_get_policy_type 200 STD_QOS_0_2_0 demo-testdata/STD2/qos-a1pms-modified.json
+    a1pms_api_get_policy_type 200 'STD_QOS2_0.1.0' demo-testdata/STD2/qos2-a1pms-modified.json
+done
 
 # Create policies
 use_a1pms_rest_http
 
 a1pms_api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/1"
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 # Create policies in OSC
 for ((i=1; i<=$OSC_NUM_RICS; i++))
@@ -219,12 +179,10 @@
 do
     generate_policy_uuid
     a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g2_"$i NOTYPE $((2100+$i)) NOTRANSIENT $notificationurl testdata/STD/pi1_template.json 1
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        generate_policy_uuid
-        a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 $((2300+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
-        generate_policy_uuid
-        a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i 'STD_QOS2_0.1.0' $((2400+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
-    fi
+    generate_policy_uuid
+    a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 $((2300+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
+    generate_policy_uuid
+    a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i 'STD_QOS2_0.1.0' $((2400+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
 done
 
 
@@ -232,9 +190,7 @@
 for ((i=1; i<=$STD_NUM_RICS; i++))
 do
     sim_equal $RIC_SIM_PREFIX"_g2_"$i num_instances 1
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
-    fi
+    sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
 done
 
 check_a1pms_logs
diff --git a/test/auto-test/FTC_HELM_E_RELEASE.sh b/test/auto-test/FTC_HELM_E_RELEASE.sh
index 8b68a81..f6433ad 100755
--- a/test/auto-test/FTC_HELM_E_RELEASE.sh
+++ b/test/auto-test/FTC_HELM_E_RELEASE.sh
@@ -66,11 +66,6 @@
 ###############################use_control_panel_https
 use_control_panel_http
 
-if [ "$A1PMS_VERSION" == "V1" ]; then
-   echo "A1PMS VERSION 2 (V2) is required"
-   exit 1
-fi
-
 clean_environment
 
 ics_kube_pvc_reset
@@ -227,23 +222,11 @@
     a1_a1pms_api_get_policy_type 200 2 testdata/OSC/2-a1pms-modified.json
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
+a1pms_equal json:policy-types 5 120
 
-    a1pms_equal json:policy-types 5 120
+a1pms_equal json:policies 0
 
-    a1pms_equal json:policies 0
-
-    a1pms_equal json:policy-instances 0
-else
-
-    a1pms_equal json:policy_schemas 5 120
-
-    a1pms_equal json:policy_types 5
-
-    a1pms_equal json:policies 0
-
-    a1pms_equal json:policy_ids 0
-fi
+a1pms_equal json:policy-instances 0
 
 a1pms_api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_APP_PATH_0/ER-app"
 
@@ -299,23 +282,11 @@
 
 sleep_wait 200
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
+a1pms_equal json:policy-types 5 120
 
-    a1pms_equal json:policy-types 5 120
+a1pms_equal json:policies 12
 
-    a1pms_equal json:policies 12
-
-    a1pms_equal json:policy-instances 12
-else
-
-    a1pms_equal json:policy_schemas 5 120
-
-    a1pms_equal json:policy_types 5
-
-    a1pms_equal json:policies 12
-
-    a1pms_equal json:policy_ids 12
-fi
+a1pms_equal json:policy-instances 12
 
 # Check the number of policies in STD and STD2
 for ((i=0; i<$STD_NUM_RICS; i++))
diff --git a/test/auto-test/ONAP_UC.sh b/test/auto-test/ONAP_UC.sh
index f6f5ae0..7d7c935 100755
--- a/test/auto-test/ONAP_UC.sh
+++ b/test/auto-test/ONAP_UC.sh
@@ -20,7 +20,7 @@
 
 TC_ONELINE_DESCR="ONAP Use case REQ-626"
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR DMAAPMR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR DMAAPMR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR DMAAPMR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON "
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON "
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -52,12 +52,7 @@
 use_simulator_https
 use_mr_https
 __httpx="HTTPS"
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    echo "Version V2 of A1PMS is needed, exiting..."
-    exit 1
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 generate_policy_uuid
 
@@ -99,20 +94,13 @@
         start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
     fi
 
-    __CONFIG_HEADER="NOHEADER"
-    if [ $RUNMODE == "KUBE" ]; then
-        __CONFIG_HEADER="HEADER"
-    else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        __CONFIG_HEADER="HEADER"
-        fi
-    fi
+
 
     if [[ $interface = *"SDNC"* ]]; then
         start_sdnc
-        prepare_consul_config      SDNC    ".consul_config.json" $__CONFIG_HEADER
+        prepare_a1pms_config      SDNC    ".a1pms_config.json"
     else
-        prepare_consul_config      NOSDNC  ".consul_config.json" $__CONFIG_HEADER
+        prepare_a1pms_config      NOSDNC  ".a1pms_config.json"
     fi
 
     start_a1pms NORPOXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
@@ -120,32 +108,27 @@
     set_a1pms_trace
 
     if [ $RUNMODE == "KUBE" ]; then
-        a1pms_load_config                       ".consul_config.json"
+        a1pms_load_config                       ".a1pms_config.json"
     else
-        if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-            #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
-            if [ $__httpx == "HTTPS" ]; then
+        #Temporary switch to http/https if dmaap use. Otherwise it is not possibble to push config
+        if [ $__httpx == "HTTPS" ]; then
+            use_a1pms_rest_https
+        else
+            use_a1pms_rest_http
+        fi
+        a1pms_api_put_configuration 200 ".a1pms_config.json"
+        if [ $__httpx == "HTTPS" ]; then
+            if [[ $interface = *"DMAAP"* ]]; then
+                use_a1pms_dmaap_https
+            else
                 use_a1pms_rest_https
+            fi
+        else
+            if [[ $interface = *"DMAAP"* ]]; then
+                use_a1pms_dmaap_http
             else
                 use_a1pms_rest_http
             fi
-            a1pms_api_put_configuration 200 ".consul_config.json"
-            if [ $__httpx == "HTTPS" ]; then
-                if [[ $interface = *"DMAAP"* ]]; then
-                    use_a1pms_dmaap_https
-                else
-                    use_a1pms_rest_https
-                fi
-            else
-                if [[ $interface = *"DMAAP"* ]]; then
-                    use_a1pms_dmaap_http
-                else
-                    use_a1pms_rest_http
-                fi
-            fi
-        else
-            start_consul_cbs
-            consul_config_app                   ".consul_config.json"
         fi
     fi
 
diff --git a/test/auto-test/PM_DEMO.sh b/test/auto-test/PM_DEMO.sh
index a8bc7f4..f4adcd6 100755
--- a/test/auto-test/PM_DEMO.sh
+++ b/test/auto-test/PM_DEMO.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Preparation demo setup  - populating a number of ric simulators with types and instances"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC NGW KUBEPROXY"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-GUILIN ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -51,11 +51,7 @@
 use_sdnc_https
 use_simulator_https
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-    notificationurl=""
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 clean_environment
 
@@ -68,9 +64,7 @@
 
 start_ric_simulators  $RIC_SIM_PREFIX"_g2" $STD_NUM_RICS STD_1.1.3
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    start_ric_simulators $RIC_SIM_PREFIX"_g3" $STD_NUM_RICS STD_2.0.0
-fi
+start_ric_simulators $RIC_SIM_PREFIX"_g3" $STD_NUM_RICS STD_2.0.0
 
 start_mr #Just to prevent errors in the a1pms log...
 
@@ -86,26 +80,14 @@
 
 set_a1pms_trace
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-    __CONFIG_HEADER="HEADER"
-    fi
-    fi
 
-prepare_consul_config      SDNC  ".consul_config.json" $__CONFIG_HEADER
+
+prepare_a1pms_config      SDNC  ".a1pms_config.json"
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 sleep_wait 120 "Let A1PMS cofiguration take effect"
@@ -125,13 +107,11 @@
     sim_print $RIC_SIM_PREFIX"_g2_"$i interface
 done
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    # Print the A1 version for STD 2.X
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        sim_print $RIC_SIM_PREFIX"_g3_"$i interface
-    done
-fi
+# Print the A1 version for STD 2.X
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    sim_print $RIC_SIM_PREFIX"_g3_"$i interface
+done
 
 
 # Load the polictypes in osc
@@ -143,71 +123,45 @@
 
 
 #Check the number of schemas and the individual schemas in OSC
-if [ "$A1PMS_VERSION" == "V2" ]; then
+a1pms_equal json:policy-types 3 300
 
-    a1pms_equal json:policy-types 3 300
+for ((i=1; i<=$OSC_NUM_RICS; i++))
+do
+    a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g1_"$i 2 120
+done
 
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g1_"$i 2 120
-    done
-
-    # Check the schemas in OSC
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_type 200 100 demo-testdata/OSC/qos-a1pms-modified.json
-        a1pms_api_get_policy_type 200 20008 demo-testdata/OSC/tsa-a1pms-modified.json
-    done
-else
-    a1pms_equal json:policy_types 3 300
-
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy_types?ric=$RIC_SIM_PREFIX"_g1_"$i 2 120
-    done
-
-    # Check the schemas in OSC
-    for ((i=1; i<=$OSC_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_schema 200 100 demo-testdata/OSC/qos-a1pms-modified.json
-        a1pms_api_get_policy_schema 200 20008 demo-testdata/OSC/tsa-a1pms-modified.json
-    done
-fi
+# Check the schemas in OSC
+for ((i=1; i<=$OSC_NUM_RICS; i++))
+do
+    a1pms_api_get_policy_type 200 100 demo-testdata/OSC/qos-a1pms-modified.json
+    a1pms_api_get_policy_type 200 20008 demo-testdata/OSC/tsa-a1pms-modified.json
+done
 
 
+# Load the polictypes in std
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 demo-testdata/STD2/sim_qos.json
+    sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS2_0.1.0 demo-testdata/STD2/sim_qos2.json
+done
 
+#Check the number of schemas and the individual schemas in STD
+a1pms_equal json:policy-types 5 120
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g3_"$i 2 120
+done
 
-    # Load the polictypes in std
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 demo-testdata/STD2/sim_qos.json
-        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g3_"$i STD_QOS2_0.1.0 demo-testdata/STD2/sim_qos2.json
-    done
-
-    #Check the number of schemas and the individual schemas in STD
-    a1pms_equal json:policy-types 5 120
-
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        a1pms_equal json:policy-types?ric_id=$RIC_SIM_PREFIX"_g3_"$i 2 120
-    done
-
-    # Check the schemas in STD
-    for ((i=1; i<=$STD_NUM_RICS; i++))
-    do
-        a1pms_api_get_policy_type 200 STD_QOS_0_2_0 demo-testdata/STD2/qos-a1pms-modified.json
-        a1pms_api_get_policy_type 200 'STD_QOS2_0.1.0' demo-testdata/STD2/qos2-a1pms-modified.json
-    done
-fi
+# Check the schemas in STD
+for ((i=1; i<=$STD_NUM_RICS; i++))
+do
+    a1pms_api_get_policy_type 200 STD_QOS_0_2_0 demo-testdata/STD2/qos-a1pms-modified.json
+    a1pms_api_get_policy_type 200 'STD_QOS2_0.1.0' demo-testdata/STD2/qos2-a1pms-modified.json
+done
 
 #Check the number of types
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    a1pms_equal json:policy-types 5 120
-else
-    a1pms_equal json:policy_types 3 120
-fi
+a1pms_equal json:policy-types 5 120
 
 
 # Create policies
@@ -237,12 +191,10 @@
 do
     generate_policy_uuid
     a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g2_"$i NOTYPE $((2100+$i)) NOTRANSIENT $notificationurl demo-testdata/STD/pi1_template.json 1
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        generate_policy_uuid
-        a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 $((2300+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
-        generate_policy_uuid
-        a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i 'STD_QOS2_0.1.0' $((2400+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
-    fi
+    generate_policy_uuid
+    a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i STD_QOS_0_2_0 $((2300+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
+    generate_policy_uuid
+    a1pms_api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g3_"$i 'STD_QOS2_0.1.0' $((2400+$i)) NOTRANSIENT $notificationurl demo-testdata/STD2/pi1_template.json 1
 done
 
 
@@ -250,9 +202,7 @@
 for ((i=1; i<=$STD_NUM_RICS; i++))
 do
     sim_equal $RIC_SIM_PREFIX"_g2_"$i num_instances 1
-    if [ "$A1PMS_VERSION" == "V2" ]; then
-        sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
-    fi
+    sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
 done
 
 check_a1pms_logs
diff --git a/test/auto-test/PM_EI_DEMO.sh b/test/auto-test/PM_EI_DEMO.sh
index 0ac0daa..7b8a6ed 100755
--- a/test/auto-test/PM_EI_DEMO.sh
+++ b/test/auto-test/PM_EI_DEMO.sh
@@ -20,7 +20,7 @@
 TC_ONELINE_DESCR="Preparation demo setup  - policy management and information information"
 
 #App names to include in the test when running docker, space separated list
-DOCKER_INCLUDED_IMAGES="CBS CONSUL CP CR MR A1PMS RICSIM SDNC ICS PRODSTUB RC HTTPPROXY KUBEPROXY NGW"
+DOCKER_INCLUDED_IMAGES="CP CR MR A1PMS RICSIM SDNC ICS PRODSTUB RC HTTPPROXY KUBEPROXY NGW"
 
 #App names to include in the test when running kubernetes, space separated list
 KUBE_INCLUDED_IMAGES=" MR CR A1PMS RC PRODSTUB RICSIM CP ICS SDNC HTTPPROXY KUBEPROXY NGW"
@@ -30,10 +30,10 @@
 #Ignore image in DOCKER_INCLUDED_IMAGES, KUBE_INCLUDED_IMAGES if
 #the image is not configured in the supplied env_file
 #Used for images not applicable to all supported profile
-CONDITIONALLY_IGNORED_IMAGES="CBS CONSUL NGW"
+CONDITIONALLY_IGNORED_IMAGES="NGW"
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ONAP-HONOLULU ONAP-ISTANBUL ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-CHERRY ORAN-D-RELEASE ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ONAP-JAKARTA ONAP-KOHN ONAP-LONDON  ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
@@ -59,12 +59,7 @@
 fi
 
 
-if [ "$A1PMS_VERSION" == "V2" ]; then
-    notificationurl=$CR_SERVICE_APP_PATH_0"/test"
-else
-   echo "A1PMS VERSION 2 (V2) is required"
-   exit 1
-fi
+notificationurl=$CR_SERVICE_APP_PATH_0"/test"
 
 clean_environment
 
@@ -88,26 +83,14 @@
 
 start_a1pms PROXY $SIM_GROUP/$A1PMS_COMPOSE_DIR/$A1PMS_CONFIG_FILE
 
-__CONFIG_HEADER="NOHEADER"
-if [ $RUNMODE == "KUBE" ]; then
-    __CONFIG_HEADER="HEADER"
-else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-    __CONFIG_HEADER="HEADER"
-    fi
-fi
 
-prepare_consul_config      SDNC  ".consul_config.json" $__CONFIG_HEADER  #Change to NOSDNC if running A1PMS with  proxy
+
+prepare_a1pms_config      SDNC  ".a1pms_config.json"  #Change to NOSDNC if running A1PMS with  proxy
 
 if [ $RUNMODE == "KUBE" ]; then
-    a1pms_load_config                       ".consul_config.json"
+    a1pms_load_config                       ".a1pms_config.json"
 else
-    if [[ "$A1PMS_FEATURE_LEVEL" == *"NOCONSUL"* ]]; then
-        a1pms_api_put_configuration 200 ".consul_config.json"
-    else
-        start_consul_cbs
-        consul_config_app                   ".consul_config.json"
-    fi
+    a1pms_api_put_configuration 200 ".a1pms_config.json"
 fi
 
 start_cr 1
diff --git a/test/auto-test/startMR.sh b/test/auto-test/startMR.sh
index cd4740a..823a72e 100755
--- a/test/auto-test/startMR.sh
+++ b/test/auto-test/startMR.sh
@@ -33,7 +33,7 @@
 CONDITIONALLY_IGNORED_IMAGES=""
 
 #Supported test environment profiles
-SUPPORTED_PROFILES="ORAN-E-RELEASE ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
+SUPPORTED_PROFILES="ORAN-F-RELEASE ORAN-G-RELEASE ORAN-H-RELEASE"
 #Supported run modes
 SUPPORTED_RUNMODES="DOCKER KUBE"
 
