Merge "Poll MR and send messages to consumers"
diff --git a/dmaap-adaptor-java/Dockerfile b/dmaap-adaptor-java/Dockerfile
index 46dfba5..b2c0c30 100644
--- a/dmaap-adaptor-java/Dockerfile
+++ b/dmaap-adaptor-java/Dockerfile
@@ -1,8 +1,8 @@
 #
 # ============LICENSE_START=======================================================
-# ONAP : ccsdk oran
+# O-RAN-SC
 # ================================================================================
-# Copyright (C) 2019-2020 Nordix Foundation. All rights reserved.
+# Copyright (C) 2021 Nordix Foundation. All rights reserved.
 # ================================================================================
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -40,4 +40,4 @@
 RUN chmod -R 777 /opt/app/dmaap-adaptor-service/config/
 
 ADD target/${JAR} /opt/app/dmaap-adaptor-service/dmaap-adaptor.jar
-CMD ["java", "-jar", "/opt/app/policy-agent/dmaap-adaptor.jar"]
+CMD ["java", "-jar", "/opt/app/dmaap-adaptor-service/dmaap-adaptor.jar"]
diff --git a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/ApplicationTest.java b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/ApplicationTest.java
index ff50761..b2b6d96 100644
--- a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/ApplicationTest.java
+++ b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/ApplicationTest.java
@@ -23,8 +23,6 @@
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.awaitility.Awaitility.await;
 
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
 import com.google.gson.JsonParser;
 
 import java.io.FileOutputStream;
@@ -49,8 +47,6 @@
 import org.oran.dmaapadapter.repository.InfoTypes;
 import org.oran.dmaapadapter.repository.Jobs;
 import org.oran.dmaapadapter.tasks.ProducerRegstrationTask;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -73,7 +69,6 @@
         "app.configuration-filepath=./src/test/resources/test_application_configuration.json"//
 })
 class ApplicationTest {
-    private static final Logger logger = LoggerFactory.getLogger(ApplicationTest.class);
 
     @Autowired
     private ApplicationConfig applicationConfig;
@@ -96,8 +91,6 @@
     @LocalServerPort
     int localServerHttpPort;
 
-    private static Gson gson = new GsonBuilder().create();
-
     static class TestApplicationConfig extends ApplicationConfig {
         @Override
         public String getEcsBaseUrl() {
diff --git a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/DmaapSimulatorController.java b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/DmaapSimulatorController.java
index aa6220f..fbb600f 100644
--- a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/DmaapSimulatorController.java
+++ b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/DmaapSimulatorController.java
@@ -64,6 +64,7 @@
             return ErrorResponse.create("", HttpStatus.NOT_FOUND);
         } else {
             String resp = dmaapResponses.remove(0);
+            logger.info("DMAAP simulator returned: {}", resp);
             return new ResponseEntity<>(resp, HttpStatus.OK);
         }
 
diff --git a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/EcsSimulatorController.java b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/EcsSimulatorController.java
index 7d309cf..c042034 100644
--- a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/EcsSimulatorController.java
+++ b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/EcsSimulatorController.java
@@ -102,6 +102,7 @@
         ProducerJobInfo request =
                 new ProducerJobInfo(job.jobDefinition, "ID", job.infoTypeId, job.jobResultUri, job.owner, "TIMESTAMP");
         String body = gson.toJson(request);
+        logger.info("ECS Simulator PUT job: {}", body);
         restClient.post(url, body).block();
 
     }
diff --git a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/IntegrationWithEcs.java b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/IntegrationWithEcs.java
index 5446004..f9ead03 100644
--- a/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/IntegrationWithEcs.java
+++ b/dmaap-adaptor-java/src/test/java/org/oran/dmaapadapter/IntegrationWithEcs.java
@@ -42,8 +42,6 @@
 import org.oran.dmaapadapter.repository.InfoTypes;
 import org.oran.dmaapadapter.repository.Jobs;
 import org.oran.dmaapadapter.tasks.ProducerRegstrationTask;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
@@ -64,7 +62,6 @@
         "app.ecs-base-url=https://localhost:8434" //
 })
 class IntegrationWithEcs {
-    private static final Logger logger = LoggerFactory.getLogger(ApplicationTest.class);
 
     @Autowired
     private ApplicationConfig applicationConfig;
diff --git a/onap/oran b/onap/oran
index 2d34af5..65cf80b 160000
--- a/onap/oran
+++ b/onap/oran
@@ -1 +1 @@
-Subproject commit 2d34af551ed404a43afdfebb63b2a1b426722071
+Subproject commit 65cf80bbd2eba0ab60d174c04f981ff6cf929e36
diff --git a/test/auto-test/FTC1100.sh b/test/auto-test/FTC1100.sh
index b6a2abb..eb687e8 100755
--- a/test/auto-test/FTC1100.sh
+++ b/test/auto-test/FTC1100.sh
@@ -331,9 +331,17 @@
     ecs_api_edp_delete_type_2 204 type1
     ecs_api_edp_get_type_2 404 type1
     ecs_api_edp_get_type_ids 200 EMPTY
-    ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
+    if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+        ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json testdata/ecs/info-type-info.json
+    else
+        ecs_api_edp_put_type_2 201 type1 testdata/ecs/ei-type-1.json
+    fi
     ecs_api_edp_get_type_ids 200 type1
-    ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json testdata/ecs/info-type-info.json
+    else
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    fi
 
     ecs_api_edp_put_producer_2 201 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
     ecs_api_edp_put_producer_2 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1
@@ -359,7 +367,11 @@
 if [ $ECS_VERSION == "V1-1" ]; then
     ecs_api_edp_get_type 200 type1 testdata/ecs/ei-type-1.json prod-a
 else
-    ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json testdata/ecs/info-type-info.json
+    else
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    fi
 fi
 
 if [ $ECS_VERSION == "V1-1" ]; then
@@ -513,7 +525,11 @@
     ecs_api_edp_get_type 200 type1 testdata/ecs/ei-type-1.json prod-a
     ecs_api_edp_get_type 200 type2 testdata/ecs/ei-type-2.json prod-b
 else
-    ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json testdata/ecs/info-type-info.json
+    else
+        ecs_api_edp_get_type_2 200 type1 testdata/ecs/ei-type-1.json
+    fi
     ecs_api_edp_get_type_2 200 type2 testdata/ecs/ei-type-2.json
 fi
 
@@ -1950,6 +1966,30 @@
     cr_equal received_callbacks 12
 fi
 
+# Test job deletion at type delete
+
+if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
+
+    ecs_api_edp_delete_type_2 406 type104
+
+    ecs_api_edp_delete_producer 204 prod-id
+
+    ecs_api_edp_delete_type_2 204 type104
+
+    cr_equal received_callbacks 32 30
+    cr_equal received_callbacks?id=info-job108-status 3
+    cr_equal received_callbacks?id=type-status1 19
+    cr_api_check_all_ecs_subscription_events 200 type-status1 type104 testdata/ecs/info-type-4.json DEREGISTERED
+    cr_api_check_all_ecs_events 200 info-job108-status DISABLED
+
+    ecs_api_edp_get_producer 404 prod-id
+
+    ecs_api_idc_get_job 404 job-108
+
+else
+    cr_equal received_callbacks 12
+fi
+
 check_ecs_logs
 
 store_logs END
diff --git a/test/auto-test/FTC150.sh b/test/auto-test/FTC150.sh
index 1d80a8c..bcd41cb 100755
--- a/test/auto-test/FTC150.sh
+++ b/test/auto-test/FTC150.sh
@@ -103,14 +103,16 @@
         controller_api_get_A1_policy_type 404 OSC ricsim_g1_1 99
 
         RESP=202
-        if [ $FLAVOUR == "ONAP" ]; then
+        if [ $FLAVOUR == "ONAP" ] && [[ "$SDNC_FEATURE_LEVEL" != *"TRANS_RESP_CODE"* ]]; then
+            deviation "SDNC does not return original response code from sim"
             RESP=200
         fi
         controller_api_put_A1_policy $RESP OSC ricsim_g1_1 1 4000 testdata/OSC/pi1_template.json
         controller_api_put_A1_policy 404 OSC ricsim_g1_1 5 1001 testdata/OSC/pi1_template.json
 
         RESP=201
-        if [ $FLAVOUR == "ONAP" ]; then
+        if [ $FLAVOUR == "ONAP" ] && [[ "$SDNC_FEATURE_LEVEL" != *"TRANS_RESP_CODE"* ]]; then
+            deviation "SDNC does not return original response code from sim"
             RESP=200
         fi
         controller_api_put_A1_policy $RESP STD ricsim_g2_1   5000 testdata/STD/pi1_template.json
@@ -126,13 +128,15 @@
         controller_api_get_A1_policy_status 200 STD ricsim_g2_1 5000 "UNDEFINED"
 
         RESP=202
-        if [ $FLAVOUR == "ONAP" ]; then
+        if [ $FLAVOUR == "ONAP" ] && [[ "$SDNC_FEATURE_LEVEL" != *"TRANS_RESP_CODE"* ]]; then
+            deviation "SDNC does not return original response code from sim"
             RESP=200
         fi
         controller_api_delete_A1_policy $RESP OSC ricsim_g1_1 1 4000
 
         RESP=204
-        if [ $FLAVOUR == "ONAP" ]; then
+        if [ $FLAVOUR == "ONAP" ] && [[ "$SDNC_FEATURE_LEVEL" != *"TRANS_RESP_CODE"* ]]; then
+            deviation "SDNC does not return original response code from sim"
             RESP=200
         fi
         controller_api_delete_A1_policy $RESP STD ricsim_g2_1 5000
diff --git a/test/auto-test/FTC1800.sh b/test/auto-test/FTC1800.sh
index 8ad142c..bb9ed60 100755
--- a/test/auto-test/FTC1800.sh
+++ b/test/auto-test/FTC1800.sh
@@ -218,6 +218,39 @@
         ecs_api_edp_put_type_2 201 type104 testdata/ecs/info-type-4.json
         ecs_api_edp_put_type_2 201 type105 testdata/ecs/info-type-5.json
 
+
+
+        if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
+            cr_equal received_callbacks 20 30
+            cr_equal received_callbacks?id=type-status1 10
+            cr_equal received_callbacks?id=type-status2 10
+
+            cr_api_check_all_ecs_subscription_events 200 type-status1 \
+                type1 testdata/ecs/ei-type-1.json REGISTERED \
+                type2 testdata/ecs/ei-type-2.json REGISTERED \
+                type3 testdata/ecs/ei-type-3.json REGISTERED \
+                type4 testdata/ecs/ei-type-4.json REGISTERED \
+                type5 testdata/ecs/ei-type-5.json REGISTERED \
+                type101 testdata/ecs/info-type-1.json REGISTERED \
+                type102 testdata/ecs/info-type-2.json REGISTERED \
+                type103 testdata/ecs/info-type-3.json REGISTERED \
+                type104 testdata/ecs/info-type-4.json REGISTERED \
+                type105 testdata/ecs/info-type-5.json REGISTERED
+
+            cr_api_check_all_ecs_subscription_events 200 type-status2 \
+                type1 testdata/ecs/ei-type-1.json REGISTERED \
+                type2 testdata/ecs/ei-type-2.json REGISTERED \
+                type3 testdata/ecs/ei-type-3.json REGISTERED \
+                type4 testdata/ecs/ei-type-4.json REGISTERED \
+                type5 testdata/ecs/ei-type-5.json REGISTERED \
+                type101 testdata/ecs/info-type-1.json REGISTERED \
+                type102 testdata/ecs/info-type-2.json REGISTERED \
+                type103 testdata/ecs/info-type-3.json REGISTERED \
+                type104 testdata/ecs/info-type-4.json REGISTERED \
+                type105 testdata/ecs/info-type-5.json REGISTERED
+
+        fi
+
         ecs_api_edp_put_producer_2 200 prod-a $CB_JOB/prod-a $CB_SV/prod-a type1 type101
 
         ecs_api_edp_put_producer_2 200 prod-b $CB_JOB/prod-b $CB_SV/prod-b type1 type2 type101 type102
@@ -332,6 +365,22 @@
 
 fi
 
+
+if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
+
+    ecs_equal json:/data-consumer/v1/info-type-subscription 2 200
+
+    ecs_api_idc_get_subscription_ids 200 owner1 subscription-id-1
+    ecs_api_idc_get_subscription_ids 200 owner2 subscription-id-2
+
+    if [ $use_info_jobs ]; then
+        ecs_equal json:data-producer/v1/info-types 10 1000
+    else
+        ecs_equal json:ei-producer/v1/eitypes 5 1000
+    fi
+
+fi
+
 stop_ecs
 
 cr_api_reset
@@ -340,28 +389,22 @@
 
 set_ecs_trace
 
-
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
 
-    ecs_api_idc_get_subscription_ids 200 NOOWNER EMPTY
-    ecs_api_idc_get_subscription_ids 200 NOOWNER EMPTY
+    ecs_equal json:/data-consumer/v1/info-type-subscription 2 200
+
+    ecs_api_idc_get_subscription_ids 200 owner1 subscription-id-1
+    ecs_api_idc_get_subscription_ids 200 owner2 subscription-id-2
 
     if [ $use_info_jobs ]; then
         ecs_equal json:data-producer/v1/info-types 10 1000
     else
         ecs_equal json:ei-producer/v1/eitypes 5 1000
     fi
-
-    ecs_api_idc_put_subscription 201 subscription-id-1 owner1 $TYPESTATUS1
-
-    ecs_api_idc_get_subscription_ids 200 owner1 subscription-id-1
-
-    ecs_api_idc_put_subscription 201 subscription-id-2 owner2 $TYPESTATUS2
-
-    ecs_api_idc_get_subscription_ids 200 owner2 subscription-id-2
-
 fi
 
+cr_equal received_callbacks 0
+
 for ((i=1; i<=$NUM_JOBS; i++))
 do
     if [ $(($i%5)) -eq 0 ]; then
@@ -735,8 +778,35 @@
     ecs_equal json:data-consumer/v1/info-jobs?infoTypeId=type105 0
 fi
 
+if [ $use_info_jobs ]; then
+    if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
+        ecs_api_edp_put_type_2 200 type101 testdata/ecs/info-type-1.json
+        ecs_api_edp_put_type_2 200 type102 testdata/ecs/info-type-2.json
+        ecs_api_edp_put_type_2 200 type103 testdata/ecs/info-type-3.json
+        ecs_api_edp_put_type_2 200 type104 testdata/ecs/info-type-4.json
+        ecs_api_edp_put_type_2 200 type105 testdata/ecs/info-type-5.json
+    fi
+fi
+
 if [[ "$ECS_FEATURE_LEVEL" == *"TYPE-SUBSCRIPTIONS"* ]]; then
-    cr_equal received_callbacks 0 30
+    cr_equal received_callbacks 10 30
+    cr_equal received_callbacks?id=type-status1 5
+    cr_equal received_callbacks?id=type-status2 5
+
+    cr_api_check_all_ecs_subscription_events 200 type-status1 \
+        type101 testdata/ecs/info-type-1.json REGISTERED \
+        type102 testdata/ecs/info-type-2.json REGISTERED \
+        type103 testdata/ecs/info-type-3.json REGISTERED \
+        type104 testdata/ecs/info-type-4.json REGISTERED \
+        type105 testdata/ecs/info-type-5.json REGISTERED
+
+    cr_api_check_all_ecs_subscription_events 200 type-status2 \
+        type101 testdata/ecs/info-type-1.json REGISTERED \
+        type102 testdata/ecs/info-type-2.json REGISTERED \
+        type103 testdata/ecs/info-type-3.json REGISTERED \
+        type104 testdata/ecs/info-type-4.json REGISTERED \
+        type105 testdata/ecs/info-type-5.json REGISTERED
+
 else
     cr_equal received_callbacks 0 30
 fi
diff --git a/test/auto-test/FTC2002.sh b/test/auto-test/FTC2002.sh
new file mode 100755
index 0000000..753cc79
--- /dev/null
+++ b/test/auto-test/FTC2002.sh
@@ -0,0 +1,164 @@
+#!/usr/bin/env bash
+
+#  ============LICENSE_START===============================================
+#  Copyright (C) 2020 Nordix Foundation. All rights reserved.
+#  ========================================================================
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+#  ============LICENSE_END=================================================
+#
+
+TC_ONELINE_DESCR="Testing southbound proxy for SDNC - docker only"
+
+#App names to include in the test when running docker, space separated list
+DOCKER_INCLUDED_IMAGES="RICSIM SDNC HTTPPROXY"
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES=""
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=" "
+
+#Supported test environment profiles
+SUPPORTED_PROFILES="ONAP-ISTANBUL"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER"
+
+. ../common/testcase_common.sh  $@
+. ../common/controller_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+. ../common/kube_proxy_api_functions.sh
+. ../common/http_proxy_api_functions.sh
+
+setup_testenvironment
+
+#### TEST BEGIN ####
+
+generate_policy_uuid
+
+#Test agent and simulator protocol versions (others are http only)
+NB_TESTED_PROTOCOLS="HTTP HTTPS"
+SB_TESTED_PROTOCOLS="HTTP HTTPS"
+
+for __nb_httpx in $NB_TESTED_PROTOCOLS ; do
+    for __sb_httpx in $SB_TESTED_PROTOCOLS ; do
+
+        echo "#####################################################################"
+        echo "#####################################################################"
+        echo "### Testing SDNC using Northbound: $__nb_httpx and Southbound: $__sb_httpx"
+        echo "#####################################################################"
+        echo "#####################################################################"
+
+        if [ $__sb_httpx == "HTTPS" ]; then
+            deviation "Southbound https proxy is currently not supported"
+            break
+        fi
+
+
+        # Clean container and start all needed containers #
+        clean_environment
+
+        start_http_proxy
+
+        start_ric_simulators ricsim_g1 1  OSC_2.1.0
+        start_ric_simulators ricsim_g2 1  STD_1.1.3
+        if [ "$PMS_VERSION" == "V2" ]; then
+            start_ric_simulators ricsim_g3 1  STD_2.0.0
+        fi
+
+        start_sdnc
+
+        if [ $__nb_httpx == "HTTPS" ]; then
+            # "Using secure ports towards SDNC"
+            use_sdnc_https
+        else
+            #"Using non-secure ports towards SDNC"
+            use_sdnc_http
+        fi
+
+        if [ $__sb_httpx == "HTTPS" ]; then
+            # "Using secure ports towards SDNC"
+            use_simulator_https
+            use_http_proxy_https
+        else
+            #"Using non-secure ports towards SDNC"
+            use_simulator_http
+            use_http_proxy_http
+        fi
+
+        echo -e $BOLD"Configure proxy in SDNC"$EBOLD
+        echo ""
+
+        if [ $__sb_httpx == "HTTPS" ]; then
+            echo "
+            sed  -i 's/a1Mediator.proxy.url=/a1Mediator.proxy.url=https:\/\/httpproxy:8433/g' /opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties
+            " | docker exec -i a1controller bash
+        else
+            echo "
+            sed  -i 's/a1Mediator.proxy.url=/a1Mediator.proxy.url=http:\/\/httpproxy:8080/g' /opt/onap/ccsdk/data/properties/a1-adapter-api-dg.properties
+            " | docker exec -i a1controller bash
+        fi
+
+        # Restart SDNC to use the updated config
+        stop_sdnc
+        start_stopped_sdnc
+
+        # API tests
+
+        controller_api_get_A1_policy_type 404 OSC ricsim_g1_1 1
+
+        sim_put_policy_type 201 ricsim_g1_1 1 testdata/OSC/sim_1.json
+
+
+        controller_api_get_A1_policy_ids 200 OSC ricsim_g1_1 1
+        controller_api_get_A1_policy_ids 200 STD ricsim_g2_1
+
+        controller_api_get_A1_policy_type 200 OSC ricsim_g1_1 1
+        controller_api_get_A1_policy_type 200 OSC ricsim_g1_1 1 testdata/OSC/sim_1.json
+        controller_api_get_A1_policy_type 404 OSC ricsim_g1_1 99
+
+        controller_api_put_A1_policy 202 OSC ricsim_g1_1 1 4000 testdata/OSC/pi1_template.json
+        controller_api_put_A1_policy 404 OSC ricsim_g1_1 5 1001 testdata/OSC/pi1_template.json
+
+        controller_api_put_A1_policy 201 STD ricsim_g2_1   5000 testdata/STD/pi1_template.json
+
+        controller_api_get_A1_policy_ids 200 OSC ricsim_g1_1 1 4000
+        controller_api_get_A1_policy_ids 200 STD ricsim_g2_1 5000
+
+        controller_api_get_A1_policy_status 200 OSC ricsim_g1_1 1 4000
+        controller_api_get_A1_policy_status 200 STD ricsim_g2_1 5000
+
+        VAL='NOT IN EFFECT'
+        controller_api_get_A1_policy_status 200 OSC ricsim_g1_1 1 4000 "$VAL" "false"
+        controller_api_get_A1_policy_status 200 STD ricsim_g2_1 5000 "UNDEFINED"
+
+
+        deviation "SDNC does not return original response code from sim"
+        controller_api_delete_A1_policy 202 OSC ricsim_g1_1 1 4000
+
+        deviation "SDNC does not return original response code from sim"
+        controller_api_delete_A1_policy 204 STD ricsim_g2_1 5000
+
+        sim_contains_str ricsim_g1_1 remote_hosts httpproxy.nonrtric-docker-net
+        sim_contains_str ricsim_g2_1 remote_hosts httpproxy.nonrtric-docker-net
+
+        check_sdnc_logs
+
+        store_logs          "NB_"$__nb_httpx"_SB_"$__sb_httpx
+
+    done
+
+done
+
+#### TEST COMPLETE ####
+
+print_result
+
+auto_clean_environment
\ No newline at end of file
diff --git a/test/auto-test/testdata/ecs/info-type-info.json b/test/auto-test/testdata/ecs/info-type-info.json
new file mode 100644
index 0000000..88814e7
--- /dev/null
+++ b/test/auto-test/testdata/ecs/info-type-info.json
@@ -0,0 +1,3 @@
+{
+    "hint": "periodic"
+}
\ No newline at end of file
diff --git a/test/common/controller_api_functions.sh b/test/common/controller_api_functions.sh
index 3ed3933..d703d83 100644
--- a/test/common/controller_api_functions.sh
+++ b/test/common/controller_api_functions.sh
@@ -272,6 +272,57 @@
     return 0
 }
 
+
+# Stop the sndc
+# args: -
+# args: -
+# (Function for test scripts)
+stop_sdnc() {
+	echo -e $BOLD"Stopping $SDNC_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+		__log_conf_fail_not_supported " Cannot stop sndc in KUBE mode"
+		return 1
+	else
+		docker stop $SDNC_APP_NAME &> ./tmp/.dockererr
+		if [ $? -ne 0 ]; then
+			__print_err "Could not stop $SDNC_APP_NAME" $@
+			cat ./tmp/.dockererr
+			((RES_CONF_FAIL++))
+			return 1
+		fi
+	fi
+	echo -e $BOLD$GREEN"Stopped"$EGREEN$EBOLD
+	echo ""
+	return 0
+}
+
+# Start a previously stopped sdnc
+# args: -
+# (Function for test scripts)
+start_stopped_sdnc() {
+	echo -e $BOLD"Starting (the previously stopped) $SDNC_DISPLAY_NAME"$EBOLD
+
+	if [ $RUNMODE == "KUBE" ]; then
+		__log_conf_fail_not_supported " Cannot restart sndc in KUBE mode"
+		return 1
+	else
+		docker start $SDNC_APP_NAME &> ./tmp/.dockererr
+		if [ $? -ne 0 ]; then
+			__print_err "Could not start (the stopped) $SDNC_APP_NAME" $@
+			cat ./tmp/.dockererr
+			((RES_CONF_FAIL++))
+			return 1
+		fi
+	fi
+	__check_service_start $SDNC_APP_NAME $SDNC_PATH$SDNC_ALIVE_URL
+	if [ $? -ne 0 ]; then
+		return 1
+	fi
+	echo ""
+	return 0
+}
+
 # Check the agent logs for WARNINGs and ERRORs
 # args: -
 # (Function for test scripts)
diff --git a/test/common/ecs_api_functions.sh b/test/common/ecs_api_functions.sh
index 805fae4..9bde835 100644
--- a/test/common/ecs_api_functions.sh
+++ b/test/common/ecs_api_functions.sh
@@ -1225,7 +1225,7 @@
 
 # API Test function: GET /ei-producer/v1/eitypes/{eiTypeId}
 # API Test function: GET /data-producer/v1/info-types/{infoTypeId}
-# args: (v1_2) <response-code> <type-id> [<job-schema-file> ]
+# args: (v1_2) <response-code> <type-id> [<job-schema-file> [ <info-type-info> ]]
 # (Function for test scripts)
 ecs_api_edp_get_type_2() {
 	__log_test_start $@
@@ -1237,8 +1237,13 @@
 	if [ $# -eq 3 ]; then
 		paramError=0
 	fi
+	if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+		if [ $# -eq 4 ]; then
+			paramError=0
+		fi
+	fi
     if [ $paramError -ne 0 ]; then
-		__print_err "<response-code> <type-id> [<job-schema-file> ]" $@
+		__print_err "<response-code> <type-id> [<job-schema-file> [ <info-type-info> ]]" $@
 		return 1
 	fi
 	if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
@@ -1254,7 +1259,7 @@
 		__log_test_fail_status_code $1 $status
 		return 1
 	fi
-	if [ $# -eq 3 ]; then
+	if [ $# -ge 3 ]; then
 		body=${res:0:${#res}-3}
 
 		if [ -f $3 ]; then
@@ -1263,8 +1268,18 @@
 			__log_test_fail_general "Job template file "$3", does not exist"
 			return 1
 		fi
+		info_data=""
+		if [ $# -gt 3 ]; then
+			if [ -f $4 ]; then
+				info_data=$(cat $4)
+			else
+				__log_test_fail_general "Info-data file "$4", does not exist"
+				return 1
+			fi
+			info_data=",\"info_type_information\":$info_data"
+		fi
 		if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
-			targetJson="{\"info_job_data_schema\":$schema}"
+			targetJson="{\"info_job_data_schema\":$schema $info_data}"
 		else
 			targetJson="{\"ei_job_data_schema\":$schema}"
 		fi
@@ -1283,23 +1298,42 @@
 
 # API Test function: PUT /ei-producer/v1/eitypes/{eiTypeId}
 # API Test function: PUT /data-producer/v1/info-types/{infoTypeId}
-# args: (v1_2) <response-code> <type-id> <job-schema-file>
+# args: (v1_2) <response-code> <type-id> <job-schema-file> [ <info-type-info> ]
 # (Function for test scripts)
 ecs_api_edp_put_type_2() {
 	__log_test_start $@
 
-    if [ $# -ne 3 ]; then
-		__print_err "<response-code> <type-id> <job-schema-file>" $@
-		return 1
+	if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPE-INFO"* ]]; then
+		if [ $# -lt 3 ] || [ $# -gt 4 ]; then
+			__print_err "<response-code> <type-id> <job-schema-file> [ <info-type-info> ]" $@
+			return 1
+		fi
+	else
+		if [ $# -ne 3 ]; then
+			__print_err "<response-code> <type-id> <job-schema-file>" $@
+			return 1
+		fi
 	fi
 
 	if [ ! -f $3 ]; then
 		__log_test_fail_general "Job schema file "$3", does not exist"
 		return 1
 	fi
+
+	info_data=""
+	if [ $# -gt 3 ]; then
+		if [ -f $4 ]; then
+			info_data=$(cat $4)
+		else
+			__log_test_fail_general "Info-data file "$4", does not exist"
+			return 1
+		fi
+		info_data=",\"info_type_information\":$info_data"
+	fi
+
 	if [[ "$ECS_FEATURE_LEVEL" == *"INFO-TYPES"* ]]; then
 		schema=$(cat $3)
-		input_json="{\"info_job_data_schema\":$schema}"
+		input_json="{\"info_job_data_schema\":$schema $info_data}"
 		file="./tmp/put_type.json"
 		echo $input_json > $file
 
diff --git a/test/common/test_env-onap-honolulu.sh b/test/common/test_env-onap-honolulu.sh
index 0797912..54e6fbe 100755
--- a/test/common/test_env-onap-honolulu.sh
+++ b/test/common/test_env-onap-honolulu.sh
@@ -76,10 +76,10 @@
 
 # SDNC A1 Controller remote image and tag
 SDNC_A1_CONTROLLER_IMAGE_BASE="onap/sdnc-image"
-SDNC_A1_CONTROLLER_IMAGE_TAG_LOCAL="2.1.3-SNAPSHOT" ###CHECK THIS
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_SNAPSHOT="2.1.3-STAGING-latest"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE="2.1.3-STAGING-latest"  #Will use snapshot repo
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.1.2"
+SDNC_A1_CONTROLLER_IMAGE_TAG_LOCAL="2.1.7-SNAPSHOT" ###CHECK THIS
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_SNAPSHOT="2.1.7-STAGING-latest"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE="2.1.7-STAGING-latest"  #Will use snapshot repo
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.1.6"
 
 #SDNC DB remote image and tag
 #The DB is part of SDNC so handled in the same way as SDNC
@@ -320,6 +320,7 @@
 SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 #SDNC_RESPONSE_JSON_KEY="A1-ADAPTER-API:output"           # Key name for output json in replies from sdnc (for upgraded sdnc)
 SDNC_RESPONSE_JSON_KEY="output"                          # Key name for output json in replies from sdnc
+SDNC_FEATURE_LEVEL=""                                    # Space separated list of features
 
 RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
 RAPP_CAT_DISPLAY_NAME="RAPP Catalogue Service"
diff --git a/test/common/test_env-onap-istanbul.sh b/test/common/test_env-onap-istanbul.sh
index a99ad9d..4982e19 100644
--- a/test/common/test_env-onap-istanbul.sh
+++ b/test/common/test_env-onap-istanbul.sh
@@ -69,9 +69,9 @@
 
 # Policy Agent image and tags
 POLICY_AGENT_IMAGE_BASE="onap/ccsdk-oran-a1policymanagementservice"
-POLICY_AGENT_IMAGE_TAG_LOCAL="1.2.1-SNAPSHOT"
-POLICY_AGENT_IMAGE_TAG_REMOTE_SNAPSHOT="1.2.1-SNAPSHOT"
-POLICY_AGENT_IMAGE_TAG_REMOTE="1.2.1-STAGING-latest" #Will use snapshot repo
+POLICY_AGENT_IMAGE_TAG_LOCAL="1.2.2-SNAPSHOT"
+POLICY_AGENT_IMAGE_TAG_REMOTE_SNAPSHOT="1.2-SNAPSHOT"
+POLICY_AGENT_IMAGE_TAG_REMOTE="1.2.2-STAGING-latest" #Will use snapshot repo
 POLICY_AGENT_IMAGE_TAG_REMOTE_RELEASE="1.2.1"
 
 # SDNC A1 Controller remote image and tag
@@ -86,22 +86,25 @@
 SDNC_DB_IMAGE_BASE="mariadb"
 SDNC_DB_IMAGE_TAG_REMOTE_PROXY="10.5"
 
-# ECS image and tag - uses cherry release
+# ECS image and tag - uses d release
 ECS_IMAGE_BASE="o-ran-sc/nonrtric-enrichment-coordinator-service"
-ECS_IMAGE_TAG_REMOTE_RELEASE_ORAN="1.0.1"
+ECS_IMAGE_TAG_REMOTE_RELEASE_ORAN="1.1.0"
 #Note: Update var ECS_FEATURE_LEVEL if image version is changed
 
-# Control Panel image and tag - uses cherry release
+# Control Panel image and tag - uses d release
 CONTROL_PANEL_IMAGE_BASE="o-ran-sc/nonrtric-controlpanel"
-CONTROL_PANEL_IMAGE_TAG_REMOTE_RELEASE_ORAN="2.1.1"
+CONTROL_PANEL_IMAGE_TAG_REMOTE_RELEASE_ORAN="2.2.0"
 
+# Gateway image and tags - uses d release
+NRT_GATEWAY_IMAGE_BASE="o-ran-sc/nonrtric-gateway"
+NRT_GATEWAY_IMAGE_TAG_REMOTE_RELEASE_ORAN="1.0.0"
 
-# RAPP Catalogue image and tags - uses cherry release
+# RAPP Catalogue image and tags - uses d release
 RAPP_CAT_IMAGE_BASE="o-ran-sc/nonrtric-r-app-catalogue"
 RAPP_CAT_IMAGE_TAG_REMOTE_RELEASE_ORAN="1.0.1"
 
 
-# Near RT RIC Simulator image and tags - uses cherry release
+# Near RT RIC Simulator image and tags - uses d release
 RIC_SIM_IMAGE_BASE="o-ran-sc/a1-simulator"
 RIC_SIM_IMAGE_TAG_REMOTE_RELEASE_ORAN="2.1.0"
 
@@ -165,7 +168,7 @@
 PROJECT_IMAGES_APP_NAMES="PA SDNC"
 
 # List of app short names which images pulled from ORAN
-ORAN_IMAGES_APP_NAMES="CP ECS RICSIM RC"
+ORAN_IMAGES_APP_NAMES="CP ECS RICSIM RC NGW"
 
 # List of app short names which images pulled from ONAP
 ONAP_IMAGES_APP_NAMES=""   # Not used
@@ -224,7 +227,7 @@
 ECS_CONFIG_MOUNT_PATH=/opt/app/enrichment-coordinator-service/config # Internal container path for configuration
 ECS_CONFIG_FILE=application.yaml                         # Config file name
 ECS_VERSION="V1-2"                                       # Version where the types are added in the producer registration
-ECS_FEATURE_LEVEL=""                                     # Space separated list of features
+ECS_FEATURE_LEVEL="INFO-TYPES"                           # Space separated list of features
 
 MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
 MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
@@ -320,6 +323,8 @@
 SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 #SDNC_RESPONSE_JSON_KEY="A1-ADAPTER-API:output"           # Key name for output json in replies from sdnc (for upgraded sdnc)
 SDNC_RESPONSE_JSON_KEY="output"                          # Key name for output json in replies from sdnc
+SDNC_FEATURE_LEVEL="TRANS_RESP_CODE"                     # Space separated list of features
+                                                         # TRANS_RESP_CODE: SDNC return southbound response code
 
 RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
 RAPP_CAT_DISPLAY_NAME="RAPP Catalogue Service"
@@ -343,6 +348,21 @@
 CONTROL_PANEL_CONFIG_FILE=application.properties         # Config file name
 CONTROL_PANEL_HOST_MNT_DIR="./mnt"                       # Mounted dir, relative to compose file, on the host
 
+NRT_GATEWAY_APP_NAME="nonrtricgateway"                   # Name of the Gateway container
+NRT_GATEWAY_DISPLAY_NAME="NonRT-RIC Gateway"
+NRT_GATEWAY_EXTERNAL_PORT=9090                           # Gateway container external port (host -> container)
+NRT_GATEWAY_INTERNAL_PORT=9090                           # Gateway container internal port (container -> container)
+NRT_GATEWAY_EXTERNAL_SECURE_PORT=9091                    # Gateway container external port (host -> container)
+NRT_GATEWAY_INTERNAL_SECURE_PORT=9091                    # Gateway container internal port (container -> container)
+NRT_GATEWAY_LOGPATH="/var/log/nonrtric-gateway/application.log" # Path the application log in the Gateway container
+NRT_GATEWAY_HOST_MNT_DIR="./mnt"                         # Mounted dir, relative to compose file, on the host
+NRT_GATEWAY_ALIVE_URL="/actuator/metrics"                # Base path for alive check
+NRT_GATEWAY_COMPOSE_DIR="ngw"                            # Dir in simulator_group for docker-compose
+NRT_GATEWAY_CONFIG_MOUNT_PATH=/opt/app/nonrtric-gateway/config  # Container internal path for config
+NRT_GATEWAY_CONFIG_FILE=application.yaml                 # Config file name
+NRT_GATEWAY_PKG_NAME="org.springframework.cloud.gateway" # Java base package name
+NRT_GATEWAY_ACTUATOR="/actuator/loggers/$NRT_GATEWAY_PKG_NAME" # Url for trace/debug
+
 HTTP_PROXY_APP_NAME="httpproxy"                          # Name of the Http Proxy container
 HTTP_PROXY_DISPLAY_NAME="Http Proxy"
 HTTP_PROXY_EXTERNAL_PORT=8740                            # Http Proxy container external port (host -> container)
diff --git a/test/common/test_env-oran-d-release.sh b/test/common/test_env-oran-d-release.sh
index 399f362..385dafe 100755
--- a/test/common/test_env-oran-d-release.sh
+++ b/test/common/test_env-oran-d-release.sh
@@ -89,9 +89,9 @@
 NRT_GATEWAY_IMAGE_TAG_REMOTE_RELEASE="1.0.0"
 
 
-# SDNC A1 Controller image and tags - Note using ONAP image
+# SDNC A1 Controller image and tags - Note using Honolulu ONAP image
 SDNC_A1_CONTROLLER_IMAGE_BASE="onap/sdnc-image"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE_ONAP="2.1.2"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE_ONAP="2.1.6"
 #No local image for ONAP SDNC, remote release image always used
 
 # ORAN SDNC adapter kept as reference
@@ -364,6 +364,7 @@
 SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 #SDNC_RESPONSE_JSON_KEY="A1-ADAPTER-API:output"           # Key name for output json in replies from sdnc (for upgraded sdnc)
 SDNC_RESPONSE_JSON_KEY="output"                          # Key name for output json in replies from sdnc
+SDNC_FEATURE_LEVEL=""                                    # Space separated list of features
 
 RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
 RAPP_CAT_DISPLAY_NAME="RAPP Catalogue"
diff --git a/test/common/test_env-oran-e-release.sh b/test/common/test_env-oran-e-release.sh
index e468d03..0f6e977 100755
--- a/test/common/test_env-oran-e-release.sh
+++ b/test/common/test_env-oran-e-release.sh
@@ -89,9 +89,9 @@
 NRT_GATEWAY_IMAGE_TAG_REMOTE_RELEASE="1.1.0"
 
 
-# SDNC A1 Controller image and tags - Note using ONAP image
+# SDNC A1 Controller image and tags - Note using released honolulu ONAP image
 SDNC_A1_CONTROLLER_IMAGE_BASE="onap/sdnc-image"
-SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE_ONAP="2.1.2"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE_ONAP="2.1.6"
 #No local image for ONAP SDNC, remote release image always used
 
 # ORAN SDNC adapter kept as reference
@@ -247,7 +247,7 @@
 ECS_CONFIG_MOUNT_PATH=/opt/app/enrichment-coordinator-service/config # Internal container path for configuration
 ECS_CONFIG_FILE=application.yaml                         # Config file name
 ECS_VERSION="V1-2"                                       # Version where the types are decoupled from the producer registration
-ECS_FEATURE_LEVEL="INFO-TYPES TYPE-SUBSCRIPTIONS"        # Space separated list of features
+ECS_FEATURE_LEVEL="INFO-TYPES TYPE-SUBSCRIPTIONS INFO-TYPE-INFO"  # Space separated list of features
 
 MR_DMAAP_APP_NAME="dmaap-mr"                             # Name for the Dmaap MR
 MR_STUB_APP_NAME="mr-stub"                               # Name of the MR stub
@@ -364,6 +364,7 @@
 SDNC_KARAF_LOG="/opt/opendaylight/data/log/karaf.log"    # Path to karaf log
 #SDNC_RESPONSE_JSON_KEY="A1-ADAPTER-API:output"           # Key name for output json in replies from sdnc (for upgraded sdnc)
 SDNC_RESPONSE_JSON_KEY="output"                          # Key name for output json in replies from sdnc
+SDNC_FEATURE_LEVEL=""                                    # Space separated list of features
 
 RAPP_CAT_APP_NAME="rappcatalogueservice"                 # Name for the RAPP Catalogue
 RAPP_CAT_DISPLAY_NAME="RAPP Catalogue"
diff --git a/test/common/testcase_common.sh b/test/common/testcase_common.sh
index 5f1b097..b63d4d1 100755
--- a/test/common/testcase_common.sh
+++ b/test/common/testcase_common.sh
@@ -310,6 +310,14 @@
 	__check_stop_at_error
 }
 
+# Function to log a configuration that is not supported
+__log_conf_fail_not_supported() {
+	echo -e $RED" FAIL, function not supported"$ERED$@
+	((RES_CONF_FAIL++))
+	__print_current_stats
+	__check_stop_at_error
+}
+
 # Function to log a passed configuration setup
 __log_conf_ok() {
 	if [ $# -gt 0 ]; then
diff --git a/test/simulator-group/policy_agent/application.yaml b/test/simulator-group/policy_agent/application.yaml
index 5c5b08d..75e4200 100644
--- a/test/simulator-group/policy_agent/application.yaml
+++ b/test/simulator-group/policy_agent/application.yaml
@@ -66,3 +66,4 @@
     # The HTTP proxy (if configured) will only be used for accessing NearRT RIC:s
     http.proxy-host: $AGENT_HTTP_PROXY_CONFIG_HOST_NAME
     http.proxy-port: $AGENT_HTTP_PROXY_CONFIG_PORT
+    http.proxy-type: HTTP