diff --git a/test/auto-test/ONAP_UC.sh b/test/auto-test/ONAP_UC.sh
new file mode 100755
index 0000000..1001655
--- /dev/null
+++ b/test/auto-test/ONAP_UC.sh
@@ -0,0 +1,287 @@
+#!/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="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 PA RICSIM SDNC NGW"
+
+#App names to include in the test when running kubernetes, space separated list
+KUBE_INCLUDED_IMAGES="CP CR MR PA RICSIM SDNC KUBEPROXY NGW"
+#Prestarted app (not started by script) to include in the test when running kubernetes, space separated list
+KUBE_PRESTARTED_IMAGES=""
+
+#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"
+
+#Supported test environment profiles
+SUPPORTED_PROFILES="ONAP-HONOLULU"
+#Supported run modes
+SUPPORTED_RUNMODES="DOCKER KUBE"
+
+. ../common/testcase_common.sh $@
+. ../common/agent_api_functions.sh
+. ../common/ricsimulator_api_functions.sh
+. ../common/mr_api_functions.sh
+. ../common/control_panel_api_functions.sh
+. ../common/controller_api_functions.sh
+. ../common/cr_api_functions.sh
+. ../common/consul_cbs_functions.sh
+. ../common/kube_proxy_api_functions.sh
+. ../common/gateway_api_functions.sh
+
+setup_testenvironment
+
+#### TEST BEGIN ####
+
+#Local vars in test script
+##########################
+
+use_cr_https
+use_agent_rest_https
+use_sdnc_https
+use_simulator_https
+use_mr_https
+
+if [ "$PMS_VERSION" == "V2" ]; then
+    notificationurl=$CR_SERVICE_PATH"/test"
+else
+    echo "Version V2 of PMS is needed, exiting..."
+    exit 1
+fi
+
+generate_policy_uuid
+
+# Tested variants of REST/DMAAP/SDNC config
+TESTED_VARIANTS="REST   DMAAP   REST+SDNC   DMAAP+SDNC"
+for interface in $TESTED_VARIANTS ; do
+
+    echo "#####################################################################"
+    echo "#####################################################################"
+    echo "### Testing agent: $interface using https"
+    echo "#####################################################################"
+    echo "#####################################################################"
+
+    clean_environment
+
+    if [ $RUNMODE == "KUBE" ]; then
+        start_kube_proxy
+    fi
+
+    if [[ $interface = *"DMAAP"* ]]; then
+        use_agent_dmaap_https
+    else
+        use_agent_rest_https
+    fi
+
+    OSC_NUM_RICS=1
+    STD_NUM_RICS=1
+
+    start_ric_simulators  $RIC_SIM_PREFIX"_g1" $OSC_NUM_RICS OSC_2.1.0
+
+    start_ric_simulators  $RIC_SIM_PREFIX"_g2" $STD_NUM_RICS STD_1.1.3
+
+    start_ric_simulators $RIC_SIM_PREFIX"_g3" $STD_NUM_RICS STD_2.0.0
+
+    start_mr
+
+    start_control_panel $SIM_GROUP/$CONTROL_PANEL_COMPOSE_DIR/$CONTROL_PANEL_CONFIG_FILE
+
+    if [ ! -z "$NRT_GATEWAY_APP_NAME" ]; then
+        start_gateway $SIM_GROUP/$NRT_GATEWAY_COMPOSE_DIR/$NRT_GATEWAY_CONFIG_FILE
+    fi
+
+    if [[ $interface = *"SDNC"* ]]; then
+        start_sdnc
+        prepare_consul_config      SDNC    ".consul_config.json"
+    else
+        prepare_consul_config      NOSDNC  ".consul_config.json"
+    fi
+
+    start_policy_agent NORPOXY $SIM_GROUP/$POLICY_AGENT_COMPOSE_DIR/$POLICY_AGENT_CONFIG_FILE
+
+    set_agent_trace
+
+    if [ $RUNMODE == "DOCKER" ]; then
+        start_consul_cbs
+    fi
+
+    if [ $RUNMODE == "KUBE" ]; then
+        agent_load_config                       ".consul_config.json"
+    else
+        consul_config_app                      ".consul_config.json"
+    fi
+
+    # Check that all rics are synced in
+    api_equal json:rics 3 300
+
+    api_get_status 200
+
+    # Print the A1 version for OSC
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        sim_print $RIC_SIM_PREFIX"_g1_"$i interface
+    done
+
+
+    # Print the A1 version for STD 1.X
+    for ((i=1; i<=$STD_NUM_RICS; i++))
+    do
+        sim_print $RIC_SIM_PREFIX"_g2_"$i interface
+    done
+
+    # 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
+
+    #################################################################
+    ## REQ: Synchronize A1 Policy Information in RAN
+    #################################################################
+
+    # Load the polictypes in osc
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g1_"$i 100 demo-testdata/OSC/sim_qos.json
+        sim_put_policy_type 201 $RIC_SIM_PREFIX"_g1_"$i 20008 demo-testdata/OSC/sim_tsa.json
+    done
+
+    #Check the number of schemas and the individual schemas in OSC
+    api_equal json:policy-types 3 300
+
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        api_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
+        api_get_policy_type 200 100 demo-testdata/OSC/qos-agent-modified.json
+        api_get_policy_type 200 20008 demo-testdata/OSC/tsa-agent-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
+    api_equal json:policy-types 5 120
+
+    for ((i=1; i<=$STD_NUM_RICS; i++))
+    do
+        api_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
+        api_get_policy_type 200 STD_QOS_0_2_0 demo-testdata/STD2/qos-agent-modified.json
+        api_get_policy_type 200 'STD_QOS2_0.1.0' demo-testdata/STD2/qos2-agent-modified.json
+    done
+
+    #Check the number of types
+    api_equal json:policy-types 5 120
+
+    #################################################################
+    ##  REQ: A1 Policy Type / Instance Operations
+    #################################################################
+
+    # Create policies
+    use_agent_rest_http
+
+    api_put_service 201 "Emergency-response-app" 0 "$CR_SERVICE_PATH/1"
+
+    # Create policies in OSC
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g1_"$i 100 $((3000+$i)) NOTRANSIENT $notificationurl demo-testdata/OSC/piqos_template.json 1
+        api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g1_"$i 20008 $((4000+$i)) NOTRANSIENT $notificationurl demo-testdata/OSC/pitsa_template.json 1
+    done
+
+
+    # Check the number of policies in OSC
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        sim_equal $RIC_SIM_PREFIX"_g1_"$i num_instances 2
+    done
+
+
+    # Create policies in STD
+    for ((i=1; i<=$STD_NUM_RICS; i++))
+    do
+        api_put_policy 201 "Emergency-response-app" $RIC_SIM_PREFIX"_g2_"$i NOTYPE $((2100+$i)) NOTRANSIENT $notificationurl demo-testdata/STD/pi1_template.json 1
+        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
+        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
+
+
+    # Check the number of policies in STD
+    for ((i=1; i<=$STD_NUM_RICS; i++))
+    do
+        sim_equal $RIC_SIM_PREFIX"_g2_"$i num_instances 1
+        sim_equal $RIC_SIM_PREFIX"_g3_"$i num_instances 2
+    done
+
+    #################################################################
+    ##  REQ: A1 Policy Instance Status Operations
+    #################################################################
+
+    # Check status STD
+    for ((i=1; i<=$STD_NUM_RICS; i++))
+    do
+        api_get_policy_status 200 $((2100+$i)) STD "UNDEFINED"
+        api_get_policy_status 200 $((2300+$i)) STD2 EMPTY EMPTY
+        api_get_policy_status 200 $((2400+$i)) STD2 EMPTY EMPTY
+    done
+
+    # Check status OSC
+    VAL='NOT IN EFFECT'
+    for ((i=1; i<=$OSC_NUM_RICS; i++))
+    do
+        api_get_policy_status 200 $((3000+$i)) OSC "$VAL" "false"
+        api_get_policy_status 200 $((4000+$i)) OSC "$VAL" "false"
+    done
+
+    # Note: Status callback is not tested since this callback (http POST) is made from the
+    # ricsim directly to the receiver of the status, i.e. the status does NOT
+    # pass through PMS
+
+    check_policy_agent_logs
+
+    if [[ $interface = *"SDNC"* ]]; then
+        check_sdnc_logs
+    fi
+
+    #### TEST COMPLETE ####
+
+    store_logs          "https__${interface}"
+
+done
+
+print_result
+
+auto_clean_environment
\ No newline at end of file
diff --git a/test/common/README.md b/test/common/README.md
index 120a826..a6c09e2 100644
--- a/test/common/README.md
+++ b/test/common/README.md
@@ -81,6 +81,47 @@
 `testsuite_common.sh` \
 Common functions for running two or more auto test scripts as a suite.
 
+## Integration of a new applicaton
+
+Integration a new application to the test environment involves the following steps.
+
+* Choose a short name for the application. Should be a uppcase name. For example, the NonRTRIC Gateway has NGW as short name.
+This short name shall be added to the testengine_config.sh. See that file for detailed instructions.
+
+* Create a file in this directory using the pattern `<application-name>_api_functions.sh`.
+This file must implement the following functions used by the test engine. Note that functions must include the application short name in the function name. If the application does not run in kubernetes, then the last three functions in the list can be omitted.
+
+| Function |
+|--|
+| __<app-short_name>_imagesetup |
+| __<app-short_name>_imagepull |
+| __<app-short_name>_imagebuild |
+| __<app-short_name>_image_data |
+| __<app-short_name>_kube_scale_zero |
+| __<app-short_name>_kube_scale_zero_and_wait |
+| __<app-short_name>_kube_delete_all |
+
+In addition, all other functions used for testing of the application shall also be added to the file. For example functions to start the application, setting interface parameters as well as functions to send rest call towards the api of the application and validating the result.
+
+* Add the application variables to api_curl.sh. This file contains a generic function to make rest calls to an api. It also supports switching betweeen direct rest calls or rest calls via messsage router.
+
+* Create a directory beneath in the simulator-group dir. This new directory shall contain docker-compose files, config files (with or without variable substitutions) and kubernetes resource files.
+
+All docker-compose files and all kubernetes resource files need to defined special lables. These lables are used by the test enginge to identify containers and resources started and used by the test engine.
+
+| Label for docker compose | Description |
+|--|--|
+| nrttest_app | shall contain the application short name |
+| nrttest_dp  | shall be set by a variable containing the display name, a short textual description of the applicaion |
+
+| Label for kubernetes resource | Description |
+|--|--|
+| autotest | shall contain the application short name |
+
+* Add mandatory image(s) and image tag(s) to the appropriate environment files for each release in the file(s) `test_env_<system>-<release-name>`.
+In addition, all other needed environment shall also be defined in these file.
+
+
 # Description of functions in testcase_common.sh #
 
 ## Script args ##
diff --git a/test/common/test_env-onap-honolulu.sh b/test/common/test_env-onap-honolulu.sh
index abbf824..559dab2 100644
--- a/test/common/test_env-onap-honolulu.sh
+++ b/test/common/test_env-onap-honolulu.sh
@@ -57,19 +57,29 @@
 # 6 XXX_REMOTE_RELEASE_ONAP: ONAP release images: <onap-release-nexus-repo><image-name>:<release-tag>
 # 7 XXX_PROXY: other images, not produced by the project: <proxy-nexus-repo><mage-name>:<proxy-tag>
 
+#############################################################################
+# Note:
+# The imgage tags for pms and sdnc are updated AFTER the release.
+# This means that the latest staging/snapshot images for these two components have
+# version one step (0.0.1 - bug-level) higher than the
+# latest release image version.
+
+# This is only applicable for ONAP images
+#############################################################################
+
 # Policy Agent image and tags
 POLICY_AGENT_IMAGE_BASE="onap/ccsdk-oran-a1policymanagementservice"
 POLICY_AGENT_IMAGE_TAG_LOCAL="1.1.2-SNAPSHOT"
 POLICY_AGENT_IMAGE_TAG_REMOTE_SNAPSHOT="1.1.2-SNAPSHOT"
 POLICY_AGENT_IMAGE_TAG_REMOTE="1.1.2-STAGING-latest" #Will use snapshot repo
-POLICY_AGENT_IMAGE_TAG_REMOTE_RELEASE="1.1.2"
+POLICY_AGENT_IMAGE_TAG_REMOTE_RELEASE="1.1.1"
 
 # 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.3"
+SDNC_A1_CONTROLLER_IMAGE_TAG_REMOTE_RELEASE="2.1.2"
 
 #SDNC DB remote image and tag
 #The DB is part of SDNC so handled in the same way as SDNC
diff --git a/test/common/testcase_common.sh b/test/common/testcase_common.sh
index dc5415b..d969245 100755
--- a/test/common/testcase_common.sh
+++ b/test/common/testcase_common.sh
@@ -1873,8 +1873,8 @@
 	appcount=$1
 	shift
 
-	os_version=$(uname -a 2> /dev/null | awk '{print tolower($0)}' | grep "mircosoft")
-	if [[ "$os_version" == *"mircosoft"* ]]; then
+	os_version=$(uname -a 2> /dev/null | awk '{print tolower($0)}' | grep "microsoft")
+	if [[ "$os_version" == *"microsoft"* ]]; then
 		echo -e $YELLOW" Workaround for Linux on Win - delay container start, 1 sec, to make sure files mounted in the container are available on disk - WLS problem"$EYELLOW
 		sleep 1
 	fi
diff --git a/test/simulator-group/sdnc/app2.yaml b/test/simulator-group/sdnc/app2.yaml
index 116ce66..3a0f597 100644
--- a/test/simulator-group/sdnc/app2.yaml
+++ b/test/simulator-group/sdnc/app2.yaml
@@ -53,6 +53,8 @@
           value: 'true'
         - name: A1_TRUSTSTORE_PASSWORD
           value: $SDNC_A1_TRUSTSTORE_PASSWORD
+        - name: AAI_TRUSTSTORE_PASSWORD
+          value: 'changeit'
         command:
         - /opt/onap/sdnc/bin/startODL.sh
 ---
