diff --git a/extended/test_syslog.robot b/extended/test_syslog.robot
deleted file mode 100755
index b3fe869..0000000
--- a/extended/test_syslog.robot
+++ /dev/null
@@ -1,168 +0,0 @@
-*** Settings ***
-
-Documentation       This suite is for testing syslog function of Open BMC.
-
-Resource            ../lib/rest_client.robot
-Resource            ../lib/utils.robot
-Resource            ../lib/connection_client.robot
-Resource            ../lib/openbmc_ffdc.robot
-
-Suite Setup         Open Connection And Log In
-Suite Teardown      Close All Connections
-Test Teardown       FFDC On Test Case Fail
-
-
-*** Variables ***
-${INVALID_SYSLOG_IP_ADDRESS}      a.ab.c.d
-${INVALID_SYSLOG_PORT}            abc
-${SYSTEM_SHUTDOWN_TIME}           1min
-${WAIT_FOR_SERVICES_UP}           3min
-
-*** Test Cases ***
-
-Get all Syslog settings
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to get all syslog settings from
-    ...                 open bmc system.\n
-
-    ${ip_address}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   ipaddr
-    Should Not Be Empty     ${ip_address}
-
-    ${port}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   port
-    Should Not Be Empty     ${port}
-
-    ${status}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Not Be Empty     ${status}
-
-Enable syslog with port number and IP address
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to enable syslog with both ip address
-    ...                 and port number of remote system.\n
-
-    ${resp}=    Enable Syslog Setting    ${SYSLOG_IP_ADDRESS}    ${SYSLOG_PORT}
-    Should Be Equal    ${resp}    ok
-    ${ip}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   ipaddr
-    Should Be Equal    ${ip}    ${SYSLOG_IP_ADDRESS}
-    ${port}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   port
-    Should Be Equal    ${port}    ${SYSLOG_PORT}
-
-Enable syslog without IP address and port number
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to enable syslog without changing ip address
-    ...                 and port number.\n
-
-    ${resp}=    Enable Syslog Setting    ${EMPTY}    ${EMPTY}
-    Should Be Equal    ${resp}    ok
-    ${status}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Be Equal    ${status}    Enabled
-
-Enable syslog with only IP address
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to enable syslog with only ip address.\n
-
-    ${resp}=    Enable Syslog Setting    ${SYSLOG_IP_ADDRESS}    ${EMPTY}
-    Should Be Equal    ${resp}    ok
-    ${ip}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   ipaddr
-    Should Be Equal    ${ip}    ${SYSLOG_IP_ADDRESS}
-    ${status}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Be Equal    ${status}    Enabled
-
-Enable Syslog with only port number
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to enable syslog with only port number.\n
-
-    ${status}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Be Equal    ${status}    Enabled
-    ${resp}=    Enable Syslog Setting    ${EMPTY}    ${SYSLOG_PORT}
-    Should Be Equal    ${resp}    ok
-    ${port}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   port
-    Should Be Equal    ${port}    ${SYSLOG_PORT}
-    ${status}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Be Equal    ${status}    Enabled
-
-Disable Syslog
-    [Documentation]     ***GOOD PATH***
-    ...                 This testcase is to verify disabling syslog.\n
-
-    ${resp}=    Disable Syslog Setting    ${EMPTY}
-    Should Be Equal    ${resp}    ok
-    ${status}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-    Should Be Equal    Disable    ${status}
-
-Enable invalid ip for Syslog remote server
-    [Documentation]     ***BAD PATH***
-    ...                 This testcase is to verify error while enabling syslog with
-    ...                 invalid ip address.\n
-
-    ${resp}=    Enable Syslog Setting    ${INVALID_SYSLOG_IP_ADDRESS}    ${SYSLOG_PORT}
-    Should Be Equal    ${resp}    error
-
-Enable invalid port for Syslog remote server
-    [Documentation]     ***BAD PATH***
-    ...                 This testcase is to verify error while enabling syslog with
-    ...                 invalid port number.\n
-
-    ${resp}=    Enable Syslog Setting    ${SYSLOG_IP_ADDRESS}    ${INVALID_SYSLOG_PORT}
-    Should Be Equal    ${resp}    error
-
-
-Persistency check for syslog setting
-    [Documentation]   This test case is to verify that syslog setting does not change
-    ...               after service processor reboot.
-    [Tags]  bmcreboot
-
-    ${old_ip}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   ipaddr
-    ${old_port}=   Read Attribute
-    ...   ${OPENBMC_BASE_URI}LogManager/rsyslog   port
-    ${old_status}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-
-    ${output}=      Execute Command    /sbin/reboot
-    Sleep   ${SYSTEM_SHUTDOWN_TIME}
-    Wait For Host To Ping   ${OPENBMC_HOST}
-    Sleep   ${WAIT_FOR_SERVICES_UP}
-
-    ${ip_address}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   ipaddr
-    ${port}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   port
-    ${status}=    Read Attribute
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog   status
-
-    Should Be Equal    ${old_ip}    ${ip_address}
-    Should Be Equal    ${old_port}    ${port}
-    Should Be Equal    ${old_status}    ${status}
-
-*** Keywords ***
-
-Enable Syslog Setting
-    [Arguments]    ${ipaddr}    ${port}
-    ${MYDICT}=  create Dictionary   ipaddr=${ipaddr}  port=${port}
-    @{rsyslog}=   Create List     ${MYDICT}
-    ${data}=   create dictionary   data=@{rsyslog}
-    ${resp}=   openbmc post request
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog/action/Enable     data=${data}
-    ${jsondata}=    to json    ${resp.content}
-    [Return]    ${jsondata['status']}
-
-Disable Syslog Setting
-    [Arguments]    ${args}
-    @{setting_list}=   Create List     ${args}
-    ${data}=   create dictionary   data=@{setting_list}
-    ${resp}=   OpenBMC Post Request
-    ...    ${OPENBMC_BASE_URI}LogManager/rsyslog/action/Disable      data=${data}
-    ${jsondata}=    to json    ${resp.content}
-    [Return]    ${jsondata['status']}
