diff --git a/extended/code_update/bmc_multi_code_update.robot b/extended/code_update/bmc_multi_code_update.robot
deleted file mode 100644
index 6c8728e..0000000
--- a/extended/code_update/bmc_multi_code_update.robot
+++ /dev/null
@@ -1,61 +0,0 @@
-*** Settings ***
-Documentation    Verify that the BMC boots between code updates of different
-...              BMC version. Verify with N, the current version, downgrade
-...              and verify with N-1, update and verify N again, and finally
-...              update and verify with N+1.
-
-Library           ../../lib/code_update_utils.py
-Library           ../../lib/gen_robot_valid.py
-Variables         ../../data/variables.py
-Resource          ../../lib/boot_utils.robot
-Resource          ../../lib/code_update_utils.robot
-Resource          ../../lib/openbmc_ffdc.robot
-
-Suite Setup       Suite Setup Execution
-
-Test Teardown     FFDC On Test Case Fail
-
-*** Variables ***
-
-${QUIET}                        ${1}
-${IMAGE_FILE_PATH}              ${EMPTY}
-${N_MINUS_ONE_IMAGE_FILE_PATH}  ${EMPTY}
-${N_PLUS_ONE_IMAGE_FILE_PATH}   ${EMPTY}
-${SKIP_UPDATE_IF_ACTIVE}        false
-
-*** Test Cases ***
-
-BMC Multi Code Update
-    [Documentation]  Do four code updates in a row. Update to N, N-1, N, and
-    ...              then N+1.
-    [Tags]  BMC_Multi_Code_Update
-    [Template]  Code Update And Reboot BMC
-
-    # Image File Path
-    ${IMAGE_FILE_PATH}
-    ${N_MINUS_ONE_IMAGE_FILE_PATH}
-    ${IMAGE_FILE_PATH}
-    ${N_PLUS_ONE_IMAGE_FILE_PATH}
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do test suite setup tasks.
-
-    Valid Value  IMAGE_FILE_PATH
-    Valid Value  N_MINUS_ONE_IMAGE_FILE_PATH
-    Valid Value  N_PLUS_ONE_IMAGE_FILE_PATH
-
-
-Code Update And Reboot BMC
-    [Documentation]  Update the given image, and then verify update.
-    [Arguments]  ${image_file_path}
-
-    # Description of argument(s):
-    # image_file_path   Path to the bmc image file.
-
-    Upload And Activate Image  ${image_file_path}
-    ...  skip_if_active=${SKIP_UPDATE_IF_ACTIVE}
-    OBMC Reboot (off)  stack_mode=normal
-    Verify Running BMC Image  ${image_file_path}
diff --git a/extended/code_update/bmc_recoverable_error_test.robot b/extended/code_update/bmc_recoverable_error_test.robot
deleted file mode 100644
index 85f2416..0000000
--- a/extended/code_update/bmc_recoverable_error_test.robot
+++ /dev/null
@@ -1,65 +0,0 @@
-*** Settings ***
-Documentation   Test errors and changes in the environment that BMC code
-...             update should recover from or not be effected by.
-
-Resource        ../../lib/code_update_utils_serial.robot
-Resource        ../../lib/openbmc_ffdc.robot
-
-Force Tags     BMC_Update_Recoverable_Error
-
-Suite Setup     Suite Setup Execution
-
-Test Setup      Test Setup Execution
-Test Teardown   FFDC On Test Case Fail
-
-*** Variables ***
-
-${QUIET}                        ${1}
-${IMAGE_FILE_PATH}              ${EMPTY}
-
-# In order to test the code update features of the image at ${IMAGE_FILE_PATH},
-# we need another BMC image to update to.
-${ALTERNATE_IMAGE_FILE_PATH}    ${EMPTY}
-
-*** Test Cases ***
-
-Reset Network During BMC Code Update
-    [Documentation]  Disable and re-enable the network while doing a BMC
-    ...              code update.
-    [Tags]  Reset_Network_During_BMC_Code_Update
-    [Template]  Reset Network Interface During Code Update
-
-    # Image File Path   Reboot
-    ${ALTERNATE_IMAGE_FILE_PATH}  ${TRUE}
-
-
-Reboot BMC During BMC Image Activation
-    [Documentation]  Attempt to reboot the BMC while an image is activating,
-    ...              checking that the reboot has no effect.
-    [Tags]  Reboot_BMC_During_BMC_Image_Activation
-
-    Attempt To Reboot BMC During Image Activation  ${ALTERNATE_IMAGE_FILE_PATH}
-    OBMC Reboot (off)
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do setup tasks for recoverable errors.
-
-    Should Not Be Empty  ${IMAGE_FILE_PATH}
-    ...  msg=IMAGE_FILE_PATH should be set.
-    Should Not Be Empty  ${ALTERNATE_IMAGE_FILE_PATH}
-    ...  msg=ALTERNATE_IMAGE_FILE_PATH should be set.
-    Should Not Be Empty  ${OPENBMC_SERIAL_HOST}
-    ...  msg=OPENBMC_SERIAL_HOST should be set.
-    Should Not Be Empty  ${OPENBMC_SERIAL_PORT}
-    ...  msg=OPENBMC_SERIAL_PORT should be set.
-
-
-Test Setup Execution
-    [Documentation]  Do setup tasks for every test case.
-
-    Upload And Activate Image  ${IMAGE_FILE_PATH}  skip_if_active=true
-    OBMC Reboot (off)
-    Delete All Non Running BMC Images
diff --git a/extended/code_update/host_multi_code_update.robot b/extended/code_update/host_multi_code_update.robot
deleted file mode 100644
index cb68a33..0000000
--- a/extended/code_update/host_multi_code_update.robot
+++ /dev/null
@@ -1,65 +0,0 @@
-*** Settings ***
-Documentation    Verify that the host boots between code updates of different
-...              PNOR version. Verify with N, the current version, downgrade
-...              and verify with N-1, update and verify N again, and finally
-...              update and verify with N+1.
-
-Library           ../../lib/code_update_utils.py
-Variables         ../../data/variables.py
-Resource          ../../lib/boot_utils.robot
-Resource          ../../lib/code_update_utils.robot
-Resource          ../../lib/openbmc_ffdc.robot
-
-Suite Setup       Suite Setup Execution
-
-Test Teardown     FFDC On Test Case Fail
-
-*** Variables ***
-
-${QUIET}                        ${1}
-${IMAGE_FILE_PATH}              ${EMPTY}
-${N_MINUS_ONE_IMAGE_FILE_PATH}  ${EMPTY}
-${N_PLUS_ONE_IMAGE_FILE_PATH}   ${EMPTY}
-
-*** Test Cases ***
-
-Host Multi Code Update
-    [Documentation]  Do four code updates in a row. Update to N, N-1, N, and
-    ...              then N+1.
-    [Tags]  Host_Multi_Code_Update
-    [Template]  Code Update And Power On Host
-
-    # Image File Path
-    ${IMAGE_FILE_PATH}
-    ${N_MINUS_ONE_IMAGE_FILE_PATH}
-    ${IMAGE_FILE_PATH}
-    ${N_PLUS_ONE_IMAGE_FILE_PATH}
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do test suite setup tasks.
-
-    Should Not Be Empty  ${IMAGE_FILE_PATH}  msg=Must set IMAGE_FILE_PATH.
-    Should Not Be Empty  ${N_MINUS_ONE_IMAGE_FILE_PATH}
-    ...  msg=Must set N_MINUS_ONE_IMAGE_FILE_PATH.
-    Should Not Be Empty  ${N_PLUS_ONE_IMAGE_FILE_PATH}
-    ...  msg=N_PLUS_ONE_IMAGE_FILE_PATH.
-    Should Not Be Empty  ${OS_HOST}  msg=Must set OS_HOST.
-    Should Not Be Empty  ${OS_USERNAME}  msg=Must set OS_USERNAME.
-    Should Not Be Empty  ${OS_PASSWORD}  msg=Must set OS_PASSWORD.
-
-
-Code Update And Power On Host
-    [Documentation]  Shutdown the host, update to the given image, and then
-    ...              verify that the host is able to power on.
-    [Arguments]  ${image_file_path}
-
-    # Description of argument(s):
-    # image_file_path   Path to the host image file.
-
-    REST Power Off  stack_mode=skip  quiet=${1}
-    Delete All PNOR Images
-    Upload And Activate Image  ${image_file_path}
-    REST Power On
diff --git a/extended/code_update/host_recoverable_error_test.robot b/extended/code_update/host_recoverable_error_test.robot
deleted file mode 100644
index 9e50317..0000000
--- a/extended/code_update/host_recoverable_error_test.robot
+++ /dev/null
@@ -1,56 +0,0 @@
-*** Settings ***
-Documentation   Test errors and changes in the environment that BMC code
-...             update should recover from or not be effected by.
-
-Resource        ../../lib/code_update_utils_serial.robot
-Resource        ../../lib/openbmc_ffdc.robot
-
-Force Tags      Host_Update_Recoverable_Error
-
-Suite Setup     Suite Setup Execution
-
-Test Setup      Test Setup Execution
-Test Teardown   FFDC On Test Case Fail
-
-*** Variables ***
-
-${QUIET}            ${1}
-${IMAGE_FILE_PATH}  ${EMPTY}
-
-*** Test Cases ***
-
-Reboot BMC During Host Code Update
-    [Documentation]  Attempt to reboot the BMC while an image is activating,
-    ...              checking that the reboot has no effect.
-    [Tags]  Reboot_BMC_During_Host_Code_Update
-
-    Attempt To Reboot BMC During Image Activation  ${IMAGE_FILE_PATH}
-
-
-Reset Network During Host Code Update
-    [Documentation]  Disable and re-enable the network while doing a PNOR
-    ...              code update.
-    [Tags]  Reset_Network_During_Host_Code_Update
-    [Template]  Reset Network Interface During Code Update
-
-    # Image File Path   Reboot
-    ${IMAGE_FILE_PATH}  ${FALSE}
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do setup tasks for recoverable errors.
-
-    Should Not Be Empty  ${IMAGE_FILE_PATH}
-    ...  msg=IMAGE_FILE_PATH should be set.
-    Should Not Be Empty  ${OPENBMC_SERIAL_HOST}
-    ...  msg=OPENBMC_SERIAL_HOST should be set.
-    Should Not Be Empty  ${OPENBMC_SERIAL_PORT}
-    ...  msg=OPENBMC_SERIAL_PORT should be set.
-
-
-Test Setup Execution
-    [Documentation]  Do setup tasks for every test case.
-
-    Delete All PNOR Images
diff --git a/extended/code_update/ipmi_bmc_code_update.robot b/extended/code_update/ipmi_bmc_code_update.robot
deleted file mode 100644
index bf0028a..0000000
--- a/extended/code_update/ipmi_bmc_code_update.robot
+++ /dev/null
@@ -1,52 +0,0 @@
-*** Settings ***
-Documentation     Test BMC code update on a target BMC.
-...               Execution Command:
-...               python -m robot -v OPENBMC_HOST:<hostname> -v OS_HOST:<OS IP>
-...               -v OS_USERNAME:<OS username> -v OS_PASSWORD:<OS password>
-...               -v IMAGE_FILE_PATH:<path/*.tar> ipmi_bmc_code_update.robot
-
-Resource          ../../lib/code_update_utils.robot
-Resource          ../../lib/ipmi_client.robot
-
-Suite Setup       Suite Setup Execution
-
-
-*** Variables ***
-
-${IMAGE_FILE_PATH}                ${EMPTY}
-${SKIP_UPDATE_IF_ACTIVE}          false
-
-
-*** Test Cases ***
-
-Verify IPMI Disable Policy Post BMC Code Update
-    [Documentation]  Disable IPMI, update BMC and verify post-update.
-    [Tags]  Verify_IPMI_Disable_Policy_Post_BMC_Code_Update
-    [Teardown]  Run Keywords  FFDC On Test Case Fail
-    ...  AND  Run Inband IPMI Standard Command  lan set 1 access on
-
-    Run Inband IPMI Standard Command  lan set 1 access off
-    Run Keyword and Expect Error  *Unable to establish IPMI*
-    ...  Run External IPMI Standard Command  lan print
-
-    Upload And Activate Image  ${IMAGE_FILE_PATH}
-    ...  skip_if_active=${SKIP_UPDATE_IF_ACTIVE}
-    OBMC Reboot (off)
-    Verify Running BMC Image  ${IMAGE_FILE_PATH}
-
-    Run Keyword and Expect Error  *Unable to establish IPMI*
-    ...  Run External IPMI Standard Command  lan print
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do code update test case setup.
-
-    # Check if image file is provided.
-    OperatingSystem.File Should Exist  ${IMAGE_FILE_PATH}
-
-    # - Clean up all existing BMC dumps.
-    Run Key  Delete All Dumps  ignore=1
-    Run Keyword And Ignore Error  Smart Power Off
-
diff --git a/extended/code_update/test_field_mode.robot b/extended/code_update/test_field_mode.robot
deleted file mode 100644
index 44b0795..0000000
--- a/extended/code_update/test_field_mode.robot
+++ /dev/null
@@ -1,71 +0,0 @@
-*** Settings ***
-Documentation       Test BMC field mode.
-
-Variables           ../../data/variables.py
-Resource            ../../lib/boot_utils.robot
-Resource            ../../lib/rest_client.robot
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/code_update_utils.robot
-
-Suite Setup         Suite Setup Execution
-Suite Teardown      Suite Teardown Execution
-
-Test Teardown       FFDC On Test Case Fail
-
-*** Test Cases ***
-
-Verify Software Field Mode
-    [Documentation]  Verify software field mode is set.
-    [Tags]  Verify_Software_Field_Mode
-
-    # After running, /xyz/openbmc_project/software should look like this:
-    # /xyz/openbmc_project/software
-    # {
-    #     "FieldModeEnabled": 1,
-    #     "associations": [
-    #         [
-    #             "active",
-    #             "software_version",
-    #             "/xyz/openbmc_project/software/fcf8e182"
-    #         ],
-    #         [
-    #             "functional",
-    #             "functional",
-    #             "/xyz/openbmc_project/software/fcf8e182"
-    #         ]
-    #     ]
-    # }
-
-    Enable Field Mode And Verify Unmount
-
-
-Attempt To Disable Field Mode Via REST And Verify
-    [Documentation]  Attempt to disable field mode with REST and verify that
-    ...              it remains enabled.
-    [Tags]  Attempt_To_Disable_Field_Mode_Via_REST_And_Verify
-
-    # This test case doesn't actually disable field mode. It attempts to, but
-    # verifies that the FieldModeEnabled property keeps its value of '1'
-    # after trying to set it to '0'. Field mode is disabled in suite teardown.
-
-    ${args}=  Create Dictionary  data=${0}
-    Write Attribute  ${SOFTWARE_VERSION_URI}  FieldModeEnabled
-    ...  verify=${TRUE}  expected_value=${1}  data=${args}
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do suite setup tasks.
-
-    # Check that /usr/local is mounted
-    BMC Execute Command  [ -d "/usr/local/share" ]
-
-
-Suite Teardown Execution
-    [Documentation]  Do suite teardown tasks.
-
-    # 1. Disable field mode
-    # 2. Check that /usr/local is mounted
-
-    Disable Field Mode And Verify Unmount
diff --git a/extended/code_update/test_image_upload.robot b/extended/code_update/test_image_upload.robot
deleted file mode 100644
index cc1341b..0000000
--- a/extended/code_update/test_image_upload.robot
+++ /dev/null
@@ -1,268 +0,0 @@
-*** Settings ***
-Documentation         Test upload image with both valid and invalid images.
-...                   This test expects there to be bad image tarballs named
-...                   pnor_bad_manifest.tar, pnor_no_image.tar,
-...                   bmc_bad_manifest.tar, and bmc_no_image.tar on the TFTP
-...                   server and in the BAD_IMAGES_DIR_PATH directory.
-...                   Execution Method :
-...                   python -m robot -v OPENBMC_HOST:<hostname>
-...                   -v TFTP_SERVER:<TFTP server IP>
-...                   -v PNOR_TFTP_FILE_NAME:<filename.tar>
-...                   -v BMC_TFTP_FILE_NAME:<filename.tar>
-...                   -v PNOR_IMAGE_FILE_PATH:<path/*.tar>
-...                   -v BMC_IMAGE_FILE_PATH:<path/*.tar>
-...                   -v BAD_IMAGES_DIR_PATH:<path> test_image_upload.robot
-
-Resource              ../../lib/connection_client.robot
-Resource              ../../lib/rest_client.robot
-Resource              ../../lib/openbmc_ffdc.robot
-Library               Collections
-Library               String
-Library               OperatingSystem
-Library               ../../lib/code_update_utils.py
-
-Test Teardown  Upload Image Teardown
-
-Force Tags  Upload_Test
-
-*** Variables ***
-${timeout}            10
-${QUIET}              ${1}
-
-*** Test Cases ***
-
-Upload Host Image Via REST
-    [Documentation]  Upload a PNOR image via REST.
-    [Tags]  Upload_Host_Image_Via_REST
-    [Template]  Upload Image Via REST And Verify Success
-
-    # Image File Path
-    ${PNOR_IMAGE_FILE_PATH}
-
-
-Upload BMC Image Via REST
-    [Documentation]  Upload a BMC image via REST.
-    [Tags]  Upload_BMC_Image_Via_REST
-    [Template]  Upload Image Via REST And Verify Success
-
-    # Image File Path
-    ${BMC_IMAGE_FILE_PATH}
-
-
-Upload Host Image Via TFTP
-    [Documentation]  Upload a PNOR image via TFTP.
-    [Tags]  Upload_Host_Image_Via_TFTP
-    [Template]  Upload Image Via TFTP And Verify Success
-
-    # Image File Path
-    ${PNOR_TFTP_FILE_NAME}
-
-
-Upload BMC Image Via TFTP
-    [Documentation]  Upload a BMC image via TFTP
-    [Tags]  Upload_BMC_Image_Via_TFTP
-    [Template]  Upload Image Via TFTP And Verify Success
-
-    # Image File Path
-    ${BMC_TFTP_FILE_NAME}
-
-
-Upload Host Image With Bad Manifest Via REST
-    [Documentation]  Upload a PNOR image with a bad MANIFEST via REST and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_REST
-    [Template]  Upload Bad Image Via REST And Verify Failure
-
-    # Image File Name
-    pnor_bad_manifest.tar
-
-
-Upload Host Image With No Squashfs Via REST
-    [Documentation]  Upload a PNOR image with just a MANIFEST file via REST
-    ...              and verify that the BMC does not unpack it.
-    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_REST
-    [Template]  Upload Bad Image Via REST And Verify Failure
-
-    # Image File Name
-    pnor_no_image.tar
-
-
-Upload BMC Image With Bad Manifest Via REST
-    [Documentation]  Upload a BMC image with a bad MANFIEST file via REST and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_REST
-    [Template]  Upload Bad Image Via REST And Verify Failure
-
-    # Image File Name
-    bmc_bad_manifest.tar
-
-
-Upload BMC Image With No Image Via REST
-    [Documentation]  Upload a BMC image with no just a MANIFEST file via REST
-    ...              and verify that the BMC does not unpack it.
-    [Tags]  Upload_BMC_Image_With_No_Image_Via_REST
-    [Template]  Upload Bad Image Via REST And Verify Failure
-
-    # Image File Name
-    bmc_no_image.tar
-
-
-Upload Host Image With Bad Manifest Via TFTP
-    [Documentation]  Upload a PNOR image with a bad MANIFEST file via TFTP and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_TFTP
-    [Template]  Upload Bad Image Via TFTP And Verify Failure
-
-    # Image File Name
-    pnor_bad_manifest.tar
-
-
-Upload Host Image With No Squashfs Via TFTP
-    [Documentation]  Upload a PNOR image with just a MANIFEST file via TFTP and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_TFTP
-    [Template]  Upload Bad Image Via TFTP And Verify Failure
-
-    # Image File Name
-    pnor_no_image.tar
-
-
-Upload BMC Image With Bad Manifest Via TFTP
-    [Documentation]  Upload a BMC image with a bad MANIFEST file via TFTP and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_TFTP
-    [Template]  Upload Bad Image Via TFTP And Verify Failure
-
-    # Image File Name
-    bmc_bad_manifest.tar
-
-
-Upload BMC Image With No Image Via TFTP
-    [Documentation]  Upload a BMC image with just a MANIFEST file via TFTP and
-    ...              verify that the BMC does not unpack it.
-    [Tags]  Upload_BMC_Image_With_No_Image_Via_TFTP
-    [Template]  Upload Bad Image Via TFTP And Verify Failure
-
-    # Image File Name
-    bmc_no_image.tar
-
-
-*** Keywords ***
-
-Upload Image Teardown
-    [Documentation]  Log FFDC if test fails for debugging purposes.
-
-    Close All Connections
-    FFDC On Test Case Fail
-
-
-Upload Post Request
-    [Documentation]  Make POST request.
-    [Arguments]  ${uri}  ${timeout}=10  ${quiet}=${QUIET}  &{kwargs}
-
-    # Description of argument(s):
-    # uri             URI for uploading image via REST.
-    # timeout         Time allocated for the REST command to return status.
-    # quiet           If enabled turns off logging to console.
-    # kwargs          A dictionary that maps each keyword to a value.
-
-    Initialize OpenBMC  ${timeout}  quiet=${quiet}
-    ${base_uri}=  Catenate  SEPARATOR=  ${DBUS_PREFIX}  ${uri}
-    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
-    ...   X-Auth-Token=${XAUTH_TOKEN}  Accept=application/octet-stream
-    Set To Dictionary  ${kwargs}  headers  ${headers}
-    Run Keyword If  '${quiet}' == '${0}'  Log Request  method=Post
-    ...  base_uri=${base_uri}  args=&{kwargs}
-    ${ret}=  Post Request  openbmc  ${base_uri}  &{kwargs}  timeout=${timeout}
-    Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
-    Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}
-
-Get Image Version From TFTP Server
-    [Documentation]  Get the version dfound in the MANIFEST file of
-    ...              an image on the given TFTP server.
-    [Arguments]  ${tftp_image_file_path}
-
-    # Description of argument(s):
-    # tftp_image_file_path  The path to the image on the TFTP server.
-
-    ${stripped_file_path}=  Strip String  ${tftp_image_file_path}  characters=/
-    ${rc}=  OperatingSystem.Run And Return RC
-    ...  curl -s tftp://${TFTP_SERVER}/${stripped_file_path} > tftp_image.tar
-    Should Be Equal As Integers  0  ${rc}
-    ...  msg=Could not download image to check version.
-    ${version}=  Get Version Tar  tftp_image.tar
-    OperatingSystem.Remove File  tftp_image.tar
-    [Return]  ${version}
-
-Upload Image Via REST And Verify Success
-    [Documentation]  Upload an image to the BMC and check that it is unpacked.
-
-    # Upload the given good image to the BMC via REST, and check that the
-    # BMC has unpacked the image and created a valid D-Bus entry for it.
-
-    [Arguments]  ${image_file_path}
-
-    # Description of argument(s):
-    # image_file_path  The path to the image file to upload.
-
-    OperatingSystem.File Should Exist  ${image_file_path}
-    ${image_version}=  Get Version Tar  ${image_file_path}
-    ${image_data}=  OperatingSystem.Get Binary File  ${image_file_path}
-    Upload Image To BMC  /upload/image  data=${image_data}
-    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
-    Should Be True  ${ret}
-
-Upload Image Via TFTP And Verify Success
-    [Documentation]  Upload an image to the BMC and check that it was unpacked.
-
-    # Upload the given good image to the BMC via TFTP, and check that the
-    # BMC has unpacked the image and created a valid D-Bus entry for it.
-
-    [Arguments]  ${image_file_name}
-
-    # Description of argument(s):
-    # image_file_name  The name of the image file on the TFTP server.
-
-    @{image}=  Create List  ${image_file_name}  ${TFTP_SERVER}
-    ${data}=  Create Dictionary  data=@{image}
-    ${resp}=  OpenBMC Post Request
-    ...  ${SOFTWARE_VERSION_URI}action/DownloadViaTFTP  data=${data}
-    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-    Sleep  1 minute
-    ${image_version}=  Get Image Version From TFTP Server  ${image_file_name}
-    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
-    Should Be True  ${ret}
-
-Upload Bad Image Via REST And Verify Failure
-    [Documentation]  Upload the given bad image to the BMC via REST and check
-    ...              that the BMC did not unpack the invalid image.
-    [Arguments]  ${bad_image_file_name}
-
-    # Description of argument(s):
-    # image_file_name  The name of the bad image to upload via REST.
-
-    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
-    ...  ${bad_image_file_name}
-    OperatingSystem.File Should Exist  ${bad_image_file_path}
-    ...  msg=Bad image file ${bad_image_file_name} not found.
-    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
-    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
-    Upload Post Request  /upload/image  data=${bad_image_data}
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
-
-Upload Bad Image Via TFTP And Verify Failure
-    [Documentation]  Upload the given bad image to the BMC via TFTP and check
-    ...              that the BMC did not unpack the invalid image.
-    [Arguments]  ${bad_image_file_name}
-
-    # Description of argument(s):
-    # image_file_name  The name of the bad image to upload via TFTP.
-
-    @{image}=  Create List  ${bad_image_file_name}  ${TFTP_SERVER}
-    ${data}=  Create Dictionary  data=@{image}
-    ${resp}=  OpenBMC Post Request
-    ...  ${SOFTWARE_VERSION_URI}action/DownloadViaTFTP  data=${data}
-    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-    ${bad_image_version}=  Get Image Version From TFTP Server
-    ...  ${bad_image_file_name}
-    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
diff --git a/extended/code_update/test_software_manager.robot b/extended/code_update/test_software_manager.robot
deleted file mode 100755
index 5925616..0000000
--- a/extended/code_update/test_software_manager.robot
+++ /dev/null
@@ -1,294 +0,0 @@
-*** Settings ***
-Documentation       This suite is for Verifying BMC & BIOS version exposed part
-...                 of system inventory
-
-Resource            ../../lib/rest_client.robot
-Resource            ../../lib/openbmc_ffdc.robot
-Resource            ../../lib/connection_client.robot
-Resource            ../../lib/code_update_utils.robot
-
-Test Teardown       FFDC On Test Case Fail
-
-*** Variables ***
-
-${BMC_SW_PATH}   ${HOST_INVENTORY_URI}system/chassis/motherboard/boxelder/bmc
-${HOST_SW_PATH}  ${HOST_INVENTORY_URI}system/chassis
-
-*** Test Cases ***
-
-Verify Software Purposes
-    [Documentation]  Verify that all software objects have a valid 'Purpose'
-    ...              field.
-    [Tags]  Verify_Software_Purposes
-
-    ${object_uris}=  Read Properties  ${SOFTWARE_VERSION_URI}list
-
-    FOR  ${uri}  IN  @{object_uris}
-      ${object}=  Read Properties  ${uri}
-      Continue For Loop If  not 'Purpose' in ${object}
-      Should Contain Any  ${object}[Purpose]  ${VERSION_PURPOSE_HOST}  ${VERSION_PURPOSE_BMC}
-    END
-
-
-BMC Software Hex ID
-    [Documentation]  Verify BMC images have valid 8-digit hex IDs.
-    [Tags]  BMC_Software_Hex_ID
-    [Template]  Verify Software Hex IDs
-
-    # Software Purpose
-    ${VERSION_PURPOSE_BMC}
-
-
-BMC Software Version
-    [Documentation]  Verify BMC version and activation status.
-    [Tags]  BMC_Software_Version
-    [Template]  Verify Software Version
-
-    # Software Purpose
-    ${VERSION_PURPOSE_BMC}
-
-
-BMC Software Path
-    [Documentation]  Verify BMC images have valid 'Path' properties.
-    [Tags]  BMC_Software_Path
-    [Template]  Verify Software Path
-
-    # Software Version
-    ${VERSION_PURPOSE_BMC}
-
-
-BMC Software RequestedActivation
-    [Documentation]  Veriify BMC images have valid 'RequestedActivation'
-    ...  properties.
-    [Tags]  BMC_Software_RequestedActivation
-    [Template]  Verify Software RequestedActivation
-
-    # Software Purpose
-    ${VERSION_PURPOSE_BMC}
-
-
-BMC Software Activation Association
-    [Documentation]  Verify BMC association.
-    [Tags]  BMC_Software_Activation_Association
-    [Template]  Verify Software Activation Association
-
-    # Software Purpose           Association path
-    ${VERSION_PURPOSE_BMC}       ${BMC_SW_PATH}
-
-
-Host Software Hex ID
-    [Documentation]  Verify host images have valid 8-digit hex IDs.
-    [Tags]  Host_Software_Hex_ID
-    [Template]  Verify Software Hex IDs
-
-    # Software Purpose
-    ${VERSION_PURPOSE_HOST}
-
-
-Host Software Version
-    [Documentation]  Verify host version and activation status.
-    [Tags]  Host_Software_Version
-    [Template]  Verify Software Version
-
-    # Software Purpose
-    ${VERSION_PURPOSE_HOST}
-
-
-Host Software Path
-    [Documentation]  Verify host images have valid 'Path' properties.
-    [Tags]  Host_Software_Path
-    [Template]  Verify Software Path
-
-    # Software Version
-    ${VERSION_PURPOSE_HOST}
-
-
-Host Software RequestedActivation
-    [Documentation]  Veriify host images have valid 'RequestedActivation'
-    ...  properties.
-    [Tags]  Host_Software_RequestedActivation
-    [Template]  Verify Software RequestedActivation
-
-    # Software Purpose
-    ${VERSION_PURPOSE_HOST}
-
-
-Host Software Activation Association
-    [Documentation]  Verify Host association.
-    [Tags]  Host_Software_Activation_Association
-    [Template]  Verify Software Activation Association
-
-    # Software Purpose           Association path
-    ${VERSION_PURPOSE_HOST}      ${HOST_SW_PATH}
-
-
-*** Keywords ***
-
-Verify Software Hex IDs
-    [Documentation]  Verify software has valid hex IDs.
-    [Arguments]  ${software_purpose}
-
-    ${software_ids}=  Get Software Objects Id  ${software_purpose}
-
-    FOR  ${id}  IN  @{software_ids}
-      Length Should Be  ${id}  ${8}
-      Should Match Regexp  ${id}  [0-9a-f]*
-    END
-
-
-Verify Software Path
-    [Documentation]  Verify software has valid 'Path' properties.
-    [Arguments]  ${software_purpose}
-
-    ${software_uris}=  Get Software Objects  ${software_purpose}
-
-    FOR  ${uri}  IN  @{software_uris}
-      ${software_object}=  Get Host Software Property  ${uri}
-      Return From Keyword If  len('${software_object}[Path]') == ${0}
-      BMC Execute Command  [ -d "${path}" ]
-    END
-
-
-Verify Software RequestedActivation
-    [Documentation]  Verify that software has valid 'Purpose' properties.
-    [Arguments]  ${software_purpose}
-
-    ${software_uris}=  Get Software Objects  ${software_purpose}
-
-    FOR  ${uri}  IN  @{software_uris}
-      ${software_object}=  Get Host Software Property  ${uri}
-      Should Contain Any  ${software_object}[RequestedActivation]  ${REQUESTED_ACTIVE}  ${REQUESTED_NONE}
-    END
-
-
-Verify Software Activation Association
-    [Documentation]  Verify software activation association.
-    [Arguments]  ${software_purpose}  ${assoiation_path}
-
-    # Description of argument(s):
-    # software_purpose    BMC or host software purpose.
-    # assoiation_path     BMC or host inventory path.
-
-    # Example:
-    # "/xyz/openbmc_project/software/a0d9ba0d": {
-    #     "Activation": "xyz.openbmc_project.Software.Activation.Activations.Active",
-    #     "Path": "",
-    #     "Priority": 0,
-    #     "Purpose": "xyz.openbmc_project.Software.Version.VersionPurpose.BMC",
-    #     "RequestedActivation": "xyz.openbmc_project.Software.Activation.RequestedActivations.None",
-    #     "Version": "v1.99.9-143-g69cab69",
-    #     "associations": [
-    #        [
-    #            "inventory",
-    #            "activation",
-    #            "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc"
-    #        ]
-    #    ]
-    # },
-    # "/xyz/openbmc_project/software/a0d9ba0d/inventory": {
-    #    "endpoints": [
-    #        "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc"
-    #    ]
-    # },
-
-    ${obj_path_list}=  Get Software Objects  ${software_purpose}
-
-    FOR  ${index}  IN  @{obj_path_list}
-      Verify Inventory Association  ${index}  ${assoiation_path}
-    END
-
-
-Verify Inventory Association
-    [Documentation]  Verify software inventory association.
-    [Arguments]  ${software_path}  ${assoiation_path}
-
-    # Description of argument(s):
-    # software_path       BMC or host software id.
-    # assoiation_path     BMC or host inventory path.
-
-    # Example:
-    #    "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/activation": {
-    #    "endpoints": [
-    #        "/xyz/openbmc_project/software/e42627b5",
-    #        "/xyz/openbmc_project/software/a0d9ba0d"
-    #    ]
-    # },
-
-    ${sw_attr_data}=  Read Attribute  ${software_path}  Associations
-    List Should Contain Value  @{sw_attr_data}  ${assoiation_path}
-
-    # Verify the inventory path in software manager entry.
-    ${sw_endpoint_data}=  Read Attribute
-    ...  ${software_path}${/}inventory  endpoints
-    List Should Contain Value  ${sw_endpoint_data}  ${assoiation_path}
-
-    # Verify the inventory path.
-    ${inv_endpoint_data}=  Read Attribute
-    ...  ${assoiation_path}${/}activation  endpoints
-    List Should Contain Value  ${inv_endpoint_data}  ${software_path}
-
-
-Verify Software Version
-    [Documentation]  Verify version and activation status.
-    [Arguments]  ${software_purpose}
-
-    # Description of argument(s):
-    # software_purpose    BMC or host software purpose.
-
-    # Example:
-    # /xyz/openbmc_project/software/list
-    # [
-    #   "/xyz/openbmc_project/software/2f974579",
-    #   "/xyz/openbmc_project/software/136cf504"
-    # ]
-
-    ${obj_list}=  Get Software Objects  ${software_purpose}
-
-    FOR  ${index}  IN  @{obj_list}
-      ${resp}=  Get Host Software Property  ${index}
-      Verify Software Properties  ${resp}  ${software_purpose}
-      Run Keyword If  '${software_purpose}' == '${VERSION_PURPOSE_BMC}'
-      ...  Check BMC Version  ${index}  ${resp["Version"]}
-    END
-
-
-Verify Software Properties
-    [Documentation]  Verify the software object properties.
-    [Arguments]  ${software_property}  ${software_purpose}
-
-    # Description of argument(s):
-    # software_property   JSON response data.
-    # software_purpose    BMC or host software purpose
-    #        (e.g. "xyz.openbmc_project.Software.Version.VersionPurpose.BMC"
-    #              "xyz.openbmc_project.Software.Version.VersionPurpose.Host").
-
-    Check Activation Status  ${software_property["Activation"]}
-
-
-Check BMC Version
-    [Documentation]  Get BMC version from /etc/os-release and compare.
-    [Arguments]  ${software_object}  ${version}
-
-    # Description of argument(s):
-    # software_object   Software object path.
-    # version           Software version (e.g. "2.9.0-dev-257-gc97c74782")
-
-    ${min_value}=  Get Least Value Priority Image  ${VERSION_PURPOSE_BMC}
-    ${priority_value}=  Read Software Attribute  ${software_object}  Priority
-
-    Return From Keyword If  ${priority_value} != ${min_value}
-
-    Open Connection And Log In
-    ${cmd}=  Set Variable  grep ^VERSION_ID= /etc/os-release | cut -f 2 -d '='
-    ${output}  ${stderr}  ${rc}=  BMC Execute Command  ${cmd}
-    Should Be Equal As Strings  ${version}  ${output}
-
-
-Check Activation Status
-    [Documentation]  Check if software state is "Active".
-    [Arguments]  ${status}
-
-    # Description of argument(s):
-    # status  Activation status
-    # (e.g. "xyz.openbmc_project.Software.Activation.Activations.Active")
-    Should Be Equal As Strings  ${ACTIVE}  ${status}
diff --git a/extended/code_update/update_bmc.robot b/extended/code_update/update_bmc.robot
deleted file mode 100644
index ec9c81a..0000000
--- a/extended/code_update/update_bmc.robot
+++ /dev/null
@@ -1,99 +0,0 @@
-*** Settings ***
-Documentation     Trigger code update to a target BMC.
-...               Execution Method :
-...               python -m robot -v OPENBMC_HOST:<hostname>
-...               -v FILE_PATH:<path/*all.tar>  update_bmc.robot
-...
-...               Code update method BMC using REST
-...               Update work flow sequence:
-...                 - User input BMC File existence check
-...                 - Ping Test and REST authentication
-...                 - Set Host Power host setting Policy to ALWAYS_POWER_OFF
-...                   On reboot this policy would ensure the BMC comes
-...                   online and stays at HOST_POWERED_OFF state.
-...                 - Issue poweroff
-...                 - Prune archived journal logs
-...                 - Prepare for Update
-...                 - Wait for BMC to come online clean
-...                 - Wait for BMC_READY state
-...                 - Apply preserve BMC Network setting
-...                 - SCP image to BMC
-...                 - Activate the flash image
-...                 - Warm Reset BMC to activate code
-...                 - Wait for BMC to come online time out 30 minutes
-...                 - Version check post update
-...                 - Identify REST url post update
-
-Library                 ../../lib/gen_robot_keyword.py
-Library                 String
-
-Resource                code_update_utils.robot
-Resource                ../../lib/state_manager.robot
-Resource                ../../lib/utils.robot
-Resource                ../../lib/list_utils.robot
-Resource                ../../lib/openbmc_ffdc.robot
-Resource                ../../extended/obmc_boot_test_resource.robot
-
-Test Teardown           Run Key  FFDC On Test Case Fail
-
-*** Variables ***
-
-${QUIET}                ${1}
-# Boot failures are not acceptable so we set the threshold to 0.
-${boot_fail_threshold}  ${0}
-
-${FILE_PATH}            ${EMPTY}
-${FORCE_UPDATE}         ${0}
-${REST_URL_FILE_PATH}   ${EMPTY}
-
-# There are two reboots issued by code update.
-${MAX_BOOT_COUNT}       ${2}
-
-*** Test Cases ***
-
-Initiate Code Update BMC
-    [Documentation]  Initiate a code update on the BMC.
-    [Tags]  Initiate_Code_Update_BMC
-
-    ${status}=  Run Keyword If  '${LAST_KNOWN_GOOD_VERSION}' != '${EMPTY}'
-    ...  Run Keyword And Return Status
-    ...  Validate BMC Version  ${LAST_KNOWN_GOOD_VERSION}
-
-    Run Keyword if  '${status}' == '${True}'
-    ...  Pass Execution  The BMC already has the requested build loaded so no further action will be taken.
-
-    # Enable user to bypass prerequisite operations.
-    # Use cases for if BMC is not in working state.
-    Run Keyword If  ${FORCE_UPDATE} == ${0}
-    ...  Prepare BMC For Update
-
-    Run Key U  Preserve BMC Network Setting
-    Run Key  SCP Tar Image File To BMC \ ${FILE_PATH}
-    Run Key  Activate BMC Flash Image
-    Run Key U  OBMC Boot Test \ OBMC Reboot (off)
-    Run Key U  Check Boot Count And Time
-    Run Keyword If  ${BOOT_COUNT} == ${1}
-    ...  Log  Boot time not updated by kernel.  level=WARN
-
-*** Keywords ***
-
-Prepare BMC For Update
-    [Documentation]  Prerequisite operation before code update.
-    Check Boot Count And Time
-    Prune Journal Log
-    Power Off Request
-    Set BMC Power Policy  ALWAYS_POWER_OFF
-
-    Prepare For Update
-    Check If BMC is Up  20 min  10 sec
-    Check Boot Count And Time
-
-    Wait For BMC Ready
-
-Check Boot Count And Time
-    [Documentation]  Check for unexpected reboots.
-    Set BMC Reset Reference Time
-    Log To Console  \n Boot Count: ${BOOT_COUNT}
-    Log To Console  \n Boot Time: ${BOOT_TIME}
-    Run Keyword If  ${BOOT_COUNT} > ${MAX_BOOT_COUNT}
-    ...  Log  Phantom Reboot!!! Unexpected reboot detected  level=WARN
diff --git a/extended/test_slp.robot b/security/test_slp.robot
similarity index 100%
rename from extended/test_slp.robot
rename to security/test_slp.robot
