diff --git a/tests/test_eventlog.robot b/tests/test_eventlog.robot
deleted file mode 100644
index be713b5..0000000
--- a/tests/test_eventlog.robot
+++ /dev/null
@@ -1,236 +0,0 @@
-*** Settings ***
-Documentation     This suite is used for testing the error logging
-...               capability from the host
-
-Resource          ../lib/rest_client.robot
-Resource          ../lib/utils.robot
-Resource          ../lib/connection_client.robot
-Resource          ../lib/openbmc_ffdc.robot
-Resource          ../lib/state_manager.robot
-
-Library           Collections
-
-Test Setup        Open Connection And Log In
-Test Teardown     Post Test Case Execution
-
-Force Tags  Event_Logging
-
-*** Variables ***
-&{NIL}  data=@{EMPTY}
-${SYSTEM_SHUTDOWN_TIME}     1min
-${WAIT_FOR_SERVICES_UP}     3min
-
-${EVENT_RECORD}     ${RECORDS_URI}events/
-
-*** Test Cases ***
-
-valid path to logs
-    [Documentation]     Test list all events
-    [Tags]  CI
-    ${resp}=   openbmc get request  ${EVENT_RECORD}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-
-clear any logs
-    [Documentation]     Test delete all events
-    [Tags]  CI  clear_any_logs
-    ${resp}=   openbmc post request   ${EVENT_RECORD}action/clear    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${resp}=   openbmc get request    ${EVENT_RECORD}
-    ${json}=   to json         ${resp.content}
-    Should Be Empty     ${json['data']}
-
-write a log
-    [Documentation]     Test create event
-    [Tags]  CI  write_a_log
-    create a test log
-
-Message attribute should match
-    [Documentation]     Check message attribute for created event
-    [Tags]  CI
-    ${uri}=      create a test log
-    ${content}=     Read Attribute      ${uri}   message
-    Should Be Equal     ${content}      A Test event log just happened
-
-Severity attribute should match
-    [Documentation]     Check severity attribute for created event
-    [Tags]  CI
-    ${uri}=      create a test log
-    ${content}=     Read Attribute      ${uri}   severity
-    Should Be Equal     ${content}      Info
-
-data_bytes attribute should match
-    [Documentation]     Check data_bytes attribute for created event
-    [Tags]  CI
-    @{data_list}=   Create List     ${48}  ${0}  ${19}  ${127}  ${136}  ${255}
-    ${uri}=      create a test log
-    ${content}=   Read Attribute      ${uri}   debug_data
-    Lists Should Be Equal     ${content}      ${data_list}
-
-delete the log
-    [Documentation]     Test the delete event
-    [Tags]  CI
-    ${uri}=     create a test log
-    ${deluri}=  catenate    SEPARATOR=   ${uri}   /action/delete
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${resp}=    openbmc get request     ${deluri}
-    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
-
-2nd delete should fail
-    [Documentation]     Negative scnenario to delete already deleted event
-    [Tags]  CI
-    ${uri}=     create a test log
-    ${deluri}=  catenate    SEPARATOR=   ${uri}   /action/delete
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
-
-Intermixed delete
-    [Documentation]     This testcase does the following sequence
-    ...                 Steps:
-    ...                     write three logs
-    ...                     delete middle log
-    ...                     middle log should not exist
-    [Tags]  CI
-    ${event1}=      create a test log
-    ${event2}=      create a test log
-    ${event3}=      create a test log
-    ${deluri}=  catenate    SEPARATOR=   ${event2}   /action/delete
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${resp}=   openbmc get request   ${event2}
-    should be equal as strings      ${resp.status_code}     ${HTTP_NOT_FOUND}
-
-Test Event Logs Persistency
-    [Documentation]   Create event logs, restart the event service
-    ...               and verify if logs persist.
-    [Tags]  CI  Test_Event_Logs_Persistency
-    ${resp}=   openbmc get request   ${EVENT_RECORD}
-    ${json}=   to json         ${resp.content}
-    ${logs_pre_restart}=    set variable    ${json['data']}
-
-    ${output}  ${stderr}  ${rc}=  Execute Command
-    ...    systemctl restart org.openbmc.records.events.service
-    ...    return_stderr=True  return_rc=True
-    Should Be Empty   ${stderr}
-    Should Be Equal  ${rc}  ${0}
-    Sleep   ${10}
-
-    ${resp}=   openbmc get request   ${EVENT_RECORD}
-    ${json}=   to json         ${resp.content}
-    ${logs_post_restart}=   set variable    ${json['data']}
-    List Should Contain Sub List
-    ...    ${logs_post_restart}    ${logs_pre_restart}
-    ...    msg=The event logs are mismatched.
-
-
-Test Event Deletion Post Restarting Event Manager
-    [Documentation]   Create event log, restart event service and
-    ...               delete the event created earlier.
-    [Tags]  CI   Test_Event_Deletion Post_Restarting_Event_Manager
-
-    ${uri}=   create a test log
-
-    ${output}  ${stderr}  ${rc}=  Execute Command
-    ...    systemctl restart org.openbmc.records.events.service
-    ...    return_stderr=True  return_rc=True
-    Should Be Empty   ${stderr}
-    Should Be Equal  ${rc}  ${0}
-    Sleep   ${10}
-
-    ${deluri}=  catenate    SEPARATOR=   ${uri}   /action/delete
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-
-making new log after obmc-phosphor-event.service restart
-    [Documentation]     This is for testing event creation after the
-    ...                 event service is restarted.
-    [Tags]  CI
-    ${output}  ${stderr}  ${rc}=  Execute Command
-    ...    systemctl restart org.openbmc.records.events.service
-    ...    return_stderr=True  return_rc=True
-    Should Be Empty   ${stderr}
-    Should Be Equal  ${rc}  ${0}
-    Sleep   ${10}
-
-    create a test log
-
-deleting new log after obmc-phosphor-event.service restart
-    [Documentation]    This testcase is for testing deleted newly created event
-    ...                after event service is restarted.
-    [Tags]  CI
-    ${output}  ${stderr}  ${rc}=  Execute Command
-    ...    systemctl restart org.openbmc.records.events.service
-    ...    return_stderr=True  return_rc=True
-    Should Be Empty   ${stderr}
-    Should Be Equal  ${rc}  ${0}
-    Sleep   ${10}
-
-    ${uri}=     create a test log
-    ${deluri}=  catenate    SEPARATOR=   ${uri}   /action/delete
-    ${resp}=    openbmc post request     ${deluri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-
-Test events after openbmc reboot
-    [Documentation]     This is to test event can be deleted created prior to
-    ...                 openbmc reboot
-    ...                 Steps:
-    ...                     Create event,
-    ...                     Power off if ON else no-op
-    ...                     Reboot openbmc,
-    ...                     Wait for BMC to READY or Powered OFF state
-    ...                     Events should exist post reboot,
-    ...                     Create two more events,
-    ...                     Delete old and new event
-    [Tags]      bmcreboot
-    ${pre_reboot_event}=         create a test log
-
-    Initiate Host PowerOff
-
-    Initiate BMC Reboot
-
-    Wait Until Keyword Succeeds  10 min  10 sec  Is BMC Ready
-
-    ${resp}=    openbmc get request     ${pre_reboot_event}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${post_reboot_event1}=         create a test log
-
-    ${del_prereboot_uri}=  catenate    SEPARATOR=   ${pre_reboot_event}   /action/delete
-    ${resp}=    openbmc post request     ${del_prereboot_uri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${del_postreboot_uri}=  catenate    SEPARATOR=   ${post_reboot_event1}   /action/delete
-    ${resp}=    openbmc post request     ${del_postreboot_uri}    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-
-clearing logs results in no logs
-    [Documentation]     This testcase is for clearning the events when no logs present
-    [Tags]  CI
-    ${resp}=   openbmc post request   ${EVENT_RECORD}action/clear    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${resp}=   openbmc get request    ${EVENT_RECORD}
-    ${json}=   to json         ${resp.content}
-    Should Be Empty     ${json['data']}
-    ${resp}=   openbmc post request    ${EVENT_RECORD}action/clear    data=${NIL}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-
-
-*** Keywords ***
-
-create a test log
-    [Arguments]
-    ${data}=   create dictionary   data=@{EMPTY}
-    ${resp}=   openbmc post request   ${EVENT_RECORD}action/acceptTestMessage    data=${data}
-    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
-    ${json}=   to json         ${resp.content}
-    ${LOGID}=    convert to integer    ${json['data']}
-    ${uri}=     catenate    SEPARATOR=   ${EVENT_RECORD}   ${LOGID}
-    [Return]  ${uri}
-
-Post Test Case Execution
-    [Documentation]  Do the post test teardown.
-    ...  1. Capture FFDC on test failure.
-    ...  2. Close all open SSH connections.
-
-    FFDC On Test Case Fail
-    Close All Connections
