diff --git a/lib/remote_logging_utils.robot b/lib/remote_logging_utils.robot
new file mode 100644
index 0000000..05f2151
--- /dev/null
+++ b/lib/remote_logging_utils.robot
@@ -0,0 +1,126 @@
+*** Settings ***
+Documentation  Remote syslog utilities keywords.
+
+Resource         ../lib/resource.txt
+Resource         ../lib/rest_client.robot
+Resource         ../lib/utils.robot
+
+*** Keywords ***
+
+Configure Remote Log Server With Parameters
+    [Documentation]  Configure the remote logging server on BMC.
+    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
+    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
+
+    # Description of argument(s):
+    # remote_host  The host name or IP address of the remote logging server
+    #              (e.g. "xx.xx.xx.xx").
+    # remote_port  Remote ryslog server port number (e.g. "514").
+
+    # Example:
+    # https://xx.xx.xx.xx/xyz/openbmc_project/logging/config/remote
+    # Response code:200, Content:{
+    # "data": {
+    #     "Address": "xx.xx.xx.xx",
+    #     "Port": 514
+    # },
+    # "message": "200 OK",
+    # "status": "ok"
+    # }
+
+    ${host_dict}=  Create Dictionary  data=${remote_host}
+    Write Attribute  ${REMOTE_LOGGING_URI}  Address  data=${host_dict}
+    ...  verify=${TRUE}  expected_value=${remote_host}
+
+    # TODO: From Dev to do bump up restart service time and bulk address and
+    # port update API.
+    # Reference: https://github.com/ibm-openbmc/dev/issues/59
+    Sleep  10s
+
+    ${remote_port}=  Convert To Integer  ${remote_port}
+    ${port_dict}=  Create Dictionary  data=${remote_port}
+    Write Attribute  ${REMOTE_LOGGING_URI}  Port  data=${port_dict}
+    ...  verify=${TRUE}  expected_value=${remote_port}
+
+    # TODO: From Dev to do bump up restart service time and bulk address and
+    # port update API.
+    # Reference: https://github.com/ibm-openbmc/dev/issues/59
+    Sleep  10s
+
+
+Configure Remote Log Server
+    [Documentation]  Configure the remote logging server on BMC.
+    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
+    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
+
+    # Description of argument(s):
+    # remote_host  The host name or IP address of the remote logging server
+    #              (e.g. "xx.xx.xx.xx").
+    # remote_port  Remote ryslog server port number (e.g. "514").
+
+    @{remote_parm_list}=  Create List  ${remote_host}  ${remote_port}
+
+    ${data}=  Create Dictionary  data=@{remote_parm_list}
+
+    ${resp}=  OpenBMC Post Request
+    ...  ${REMOTE_LOGGING_CONFIG_URI}/action/remote  data=${data}
+
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
+
+
+Verify Rsyslog Config On BMC
+    [Documentation]  Check if the rsyslog configuration on BMC is correct.
+    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
+    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
+
+    # Description of argument(s):
+    # remote_host  The host name or IP address of the remote logging server
+    #              (e.g. "xx.xx.xx.xx").
+    # remote_port  Remote ryslog server port number (e.g. "514").
+
+    # Example:
+    # Configured:
+    # *.* @@xx.xx.xx.xx:514root@wsbmc123
+    # By default:
+    # #*.* @@remote-host:port
+
+    ${ryslog_conf}  ${stderr}  ${rc}=  BMC Execute Command
+    ...  cat /etc/rsyslog.d/server.conf
+
+    ${config}=  Catenate  @@${remote_host}:${remote_port}
+
+    Should Contain  ${ryslog_conf}  ${config}
+    ...  msg=${remote_host} and ${remote_port} are not configured.
+
+
+Remote Logging Server Execute Command
+    [Documentation]  Login to remote logging server.
+    [Arguments]  ${command}
+    ...          ${remote_host}=${REMOTE_LOG_SERVER_HOST}
+    ...          ${username}=${REMOTE_USERNAME}
+    ...          ${password}=${REMOTE_PASSWORD}
+
+    # Description of argument(s):
+    # command          Command line string.
+    # remote_host    The host name or IP address of the remote logging server
+    #                (e.g. "xx.xx.xx.xx").
+    # username       Remote rsyslog server user name.
+    # password       Remote rsyslog server password.
+
+    ${remote_dict}=  Create Dictionary  host=${remote_host}
+    Open Connection And Log In  ${username}  ${password}
+    ...  &{remote_dict}
+    ${stdout}  ${stderr}=  Execute Command  ${command}  return_stderr=True
+    Should Be Empty  ${stderr}
+    [Return]  ${stdout}
+
+
+Get Remote Log Server Configured
+    [Documentation]  Check that remote logging server is not configured.
+
+    ${address}=  Read Attribute  ${REMOTE_LOGGING_URI}  Address
+    Should Not Be Equal  ${address}  ${REMOTE_LOG_SERVER_HOST}
+
+    ${port_number}=  Convert To Integer  ${REMOTE_LOG_SERVER_PORT}
+    ${port}=  Read Attribute  ${REMOTE_LOGGING_URI}  Port
+    Should Not Be Equal  ${port}  ${port_number}
diff --git a/remote_logging/test_remote_logging.robot b/remote_logging/test_remote_logging.robot
index 706f591..b04f07a 100644
--- a/remote_logging/test_remote_logging.robot
+++ b/remote_logging/test_remote_logging.robot
@@ -9,11 +9,9 @@
 # REMOTE_PASSWORD           The password for the remote logging server.
 
 Library          String
-Resource         ../lib/resource.txt
-Resource         ../lib/rest_client.robot
-Resource         ../lib/utils.robot
 Resource         ../lib/openbmc_ffdc.robot
 Resource         ../lib/boot_utils.robot
+Resource         ../lib/remote_logging_utils.robot
 Library          ../lib/gen_misc.py
 
 Suite Setup      Suite Setup Execution
@@ -100,7 +98,7 @@
 
     Verify Rsyslog Config On BMC
 
-    Configure Remote Logging Server  remote_host=${EMPTY}  remote_port=0
+    Configure Remote Log Server With Parameters  remote_host=${EMPTY}  remote_port=0
     Verify Rsyslog Config On BMC  remote_host=remote-host  remote_port=port
 
 
@@ -110,7 +108,7 @@
 
     # Invalid port derived by (REMOTE_LOG_SERVER_PORT + 1) port config setting.
     ${INVALID_PORT}=  Evaluate  ${REMOTE_LOG_SERVER_PORT} + ${1}
-    Configure Remote Logging Server
+    Configure Remote Log Server With Parameters
     ...  remote_host=${REMOTE_LOG_SERVER_HOST}  remote_port=${INVALID_PORT}
 
     Sleep  3s
@@ -270,7 +268,7 @@
 
     ${hostname}  ${stderr}  ${rc}=  BMC Execute Command  /bin/hostname
     Set Suite Variable  ${bmc_hostname}  ${hostname}
-    Configure Remote Logging Server
+    Configure Remote Log Server With Parameters
 
 
 Test Setup Execution
@@ -282,7 +280,8 @@
     ${config_status}=  Run Keyword And Return Status
     ...  Get Remote Log Server Configured
 
-    Run Keyword If  ${config_status}==${FALSE}  Configure Remote Logging Server
+    Run Keyword If  ${config_status}==${FALSE}
+    ...  Configure Remote Log Server With Parameters
 
     ${ActiveState}=  Get Service Attribute  ActiveState  rsyslog.service
     Should Be Equal  active  ${ActiveState}
@@ -294,122 +293,3 @@
 
     ${resp}=  OpenBMC Get Request  ${REMOTE_LOGGING_URI}
     Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-
-
-Configure Remote Logging Server
-    [Documentation]  Configure the remote logging server on BMC.
-    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
-    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
-
-    # Description of argument(s):
-    # remote_host  The host name or IP address of the remote logging server
-    #              (e.g. "xx.xx.xx.xx").
-    # remote_port  Remote ryslog server port number (e.g. "514").
-
-    # Example:
-    # https://xx.xx.xx.xx/xyz/openbmc_project/logging/config/remote
-    # Response code:200, Content:{
-    # "data": {
-    #     "Address": "xx.xx.xx.xx",
-    #     "Port": 514
-    # },
-    # "message": "200 OK",
-    # "status": "ok"
-    # }
-
-    ${host_dict}=  Create Dictionary  data=${remote_host}
-    Write Attribute  ${REMOTE_LOGGING_URI}  Address  data=${host_dict}
-    ...  verify=${TRUE}  expected_value=${remote_host}
-
-    # TODO: From Dev to do bump up restart service time and bulk address and
-    # port update API.
-    # Reference: https://github.com/ibm-openbmc/dev/issues/59
-    Sleep  10s
-
-    ${remote_port}=  Convert To Integer  ${remote_port}
-    ${port_dict}=  Create Dictionary  data=${remote_port}
-    Write Attribute  ${REMOTE_LOGGING_URI}  Port  data=${port_dict}
-    ...  verify=${TRUE}  expected_value=${remote_port}
-
-    # TODO: From Dev to do bump up restart service time and bulk address and
-    # port update API.
-    # Reference: https://github.com/ibm-openbmc/dev/issues/59
-    Sleep  10s
-
-
-Configure Group Remote Logging Server
-    [Documentation]  Configure the remote logging server on BMC.
-    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
-    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
-
-    # Description of argument(s):
-    # remote_host  The host name or IP address of the remote logging server
-    #              (e.g. "xx.xx.xx.xx").
-    # remote_port  Remote ryslog server port number (e.g. "514").
-
-    @{remote_parm_list}=  Create List  ${remote_host}  ${remote_port}
-
-    ${data}=  Create Dictionary  data=@{snmp_parm_list}
-
-    ${resp}=  OpenBMC Post Request
-    ...  ${REMOTE_LOGGING_CONFIG_URI}/action/remote  data=${data}
-
-    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
-
-
-Verify Rsyslog Config On BMC
-    [Documentation]  Check if the rsyslog configuration on BMC is correct.
-    [Arguments]  ${remote_host}=${REMOTE_LOG_SERVER_HOST}
-    ...          ${remote_port}=${REMOTE_LOG_SERVER_PORT}
-
-    # Description of argument(s):
-    # remote_host  The host name or IP address of the remote logging server
-    #              (e.g. "xx.xx.xx.xx").
-    # remote_port  Remote ryslog server port number (e.g. "514").
-
-    # Example:
-    # Configured:
-    # *.* @@xx.xx.xx.xx:514root@wsbmc123
-    # By default:
-    # #*.* @@remote-host:port
-
-    ${ryslog_conf}  ${stderr}  ${rc}=  BMC Execute Command
-    ...  cat /etc/rsyslog.d/server.conf
-
-    ${config}=  Catenate  @@${remote_host}:${remote_port}
-
-    Should Contain  ${ryslog_conf}  ${config}
-    ...  msg=${remote_host} and ${remote_port} are not configured.
-
-
-Remote Logging Server Execute Command
-    [Documentation]  Login to remote logging server.
-    [Arguments]  ${command}
-    ...          ${remote_host}=${REMOTE_LOG_SERVER_HOST}
-    ...          ${username}=${REMOTE_USERNAME}
-    ...          ${password}=${REMOTE_PASSWORD}
-
-    # Description of argument(s):
-    # command          Command line string.
-    # remote_host    The host name or IP address of the remote logging server
-    #                (e.g. "xx.xx.xx.xx").
-    # username       Remote rsyslog server user name.
-    # password       Remote rsyslog server password.
-
-    ${remote_dict}=  Create Dictionary  host=${remote_host}
-    Open Connection And Log In  ${username}  ${password}
-    ...  &{remote_dict}
-    ${stdout}  ${stderr}=  Execute Command  ${command}  return_stderr=True
-    Should Be Empty  ${stderr}
-    [Return]  ${stdout}
-
-
-Get Remote Log Server Configured
-    [Documentation]  Check that remote logging server is not configured.
-
-    ${address}=  Read Attribute  ${REMOTE_LOGGING_URI}  Address
-    Should Not Be Equal  ${address}  ${REMOTE_LOG_SERVER_HOST}
-
-    ${port_number}=  Convert To Integer  ${REMOTE_LOG_SERVER_PORT}
-    ${port}=  Read Attribute  ${REMOTE_LOGGING_URI}  Port
-    Should Not Be Equal  ${port}  ${port_number}
