diff --git a/log_manager.cpp b/log_manager.cpp
index 0992160..1b0cf3f 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -195,9 +195,10 @@
     createEntry(errMsg, errLvl, additionalData);
 }
 
-void Manager::createEntry(std::string errMsg, Entry::Level errLvl,
-                          std::vector<std::string> additionalData,
-                          const FFDCEntries& ffdc)
+auto Manager::createEntry(
+    std::string errMsg, Entry::Level errLvl,
+    std::vector<std::string> additionalData,
+    const FFDCEntries& ffdc) -> sdbusplus::message::object_path
 {
     if (!Extensions::disableDefaultLogCaps())
     {
@@ -254,6 +255,8 @@
     doExtensionLogCreate(*entries.find(entryId)->second, ffdc);
 
     // Note: No need to close the file descriptors in the FFDC.
+
+    return objPath;
 }
 
 bool Manager::isQuiesceOnErrorEnabled()
@@ -691,15 +694,15 @@
     return version.value_or("");
 }
 
-void Manager::create(const std::string& message, Entry::Level severity,
+auto Manager::create(const std::string& message, Entry::Level severity,
                      const std::map<std::string, std::string>& additionalData,
-                     const FFDCEntries& ffdc)
+                     const FFDCEntries& ffdc) -> sdbusplus::message::object_path
 {
     // Convert the map into a vector of "key=value" strings
     std::vector<std::string> ad;
     metadata::associations::combine(additionalData, ad);
 
-    createEntry(message, severity, ad, ffdc);
+    return createEntry(message, severity, ad, ffdc);
 }
 
 } // namespace internal
diff --git a/log_manager.hpp b/log_manager.hpp
index 436f572..cd5ae1d 100644
--- a/log_manager.hpp
+++ b/log_manager.hpp
@@ -182,9 +182,10 @@
      *                   Failure Data Capture). These will be passed to any
      *                   event logging extensions.
      */
-    void create(const std::string& message, Severity severity,
+    auto create(const std::string& message, Severity severity,
                 const std::map<std::string, std::string>& additionalData,
-                const FFDCEntries& ffdc = FFDCEntries{});
+                const FFDCEntries& ffdc = FFDCEntries{})
+        -> sdbusplus::message::object_path;
 
     /** @brief Common wrapper for creating an Entry object
      *
@@ -262,9 +263,10 @@
      * @param[in] ffdc - A vector of FFDC file info. Defaults to an empty
      * vector.
      */
-    void createEntry(std::string errMsg, Entry::Level errLvl,
+    auto createEntry(std::string errMsg, Entry::Level errLvl,
                      std::vector<std::string> additionalData,
-                     const FFDCEntries& ffdc = FFDCEntries{});
+                     const FFDCEntries& ffdc = FFDCEntries{})
+        -> sdbusplus::message::object_path;
 
     /** @brief Notified on entry property changes
      *
@@ -362,10 +364,11 @@
      * @param[in] severity - Level of the error
      * @param[in] additionalData - The AdditionalData property for the error
      */
-    void create(std::string message, Severity severity,
-                std::map<std::string, std::string> additionalData) override
+    auto create(std::string message, Severity severity,
+                std::map<std::string, std::string> additionalData)
+        -> sdbusplus::message::object_path override
     {
-        manager.create(message, severity, additionalData);
+        return manager.create(message, severity, additionalData);
     }
 
     /** @brief D-Bus method call implementation to create an event log with FFDC
