diff --git a/libpfr/src/pfr.cpp b/libpfr/src/pfr.cpp
index b52ba22..36f0113 100644
--- a/libpfr/src/pfr.cpp
+++ b/libpfr/src/pfr.cpp
@@ -99,9 +99,11 @@
             {
                 return;
             }
-
+            if (resp[0].second.begin() == resp[0].second.end())
+                return;
             const std::string& objPath = resp[0].first;
             const std::string& serviceName = resp[0].second.begin()->first;
+
             const std::string match = "Baseboard/PFR";
             if (boost::ends_with(objPath, match))
             {
diff --git a/service/src/pfr_mgr.cpp b/service/src/pfr_mgr.cpp
index 5245075..e2fdbfd 100644
--- a/service/src/pfr_mgr.cpp
+++ b/service/src/pfr_mgr.cpp
@@ -37,24 +37,29 @@
     std::string objPath = "/xyz/openbmc_project/software/" + path;
     versionIface =
         server.add_interface(objPath, "xyz.openbmc_project.Software.Version");
-    versionIface->register_property("Purpose", purpose);
-    versionIface->register_property(
-        versionStr, version,
-        // Override set
-        [this](const std::string& req, std::string& propertyValue) {
-            if (internalSet)
-            {
-                if (req != propertyValue)
-                {
-                    version = req;
-                    propertyValue = req;
-                    return 1;
-                }
-            }
-            return 0;
-        });
 
-    versionIface->initialize();
+    if (versionIface != nullptr)
+    {
+
+        versionIface->register_property("Purpose", purpose);
+        versionIface->register_property(
+            versionStr, version,
+            // Override set
+            [this](const std::string& req, std::string& propertyValue) {
+                if (internalSet)
+                {
+                    if (req != propertyValue)
+                    {
+                        version = req;
+                        propertyValue = req;
+                        return 1;
+                    }
+                }
+                return 0;
+            });
+
+        versionIface->initialize();
+    }
 
     std::string activation =
         "xyz.openbmc_project.Software.Activation.Activations.StandbySpare";
@@ -86,10 +91,15 @@
         "xyz.openbmc_project.Software.Activation.RequestedActivations.None";
     auto activationIface = server.add_interface(
         objPath, "xyz.openbmc_project.Software.Activation");
-    activationIface->register_property("Activation", activation);
-    activationIface->register_property("RequestedActivation", reqActNone);
 
-    activationIface->initialize();
+    if (activationIface != nullptr)
+    {
+
+        activationIface->register_property("Activation", activation);
+        activationIface->register_property("RequestedActivation", reqActNone);
+
+        activationIface->initialize();
+    }
 
     // All the components exposed under PFR.Manager are updateable.
     // Lets add objPath endpoints to 'updatable' association
