diff --git a/configure.ac b/configure.ac
index 6c88d68..cf833f6 100644
--- a/configure.ac
+++ b/configure.ac
@@ -27,6 +27,8 @@
           [The xyz log manager DBus object path])
 AC_DEFINE(LOGGING_IFACE, "xyz.openbmc_project.Logging.Entry",
           [The xyz log entry interface])
+AC_DEFINE(LOGGING_BUSNAME, "xyz.openbmc_project.Logging",
+          [The xyz logging busname])
 
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
diff --git a/manager.cpp b/manager.cpp
index 73d77ed..773ef08 100644
--- a/manager.cpp
+++ b/manager.cpp
@@ -36,7 +36,38 @@
                 std::bind(std::mem_fn(&Manager::interfaceRemoved),
                           this, std::placeholders::_1))
 {
-    //TODO: createAll();
+    createAll();
+}
+
+void Manager::createAll()
+{
+    auto objects = getManagedObjects(
+            bus, LOGGING_BUSNAME, LOGGING_PATH);
+
+    for (const auto& object : objects)
+    {
+        const auto& interfaces = object.second;
+
+        auto propertyMap = std::find_if(
+                interfaces.begin(),
+                interfaces.end(),
+                [](const auto& i)
+                {
+                    return i.first == LOGGING_IFACE;
+                });
+
+        if (propertyMap != interfaces.end())
+        {
+            create(object.first, propertyMap->second);
+        }
+    }
+}
+
+void Manager::create(
+        const std::string& objectPath,
+        const DbusPropertyMap& properties)
+{
+    //TODO
 }
 
 void Manager::interfaceAdded(sdbusplus::message::message& msg)
@@ -58,7 +89,7 @@
 
     if (propertyMap != interfaces.end())
     {
-        //TODO: create(path, propertyMap->second);
+        create(path, propertyMap->second);
     }
 }
 
diff --git a/manager.hpp b/manager.hpp
index f779939..53441e6 100644
--- a/manager.hpp
+++ b/manager.hpp
@@ -63,6 +63,23 @@
         void interfaceRemoved(sdbusplus::message::message& msg);
 
         /**
+         * Creates the IBM interfaces for all existing error log
+         * entries.
+         */
+        void createAll();
+
+        /**
+         * Creates the IBM interface(s) for a single error log.
+         *
+         * @param[in] objectPath - object path of the error log
+         * @param[in] properties - the xyz.openbmc_project.Logging.Entry
+         *                         properties
+         */
+        void create(
+                const std::string& objectPath,
+                const DbusPropertyMap& properties);
+
+        /**
          * Returns the entry ID for a log
          *
          * @param[in] objectPath - the object path of the log
