diff --git a/Makefile b/Makefile
index 937b393..23db1f5 100644
--- a/Makefile
+++ b/Makefile
@@ -8,8 +8,10 @@
 EXES += phosphor-read-eeprom
 
 phosphor-read-eeprom_OBJS  += readeeprom.o argument.o
+phosphor-read-eeprom_LDLIBS += mapper
 phosphor-read-eeprom_EXTRA_LIBS  += writefrudata
 libstrgfnhandler.so_EXTRA_LIBS  += writefrudata
+libwritefrudata.so_LDLIBS += mapper
 libwritefrudata.so_NEEDED  += libsystemd
 phosphor-read-eeprom_NEEDED  += libsystemd
 
@@ -29,7 +31,7 @@
 
 define __BUILD_EXE
 $1 : $$($1_OBJS) | $$(LIBS) $$(HOST_LIBS)
-		$$(LINK.cpp) -o $$@ $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(call __PKG_CONFIG,$($1_NEEDED),--libs)
+		$$(LINK.cpp) -o $$@ $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(addprefix -l,$($1_LDLIBS)) $(call __PKG_CONFIG,$($1_NEEDED),--libs)
 
 $(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
 
@@ -40,7 +42,7 @@
 
 define __BUILD_LIB
 $1 : $$($1_OBJS) | $$(addsuffix .so,$$(addprefix lib,$$($1_EXTRA_LIBS)))
-		$$(LINK.cpp) -fPIC -shared -Wl,-soname,$$@ -o $$(addsuffix .$($1_VERSION), $$@) $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(call __PKG_CONFIG,$($1_NEEDED),--libs)
+		$$(LINK.cpp) -fPIC -shared -Wl,-soname,$$@ -o $$(addsuffix .$($1_VERSION), $$@) $$^ $(call __EXTRA_LIB_RESOLV,$(addprefix -l,$($1_EXTRA_LIBS))) -L. $(addprefix -l,$($1_LDLIBS)) $(call __PKG_CONFIG,$($1_NEEDED),--libs)
 		ln -sf $$(addsuffix .$($1_VERSION), $$@) $1
 
 $(eval CXXFLAGS += $(call __PKG_CONFIG,$($1_NEEDED),--cflags))
diff --git a/writefrudata.C b/writefrudata.C
index 6791148..ee94d79 100644
--- a/writefrudata.C
+++ b/writefrudata.C
@@ -11,11 +11,11 @@
 #include <algorithm>
 #include <fstream>
 #include <sstream>
+#include <mapper.h>
 #include "frup.h"
 #include "fru-area.H"
 
 // OpenBMC System Manager dbus framework
-const char  *sys_bus_name      =  "org.openbmc.managers.System";
 const char  *sys_object_name   =  "/org/openbmc/managers/System";
 const char  *sys_intf_name     =  "org.openbmc.managers.System";
 
@@ -171,14 +171,23 @@
     int rc = 0;
 
     // What we need is BOARD_1, PRODUCT_1, CHASSIS_1 etc..
-    char *inv_bus_name, *inv_obj_path, *inv_intf_name;
+    char *inv_bus_name = NULL, *inv_obj_path, *inv_intf_name;
     char fru_area_name[16] = {0};
+    char *sys_bus_name = NULL;
     sprintf(fru_area_name,"%s%d",iv_name.c_str(), iv_fruid);
 
 #ifdef __IPMI_DEBUG__
     printf("Getting sd_bus for :[%s]\n",fru_area_name);
 #endif
 
+    rc = mapper_get_service(iv_bus_type, sys_object_name, &sys_bus_name);
+    if(rc < 0)
+    {
+        fprintf(stderr, "Failed to get system manager service:[%s]\n",
+                strerror(-rc));
+        goto exit;
+    }
+
     // We want to call a method "getObjectFromId" on System Bus that is
     // made available over  OpenBmc system services.
 
@@ -198,26 +207,35 @@
     }
     else
     {
-        // Method getObjectFromId returns 3 parameters and all are strings, namely
-        // bus_name , object_path and interface name for accessing that particular
-        // FRU over Inventory SDBUS manager. 'sss' here mentions that format.
-        rc = sd_bus_message_read(response, "(sss)", &inv_bus_name, &inv_obj_path, &inv_intf_name);
+        // Method getObjectFromId returns 2 parameters and all are strings, namely
+        // object_path and interface name for accessing that particular
+        // FRU over Inventory SDBUS manager. 'ss' here mentions that format.
+        rc = sd_bus_message_read(response, "(ss)", &inv_obj_path, &inv_intf_name);
         if(rc < 0)
         {
             fprintf(stderr, "Failed to parse response message:[%s]\n", strerror(-rc));
         }
         else
         {
+            rc = mapper_get_service(iv_bus_type, inv_obj_path, &inv_bus_name);
+            if(rc < 0)
+            {
+                fprintf(stderr, "Failed to get inventory item service:[%s]\n",
+                        strerror(-rc));
+                goto exit;
+            }
             // Update the paths in the area object
             update_dbus_paths(inv_bus_name, inv_obj_path, inv_intf_name);
         }
     }
 
+exit:
 #ifdef __IPMI_DEBUG__
             printf("fru_area=[%s], inv_bus_name=[%s], inv_obj_path=[%s], inv_intf_name=[%s]\n",
                     fru_area_name, inv_bus_name, inv_obj_path, inv_intf_name);
 #endif
 
+    free(sys_bus_name);
     sd_bus_error_free(&bus_error);
     sd_bus_message_unref(response);
 
@@ -578,11 +596,20 @@
     sd_bus_message *response = NULL;
     int rc = 0;
     char *areas = NULL;
+    char *sys_bus_name = NULL;
 
 #ifdef __IPMI_DEBUG__
     printf("Getting fru areas defined in Skeleton for :[%d]\n", fruid);
 #endif
 
+    rc = mapper_get_service(bus_type, sys_object_name, &sys_bus_name);
+    if(rc < 0)
+    {
+        fprintf(stderr, "Failed to get system manager service:[%s]\n",
+                strerror(-rc));
+        goto exit;
+    }
+
     // We want to call a method "getFRUArea" on System Bus that is
     // made available over OpenBmc system services.
     rc = sd_bus_call_method(bus_type,                   // On the System Bus
@@ -626,6 +653,9 @@
         }
     }
 
+exit:
+
+    free(sys_bus_name);
     sd_bus_error_free(&bus_error);
     sd_bus_message_unref(response);
 
