diff --git a/vpd-manager/manager.cpp b/vpd-manager/manager.cpp
index 37a8055..61a392a 100644
--- a/vpd-manager/manager.cpp
+++ b/vpd-manager/manager.cpp
@@ -65,9 +65,16 @@
             itemFRUS.value().get_ref<const nlohmann::json::array_t&>();
         for (const auto& itemEEPROM : groupEEPROM)
         {
+            bool isMotherboard = false;
+            if (itemEEPROM["extraInterfaces"].find(
+                    "xyz.openbmc_project.Inventory.Item.Board.Motherboard") !=
+                itemEEPROM["extraInterfaces"].end())
+            {
+                isMotherboard = true;
+            }
             frus.emplace(itemEEPROM["inventoryPath"]
                              .get_ref<const nlohmann::json::string_t&>(),
-                         itemFRUS.key());
+                         std::make_pair(itemFRUS.key(), isMotherboard));
         }
     }
 }
@@ -83,12 +90,26 @@
             throw std::runtime_error("Inventory path not found");
         }
 
-        inventory::Path vpdFilePath = frus.find(path)->second;
+        inventory::Path vpdFilePath = frus.find(path)->second.first;
 
         // instantiate editor class to update the data
         EditorImpl edit(vpdFilePath, jsonFile, recordName, keyword);
         edit.updateKeyword(value);
 
+        // if it is a motehrboard FRU need to check for location expansion
+        if (frus.find(path)->second.second)
+        {
+            if (recordName == "VCEN" && (keyword == "FC" || keyword == "SE"))
+            {
+                edit.expandLocationCode("fcs");
+            }
+            else if (recordName == "VSYS" &&
+                     (keyword == "TM" || keyword == "SE"))
+            {
+                edit.expandLocationCode("mts");
+            }
+        }
+
         return;
     }
     catch (const std::exception& e)
