diff --git a/openpower/secureboot/test_secureboot.robot b/openpower/secureboot/test_secureboot.robot
deleted file mode 100755
index 89d0ef6..0000000
--- a/openpower/secureboot/test_secureboot.robot
+++ /dev/null
@@ -1,414 +0,0 @@
-*** Settings ***
-Documentation  Secure boot related test cases.
-
-# Test Parameters:
-# SEL to PEL conversion:
-# https://github.com/openbmc/openbmc-test-automation/blob/master/docs/
-# openbmc_test_tools.md#converting-sels-to-readable-format
-#
-# Definition of each partition acronyms
-# HBB:  Hostboot Base
-# HBI:  Hostboot Extended Image
-# HBRT: Hostboot Runtime
-# HBD:  Hostboot Data
-# HBBL: Bostboot Base loader
-# SBE:  Self Boot Engine
-# OCC:  On Chip Controller
-# PAYLOAD : OPAL Partition
-# HCODE : Hardware Code
-# BOOTKERNEL : OPAL Boot Kernel
-# WOFDATA : Workload Optimized Frequency Data
-# MEMD  : Memory VPD
-
-Resource          ../../lib/resource.robot
-Resource          ../../lib/utils.robot
-Resource          ../../lib/state_manager.robot
-Resource          ../../lib/boot_utils.robot
-Resource          ../../lib/secureboot/secureboot.robot
-Resource          ../../lib/open_power_utils.robot
-Resource          ../../lib/logging_utils.robot
-Resource          ../../lib/openbmc_ffdc_methods.robot
-Resource          ../../lib/openbmc_ffdc.robot
-Resource          ../../lib/openbmc_ffdc_utils.robot
-
-Library           ../../lib/gen_misc.py
-Library           ../../lib/secureboot/secureboot.py
-
-Suite Setup       Suite Setup Execution
-Test Setup        Test Setup Execution
-Test Teardown     Test Teardown Execution
-
-*** Variables ***
-
-${security_access_bit_mask}  ${0xC000000000000000}
-${pnor_corruption_rc}        1E07
-${bootkernel_corruption_rc}  log=0xffffffffffff8160
-${bmc_image_dir_path}        /usr/local/share/pnor
-${bmc_guard_part_path}       /var/lib/phosphor-software-manager/pnor/prsv/GUARD
-${HB_PART_LIST}              [HBB, HBD, HBI, HBRT, HBBL]
-${NON_HB_PART_LIST}          [SBE, OCC, HCODE, WOFDATA, MEMD, PAYLOAD]
-${MIXED_PART_LIST}           [SBE, HBD, OCC, HBRT, HBBL, HCODE, WOFDATA, MEMD, PAYLOAD]
-
-*** Test Cases ***
-
-# All the test cases requires by default jumpers to be positioned
-# between 1 & 2. If this is not met test cases would fail
-Validate Secure Cold Boot With TPM Policy Disabled
-    [Documentation]  Validate secure cold boot with TPM policy disabled.
-    [Tags]  Validate_Secure_Cold_Boot_With_TPM_Policy_Disabled
-
-    Validate Secure Boot With TPM Policy Enabled Or Disabled  ${0}
-
-
-Validate Secure Cold Boot With TPM Policy Enabled
-    [Documentation]  Validate secure cold boot with TPM policy enabled.
-    [Tags]  Validate_Secure_Cold_Boot_With_TPM_Policy_Enabled
-
-    Validate Secure Boot With TPM Policy Enabled Or Disabled  ${1}
-
-
-Secure Boot Violation Using Corrupt SBE Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt SBE image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_SBE_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  SBE  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt HBD Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HBD image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HBD_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HBD  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-Secure Boot Violation Using Corrupt HBB Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HBB image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HBB_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HBB  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt HBBL Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HBBL image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HBBL_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HBBL  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt HBI Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HBI image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HBI_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HBI  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt HBRT Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HBRT image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HBRT_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HBRT  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt OCC Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt OCC image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_OCC_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  OCC  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt HCODE Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HCODE image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_HCODE_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  HCODE  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt WOFDATA Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt HCODE image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_WOFDATA_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  WOFDATA  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt BOOTKERNEL Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt BOOTKERNEL image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_BOOTKERNEL_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  BOOTKERNEL  ${bootkernel_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt MEMD Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt MEMD image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_MEMD_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  MEMD  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-Secure Boot Violation Using Corrupt PAYLOAD Image On Cold Boot
-    [Documentation]  Secure boot violation using corrupt PAYLOAD image on cold boot.
-    [Tags]  Secure_Boot_Violation_Using_Corrupt_PAYLOAD_Image_On_Cold_Boot
-
-    Violate Secure Boot Using Corrupt Image
-    ...  PAYLOAD  ${pnor_corruption_rc}  ${bmc_image_dir_path}
-
-
-*** Keywords ***
-
-Validate Secure Boot Setup
-    [Documentation]  Validates setup to make sure it's secureboot run capable.
-
-    # Check the jumper position and Security settings before moving ahead.
-    ${num_procs}  ${secureboot_state}  ${jumper_state}=  Get Secure Boot Info
-
-    Rprint Vars  secureboot_state  jumper_state
-
-    Should Be True  ${secureboot_state} == True and ${jumper_state} == False
-    ...  msg=Jumper is on while secureboot is disabled. Put the jumpers between pins 2 and 3.
-
-Violate Secure Boot Using Corrupt Image
-    [Documentation]  Cause secure boot violation during cold boot
-    ...  with corrupted image.
-    [Arguments]  ${partition}  ${error_rc}  ${bmc_image_dir_path}
-
-    # Description of argument(s):
-    # partition            The partition which is to be corrupted
-    #                      (e.g. "SBE", "HBI", "HBB", "HBRT", "HBBL", "OCC").
-    # error_rc             The RC that is expected as a
-    #                      result of the secure boot violation
-    #                      (e.g. "SECUREBOOT::RC_ROM_VERIFY").
-    # bmc_image_dir_path   BMC image path.
-
-    Set And Verify TPM Policy  ${1}
-
-    # Descipiton:
-    # Cause a secure boot violation by copying an BMC image file to the
-    # target BMC and then starting a power on.
-    # This action should result in:
-    # 1) an error log entry
-    # 2) the system going to "Quiesced" state.
-
-    # Load corrupted image to /usr/local/share/pnor.
-    Open Connection For SCP
-
-    # Some times it is observed that bigger size files doesn't get copied.
-    # Our intention here is to test bad image. Even if it is truncated/partial,
-    # that should be fine
-    Run Keyword And Ignore Error  scp.Put File
-    ...  ${ENV_SB_CORRUPTED_BIN_PATH}/${partition}  ${bmc_image_dir_path}
-
-    ${error_log_path}=  Catenate  ${SB_LOG_DIR_PATH}
-    Create Directory  ${error_log_path}
-
-    Set Global Variable  ${error_log_path}
-    Log  ${error_log_path}
-
-    # Starting a power on.
-    BMC Execute Command  /usr/bin/obmcutil poweron
-    Wait Until Keyword Succeeds  15 min  15 sec  Error Logs Should Exist
-
-    # Check for eSEL.
-    # Expected behavior is that the error occurs early in the boot process,
-    # therefore, no entry in the error log and nothing to decode.
-    # The 1E07 error is written to PNOR & then goes into Quiesced state.
-    # On the next valid boot, the error log will be sent to BMC &
-    # seen on SOL console.
-    # We won't see any ESEL's for HBB, HBD, HBI or BOOTKERNEL because
-    # Hostboot has no mechanism to send an eSEL when it is dying.
-    Run Keyword If  '${partition}' not in ['HBB', 'HBD', 'HBI', 'BOOTKERNEL']
-    ...  Wait Until Keyword Succeeds  5 min  5 sec
-    ...  Collect Error Logs and Verify SRC  ${error_rc}  ${error_log_path}
-
-    # Remove the file from /usr/local/share/pnor/.
-    BMC Execute Command  rm -rf ${bmc_image_dir_path}*
-
-    # Check if system reaches quiesce state.
-    # Default system state will be power off at the end of the verification.
-    Run Keywords
-    ...  Wait Until Keyword Succeeds  3 min  5 sec  Is Host Quiesced  AND
-    ...  Recover Quiesced Host
-
-    # We will retry boot with corrupted partition removed
-    # SOL console should show previous boot fail message (1E07) on current boot
-    # HBB, HBD or HBI corruption will never get far enough to log into PNOR.
-    # so, it should be removed from consideration for this check
-    Run Keyword If  '${partition}' in ['HBB', 'HBD', 'HBI']
-    ...  Log To Console  No more action on ${partition} corruption required.
-    ...  ELSE IF  '${partition}' in ['HBRT']
-    ...  Run Keywords
-    ...    REST Power On  stack_mode=skip  quiet=1  AND
-    ...    Wait Until Keyword Succeeds  5 min  5 sec  Error Logs Should Exist  AND
-    ...    Get And Verify Partition Corruption  ${partition}  ${sol_log_file_path}  AND
-    ...    REST Power Off  stack_mode=skip  quiet=1
-
-Collect Error Logs and Verify SRC
-    [Documentation]  Verify error log entry & signature description.
-    [Arguments]  ${error_rc}  ${log_prefix}
-
-    # Description of argument(s):
-    # error_rc  Error log signature description.
-    # log_prefix Log path prefix.
-
-    Error Logs Should Exist
-
-    Collect eSEL Log  ${log_prefix}
-    ${error_log_file_path}=  Catenate  ${log_prefix}esel.txt
-    ${rc}  ${output}=  Run and Return RC and Output
-    ...  grep -i ${error_rc} ${error_log_file_path}
-    Should Be Equal  ${rc}  ${0}
-    Should Not Be Empty  ${output}
-
-Get And Verify Security Access Bit
-    [Documentation]  Get and verify security access bit.
-    [Arguments]  ${sol_log_file_path}
-
-    # Description of argument(s):
-    # sol_log_file_path  The path to the file containing SOL data
-    #                    which was collected during a REST Power On.
-
-    # Sample output:
-    #  19.68481|SECURE|Security Access Bit> 0xC000000000000000
-
-    ${cmd}=  Catenate
-    ...  grep "Security Access Bit"  ${sol_log_file_path} | awk '{ print $4 }'
-    ${rc}  ${security_access_bit_str}=  Run and Return RC and Output  ${cmd}
-    Should Be Equal  ${rc}  ${0}
-    ...  msg=Return code from ${cmd} not zero.
-
-    # Verify the value of "Security Access Bit".
-    # If fails, probable issue is Jumper position.
-
-    ${security_access_bit}=  Convert to Integer  ${security_access_bit_str}
-    ${result}=  Evaluate  ${security_access_bit_mask} & ${security_access_bit}
-    Should Be Equal  ${result}  ${security_access_bit_mask}
-    ...  msg=System is not booted in secure mode.  values=False
-
-Get And Verify Partition Corruption
-    [Documentation]  Get and verify partition corruption.
-    [Arguments]  ${partition}  ${sol_log_file_path}
-
-    # Description of argument(s):
-    # partition          The partition which is to be corrupted
-    #                    (e.g. "SBE", "HBI", "HBB", "HBRT", "HBBL", "OCC").
-    # sol_log_file_path  The path to the file containing SOL data
-    #                    which was collected during a REST Power On.
-
-    # Sample output:
-    #  44.47498|secure|Secureboot Failure plid = 0x90000007, rc = 0x1E07
-    #                               OR
-    #  14.94315|Error reported by secure (0x1E00) PLID 0x90000002
-    #  14.99659|  ROM_verify() Call Failed
-    #  14.99659|  ModuleId   0x03 SECUREBOOT::MOD_SECURE_ROM_VERIFY
-    #  14.99660|  ReasonCode 0x1e07 SECUREBOOT::RC_ROM_VERIFY
-    #                               OR
-    #  113.150162849,0] STB: BOOTKERNEL verification FAILED. log=0xffffffffffff8160
-    #
-
-    ${cmd}=   Run Keyword If  '${partition}' in '${MIXED_PART_LIST}'
-    ...  Catenate
-    ...  grep -i "Secureboot Failure"  ${sol_log_file_path} | awk '{ print $8 }'
-    ...  ELSE IF  '${partition}' == 'HBI'
-    ...  Catenate
-    ...  grep -i "ReasonCode"  ${sol_log_file_path} | awk '{ print $3 }'
-    ...  ELSE IF  '{$partition}' == 'BOOTKERNEL'
-    ...  Catenate
-    ...  grep -i "STB: BOOTKERNEL verification FAILED"  ${sol_log_file_path} | awk '{ print $7}'
-
-    ${rc}  ${corruption_rc_str}=  Run and Return RC and Output  ${cmd}
-    Should Be Equal  ${rc}  ${0}
-    ...  msg=Return code from ${cmd} not zero.
-
-    # Verify the RC 0x1E07 from sol output".
-    Should Be Equal As Strings
-    ...  ${corruption_rc_str}  0x${pnor_corruption_rc}  ignore_case=True
-    ...  msg=SB violation due to PNOR partition corruption not reported. values=False
-
-
-Validate Secure Boot With TPM Policy Enabled Or Disabled
-    [Documentation]  Validate secure boot with TPM policy enabled or disabled.
-    [Arguments]  ${tpm_policy}
-
-    # Description of argument(s):
-    # tpm_policy  Enable-0 or Disable-1.
-
-    Set And Verify TPM Policy  ${tpm_policy}
-    REST Power On  quiet=1
-    Validate Secure Boot  ${sol_log_file_path}
-
-
-Validate Secure Boot
-    [Documentation]  Validate secure boot.
-    [Arguments]  ${sol_log_file_path}
-
-    # Description of argument(s):
-    # sol_log_file_path  The path to the file containing SOL data
-    #                    which was collected during a REST Power On.
-
-    Get And Verify Security Access Bit  ${sol_log_file_path}
-    Error Logs Should Not Exist
-    REST Verify No Gard Records
-
-
-Suite Setup Execution
-    [Documentation]  Suite Setup Execution.
-
-    ${bmc_image_dir_path}=  Add Trailing Slash  ${bmc_image_dir_path}
-
-    ${SB_LOG_DIR_PATH}=  Catenate  ${EXECDIR}/SB_logs/
-    Set Suite Variable  ${SB_LOG_DIR_PATH}
-
-    Create Directory  ${SB_LOG_DIR_PATH}
-    Empty Directory  ${SB_LOG_DIR_PATH}
-
-    Set Global Variable  ${bmc_image_dir_path}
-    Log  ${bmc_image_dir_path}
-    BMC Execute Command  rm -rf ${bmc_image_dir_path}*
-
-    Set Global Variable  ${bmc_guard_part_path}
-    Log  ${bmc_guard_part_path}
-    BMC Execute Command  rm -rf ${bmc_guard_part_path}
-
-    # All the corrupted binaries will go in here
-    # Run this as input param
-    Valid Path  ENV_SB_CORRUPTED_BIN_PATH
-    Valid Path  ESEL_BIN_PATH
-    Set Environment Variable  PATH  %{PATH}:${ENV_SB_CORRUPTED_BIN_PATH}:${ESEL_BIN_PATH}
-
-
-Test Setup Execution
-    [Documentation]  Test setup execution.
-
-    ${timestamp}=  Get Current Date  result_format=%Y%m%d%H%M%S
-    ${sol_log_file_path}=  Catenate  ${EXECDIR}/Secure_SOL${timestamp}
-    Start SOL Console Logging  ${sol_log_file_path}
-    Set Suite Variable  ${sol_log_file_path}
-
-    REST Power On  stack_mode=skip  quiet=1
-
-    # Validate the secureboot setup. If not met with required state then, fail.
-    Validate Secure Boot Setup
-
-    REST Power Off  stack_mode=skip  quiet=1
-    Delete Error Logs And Verify
-
-
-Test Teardown Execution
-    [Documentation]  Test teardown execution.
-
-    Stop SOL Console Logging
-    Run  rm -rf ${sol_log_file_path}
-
-    # Collect FFDC on failure
-    FFDC On Test Case Fail
-
-    # Removing the corrupted file from BMC.
-    BMC Execute Command  rm -rf ${bmc_image_dir_path}*
diff --git a/openpower/service_account/test_service_login.robot b/openpower/service_account/test_service_login.robot
deleted file mode 100644
index 8521a2a..0000000
--- a/openpower/service_account/test_service_login.robot
+++ /dev/null
@@ -1,141 +0,0 @@
-*** Settings ***
-Documentation    This suite is to test service user login functionality.
-...              This test expects SERVICE_FILE_PATH, PRODUCTION_KEY_FILE_PATH and
-...              SERVICE_USER_PASSWORD to be provided.
-...
-...              Execution Method :
-...              python -m robot -v OPENBMC_HOST:<hostname> -v SERVICE_FILE_PATH:<service file path>
-...              -v PRODUCTION_KEY_FILE_PATH:<production key file path>
-...              -v SERVICE_USER_PASSWORD:<service user password>
-...              openpower/service_account/test_service_login.robot
-
-Resource         ../../lib/connection_client.robot
-Resource         ../../lib/openbmc_ffdc.robot
-Resource         ../../lib/bmc_redfish_utils.robot
-
-Library          SSHLibrary
-
-Suite Setup      Suite Setup Execution
-Test Teardown    FFDC On Test Case Fail
-
-Force Tags       Service_Login
-
-*** Variables ***
-
-${acf_dir}            /etc/acf
-
-*** Test Cases ***
-
-Verify Service User Login With Valid ACF file
-    [Documentation]  Verify service user login with valid ACF file.
-    [Tags]  Verify_Service_User_Login_With_Valid_ACF_file
-
-    Upload Valid ACF
-    Redfish.Login  service  ${SERVICE_USER_PASSWORD}
-
-
-Verify Service User Login Without ACF file
-    [Documentation]  Verify service user login without ACF file.
-    [Tags]  Verify_Service_User_Login_Without_ACF_file
-
-    Remove Existing ACF
-    Run Keyword And Expect Error  InvalidCredentialsError*
-    ...  Redfish.Login  service  ${SERVICE_USER_PASSWORD}
-
-
-Verify Service User SSH Login Without ACF file
-    [Documentation]  Verify service user ssh login failure without ACF file.
-    [Tags]  Verify_Service_User_SSH_Login_Without_ACF_file
-
-    Remove Existing ACF
-    SSHLibrary.Open Connection  ${OPENBMC_HOST}
-    ${status}=   Run Keyword And Return Status  SSHLibrary.Login  service  ${SERVICE_USER_PASSWORD}
-    Should Be Equal  ${status}  ${False}
-
-
-Verify Service Login Failure With Expired ACF
-    [Documentation]  Verify service user login failure with expired ACF.
-    [Tags]  Verify_Service_Login_Failure_With_Expired_ACF
-    [Setup]  Valid Value  EXPIRED_SERVICE_FILE_PATH
-
-    Remove Existing ACF
-    Open Connection for SCP
-    scp.Put File  ${EXPIRED_SERVICE_FILE_PATH}  ${acf_dir}
-    Run Keyword And Expect Error  InvalidCredentialsError*
-    ...  Redfish.Login  service  ${SERVICE_USER_PASSWORD}
-
-
-Verify Service Login Failure With Incorrect Password
-    [Documentation]  Verify service login failure with incorrect password.
-    [Tags]  Verify_Service_Login_Failure_With_Incorrect_Password
-
-    Remove Existing ACF
-    Upload Valid ACF
-    ${incorrect_service_password} =  Catenate  SEPARATOR=  ${SERVICE_USER_PASSWORD}  123
-    Run Keyword And Expect Error  InvalidCredentialsError*
-    ...  Redfish.Login  service  ${incorrect_service_password}
-
-
-Verify SSH Login Access With Service User
-    [Documentation]  Verify SSH login access with service user.
-    [Tags]  Verify_SSH_Login_Access_With_Service_User
-    [Setup]  Run keywords  Remove Existing ACF  AND  Upload Valid ACF
-
-    # Attempt SSH login with service user.
-    SSHLibrary.Open Connection  ${OPENBMC_HOST}
-    ${status}=   Run Keyword And Return Status  SSHLibrary.Login  service  ${SERVICE_USER_PASSWORD}
-    Should Be Equal  ${status}  ${True}
-
-
-Verify SSH Login Failure With Incorrect Service User Password
-    [Documentation]  Verify SSH login failure with incorrect service user password.
-    [Tags]  Verify_SSH_Login_Failure_With_Incorrect_Service_User_Password
-    [Setup]  Run keywords  Remove Existing ACF  AND  Upload Valid ACF
-
-    # Attempt SSH login with service user.
-    SSHLibrary.Open Connection  ${OPENBMC_HOST}
-    # Attempt login with invalid password
-    ${status}=   Run Keyword And Return Status  SSHLibrary.Login  service  ${SERVICE_USER_PASSWORD}123
-    Should Be Equal  ${status}  ${False}
-
-
-Verify Service User Sets Admin Password
-    [Documentation]  Verify that service user can update admin password.
-    [Tags]  Verify_Service_User_Sets_Admin_Password
-    [Teardown]  Restore Admin Password
-
-    Redfish.Login  service  ${SERVICE_USER_PASSWORD}
-
-    # Update admin user password using Redfish.
-    ${payload}=  Create Dictionary  Password=NewTestPwd123
-    Redfish.Patch  /redfish/v1/AccountService/Accounts/admin  body=&{payload}
-    ...  valid_status_codes=[${HTTP_OK}]
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do suite setup tasks.
-
-    # Upload production key in BMC because it is not part of OpenBMC build yet.
-    Open Connection for SCP
-    scp.Put File  ${PRODUCTION_KEY_FILE_PATH}  ${acf_dir}
-
-
-Remove Existing ACF
-    [Documentation]  Remove existing ACF.
-
-    BMC Execute Command  rm -f ${acf_dir}/*.acf
-
-Upload Valid ACF
-    [Documentation]  Upload valid ACF.
-
-    Run Keywords  Open Connection for SCP
-    scp.Put File  ${SERVICE_FILE_PATH}  ${acf_dir}
-
-
-Restore Admin Password
-    [Documentation]  Restore original password of admin user.
-
-    ${payload}=  Create Dictionary  Password=${OPENBMC_ADMIN_PASSWORD}
-    Redfish.Patch  /redfish/v1/AccountService/Accounts/admin  body=&{payload}
-    ...  valid_status_codes=[${HTTP_OK}]
diff --git a/openpower/service_account/test_service_user.robot b/openpower/service_account/test_service_user.robot
deleted file mode 100644
index 273aa8e..0000000
--- a/openpower/service_account/test_service_user.robot
+++ /dev/null
@@ -1,77 +0,0 @@
-*** Settings ***
-Documentation    This suite is to test service user functionality via Redfish.
-
-Resource         ../../lib/connection_client.robot
-Resource         ../../lib/openbmc_ffdc.robot
-Resource         ../../lib/bmc_redfish_utils.robot
-
-Suite Setup      Suite Setup Execution
-Suite Teardown   Redfish.Logout
-Test Teardown    FFDC On Test Case Fail
-
-Force Tags       Service_User
-
-*** Test Cases ***
-
-Verify Service User Availability
-    [Documentation]  Verify service user avalability.
-    [Tags]  Verify_Service_User_Availability
-
-    # Verify that service user has administrator privilege.
-    ${role_config}=  Redfish_Utils.Get Attribute
-    ...  /redfish/v1/AccountService/Accounts/service  RoleId
-
-    Should Be Equal  Administrator  ${role_config}
-
-
-Verify Creating User With Service Username
-    [Documentation]  Verify that user with service username can not be created.
-    [Tags]  Verify_Creating_User_With_Service_Username
-
-    ${payload}=  Create Dictionary
-    ...  UserName=service Password=TestPwd1  RoleId=Operator  Enabled=${True}
-    Redfish.Post  /redfish/v1/AccountService/Accounts/  body=&{payload}
-    ...  valid_status_codes=[${HTTP_FORBIDDEN}]
-
-
-Verify Modifying Service User Password
-     [Documentation]  Verify error while modifying service user password in Redfish.
-     [Tags]  Verify_Modifying_Service_User_Password
-
-     ${payload}=  Create Dictionary  Password=NewTestPwd123
-     # Modification of service user password is not allowed via Redfish API.
-     Redfish.Patch  /redfish/v1/AccountService/Accounts/service  body=&{payload}
-     ...  valid_status_codes=[${HTTP_FORBIDDEN}]
-
-
-Verify Renaming Service User
-     [Documentation]  Verify error while renaming service user via Redfish.
-     [Tags]  Verify_Renaming_Service_User
-
-     ${payload}=  Create Dictionary  UserName=new_service
-     Redfish.Patch  /redfish/v1/AccountService/Accounts/service  body=&{payload}
-     ...  valid_status_codes=[${HTTP_FORBIDDEN}]
-
-
-Verify Deleting Service User
-     [Documentation]  Verify error while deleting service user via Redfish.
-     [Tags]  Verify_Deleting_Service_User
-
-     Redfish.Delete  /redfish/v1/AccountService/Accounts/service  valid_status_codes=[${HTTP_FORBIDDEN}]
-
-
-Verify Modifying Service User Role
-     [Documentation]  Verify error while modifyig service user role via Redfish.
-     [Tags]  Verify_Modifying_Service_User_Role
-
-     ${payload}=  Create Dictionary  RoleId=Operator
-     Redfish.Patch  /redfish/v1/AccountService/Accounts/service  body=&{payload}
-     ...  valid_status_codes=[${HTTP_FORBIDDEN}]
-
-
-*** Keywords ***
-
-Suite Setup Execution
-    [Documentation]  Do suite setup tasks.
-
-    Redfish.Login
