diff --git a/ipmi/test_ipmi_sel_time.robot b/ipmi/test_ipmi_sel_time.robot
new file mode 100644
index 0000000..e8e695e
--- /dev/null
+++ b/ipmi/test_ipmi_sel_time.robot
@@ -0,0 +1,613 @@
+*** Settings ***
+
+Documentation    Module to test IPMI SEL Time functionality.
+...              Pre-requisite Condition : Client Machine and BMC should be in Same TimeZone (example : UST)
+...
+...              IPMI Raw command variables are defined under ../data/ipmi_raw_command_table.py
+...              Python basic functionalities are defined under ../lib/functions.py imported under ../lib/resource.robot
+...
+...              Test the Set/Get SEL Time functionality and compare the result against BMC Native command (date).
+...
+...              Set the Time Sync Mode from NTP to Manual to Set SEL Time.
+...              Time Sync Mode change performed via REDFISH URI.
+...              Performs the change in Time Sync Mode with Test Setup and Teardown Execution with default NETWORK_TIMEOUT provided under ../lib/resource.robot.
+...
+...              NETWORK_RESTART_TIME added for Set SEL Time and Add SEL Entry as the corresponding command takes approx 5 seconds for the operation to reflect.
+...
+...              Current SEL time identified via BMC Native command (date) and perform SEL Time operations.
+...
+...              Script Verifies SEL Time for various scenarios such as,
+...              Get current time from BMC and add future year and compare against BMC native command (date),
+...              Gets BMC Current Time and Adds 15 minutes and compare against BMC native command (date),
+...              Gets BMC Current Time and subtracts 1 day and compare against BMC native command (date),
+...              Add SEL Entry for all the above scenarios and compare against BMC native command (date).
+
+Library          DateTime
+Library          Collections
+Library          String
+Library          ../lib/ipmi_utils.py
+Resource         ../lib/ipmi_client.robot
+Resource         ../lib/openbmc_ffdc.robot
+Variables        ../data/ipmi_raw_cmd_table.py
+
+Test Setup       Test Setup Execution
+Test Teardown    Test Teardown Execution
+
+*** Variables ***
+
+${NETWORK_RESTART_TIME}   5s
+
+
+*** Test Cases ***
+
+Verify Default Get SEL Time
+    [Documentation]  Verify IPMI Get SEL Time.
+    [Tags]  Verify_Default_Get_SEL_Time
+    [Setup]  Printn
+    [Teardown]  FFDC On Test Case Fail
+
+    # Gets the current SEL time via Get SEL Time Command.
+    ${resp}=  Get SEL Time Command
+    Should Not Be Empty  ${resp}
+
+
+Set SEL Time On NTP Mode
+    [Documentation]   IPMI Set SEL Time without NTP
+    [Tags]  Verify_SEL_Set_Time_On_NTP_Mode
+    [Setup]  Printn
+    [Teardown]  printn
+
+    # Get current time from BMC and add future year (here, 5years).
+    ${sel_date}=  Get Specific Sel Date  5
+
+    # Gives Hexa decimal raw command data request with the prefix of 0x.
+    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}
+
+    ${Set_sel_time}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][2]}*
+    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
+    Should Contain  ${Set_sel_time}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][1]}
+
+
+Verify SEL Set Time For Specific Time
+    [Documentation]  Verify IPMI Set SEL Time.
+    [Tags]  Verify_SEL_Set_Time_For_Specific_Time
+
+    # Get current time from BMC and add future year (here, 5years).
+    ${sel_date}=  Get Specific Sel Date  5
+
+    # Gives Hexa decimal raw command data request with the prefix of 0x.
+    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}
+
+    # Set SEL Entry command.
+    Set SEL Time Entry Via Raw Command  ${sel_date_raw}
+
+    # Get SEL Time command.
+    ${get_sel_time}=  Check Current Date Time Via IPMI
+
+    # Identify Time difference and find the difference is less than 6 seconds.
+    # Command execution may happen at the end of millisecond so considered 6 seconds as difference.
+    ${time_difference}=  Get Time Difference  ${get_sel_time}  ${sel_date}
+    Should Be True  0<=${time_difference}<=5
+    ...  msg=Set SEL Time Not Working
+
+    # Get BMC time (native) and compare with set sel time given.
+    ${bmc_time}=  Get Current Date from BMC
+
+    ${difference}=  Get Time Difference  ${bmc_time}  ${sel_date}
+    Should Be True  0<=${difference}<=6
+
+
+Verify Set SEL Time With Future Date And Time
+    [Documentation]  Verify IPMI Get SEL Time by adding 15 minutes from current time.
+    [Tags]  Verify_Set_SEL_Time_With_Future_Date_And_Time
+
+    # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time.
+    ${sel_time}  ${set_sel_time}=  Identify SEL Time Future DateTime   06:15:00
+
+    # Set SEL Time via IPMI command.
+    Set SEL Time Via IPMI  ${sel_time}
+
+    # Get SEL Time Command.
+    ${get_sel_time}=  Check Current Date Time Via IPMI
+
+    # Difference of time between set sel time and get time.
+    ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
+    Should Be True  0<=${difference}<=2
+
+    # Difference of time between BMC Date and Get SEL Time.
+    ${bmc_time}=  Get Current Date from BMC
+    ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
+    Should Be True  0<=${difference}<=2
+
+
+Verify Set SEL Time With Past Date And Time
+    [Documentation]  Verify IPMI Get SEL Time for yime delay of 1 day from current dat and time.
+    [Tags]  Verify_Set_SEL_Time_With_Past_Date_And_Time
+
+    # Gets BMC current time and subtracts 1 day and sets the SEL Time.
+    ${sel_time}  ${set_sel_time}=  Identify SEL Time DateTime Delay  1d
+
+    ${status}=  Run Keyword And Return Status  Should Not Contain  ${sel_time}  1969
+    ...  msg=Date cannot be less than 1970.
+
+    IF  '${status}' == '${TRUE}'
+        # Set SEL Time via IPMI command.
+        Set SEL Time Via IPMI  ${sel_time}
+        # Get SEL Time Command.
+        ${get_sel_time}=  Check Current Date Time Via IPMI
+        # Difference of time between set sel time and get time.
+        ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
+        Should Be True  0<=${difference}<=2
+        # Difference of time between BMC Date and Get SEL Time.
+        ${bmc_time}=  Get Current Date from BMC
+        ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
+        Should Be True  0<=${difference}<=2
+    ELSE
+        FAIL  SEL Time cannot set Date less than 1970
+    END
+
+
+Verify SEL Set Time For Invalid Data Request
+    [Documentation]  Verify IPMI Get SEL Time for invalid data request
+    [Tags]  Verify_SEL_Set_Time_For_Invalid_Data_Request
+    [Setup]  Printn
+    [Teardown]  FFDC On Test Case Fail
+
+    # Gets BMC current date via date command.
+    ${current_date}=  Get Current Date from BMC
+
+    # Gives hexa decimal Raw command data request with the prefix of 0x.
+    ${sel_date_raw}=  Converting Date to HexaDecimal  ${current_date}
+
+    # Set Invalid SEL Time with one extra request byte.
+    ${Set_seltime_invalid}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}*
+    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw} 0x00
+    Should Contain  ${Set_seltime_invalid}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]}
+
+
+Verify SEL Set Time For Incomplete Data Request
+    [Documentation]  Verify IPMI Get SEL Time for invalid data with one byte less request data.
+    [Tags]  Verify_SEL_Set_Time_For_Incomplete_Data_Request
+    [Setup]  Printn
+    [Teardown]  FFDC On Test Case Fail
+
+    # Gets BMC current date via date command.
+    ${current_date}=  Get Current Date from BMC
+
+    # Gives hexa decimal raw command data request with the prefix of 0x.
+    ${sel_date_raw}=  Converting Date to HexaDecimal  ${current_date}
+
+    # For data request less than expected byes, remove last byte.
+    ${sel_date_raw}=  Split String  ${sel_date_raw}
+    Remove From List  ${sel_date_raw}  -1
+    ${sel_date_raw}=  Evaluate  " ".join(${sel_date_raw})
+
+    # Set incomplete SEL Time with one less request byte.
+    ${Set_seltime_incomplete}=  Run Keyword and Expect Error  *${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][4]}*
+    ...  Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
+    Should Contain  ${Set_seltime_incomplete}  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][3]}
+
+
+Verify SEL Time In SEL Entry
+    [Documentation]  Verify Configured SEL Time reflects in newly added SEL Entry.
+    [Tags]  Verify_SEL_Time_In_SEL_Entry
+
+    Clear The SEL
+
+   # change to manual, get current time and add future year (here, 5years).
+    ${sel_date}=  Get Specific Sel Date  5
+
+    # Gives hexa decimal raw command data request with the prefix of 0x.
+    ${sel_date_raw}=  Converting Date to HexaDecimal  ${sel_date}
+
+    # Set SEL Entry Command.
+    Set SEL Time Entry Via Raw Command  ${sel_date_raw}
+
+    # Get SEL Time Command.
+    ${get_sel_time}=  Check Current Date Time Via IPMI
+
+    # Identify Time difference and find the difference is less than 6 seconds.
+    # Command execution may happen at the end of millisecond so considered 6 seconds as difference.
+    ${time_difference}=  Get Time Difference  ${get_sel_time}  ${sel_date}
+    Should Be True  0<=${time_difference}<=5
+    ...  msg=Set SEL Time Not Working
+
+    # Get BMC time (native) and compare with set sel time given.
+    ${bmc_time}=  Get Current Date from BMC
+
+    ${difference}=  Get Time Difference  ${bmc_time}  ${sel_date}
+    Should Be True  0<=${difference}<=6
+
+    # Get any Sensor available from Sensor list.
+    ${sensor_name}=  Fetch Any Sensor From Sensor List
+
+    # Get Sensor ID from SDR Get "sensor".
+    ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
+    ${name_sensor}  ${sensor_number}=  Get Data And Byte From SDR Sensor  ${sensor_data1}
+
+    # Get Sensor Type from SDR Get "sensor".
+    ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
+    ${sensor_type}  ${sensor_type_id}=  Get Data And Byte From SDR Sensor  ${sensor_data2}
+
+    # Add SEL Entry.
+    ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}
+
+    # Finds the last added sel entry.
+    ${resp}=  Verify Last SEL Added  ${sensor_type}  ${sensor_name}
+
+    # Fetches the date of the last added SEL Entry.
+    ${sel_entry_date}=  Fetch Added SEL Date  ${resp}
+
+    # Identify and find the time difference is less than 60 seconds.
+    # Finding the sensor details and execution may take up to a minute.
+    # Compare  date and time of Set SEL with sel entry.
+    ${d}=  Get Time Difference  ${sel_entry_date}  ${sel_date}
+    Should Be True  0<=${d}<=60
+
+
+Verify SEL Time In SEL Entry For Future Date and Time
+    [Documentation]  Verify configured SEL Time (Future Date & Time) in added SEL Entry.
+    [Tags]  Verify_SEL_Time_In_SEL_Entry_For_Future_Date_and_Time
+
+    Clear The SEL
+
+    # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time.
+    ${sel_time}  ${set_sel_time}=  Identify SEL Time Future DateTime   06:15:00
+
+    # Set SEL Time via IPMI command.
+    Set SEL Time Via IPMI  ${sel_time}
+
+    # Get SEL Time Command.
+    ${get_sel_time}=  Check Current Date Time Via IPMI
+
+    # Difference of time between set sel time and get time.
+    ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
+    Should Be True  0<=${difference}<=2
+
+    # Difference of time between BMC Date and Get SEL Time.
+    ${bmc_time}=  Get Current Date from BMC
+    ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
+    Should Be True  0<=${difference}<=2
+
+    # Get any Sensor available from Sensor list.
+    ${sensor_name}=  Fetch Any Sensor From Sensor List
+
+    # Get Sensor ID from SDR Get "sensor".
+    ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
+    ${name_sensor}  ${sensor_number}=  Get Data And Byte From SDR Sensor  ${sensor_data1}
+
+    # Get Sensor Type from SDR Get "sensor".
+    ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
+    ${sensor_type}  ${sensor_type_id}=  Get Data And Byte From SDR Sensor  ${sensor_data2}
+
+    # Add SEL Entry.
+    ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}
+
+    # Finds the last added sel entry.
+    ${resp}=  Verify Last SEL Added  ${sensor_type}  ${sensor_name}
+
+    # Fetches the date of the last added SEL Entry.
+    ${sel_entry_date}=  Fetch Added SEL Date  ${resp}
+
+    # Identify and find the time difference is less than 60 seconds.
+    # Finding the sensor details and execution may take up to a minute.
+    # Compare  date and time of Set SEL with sel entry.
+    ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
+    Should Be True  0<=${d}<=60
+
+
+Verify SEL Time In SEL Entry For Past Date And Time
+    [Documentation]  Verify configured SEL Time (Past Date & Time) in added SEL Entry.
+    [Tags]  Verify_SEL_Time_In_SEL_Entry_For_Past_Date_And_Tine
+
+    Clear The SEL
+
+    # Gets BMC Current Time and subtracts 1 day and sets the SEL Time.
+    ${sel_time}  ${set_sel_time}=  Identify SEL Time DateTime Delay  1d
+
+    ${status}=  Run Keyword And Return Status  Should Not Contain  ${sel_time}  1969
+    ...  msg=Date cannot be less than 1970
+
+    IF  '${status}' == '${TRUE}'
+        # Set SEL Time via IPMI command.
+        Set SEL Time Via IPMI  ${sel_time}
+        # Get SEL Time Command.
+        ${get_sel_time}=  Check Current Date Time Via IPMI
+        # Difference of time between set sel time and get time.
+        ${difference}=  Get Time Difference  ${get_sel_time}  ${set_sel_time}
+        Should Be True  0<=${difference}<=2
+        # Difference of time between BMC Date and Get SEL Time.
+        ${bmc_time}=  Get Current Date from BMC
+        ${difference}=  Get Time Difference  ${get_sel_time}  ${bmc_time}
+        Should Be True  0<=${difference}<=2
+
+        # Get any Sensor available from Sensor list.
+        ${sensor_name}=  Fetch Any Sensor From Sensor List
+        # Get Sensor ID from SDR Get "sensor".
+        ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
+        ${name_sensor}  ${sensor_number}=  Get Data And Byte From SDR Sensor  ${sensor_data1}
+
+        # Get Sensor Type from SDR Get "sensor".
+        ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
+        ${sensor_type}  ${sensor_type_id}=  Get Data And Byte From SDR Sensor  ${sensor_data2}
+
+        # Add SEL Entry.
+        ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}
+
+        # Finds the last added sel entry.
+        ${resp}=  Verify Last SEL Added  ${sensor_type}  ${sensor_name}
+
+        # Fetches the date of the last added SEL Entry.
+        ${sel_entry_date}=  Fetch Added SEL Date  ${resp}
+
+        # Identify and find the time difference is less than 60 seconds.
+        # Finding the sensor details and execution may take up to a minute.
+        # Compare  date and time of Set SEL with sel entry.
+        ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
+        Should Be True  0<=${d}<=60
+    ELSE
+        FAIL  SEL Time cannot set Date less than 1970.
+    END
+
+
+Verify Multiple Set SEL Time With Multiple Add SEL Entry
+    [Documentation]  Verify SEL time in multiple addition Of SEL entry.
+    [Tags]  Verify_Multiple_Set_SEL_Time_With_Multiple_Add_SEL_Entry
+
+    # Gets BMC Current Time and Adds 15 minutes and sets the SEL Time.
+    ${sel_time}  ${set_sel_time}=  Identify SEL Time Future DateTime   06:15:00
+
+    FOR  ${i}  IN RANGE  1  6
+
+      # Set SEL Time via IPMI command.
+      Set SEL Time Via IPMI  ${sel_time}
+
+      # Clear the SEL.
+      Clear The SEL
+
+      # Get any Sensor available from Sensor list.
+      ${sensor_name}=  Fetch Any Sensor From Sensor List
+
+      # Get Sensor ID from SDR Get "sensor" and Identify Sensor ID.
+      ${sensor_data1}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor ID
+      ${name_sensor}  ${sensor_number}=  Get Data And Byte From SDR Sensor  ${sensor_data1}
+
+      # Get Sensor Type from SDR Get "sensor" and identify Sensor Type.
+      ${sensor_data2}=  Fetch Sensor Details From SDR  ${sensor_name}  Sensor Type (Threshold)
+      ${sensor_type}  ${sensor_type_id}=  Get Data And Byte From SDR Sensor  ${sensor_data2}
+
+      # Add SEL Entry.
+      ${sel_create_resp}=  Create SEL  ${sensor_type_id}  ${sensor_number}
+
+      # Finds the last added sel entry.
+      ${resp}=  Verify Last SEL Added  ${sensor_type}  ${sensor_name}
+
+      # Fetches the date of the last added SEL Entry.
+      ${sel_entry_date}=  Fetch Added SEL Date  ${resp}
+
+      # Identify and find the time difference is less than 60 seconds.
+      # Finding the sensor details and execution may take up to a minute.
+      # Compare  date and time of Set SEL with sel entry.
+      ${d}=  Get Time Difference  ${sel_entry_date}  ${set_sel_time}
+      Should Be True  ${d}<=60
+
+    END
+
+
+*** Keywords ***
+
+Time Sync Mode Change Through Redfish
+    [Documentation]  Export IP, token and change the time sync to manual.
+    [Arguments]   ${value}
+
+    # Description of argument(s):
+    #    ${value}    can be either ${FALSE} or ${TRUE}
+
+    # May be changed to WebView.
+
+    # Changing Time Sync Mode to Manual.
+    Change Time Sync Mode Via Redfish  ${value}
+
+
+Change Time Sync Mode Via Redfish
+    [Documentation]  To change the time sync mode via Redfish.
+    [Arguments]   ${value}
+
+    # Description of argument(s):
+    #    ${value}    can be either ${FALSE} or ${TRUE}
+
+    # Creates request body for Redfish url.
+    ${mode}=  Create Dictionary  ProtocolEnabled=${value}
+    ${data}=  Create Dictionary  NTP=${mode}
+
+    # Patches the obtained body to the given url.
+    Redfish.patch  ${REDFISH_NW_PROTOCOL_URI}  body=&{data}
+    ...   valid_status_codes=[${HTTP_NO_CONTENT}]
+
+    Sleep  ${NETWORK_RESTART_TIME}
+
+
+Get SEL Time Command
+    [Documentation]  Get SEL Time command.
+
+    # The response will be 8 byte timestamp in hexadecimal.
+    # example: If current date and time is "Wed May  4 18:55:00 UTC 2022",
+    # then, ${get_sel_time} will be "07 cc 72 62".
+    ${get_sel_time}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['SEL_entry']['Get_SEL_Time'][0]}
+
+    [Return]    ${get_sel_time}
+
+
+Set SEL Time Entry Via Raw Command
+    [Documentation]  Set SEL Time command.
+    [Arguments]  ${sel_date_raw}
+
+    # Description of argument(s):
+    #    ${sel_date_raw}     Time to set in hexadecimal bytes.
+    #    Example:
+    #       If date is 1st January 2022 12:30:00 PM,
+    #       the hexadecimal timestamp is, 61D04948.
+    #    then the request bytes are,
+    #    ${sel_date_raw}     0x48 0x49 0xd0 0x61
+
+    Run IPMI Command  ${IPMI_RAW_CMD['SEL_entry']['Set_SEL_Time'][0]} ${sel_date_raw}
+    Sleep  ${NETWORK_RESTART_TIME}
+
+
+Clear The SEL
+    [Documentation]  Clear SEL Command.
+
+    # Clear the SEL.
+    ${out}=  Run IPMI Standard Command  sel clear
+    Should Contain  ${out}  Clearing SEL
+    Sleep  2s
+
+
+Verify Last SEL Added
+    [Documentation]  Verify last SEL added.
+    [Arguments]  ${sensor_type}  ${sensor_name}
+
+    # Description of argument(s):
+    #    ${sensor_type}         Type of the sensor (say Fan, Temp, etc.,).
+    #    ${sensor_name}         Name of the sensor.
+
+    ${resp}=  Run IPMI Standard Command  sel elist last 1
+    Run Keywords  Should Contain  ${resp}  ${sensor_type} ${sensor_name}  AND
+    ...  Should Contain  ${resp}  Asserted  msg=Add SEL Entry failed.
+    Should Not Contain  ${resp}  reset/cleared
+
+    [Return]  ${resp}
+
+
+Check Current Date Time Via IPMI
+    [Documentation]  Verify Current Date and Time Via IPMI user command.
+
+    ${resp}=  Run IPMI Standard Command  sel time get
+    [Return]  ${resp}
+
+
+Get Specific Sel Date
+    [Documentation]  Gets initial time and adds year to the current date and returns future date.
+    [Arguments]  ${year}
+
+    # Description of argument(s):
+    #    ${year}             Can be any number of years (say 5 year).
+
+    ${current_date}=  Get Current Date from BMC
+
+    # Converting given years to days by multiplying with 365days and adding the days to current date.
+    ${days}=  Evaluate  365*${year}+1
+    ${date} =  Add Time To Date  ${current_date}  ${days}d  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S
+
+    [Return]   ${date}
+
+
+Converting Date to HexaDecimal
+    [Documentation]  Converting the date into hexa decimal values.
+    [Arguments]  ${date}
+
+    # Description of argument(s):
+    #    ${date}             Can be any date in format %m/%d/%Y %H:%M:%S.
+
+    ${epoch_date}=  Convert Date  ${date}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
+    ${date}=  Convert To Hex  ${epoch_date}  lowercase=yes
+
+    # function calls from utils.py.
+    # Length of the date byte should be 8 so that each bytes are separated.
+    ${date}=  Zfill Data  ${date}  8
+    # To split every two characters to form one byte each.
+    ${date}=  Split String With Index  ${date}  2
+    # Prefix every list index value with 0x.
+    ${date}=  Prefix Bytes  ${date}
+
+    # Reverse the bytes and join the list to form request Time stamp data.
+    Reverse List  ${date}
+    ${date}=  Evaluate  " ".join(${date})
+
+    [Return]  ${date}
+
+
+Get Time Difference
+    [Documentation]  Converting the date into hexa decimal values.
+    [Arguments]  ${date1}  ${date2}
+
+    # Description of argument(s):
+    #    ${date1}             Can be any date in format %m/%d/%Y %H:%M:%S.
+    #    ${date2}             Can be any date in format %m/%d/%Y %H:%M:%S.
+
+    ${epoch_date1}=  Convert Date  ${date1}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
+    ${epoch_date2}=  Convert Date  ${date2}  epoch  exclude_millis=yes  date_format=%m/%d/%Y %H:%M:%S
+
+    ${diff}=  Evaluate  int(${epoch_date1}) - int(${epoch_date2})
+
+    [Return]  ${diff}
+
+
+Identify SEL Time Future DateTime
+    [Documentation]  Identify SEL Time Future DateTime.
+    [Arguments]  ${time}
+
+    # Description of argument(s):
+    #    ${time}             Can be any number of hours or minutes in format %H:%M:%S.
+
+    # Gets BMC current date via date command.
+    ${current_date}=  Get Current Date from BMC
+
+    ${datetime} =  Add Time To Date  ${current_date}  ${time}  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S
+
+    #Set SEL Time.
+    ${quoted_date}=  Fetch Date  ${datetime}
+
+    [Return]  ${quoted_date}  ${datetime}
+
+
+Identify SEL Time DateTime Delay
+    [Documentation]  Identify SEL Time DateTime Delay by subtracting given date.
+    [Arguments]  ${days}
+
+    # Description of argument(s):
+    #    ${days}             Can be any days (say 3d).
+
+    # Gets BMC current date via date command.
+    ${current_date}=  Get Current Date from BMC
+
+    ${datetime} =  Subtract Time From Date  ${current_date}  ${days}  result_format=%m/%d/%Y %H:%M:%S  date_format=%m/%d/%Y %H:%M:%S
+
+    # Format the sel time.
+    # function call from lib/utils.py.
+    ${quoted_date}=  Fetch Date  ${datetime}
+
+    [Return]  ${quoted_date}  ${datetime}
+
+
+Set SEL Time Via IPMI
+    [Documentation]  Set SEL Time for given date using IPMI.
+    [Arguments]  ${date_time}
+
+    # Description of argument(s):
+    #    ${date_time}       Can be any date in format %m/%d/%Y %H:%M:%S.
+
+    ${resp}=  Run IPMI Standard Command  sel time set "${date_time}"
+    Should Not Contain  ${resp}  Unspecified error
+
+
+Test Setup Execution
+    [Documentation]  Test Setup Execution.
+
+    Redfish.Login
+    # Change timesync mode to manual with timeout as per resource.robot.
+    Time Sync Mode Change Through Redfish   ${FALSE}
+    Sleep  ${NETWORK_TIMEOUT}
+
+
+Test Teardown Execution
+    [Documentation]  For execution of Test teardown.
+
+    Clear The SEL
+
+    # Change TimeSync mode to NTP with Timeout as per default resource.robot.
+    Time Sync Mode Change Through Redfish  ${TRUE}
+    Sleep  ${NETWORK_TIMEOUT}
+    Redfish.Logout
+    FFDC On Test Case Fail
