diff --git a/lib/utils.robot b/lib/utils.robot
index dbfcb77..87f1f52 100755
--- a/lib/utils.robot
+++ b/lib/utils.robot
@@ -634,3 +634,11 @@
     Should Be Empty  ${stderr}
     ${btime}=  Convert To Integer  ${output}
     [Return]  ${btime}
+
+
+Execute Command On BMC
+    [Documentation]  Execute given command on BMC and return output.
+    [Arguments]  ${command}
+    ${stdout}  ${stderr}=  Execute Command  ${command}  return_stderr=True
+    Should Be Empty  ${stderr}
+    [Return]  ${stdout}
diff --git a/test_lists/skip_test b/test_lists/skip_test
index 7635f74..c510a93 100644
--- a/test_lists/skip_test
+++ b/test_lists/skip_test
@@ -15,9 +15,6 @@
 -e Validate_Heartbeat_LEDs_Test_Cases
 -e Validate_Identify_LEDs_Test_Cases
 -e Validate_Beep_LEDs_Test_Cases
-#https://github.com/openbmc/openbmc-test-automation/issues/130
--e Test_OpenBMC_Services_Autorestart_Policy
--e Test_Restart_Policy_for_openbmc_service
 #https://github.com/openbmc/openbmc-test-automation/issues/90
 -e Verify_System_VPD_Properties
 #https://github.com/openbmc/openbmc/issues/93
diff --git a/test_lists/skip_test_palmetto b/test_lists/skip_test_palmetto
index abc462f..7ceadf5 100644
--- a/test_lists/skip_test_palmetto
+++ b/test_lists/skip_test_palmetto
@@ -31,9 +31,6 @@
 -e Disable_PowerCap
 #https://github.com/openbmc/openbmc-test-automation/issues/123
 -e Execute_ipmi_BT_capabilities_command
-#https://github.com/openbmc/openbmc-test-automation/issues/130
--e Test_OpenBMC_Services_Autorestart_Policy
--e Test_Restart_Policy_for_openbmc_service
 #https://github.com/openbmc/openbmc-test-automation/issues/22
 -e Validate_Heartbeat_LEDs_Test_Cases
 -e Validate_Identify_LEDs_Test_Cases
diff --git a/test_lists/skip_test_witherspoon b/test_lists/skip_test_witherspoon
index 1f5ed7a..9780d6d 100644
--- a/test_lists/skip_test_witherspoon
+++ b/test_lists/skip_test_witherspoon
@@ -15,9 +15,6 @@
 -e Validate_Heartbeat_LEDs_Test_Cases
 -e Validate_Identify_LEDs_Test_Cases
 -e Validate_Beep_LEDs_Test_Cases
-#https://github.com/openbmc/openbmc-test-automation/issues/130
--e Test_OpenBMC_Services_Autorestart_Policy
--e Test_Restart_Policy_for_openbmc_service
 #https://github.com/openbmc/openbmc-test-automation/issues/90
 -e Verify_System_VPD_Properties
 #https://github.com/openbmc/openbmc/issues/93
diff --git a/tests/test_openbmc_service_restart_policy.robot b/tests/test_openbmc_service_restart_policy.robot
index d52a51f..8b7b3c5 100644
--- a/tests/test_openbmc_service_restart_policy.robot
+++ b/tests/test_openbmc_service_restart_policy.robot
@@ -1,98 +1,80 @@
 *** Settings ***
-Documentation        This testsuites tests the autorestart policy for
-...                  OpenBMC project
+Documentation  Verify Auto Restart policy for set of mission critical
+...            services needed for functioning on BMC.
 
-Resource             ../lib/resource.txt
-Resource             ../lib/connection_client.robot
-Resource             ../lib/openbmc_ffdc.robot
+Resource         ../lib/resource.txt
+Resource         ../lib/connection_client.robot
+Resource         ../lib/openbmc_ffdc.robot
+Resource         ../lib/utils.robot
 
-Suite Setup          Open Connection And Log In
-Suite Teardown       Close All Connections
-Test Teardown        FFDC On Test Case Fail
+Suite Setup      Open Connection And Log In
+Suite Teardown   Close All Connections
+Test Teardown    FFDC On Test Case Fail
+
+*** Variables ***
+${LOG_SERVICE}  xyz.openbmc_project.Logging.service
 
 *** Test Cases ***
-Test OpenBMC Services Autorestart Policy
-    [Documentation]     This testcases is for checking all the openbmc services
-    ...                 restart policy is set to active
-    ...                 Disabling this test as use case is not well define and
-    ...                 developement point of view this may keep changing. So
-    ...                 untill then, this remains commented piece of test.
-    [Tags]  Test_OpenBMC_Services_Autorestart_Policy
-    @{services}=    Create List     btbridged.service
-    ...                             host-ipmid.service
-    ...                             inarp.service
-    ...                             network.service
-    ...                             network-update-dns.service
-    ...                             obmc-console.service
-    ...                             obmc-hwmon.service
-    ...                             obmc-phosphor-chassisd.service
-    ...                             obmc-phosphor-event.service
-    ...                             obmc-phosphor-fand.service
-    ...                             obmc-phosphor-flashd.service
-    ...                             obmc-phosphor-policyd.service
-    ...                             obmc-phosphor-sensord.service
-    ...                             obmc-phosphor-sysd.service
-    ...                             obmc-phosphor-user.service
-    ...                             org.openbmc.buttons.Power.service
-    ...                             org.openbmc.buttons.reset.service
-    ...                             org.openbmc.control.BmcFlash.service
-    ...                             org.openbmc.control.Bmc.service
-    ...                             org.openbmc.control.Chassis.service
-    ...                             org.openbmc.control.Checkstop.service
-    ...                             org.openbmc.control.Fans.service
-    ...                             org.openbmc.control.Flash.service
-    ...                             org.openbmc.control.Host.service
-    ...                             org.openbmc.control.led.service
-    ...                             org.openbmc.control.Power.service
-    ...                             org.openbmc.examples.PythonService.service
-    ...                             org.openbmc.examples.SDBusService.service
-    ...                             org.openbmc.Inventory.service
-    ...                             org.openbmc.managers.Download.service
-    ...                             org.openbmc.managers.System.service
-    ...                             org.openbmc.ObjectMapper.service
-    ...                             org.openbmc.Sensors.service
-    ...                             org.openbmc.watchdog.Host.service
-    ...                             phosphor-rest.service
-    ...                             rest-dbus.service
-    ...                             settings.service
-    : FOR    ${SERVICE}    IN    @{services}
-    \    Check Service Autorestart    ${SERVICE}
+
+Verify OpenBMC Services Auto Restart Policy
+    [Documentation]  Kill active services and expect auto restart.
+    [Tags]  Verify_OpenBMC_Services_Auto_Restart_Policy
+    # The services listed bellow restart policy should be "always"
+    # Command output:
+    # systemctl -p Restart show xyz.openbmc_project.Logging.service | cat
+    # Restart=always
+    @{services}=
+    ...  Create List  xyz.openbmc_project.Logging.service
+    ...               xyz.openbmc_project.ObjectMapper.service
+    ...               xyz.openbmc_project.State.BMC.service
+    ...               xyz.openbmc_project.State.Chassis.service
+    ...               xyz.openbmc_project.State.Host.service
+    : FOR  ${SERVICE}  IN  @{services}
+    \    Check Service Autorestart  ${SERVICE}
 
 
-Test Restart Policy for openbmc service
-    [Documentation]     This testcase will kill the service and make sure it
-    ...                 does restart after that
-    [Tags]  Test_Restart_Policy_for_openbmc_service
+Kill Services And Expect Service Restart
+    [Documentation]  Kill the service and it must restart.
+    [Tags]  Kill_Services_And_Expect_Service_Restart
 
-    ${MainPID}=   Execute Restart Policy Command
-    ...   systemctl -p MainPID show phosphor-settings.service| cut -d = -f2
-    Should Not Be Equal     0   ${MainPID}
+    # Get the MainPID and service state.
+    ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE}
+    Should Not Be Equal  ${0}  ${MainPID}
+    ...  msg=Logging service not restarted.
 
-    Execute Restart Policy Command    kill -9 ${MainPID}
-    Sleep   30s   reason=Wait for service to restart properly
+    ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE}
+    Should Be Equal  active  ${ActiveState}
+    ...  msg=Logging Service not in active state.
 
-    ${ActiveState}=   Execute Restart Policy Command
-    ...   systemctl -p ActiveState show phosphor-settings.service| cut -d = -f2
-    Should Be Equal     active   ${ActiveState}
+    Execute Command On BMC  kill -9 ${MainPID}
+    Sleep  10s  reason=Wait for service to restart.
 
-    ${MainPID}=   Execute Restart Policy Command
-    ...  systemctl -p MainPID show phosphor-settings.service| cut -d = -f2
-    Should Not Be Equal     0   ${MainPID}
+    ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE}
+    Should Not Be Equal  ${0}  ${MainPID}
+    ...  msg=Logging service not restarted.
+
+    ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE}
+    Should Be Equal  active  ${ActiveState}
+    ...  msg=Logging service not in active state.
 
 
 *** Keywords ***
 
 Check Service Autorestart
-    [Arguments]    ${servicename}
-    ${restart_policy}=
-    ...  Execute Restart Policy Command
-    ...  systemctl -p Restart show ${servicename} | cut -d = -f2
-    Should Be Equal     always   ${restart_policy}
-    ...  msg=restart policy is not always for ${servicename}
+    [Documentation]  Check if given policy is "always".
+    [Arguments]  ${servicename}
+    # servicename  Qualified service name
+    ${restart_policy}=  Get Service Attribute  Restart  ${servicename}
+    Should Be Equal  always  ${restart_policy}
+    ...  msg=Incorrect policy for ${servicename}
 
 
-Execute Restart Policy Command
-    [Arguments]    ${command}
-    ${stdout}   ${stderr}=   Execute Command   ${command}   return_stderr=True
-    Should Be Empty    ${stderr}
-    [Return]    ${stdout}
+Get Service Attribute
+    [Documentation]  Get service attribute policy output.
+    [Arguments]  ${option}  ${servicename}
+    # option  systemctl supported options
+    # servicename  Qualified service name
+    ${cmd}=  Set Variable
+    ...  systemctl -p ${option} show ${servicename} | cut -d = -f2
+    ${attr}=  Execute Command On BMC  ${cmd}
+    [Return]  ${attr}
