diff --git a/tests/data/onos-app-upgrade.yaml b/tests/data/onos-app-upgrade.yaml
new file mode 100644
index 0000000..30c4061
--- /dev/null
+++ b/tests/data/onos-app-upgrade.yaml
@@ -0,0 +1,53 @@
+---
+
+# Copyright 2017-present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Automated deployment configuration for kind-voltha running BBSim
+
+# Change default values in tests
+has_dataplane: false
+# teardown_device: true
+ONOS_REST_PORT: 8181
+ONOS_SSH_PORT: 8101
+OLT_PORT: 50060
+
+nodes:
+  -
+    ip: '127.0.0.1'
+
+olts:
+  -
+    ip: bbsim0
+    serial: BBSIM_OLT_10
+
+hosts:
+  src:
+    -
+      onu: 'BBSM000a0001'
+      olt: 'BBSIM_OLT_10'
+      c_tag: '900'
+      s_tag: '900'
+
+  dst:
+    - ip: null
+
+onos_apps:
+  - org.opencord.sadis
+  - org.opencord.olt
+  - org.opencord.mcast
+  - org.opencord.igmpproxy
+  - org.opencord.dhcpl2relay
+  - org.opencord.kafka
+  - org.opencord.aaa
diff --git a/tests/data/onos-files/README.md b/tests/data/onos-files/README.md
new file mode 100644
index 0000000..66c46b6
--- /dev/null
+++ b/tests/data/onos-files/README.md
@@ -0,0 +1 @@
+This folder is the place holder for ONOS Apps OAR file as required by the Software-Upgrades Test
diff --git a/tests/software-upgrades/ONOS_AppsUpgrade.robot b/tests/software-upgrades/ONOS_AppsUpgrade.robot
new file mode 100644
index 0000000..e9a51e1
--- /dev/null
+++ b/tests/software-upgrades/ONOS_AppsUpgrade.robot
@@ -0,0 +1,138 @@
+# Copyright 2021 - present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+*** Settings ***
+Documentation     Test ONOS Apps Software Upgrade
+Suite Setup       Setup Suite
+Test Setup        Setup
+Test Teardown     Teardown
+Suite Teardown    Teardown Suite
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../../libraries/DependencyLibrary.py
+Resource          ../../libraries/onos.robot
+Resource          ../../libraries/voltctl.robot
+Resource          ../../libraries/voltha.robot
+Resource          ../../libraries/utils.robot
+Resource          ../../libraries/k8s.robot
+Resource          ../../variables/variables.robot
+Resource          ../../libraries/power_switch.robot
+
+*** Variables ***
+${POD_NAME}       flex-ocp-cord
+${KUBERNETES_CONF}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_CONFIGS_DIR}    ~/pod-configs/kubernetes-configs
+#${KUBERNETES_CONFIGS_DIR}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_YAML}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
+${HELM_CHARTS_DIR}    ~/helm-charts
+${VOLTHA_POD_NUM}    8
+${NAMESPACE}      voltha
+# For below variable value, using deployment name as using grep for
+# parsing radius pod name, we can also use full radius pod name
+${RESTART_POD_NAME}    radius
+${timeout}        60s
+${of_id}          0
+${logical_id}     0
+${uprate}         0
+${dnrate}         0
+${has_dataplane}    True
+${teardown_device}    False
+${scripts}        ../../scripts
+
+# Per-test logging on failure is turned off by default; set this variable to enable
+${container_log_dir}    ${None}
+
+# ONOS Apps to Test for Software Upgrade need to be passed in the following variable in format:
+# <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>
+# Example: org.opencord.aaa,2.3.0.SNAPSHOT,
+# https://oss.sonatype.org/content/groups/public/org/opencord/aaa-app/2.3.0-SNAPSHOT/aaa-app-2.3.0-20201210.223737-1.oar
+${onos_apps_under_test}    ${EMPTY}
+
+*** Test Cases ***
+Test ONOS App Minor Version Upgrade
+    [Documentation]    Validates the ONOS App Minor Version Upgrade doesn't affect the system functionality
+    ...    Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+    ...    Requirement: Apps to test needs to be passed in robot command variable 'onos_apps_under_test' in the format:
+    ...    <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>
+    ...    Check [VOL-3844] for more details
+    [Tags]    functional    ONOSAppMinorVerUpgrade
+    [Setup]    Run Keywords    Start Logging    ONOSAppMinorVerUpgrade
+    ...        AND    Setup
+    [Teardown]    Run Keywords    Collect Logs
+    ...           AND             Stop Logging    ONOSAppMinorVerUpgrade
+    ...           AND             Delete All Devices and Verify
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test
+    ${onos_url}=    Set Variable    http://karaf:karaf@${ONOS_REST_IP}:${ONOS_REST_PORT}
+    ${num_apps_under_test}=    Get Length    ${list_onos_apps_under_test}
+    FOR    ${I}    IN RANGE    0    ${num_apps_under_test}
+        ${app}=    Set Variable    ${list_onos_apps_under_test}[${I}][app]
+        ${version}=    Set Variable    ${list_onos_apps_under_test}[${I}][version]
+        ${url}=    Set Variable    ${list_onos_apps_under_test}[${I}][url]
+        ${oar_file}=    Set Variable    ${CURDIR}/../../tests/data/onos-files/${app}-${version}.oar
+        Download App OAR File    ${url}    ${oar_file}
+        Delete ONOS App    ${onos_url}    ${app}
+        Verify ONOS Apps Active Except App Under Test    ${onos_url}    ${app}
+        Install And Activate ONOS App    ${onos_url}    ${oar_file}
+        Run Keyword And Continue On Failure    Wait Until Keyword Succeeds    ${timeout}    2s
+        ...    Verify ONOS App Active    ${onos_url}    ${app}    ${version}
+        Verify ONOS Pod Restart    False
+        Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test    True
+    END
+    # Additional Verification
+    Wait Until Keyword Succeeds    ${timeout}    2s    Delete All Devices and Verify
+    Setup
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test
+
+*** Keywords ***
+Setup Suite
+    [Documentation]    Set up the test suite
+    Common Test Suite Setup
+    Create ONOS Apps Under Test List
+
+Verify ONOS Apps Active Except App Under Test
+    [Documentation]    Verifies all the apps defined in input yaml are active except for the app under test
+    [Arguments]    ${onos_url}    ${app_under_test}
+    ${num_onos_apps}=    Get Length    ${onos_apps}
+    FOR    ${I}    IN RANGE    0    ${num_onos_apps}
+        Continue For Loop If    '${app_under_test}'=='${onos_apps}[${I}]'
+        Verify ONOS App Active    ${onos_url}    ${onos_apps}[${I}]
+    END
+
+Download App OAR File
+    [Documentation]    This keyword downloads the app oar file from the given url to the specified location
+    [Arguments]    ${oar_url}    ${oar_file}
+    ${rc}    Run And Return Rc    curl -L ${oar_url} > ${oar_file}
+    Should Be Equal As Integers    ${rc}    0
+
+Create ONOS Apps Under Test List
+    [Documentation]    Creates a list of ONOS Apps to Test from the input variable string
+    ...    The input string is expected to be in format:
+    ...    <app-name>,<version>,<oar-url>*<app-name>,<version>,<oar-url>
+    ${list_onos_apps_under_test}    Create List
+    @{apps_under_test_arr}=    Split String    ${onos_apps_under_test}    *
+    ${num_apps_under_test}=    Get Length    ${apps_under_test_arr}
+    FOR    ${I}    IN RANGE    0    ${num_apps_under_test}
+        @{app_under_test_arr}=    Split String    ${apps_under_test_arr[${I}]}    ,
+        ${app}=    Set Variable    ${app_under_test_arr[0]}
+        ${version}=    Set Variable    ${app_under_test_arr[1]}
+        ${url}=    Set Variable    ${app_under_test_arr[2]}
+        ${app_under_test}    Create Dictionary    app    ${app}    version    ${version}    url    ${url}
+        Append To List    ${list_onos_apps_under_test}    ${app_under_test}
+    END
+    Set Suite Variable    ${list_onos_apps_under_test}
diff --git a/tests/software-upgrades/Voltha_ComponentsUpgrade.robot b/tests/software-upgrades/Voltha_ComponentsUpgrade.robot
new file mode 100755
index 0000000..53d303f
--- /dev/null
+++ b/tests/software-upgrades/Voltha_ComponentsUpgrade.robot
@@ -0,0 +1,135 @@
+# Copyright 2021 - present Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# FIXME Can we use the same test against BBSim and Hardware?
+
+*** Settings ***
+Documentation     Test Voltha Components Software Upgrade
+Suite Setup       Setup Suite
+Test Setup        Setup
+Test Teardown     Teardown
+Suite Teardown    Teardown Suite
+Library           Collections
+Library           String
+Library           OperatingSystem
+Library           XML
+Library           RequestsLibrary
+Library           ../../libraries/DependencyLibrary.py
+Resource          ../../libraries/onos.robot
+Resource          ../../libraries/voltctl.robot
+Resource          ../../libraries/voltha.robot
+Resource          ../../libraries/utils.robot
+Resource          ../../libraries/k8s.robot
+Resource          ../../variables/variables.robot
+Resource          ../../libraries/power_switch.robot
+
+*** Variables ***
+${POD_NAME}       flex-ocp-cord
+${KUBERNETES_CONF}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_CONFIGS_DIR}    ~/pod-configs/kubernetes-configs
+#${KUBERNETES_CONFIGS_DIR}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.conf
+${KUBERNETES_YAML}    ${KUBERNETES_CONFIGS_DIR}/${POD_NAME}.yml
+${HELM_CHARTS_DIR}    ~/helm-charts
+${VOLTHA_POD_NUM}    8
+${NAMESPACE}      voltha
+# For below variable value, using deployment name as using grep for
+# parsing radius pod name, we can also use full radius pod name
+${RESTART_POD_NAME}    radius
+${timeout}        60s
+${of_id}          0
+${logical_id}     0
+${has_dataplane}    True
+${teardown_device}    False
+${scripts}        ../../scripts
+
+# Per-test logging on failure is turned off by default; set this variable to enable
+${container_log_dir}    ${None}
+
+${suppressaddsubscriber}    True
+
+# Voltha Components to Test for Software Upgrade need to be passed in the following variable in format:
+# <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>
+# Example: adapter-open-olt,adapter-open-olt,voltha/voltha-openolt-adapter:3.1.3
+${voltha_comps_under_test}    ${EMPTY}
+
+*** Test Cases ***
+Test Voltha Components Minor Version Upgrade
+    [Documentation]    Validates the Voltha Components Minor Version Upgrade doesn't affect the system functionality
+    ...    Performs the sanity and verifies all the ONUs are authenticated/DHCP/pingable
+    ...    Requirement: Components to test needs to be passed in robot command variable 'voltha_comps_under_test' in the format:
+    ...    <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>
+    ...    Check [VOL-3843] for more details
+    [Tags]    functional   VolthaCompMinorVerUpgrade
+    [Setup]    Start Logging    VolthaCompMinorVerUpgrade
+    [Teardown]    Run Keywords    Collect Logs
+    ...           AND             Stop Logging    VolthaCompMinorVerUpgrade
+    ...           AND             Delete All Devices and Verify
+    # Add OLT device
+    Setup
+    # Performing Sanity Test to make sure subscribers are all DHCP and pingable
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test
+    ${podStatusOutput}=    Run    kubectl get pods -n ${NAMESPACE}
+    Log    ${podStatusOutput}
+    ${countBeforeUpgrade}=    Run    kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
+    ${num_comps_under_test}=    Get Length    ${list_voltha_comps_under_test}
+    FOR    ${I}    IN RANGE    0    ${num_comps_under_test}
+        ${label}=    Set Variable    ${list_voltha_comps_under_test}[${I}][label]
+        ${container}=    Set Variable    ${list_voltha_comps_under_test}[${I}][container]
+        ${image}=    Set Variable    ${list_voltha_comps_under_test}[${I}][image]
+        ${deployment}=    Wait Until Keyword Succeeds    ${timeout}    15s
+        ...    Get K8s Deployment by Pod Label    ${NAMESPACE}    app    ${label}
+        Wait Until Keyword Succeeds    ${timeout}    15s    Deploy Pod New Image    ${NAMESPACE}    ${deployment}
+        ...    ${container}    ${image}
+        Wait Until Keyword Succeeds    ${timeout}    3s    Validate Pods Status By Label    ${NAMESPACE}
+        ...    app    ${label}    Running
+        Wait Until Keyword Succeeds    ${timeout}    3s    Pods Are Ready By Label    ${NAMESPACE}    app    ${label}
+        Wait Until Keyword Succeeds    ${timeout}    3s    Verify Pod Image    ${NAMESPACE}    app    ${label}    ${image}
+        Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test     ${suppressaddsubscriber}
+    END
+    ${podStatusOutput}=    Run    kubectl get pods -n ${NAMESPACE}
+    Log    ${podStatusOutput}
+    ${countAfterUpgrade}=    Run    kubectl get pods -n ${NAMESPACE} | grep Running | wc -l
+    Should Be Equal As Strings    ${countAfterUpgrade}    ${countBeforeUpgrade}
+    # Additional Verification
+    Wait Until Keyword Succeeds    ${timeout}    2s    Delete All Devices and Verify
+    Setup
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+    Wait Until Keyword Succeeds    ${timeout}    2s    Perform Sanity Test
+
+*** Keywords ***
+Setup Suite
+    [Documentation]    Set up the test suite
+    Common Test Suite Setup
+    Create Voltha Comp Under Test List
+
+Teardown Suite
+    [Documentation]    Tear down steps for the suite
+    Run Keyword If    ${has_dataplane}    Clean Up Linux
+
+Create Voltha Comp Under Test List
+    [Documentation]    Creates a list of Voltha Components to Test from the input variable string
+    ...    The input string is expected to be in format:
+    ...    <comp-label>,<comp-container>,<comp-image>*<comp-label>,<comp-container>,<comp-image>
+    ${list_voltha_comps_under_test}    Create List
+    @{comps_under_test_arr}=    Split String    ${voltha_comps_under_test}    *
+    ${num_comps_under_test}=    Get Length    ${comps_under_test_arr}
+    FOR    ${I}    IN RANGE    0    ${num_comps_under_test}
+        @{comp_under_test_arr}=    Split String    ${comps_under_test_arr[${I}]}    ,
+        ${label}=    Set Variable    ${comp_under_test_arr[0]}
+        ${container}=    Set Variable    ${comp_under_test_arr[1]}
+        ${image}=    Set Variable    ${comp_under_test_arr[2]}
+        ${comp_under_test}    Create Dictionary    label    ${label}    container    ${container}    image    ${image}
+        Append To List    ${list_voltha_comps_under_test}    ${comp_under_test}
+    END
+    Set Suite Variable    ${list_voltha_comps_under_test}
