diff --git a/redfish-core/lib/hypervisor_ethernet.hpp b/redfish-core/lib/hypervisor_ethernet.hpp
index 7eb2748..7b64c20 100644
--- a/redfish-core/lib/hypervisor_ethernet.hpp
+++ b/redfish-core/lib/hypervisor_ethernet.hpp
@@ -64,7 +64,8 @@
                                   "EthernetInterfaces"}};
                 // TODO: Add "SystemType" : "hypervisor"
             },
-            "xyz.openbmc_project.Settings", "/xyz/openbmc_project/network/vmi",
+            "xyz.openbmc_project.Settings",
+            "/xyz/openbmc_project/network/hypervisor",
             "org.freedesktop.DBus.Properties", "Get",
             "xyz.openbmc_project.Network.SystemConfiguration", "HostName");
     }
@@ -112,9 +113,8 @@
                     "EthernetInterfaceCollection";
                 asyncResp->res.jsonValue["@odata.id"] =
                     "/redfish/v1/Systems/hypervisor/EthernetInterfaces";
-                asyncResp->res.jsonValue["Name"] =
-                    "Virtual Management Ethernet "
-                    "Network Interface Collection";
+                asyncResp->res.jsonValue["Name"] = "Hypervisor Ethernet "
+                                                   "Interface Collection";
                 asyncResp->res.jsonValue["Description"] =
                     "Collection of Virtual Management "
                     "Interfaces for the hypervisor";
@@ -139,7 +139,7 @@
             "xyz.openbmc_project.ObjectMapper",
             "/xyz/openbmc_project/object_mapper",
             "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths",
-            "/xyz/openbmc_project/network/vmi", 0, interfaces);
+            "/xyz/openbmc_project/network/hypervisor", 0, interfaces);
     }
 };
 
@@ -154,7 +154,7 @@
         for (const auto& ifacePair : objpath.second)
         {
             if (objpath.first ==
-                "/xyz/openbmc_project/network/vmi/" + ethifaceId)
+                "/xyz/openbmc_project/network/hypervisor/" + ethifaceId)
             {
                 idFound = true;
                 if (ifacePair.first == "xyz.openbmc_project.Network.MACAddress")
@@ -173,7 +173,7 @@
                     }
                 }
             }
-            if (objpath.first == "/xyz/openbmc_project/network/vmi/" +
+            if (objpath.first == "/xyz/openbmc_project/network/hypervisor/" +
                                      ethifaceId + "/ipv4/addr0")
             {
                 if (ifacePair.first == "xyz.openbmc_project.Network.IP")
@@ -224,7 +224,7 @@
                     }
                 }
             }
-            if (objpath.first == "/xyz/openbmc_project/network/vmi")
+            if (objpath.first == "/xyz/openbmc_project/network/hypervisor")
             {
                 // System configuration shows up in the global namespace, so no
                 // need to check eth number
@@ -309,8 +309,8 @@
     BMCWEB_LOG_DEBUG << "Setting the Hypervisor IPaddress : " << ipv4Aaddress
                      << " on Iface: " << ethifaceId;
     std::string path =
-        "/xyz/openbmc_project/network/vmi/" + ethifaceId + "/ipv4/addr0";
-    const char* vmiObj = path.c_str();
+        "/xyz/openbmc_project/network/hypervisor/" + ethifaceId + "/ipv4/addr0";
+    const char* hypervisorObj = path.c_str();
 
     crow::connections::systemBus->async_method_call(
         [aResp](const boost::system::error_code ec) {
@@ -322,7 +322,7 @@
             }
             BMCWEB_LOG_DEBUG << "Hypervisor IPaddress is Set";
         },
-        "xyz.openbmc_project.Settings", vmiObj,
+        "xyz.openbmc_project.Settings", hypervisorObj,
         "org.freedesktop.DBus.Properties", "Set",
         "xyz.openbmc_project.Network.IP", "Address",
         std::variant<std::string>(ipv4Aaddress));
@@ -344,8 +344,8 @@
     BMCWEB_LOG_DEBUG << "Setting the Hypervisor subnet : " << subnet
                      << " on Iface: " << ethifaceId;
     std::string path =
-        "/xyz/openbmc_project/network/vmi/" + ethifaceId + "/ipv4/addr0";
-    const char* vmiObj = path.c_str();
+        "/xyz/openbmc_project/network/hypervisor/" + ethifaceId + "/ipv4/addr0";
+    const char* hypervisorObj = path.c_str();
 
     crow::connections::systemBus->async_method_call(
         [aResp](const boost::system::error_code ec) {
@@ -357,7 +357,7 @@
             }
             BMCWEB_LOG_DEBUG << "SubnetMask is Set";
         },
-        "xyz.openbmc_project.Settings", vmiObj,
+        "xyz.openbmc_project.Settings", hypervisorObj,
         "org.freedesktop.DBus.Properties", "Set",
         "xyz.openbmc_project.Network.IP", "PrefixLength",
         std::variant<uint8_t>(subnet));
@@ -389,7 +389,8 @@
             }
             BMCWEB_LOG_DEBUG << "Default Gateway is Set";
         },
-        "xyz.openbmc_project.Settings", "/xyz/openbmc_project/network/vmi",
+        "xyz.openbmc_project.Settings",
+        "/xyz/openbmc_project/network/hypervisor",
         "org.freedesktop.DBus.Properties", "Set",
         "xyz.openbmc_project.Network.SystemConfiguration", "DefaultGateway",
         std::variant<std::string>(gateway));
@@ -628,7 +629,8 @@
                     messages::internalError(asyncResp->res);
                 }
             },
-            "xyz.openbmc_project.Settings", "/xyz/openbmc_project/network/vmi",
+            "xyz.openbmc_project.Settings",
+            "/xyz/openbmc_project/network/hypervisor",
             "org.freedesktop.DBus.Properties", "Set",
             "xyz.openbmc_project.Network.SystemConfiguration", "HostName",
             std::variant<std::string>(hostName));
@@ -661,9 +663,9 @@
                 asyncResp->res.jsonValue["@odata.type"] =
                     "#EthernetInterface.v1_5_1.EthernetInterface";
                 asyncResp->res.jsonValue["Name"] =
-                    "Virtual Management Ethernet Interface";
+                    "Hypervisor Ethernet Interface";
                 asyncResp->res.jsonValue["Description"] =
-                    "Virtual Interface Management Network Interface";
+                    "Hypervisor's Virtual Management Ethernet Interface";
                 parseInterfaceData(asyncResp->res.jsonValue, ifaceId, ethData,
                                    ipv4Data);
             });
diff --git a/redfish-core/lib/systems.hpp b/redfish-core/lib/systems.hpp
index 170bf4d..c7501e6 100644
--- a/redfish-core/lib/systems.hpp
+++ b/redfish-core/lib/systems.hpp
@@ -1689,7 +1689,8 @@
                     {{"@odata.id", "/redfish/v1/Systems/hypervisor"}});
                 count = iface_array.size();
             },
-            "xyz.openbmc_project.Settings", "/xyz/openbmc_project/network/vmi",
+            "xyz.openbmc_project.Settings",
+            "/xyz/openbmc_project/network/hypervisor",
             "org.freedesktop.DBus.Properties", "Get",
             "xyz.openbmc_project.Network.SystemConfiguration", "HostName");
     }
