diff --git a/redfish/managers/test_bmc_network_conf.robot b/redfish/managers/test_bmc_network_conf.robot
index 2ac8903..ae59298 100644
--- a/redfish/managers/test_bmc_network_conf.robot
+++ b/redfish/managers/test_bmc_network_conf.robot
@@ -8,9 +8,10 @@
 Library        ../../lib/bmc_network_utils.py
 Library        Collections
 
-Test Setup     Test Setup Execution
-Test Teardown  Test Teardown Execution
-Suite Setup    Suite Setup Execution
+Suite Setup     Suite Setup Execution
+Suite Teardown  Suite Teardown Execution
+Test Setup      Test Setup Execution
+Test Teardown   Test Teardown Execution
 
 Force Tags     Network_Conf_Test
 
@@ -771,12 +772,38 @@
     # Set suite variables to trigger restoration during teardown.
     Set Suite Variable  ${original_nameservers}
 
+
 Suite Setup Execution
     [Documentation]  Do suite setup execution.
 
+    # - Get DHCP IPv4 enabled/disabled status from redfish managers URI
+    # - If DHCP IPv4 is enabled ,
+    #   - Get DHCP IPv4 settings - ip address, gateway, subnetmask
+    #   - And set the same as static IP address
+
+    ${DHCPEnabled}=  Get IPv4 DHCP Enabled Status
+    Set Suite Variable  ${DHCPEnabled}
+
+    Run Keyword If  ${DHCPEnabled}==True
+    ...  Run Keywords
+    ...  ${ip_addr}  ${gateway}  ${subnetmask}=  Get DHCP IP Info  AND
+    ...  Add IP Address  ${ip_addr}  ${subnetmask}  ${gateway}  AND
+    ...  Set Suite Variable  ${ip_addr}
+
     ${test_gateway}=  Get BMC Default Gateway
     Set Suite Variable  ${test_gateway}
 
+
+Suite Teardown Execution
+    [Documentation]  Do suite teardown execution.
+
+    # - If the DHCP IPv4 is enabled before suite setup execution
+    #   - Restore the DHCP IPv4 to enabled state
+
+    Run Keyword If  ${DHCPEnabled}==True
+    ...  Enable IPv4 DHCP Settings
+
+
 Update IP Address
     [Documentation]  Update IP address of BMC.
     [Arguments]  ${ip}  ${new_ip}  ${netmask}  ${gw_ip}
@@ -887,3 +914,48 @@
     END
     Run Keyword If  '${ip_found}' == '${False}'
     ...  Fail  msg=Configured IP address not found on EthernetInterface URI.
+
+
+Enable IPv4 DHCP Settings
+    [Documentation]  Set IPv4 DHCP enabled status true/false in redfish URI.
+    [Arguments]  ${status}=${True}
+
+    # Description of argument(s):
+    # status   IPv4 DHCPEnabled status which needs to be set.
+    #          (e.g. True or False)
+
+    ${active_channel_config}=  Get Active Channel Config
+    ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    ${DHCPv4}=  Create Dictionary  DHCPEnabled=${status}
+
+    ${payload}=  Create Dictionary  DHCPv4=${DHCPv4}
+    Redfish.patch  ${REDFISH_NW_ETH_IFACE}${ethernet_interface}
+    ...  body=&{payload}  valid_status_codes=[${HTTP_NO_CONTENT}, ${HTTP_OK}]
+
+    Sleep  ${NETWORK_TIMEOUT}s
+    Wait For Host To Ping  ${OPENBMC_HOST}  ${NETWORK_TIMEOUT}
+
+
+Get IPv4 DHCP Enabled Status
+    [Documentation]  Return IPv4 DHCP enabled status from redfish URI.
+
+    ${active_channel_config}=  Get Active Channel Config
+    ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    ${resp}=  Redfish.Get Attribute  ${REDFISH_NW_ETH_IFACE}${ethernet_interface}  DHCPv4
+    ${status}=  Set Variable  ${resp['DHCPEnabled']}
+    Return From Keyword  ${status}
+
+
+Get DHCP IP Info
+    [Documentation]  Return DHCP IP address, gateway and subnetmask from redfish URI.
+
+    ${active_channel_config}=  Get Active Channel Config
+    ${ethernet_interface}=  Set Variable  ${active_channel_config['${CHANNEL_NUMBER}']['name']}
+    ${resp_list}=  Redfish.Get Attribute  ${REDFISH_NW_ETH_IFACE}${ethernet_interface}  IPv4Addresses
+    FOR  ${resp}  IN  @{resp_list}
+        Continue For Loop If  '${resp['AddressOrigin']}' != 'DHCP'
+        ${ip_addr}=  Set Variable  ${resp['Address']}
+        ${gateway}=  Set Variable  ${resp['Gateway']}
+        ${subnetmask}=  Set Variable  ${resp['SubnetMask']}
+        Return From Keyword  ${ip_addr}  ${gateway}  ${subnetmask}
+    END
\ No newline at end of file
