diff --git a/redfish/managers/test_bmc_network_protocol.robot b/redfish/managers/test_bmc_network_protocol.robot
new file mode 100644
index 0000000..d6575a4
--- /dev/null
+++ b/redfish/managers/test_bmc_network_protocol.robot
@@ -0,0 +1,115 @@
+*** Settings ***
+Documentation                NTP configuration and verification
+                             ...  tests.
+
+Resource                     ../../lib/openbmc_ffdc.robot
+Resource                     ../../lib/bmc_date_and_time_utils.robot
+
+Test Setup                   Printn
+Test Teardown                FFDC On Test Case Fail
+Suite Setup                  Suite Setup Execution
+Suite Teardown               Suite Teardown Execution
+
+
+*** Variables ***
+
+${ntp_server_1}              9.9.9.9
+${ntp_server_2}              2.2.3.3
+&{original_ntp}              &{EMPTY}
+
+*** Test Cases ***
+
+Verify NTP Server Set
+    [Documentation]  Patch NTP servers and verify NTP servers is set.
+    [Tags]  Verify_NTP_Server_Set
+    [Setup]  Set NTP state  ${True}
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+
+    # NTP network take few seconds to reload.
+    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
+
+
+Verify NTP Server Value Not Duplicated
+    [Documentation]  Verify NTP servers value not same for both primary and secondary server.
+    [Tags]  Verify_NTP_Server_Value_Not_Duplicated
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_1}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    ${network_protocol}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI}
+    Should Contain X Times  ${network_protocol["NTP"]["NTPServers"]}  ${ntp_server_1}  1
+    ...  msg=NTP primary and secondary server values should not be same.
+
+
+Verify NTP Server Setting Persist After BMC Reboot
+    [Documentation]  Verify NTP server setting persist after BMC reboot.
+    [Tags]  Verify_NTP_Server_Setting_Persist_After_BMC_Reboot
+    [Setup]  Set NTP state  ${True}
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Redfish OBMC Reboot (off)
+    Redfish.Login
+
+    # NTP network take few seconds to reload.
+    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
+
+
+Verify Enable NTP
+    [Documentation]  Verify NTP protocol mode can be enabled.
+    [Teardown]  Restore NTP Mode
+    [Tags]  Verify_Enable_NTP
+
+    ${original_ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Set Suite Variable  ${original_ntp}
+    Rprint Vars  original_ntp
+    # The following patch command should set the ["NTP"]["ProtocolEnabled"] property to "True".
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Wait Until Keyword Succeeds  1 min  5 sec
+    ...  Verify System Time Sync Status  ${True}
+    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Rprint Vars  ntp
+    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
+
+
+Verify Set DateTime With NTP Enabled
+    [Documentation]  Verify whether set managers dateTime is restricted with NTP enabled.
+    [Tags]  Verify_Set_DateTime_With_NTP_Enabled
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
+    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
+    ${local_system_time}=  Get Current Date
+    Redfish Set DateTime  ${local_system_time}
+    ...  valid_status_codes=[${HTTP_BAD_REQUEST}, ${HTTP_INTERNAL_SERVER_ERROR}]
+
+
+*** Keywords ***
+
+
+Suite Setup Execution
+    [Documentation]  Do the suite level setup.
+
+    Printn
+    Redfish.Login
+    Get NTP Initial Status
+    ${old_date_time}=  CLI Get BMC DateTime
+    ${year_status}=  Run Keyword And Return Status  Should Not Contain  ${old_date_time}  ${year_without_ntp}
+    Run Keyword If  ${year_status} == False
+    ...  Enable NTP And Add NTP Address
+
+
+Suite Teardown Execution
+    [Documentation]  Do the suite level teardown.
+
+    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
+    ...  body={'NTP':{'NTPServers': ['${EMPTY}', '${EMPTY}']}}
+    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
+    Restore NTP Status
+    Redfish.Logout
diff --git a/redfish/managers/test_managers_bmc_time.robot b/redfish/managers/test_managers_bmc_time.robot
index 9671542..ff32078 100644
--- a/redfish/managers/test_managers_bmc_time.robot
+++ b/redfish/managers/test_managers_bmc_time.robot
@@ -1,12 +1,7 @@
 *** Settings ***
 Documentation    Test BMC manager time functionality.
-Resource                     ../../lib/resource.robot
-Resource                     ../../lib/bmc_redfish_resource.robot
-Resource                     ../../lib/common_utils.robot
 Resource                     ../../lib/openbmc_ffdc.robot
-Resource                     ../../lib/utils.robot
-Resource                     ../../lib/rest_client.robot
-Library                      ../../lib/gen_robot_valid.py
+Resource                     ../../lib/bmc_date_and_time_utils.robot
 
 Test Setup                   Printn
 Test Teardown                Test Teardown Execution
@@ -23,10 +18,6 @@
 ${date_time_with_offset}     2019-04-25T26:24:46+00:00
 ${expected_date_time}        2019-04-26T02:24:46+00:00
 ${invalid_datetime}          "2019-04-251T12:24:46+00:00"
-${ntp_server_1}              9.9.9.9
-${ntp_server_2}              2.2.3.3
-&{original_ntp}              &{EMPTY}
-${year_without_ntp}          1970
 
 *** Test Cases ***
 
@@ -108,63 +99,6 @@
     ...  The difference between Redfish time and CLI time exceeds the allowed time difference.
 
 
-Verify NTP Server Set
-    [Documentation]  Patch NTP servers and verify NTP servers is set.
-    [Tags]  Verify_NTP_Server_Set
-    [Setup]  Set NTP state  ${True}
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
-    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-
-    # NTP network take few seconds to reload.
-    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
-
-Verify NTP Server Value Not Duplicated
-    [Documentation]  Verify NTP servers value not same for both primary and secondary server.
-    [Tags]  Verify_NTP_Server_Value_Not_Duplicated
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
-    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_1}']}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-    ${network_protocol}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI}
-    Should Contain X Times  ${network_protocol["NTP"]["NTPServers"]}  ${ntp_server_1}  1
-    ...  msg=NTP primary and secondary server values should not be same.
-
-
-Verify NTP Server Setting Persist After BMC Reboot
-    [Documentation]  Verify NTP server setting persist after BMC reboot.
-    [Tags]  Verify_NTP_Server_Setting_Persist_After_BMC_Reboot
-    [Setup]  Set NTP state  ${True}
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
-    ...  body={'NTP':{'NTPServers': ['${ntp_server_1}', '${ntp_server_2}']}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-    Redfish OBMC Reboot (off)
-    Redfish.Login
-
-    # NTP network take few seconds to reload.
-    Wait Until Keyword Succeeds  30 sec  10 sec  Verify NTP Servers Are Populated
-
-
-Verify Enable NTP
-    [Documentation]  Verify NTP protocol mode can be enabled.
-    [Teardown]  Restore NTP Mode
-    [Tags]  Verify_Enable_NTP
-
-    ${original_ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
-    Set Suite Variable  ${original_ntp}
-    Rprint Vars  original_ntp
-    # The following patch command should set the ["NTP"]["ProtocolEnabled"] property to "True".
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-    Wait Until Keyword Succeeds  1 min  5 sec
-    ...  Verify System Time Sync Status  ${True}
-    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
-    Rprint Vars  ntp
-    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
-
-
 Verify Immediate Consumption Of BMC Date
     [Documentation]  Verify immediate change in BMC date time.
     [Tags]  Verify_Immediate_Consumption_Of_BMC_Date
@@ -179,18 +113,6 @@
     off
 
 
-Verify Set DateTime With NTP Enabled
-    [Documentation]  Verify whether set managers dateTime is restricted with NTP enabled.
-    [Tags]  Verify_Set_DateTime_With_NTP_Enabled
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${True}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-    ${ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
-    Valid Value  ntp["ProtocolEnabled"]  valid_values=[True]
-    ${local_system_time}=  Get Current Date
-    Redfish Set DateTime  ${local_system_time}
-    ...  valid_status_codes=[${HTTP_BAD_REQUEST}, ${HTTP_INTERNAL_SERVER_ERROR}]
-
 
 *** Keywords ***
 
@@ -201,54 +123,6 @@
     FFDC On Test Case Fail
 
 
-Redfish Get DateTime
-    [Documentation]  Returns BMC Datetime value from Redfish.
-
-    ${date_time}=  Redfish.Get Attribute  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}  DateTime
-    RETURN  ${date_time}
-
-
-Redfish Set DateTime
-    [Documentation]  Set DateTime using Redfish.
-    [Arguments]  ${date_time}=${EMPTY}  &{kwargs}
-    # Description of argument(s):
-    # date_time                     New time to set for BMC (eg.
-    #                               "2019-06-30 09:21:28"). If this value is
-    #                               empty, it will be set to the UTC current
-    #                               date time of the local system.
-    # kwargs                        Additional parameters to be passed directly to
-    #                               th Redfish.Patch function.  A good use for
-    #                               this is when testing a bad date-time, the
-    #                               caller can specify
-    #                               valid_status_codes=[${HTTP_BAD_REQUEST}].
-
-    # Assign default value of UTC current date time if date_time is empty.
-    ${date_time}=  Run Keyword If
-    ...  '${date_time}' == '${EMPTY}'  Get Current Date  time_zone=UTC
-    ...  ELSE
-    ...  Set Variable  ${date_time}
-    Wait Until Keyword Succeeds  1min  5sec
-    ...  Redfish.Patch  ${REDFISH_BASE_URI}Managers/${MANAGER_ID}  body={'DateTime': '${date_time}'}  &{kwargs}
-
-
-Set Time To Manual Mode
-    [Documentation]  Set date time to manual mode via Redfish.
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${False}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-
-
-Restore NTP Mode
-    [Documentation]  Restore the original NTP mode.
-
-
-    Return From Keyword If  &{original_ntp} == &{EMPTY}
-    Print Timen  Restore NTP Mode.
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
-    ...  body={'NTP':{'ProtocolEnabled': ${original_ntp["ProtocolEnabled"]}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-
-
 Suite Setup Execution
     [Documentation]  Do the suite level setup.
 
@@ -265,95 +139,6 @@
 Suite Teardown Execution
     [Documentation]  Do the suite level teardown.
 
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}
-    ...  body={'NTP':{'NTPServers': ['${EMPTY}', '${EMPTY}']}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
     Set Time To Manual Mode
     Restore NTP Status
     Redfish.Logout
-
-
-Set NTP state
-    [Documentation]  Set NTP service inactive.
-    [Arguments]  ${state}
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'ProtocolEnabled': ${state}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-
-
-Get NTP Initial Status
-    [Documentation]  Get NTP service Status.
-
-    ${original_ntp}=  Redfish.Get Attribute  ${REDFISH_NW_PROTOCOL_URI}  NTP
-    Set Suite Variable  ${original_ntp}
-
-
-Restore NTP Status
-    [Documentation]  Restore NTP Status.
-
-    Run Keyword If  '${original_ntp["ProtocolEnabled"]}' == 'True'
-    ...    Set NTP state  ${TRUE}
-    ...  ELSE  Set NTP state  ${FALSE}
-
-
-Set BMC Date And Verify
-    [Documentation]  Set BMC Date Time at a given host state and verify.
-    [Arguments]  ${host_state}
-    # Description of argument(s):
-    # host_state  Host state at which date time will be updated for verification
-    #             (eg. on, off).
-
-    Run Keyword If  '${host_state}' == 'on'
-    ...    Redfish Power On  stack_mode=skip
-    ...  ELSE
-    ...    Redfish Power off  stack_mode=skip
-    ${current_date}=  Get Current Date  time_zone=UTC
-    ${new_value}=  Subtract Time From Date  ${current_date}  1 day
-    Redfish Set DateTime  ${new_value}  valid_status_codes=[${HTTP_OK}]
-    ${current_value}=  Redfish Get DateTime
-    ${time_diff}=  Subtract Date From Date  ${current_value}  ${new_value}
-    Should Be True  '${time_diff}'<='3'
-
-Verify NTP Servers Are Populated
-    [Documentation]  Redfish GET request /redfish/v1/Managers/${MANAGER_ID}/NetworkProtocol response
-    ...              and verify if NTP servers are populated.
-
-    ${network_protocol}=  Redfish.Get Properties  ${REDFISH_NW_PROTOCOL_URI}
-    Should Contain  ${network_protocol["NTP"]["NTPServers"]}  ${ntp_server_1}
-    ...  msg=NTP server value ${ntp_server_1} not stored.
-    Should Contain  ${network_protocol["NTP"]["NTPServers"]}  ${ntp_server_2}
-    ...  msg=NTP server value ${ntp_server_2} not stored.
-
-
-Verify System Time Sync Status
-    [Documentation]  Verify the status of service systemd-timesyncd matches the NTP protocol enabled state.
-    [Arguments]  ${expected_sync_status}=${True}
-
-    # Description of argument(s):
-    # expected_sync_status  expected status at which NTP protocol enabled will be updated for verification
-    #                       (eg. True, False).
-
-    ${resp}=  BMC Execute Command
-    ...  systemctl status systemd-timesyncd
-    ...  ignore_err=${1}
-    ${sync_status}=  Get Lines Matching Regexp  ${resp[0]}  .*Active.*
-    Run Keyword If  ${expected_sync_status}==${True}
-    ...  Should Contain  ${sync_status}  active (running)
-    Run Keyword If  ${expected_sync_status}==${False}
-    ...  Should Contain  ${sync_status}  inactive (dead)
-
-Enable NTP And Add NTP Address
-    [Documentation]  Enable NTP Protocol and Add NTP Address.
-
-    Set NTP state  ${TRUE}
-
-    Redfish.Patch  ${REDFISH_NW_PROTOCOL_URI}  body={'NTP':{'NTPServers': ${NTP_SERVER_ADDRESSES}}}
-    ...  valid_status_codes=[${HTTP_OK}, ${HTTP_NO_CONTENT}]
-
-    Wait Until Keyword Succeeds  1 min  10 sec  Check Date And Time Was Changed
-
-Check Date And Time Was Changed
-    [Documentation]  Verify date was current date and time.
-
-    ${new_date_time}=  CLI Get BMC DateTime
-    Should Not Contain  ${new_date_time}  ${year_without_ntp}
