diff --git a/openpower/ext_interfaces/test_vmi.robot b/openpower/ext_interfaces/test_vmi.robot
index 2f33c23..636f8be 100644
--- a/openpower/ext_interfaces/test_vmi.robot
+++ b/openpower/ext_interfaces/test_vmi.robot
@@ -39,25 +39,26 @@
 
 Verify All VMI EthernetInterfaces
     [Documentation]  Verify all VMI ethernet interfaces.
-    [Tags]  Verify_All_VMI_EthernetINterfaces
+    [Tags]  Verify_All_VMI_EthernetInterfaces
 
     Verify VMI EthernetInterfaces
 
 
 Verify Existing VMI Network Interface Details
     [Documentation]  Verify existing VMI network interface details.
-    [Tags]  Verify_VMI_Network_Interface_Details
+    [Tags]  Verify_Existing_VMI_Network_Interface_Details
 
     ${vmi_ip}=  Get VMI Network Interface Details
     ${origin}=  Set Variable If  ${vmi_ip["DHCPv4"]} == ${False}  Static  DHCP
-
     Should Not Be Equal  ${vmi_ip["DHCPv4"]}  ${vmi_ip["IPv4StaticAddresses"]}
-    Should Be Equal As Strings  ${origin}  ${vmi_ip["IPv4_AddressOrigin"]}
-    Should Be Equal As Strings  ${vmi_ip["Id"]}  intf0
+    Should Be Equal As Strings  ${vmi_ip["Id"]}  eth0
     Should Be Equal As Strings  ${vmi_ip["Description"]}
-    ...  Ethernet Interface for Virtual Management Interface
-    Should Be Equal As Strings  ${vmi_ip["Name"]}  Virtual Management Interface
+    ...  Hypervisor's Virtual Management Ethernet Interface
+    Should Be Equal As Strings  ${vmi_ip["Name"]}  Hypervisor Ethernet Interface
     Should Be True  ${vmi_ip["InterfaceEnabled"]}
+    Run Keyword If   ${vmi_ip["IPv4StaticAddresses"]} != @{empty}
+    ...  Verify VMI Network Interface Details  ${vmi_ip["IPv4_Address"]}
+    ...  ${origin}  ${vmi_ip["IPv4_Gateway"]}  ${vmi_ip["IPv4_SubnetMask"]}
 
 
 Delete Existing Static VMI IP Address
@@ -67,9 +68,7 @@
     ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
     Run Keyword If  ${curr_origin} == ${True}  Set VMI IPv4 Origin  ${False}  ${HTTP_ACCEPTED}
 
-    Delete VMI IPv4 Address  IPv4StaticAddresses  valid_status_code=${HTTP_ACCEPTED}
-    ${default}=  Set Variable  0.0.0.0
-    Verify VMI Network Interface Details  ${default}  Static  ${default}  ${default}
+    Delete VMI IPv4 Address
 
 
 Verify User Cannot Delete ReadOnly Property IPv4Addresses
@@ -77,7 +76,8 @@
     [Tags]  Verify_User_Cannot_Delete_ReadOnly_Property_IPv4Addresses
 
     ${curr_origin}=  Get Immediate Child Parameter From VMI Network Interface  DHCPEnabled
-    Run Keyword If  ${curr_origin} == ${False}  Set VMI IPv4 Origin  ${True}  ${HTTP_ACCEPTED}
+    Run Keyword If  ${curr_origin} == ${True}  Set VMI IPv4 Origin  ${False}  ${HTTP_ACCEPTED}
+    Set Static IPv4 Address To VMI And Verify  ${test_ipv4}  ${test_gateway}  ${test_netmask}
     Delete VMI IPv4 Address  IPv4Addresses  valid_status_code=${HTTP_BAD_REQUEST}
 
 
@@ -165,6 +165,7 @@
     Redfish.Delete  ${session_info["location"]}
 
     # Create a new Redfish session
+    Redfish.Login
     Redfish Power Off
     Redfish Power On
 
@@ -419,17 +420,22 @@
 
     ${ip_resp}=  Evaluate  json.loads('''${resp.text}''')  json
 
-    ${static_exists}=  Run Keyword And Ignore Error
-    ...  Set Variable  ${ip_resp["IPv4StaticAddresses"][0]["Address"]}
-    ${static_exists}=  Set Variable If  '${static_exists[0]}' == 'PASS'  ${True}  ${False}
+    ${ip_exists}=  Set Variable If  ${ip_resp["IPv4Addresses"]} == @{empty}  ${False}  ${True}
+    ${static_exists}=  Set Variable If  ${ip_resp["IPv4StaticAddresses"]} == @{empty}  ${False}  ${True}
 
-    ${vmi_ip}=  Create Dictionary  DHCPv4=${${ip_resp["DHCPv4"]["DHCPEnabled"]}}  Id=${ip_resp["Id"]}
+    ${vmi_ip}=  Run Keyword If   ${ip_exists} == ${True}
+    ...  Create Dictionary  DHCPv4=${${ip_resp["DHCPv4"]["DHCPEnabled"]}}  Id=${ip_resp["Id"]}
     ...  Description=${ip_resp["Description"]}  IPv4_Address=${ip_resp["IPv4Addresses"][0]["Address"]}
     ...  IPv4_AddressOrigin=${ip_resp["IPv4Addresses"][0]["AddressOrigin"]}  Name=${ip_resp["Name"]}
     ...  IPv4_Gateway=${ip_resp["IPv4Addresses"][0]["Gateway"]}
     ...  InterfaceEnabled=${${ip_resp["InterfaceEnabled"]}}
     ...  IPv4_SubnetMask=${ip_resp["IPv4Addresses"][0]["SubnetMask"]}
     ...  IPv4StaticAddresses=${${static_exists}}
+    ...  ELSE
+    ...  Create Dictionary  DHCPv4=${${ip_resp["DHCPv4"]["DHCPEnabled"]}}  Id=${ip_resp["Id"]}
+    ...  Description=${ip_resp["Description"]}  IPv4StaticAddresses=${ip_resp["IPv4StaticAddresses"]}
+    ...  IPv4_Address=${ip_resp["IPv4Addresses"]}  Name=${ip_resp["Name"]}
+    ...  InterfaceEnabled=${${ip_resp["InterfaceEnabled"]}}
 
     [Return]  &{vmi_ip}
 
@@ -467,12 +473,12 @@
     ${resp}=  Evaluate  json.loads('''${resp.text}''')  json
     ${interfaces}=  Set Variable  ${resp["Members"]}
 
-    Should Be Equal As Strings  ${interfaces[0]}[@odata.id]
-    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/eth0
-    Should Be Equal As Strings  ${interfaces[1]}[@odata.id]
-    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/eth1
-
-    Should Be Equal  ${resp["Members@odata.count"]}  ${2}
+    ${number_of_interfaces}=  Get Length  ${interfaces}
+    FOR  ${i}  IN RANGE  ${number_of_interfaces}
+        Should Be Equal As Strings  ${interfaces[${i}]}[@odata.id]
+        ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/eth${i}
+    END
+    Should Be Equal  ${resp["Members@odata.count"]}  ${number_of_interfaces}
 
 
 Verify VMI Network Interface Details
@@ -537,9 +543,8 @@
     ...  body=${data}  valid_status_codes=[${valid_status_code}]
 
     Return From Keyword If  ${valid_status_code} != ${HTTP_ACCEPTED}
-    ${resp}=  Redfish.Get
-    ...  /redfish/v1/Systems/hypervisor/EthernetInterfaces/${active_channel_config['${CHANNEL_NUMBER}']['name']}
-    Should Be Empty  ${resp.dict["IPv4StaticAddresses"]}
+    ${vmi_ip}=  Get VMI Network Interface Details
+    Should Be Empty  ${vmi_ip["IPv4_Address"]}
 
 
 Set VMI IPv4 Origin
