diff --git a/log_manager.cpp b/log_manager.cpp
index 0f4e57c..2920546 100644
--- a/log_manager.cpp
+++ b/log_manager.cpp
@@ -79,24 +79,6 @@
 void Manager::_commit(uint64_t transactionId, std::string&& errMsg,
                       Entry::Level errLvl)
 {
-    if (!Extensions::disableDefaultLogCaps())
-    {
-        if (errLvl < Entry::sevLowerLimit)
-        {
-            if (realErrors.size() >= ERROR_CAP)
-            {
-                erase(realErrors.front());
-            }
-        }
-        else
-        {
-            if (infoErrors.size() >= ERROR_INFO_CAP)
-            {
-                erase(infoErrors.front());
-            }
-        }
-    }
-
     constexpr const auto transactionIdVar = "TRANSACTION_ID";
     // Length of 'TRANSACTION_ID' string.
     constexpr const auto transactionIdVarSize = std::strlen(transactionIdVar);
@@ -199,7 +181,30 @@
 
     sd_journal_close(j);
 
-    // Create error Entry dbus object
+    createEntry(errMsg, errLvl, additionalData);
+}
+
+void Manager::createEntry(std::string errMsg, Entry::Level errLvl,
+                          std::vector<std::string> additionalData)
+{
+    if (!Extensions::disableDefaultLogCaps())
+    {
+        if (errLvl < Entry::sevLowerLimit)
+        {
+            if (realErrors.size() >= ERROR_CAP)
+            {
+                erase(realErrors.front());
+            }
+        }
+        else
+        {
+            if (infoErrors.size() >= ERROR_INFO_CAP)
+            {
+                erase(infoErrors.front());
+            }
+        }
+    }
+
     entryId++;
     if (errLvl >= Entry::sevLowerLimit)
     {
diff --git a/log_manager.hpp b/log_manager.hpp
index baf6812..15dd3af 100644
--- a/log_manager.hpp
+++ b/log_manager.hpp
@@ -167,6 +167,16 @@
      */
     void doExtensionLogCreate(const Entry& entry);
 
+    /** @brief Common wrapper for creating an Entry object
+     *
+     * @param[in] errMsg - The error exception message associated with the
+     *                     error log to be committed.
+     * @param[in] errLvl - level of the error
+     * @param[in] additionalData - The AdditionalData property for the error
+     */
+    void createEntry(std::string errMsg, Entry::Level errLvl,
+                     std::vector<std::string> additionalData);
+
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus::bus& busLog;
 
