diff --git a/network_manager.cpp b/network_manager.cpp
index a718808..c55c9bb 100644
--- a/network_manager.cpp
+++ b/network_manager.cpp
@@ -13,6 +13,7 @@
 
 #include <algorithm>
 #include <bitset>
+#include <filesystem>
 #include <fstream>
 #include <map>
 #include <phosphor-logging/elog-errors.hpp>
@@ -23,6 +24,7 @@
 constexpr char SYSTEMD_BUSNAME[] = "org.freedesktop.systemd1";
 constexpr char SYSTEMD_PATH[] = "/org/freedesktop/systemd1";
 constexpr char SYSTEMD_INTERFACE[] = "org.freedesktop.systemd1.Manager";
+constexpr auto FirstBootFile = "/var/lib/network/firstBoot_";
 
 namespace phosphor
 {
@@ -208,6 +210,39 @@
     restartTimers();
 }
 
+#if SYNC_MAC_FROM_INVENTORY
+void Manager::setFistBootMACOnInterface(
+    const std::pair<std::string, std::string>& inventoryEthPair)
+{
+    for (const auto& interface : interfaces)
+    {
+        if (interface.first == inventoryEthPair.first)
+        {
+            auto returnMAC =
+                interface.second->mACAddress(inventoryEthPair.second);
+            if (returnMAC == inventoryEthPair.second)
+            {
+                log<level::INFO>("Set the MAC on "),
+                    entry("interface : ", interface.first.c_str()),
+                    entry("MAC : ", inventoryEthPair.second.c_str());
+                std::error_code ec;
+                if (std::filesystem::is_directory("/var/lib/network", ec))
+                {
+                    std::ofstream persistentFile(FirstBootFile +
+                                                 interface.first);
+                }
+                break;
+            }
+            else
+            {
+                log<level::INFO>("MAC is Not Set on ethernet Interface");
+            }
+        }
+    }
+}
+
+#endif
+
 void Manager::restartTimers()
 {
     using namespace std::chrono;
