diff --git a/dump-extensions.hpp b/dump-extensions.hpp
new file mode 100644
index 0000000..ad5b688
--- /dev/null
+++ b/dump-extensions.hpp
@@ -0,0 +1,21 @@
+#include "dump_manager.hpp"
+
+#include <memory>
+#include <vector>
+
+namespace phosphor
+{
+namespace dump
+{
+
+using DumpManagerList = std::vector<std::unique_ptr<phosphor::dump::Manager>>;
+/**
+ * @brief load the dump extensions
+ *
+ * @param[in] bus - Bus to attach to
+ * @param[out] dumpMgrList - list dump manager objects.
+ *
+ */
+void loadExtensions(sdbusplus::bus::bus& bus, DumpManagerList& dumpMgrList);
+} // namespace dump
+} // namespace phosphor
diff --git a/dump-extensions/default/default.cpp b/dump-extensions/default/default.cpp
new file mode 100644
index 0000000..4c56897
--- /dev/null
+++ b/dump-extensions/default/default.cpp
@@ -0,0 +1,11 @@
+#include "dump-extensions.hpp"
+
+namespace phosphor
+{
+namespace dump
+{
+void loadExtensions(sdbusplus::bus::bus&, DumpManagerList&)
+{
+}
+} // namespace dump
+} // namespace phosphor
diff --git a/dump-extensions/default/meson.build b/dump-extensions/default/meson.build
new file mode 100644
index 0000000..dc86093
--- /dev/null
+++ b/dump-extensions/default/meson.build
@@ -0,0 +1,5 @@
+# SPDX-License-Identifier: Apache-2.0
+
+phosphor_dump_manager_sources += [
+        'dump-extensions/default/default.cpp',
+    ]
diff --git a/dump-extensions/meson.build b/dump-extensions/meson.build
new file mode 100644
index 0000000..8f58f2c
--- /dev/null
+++ b/dump-extensions/meson.build
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+
+if get_option('openpower-dumps-extension').enabled()
+    subdir('openpower-dumps')
+else
+    subdir('default')
+endif
diff --git a/dump-extensions/openpower-dumps/dump-extensions.cpp b/dump-extensions/openpower-dumps/dump-extensions.cpp
new file mode 100644
index 0000000..6a707fa
--- /dev/null
+++ b/dump-extensions/openpower-dumps/dump-extensions.cpp
@@ -0,0 +1,19 @@
+#include "config.h"
+
+#include "dump-extensions.hpp"
+
+#include "dump_manager_system.hpp"
+
+namespace phosphor
+{
+namespace dump
+{
+
+void loadExtensions(sdbusplus::bus::bus& bus, DumpManagerList& dumpList)
+{
+
+    dumpList.push_back(std::make_unique<phosphor::dump::system::Manager>(
+        bus, SYSTEM_DUMP_OBJPATH, SYSTEM_DUMP_OBJ_ENTRY));
+}
+} // namespace dump
+} // namespace phosphor
diff --git a/dump_manager_system.cpp b/dump-extensions/openpower-dumps/dump_manager_system.cpp
similarity index 100%
rename from dump_manager_system.cpp
rename to dump-extensions/openpower-dumps/dump_manager_system.cpp
diff --git a/dump_manager_system.hpp b/dump-extensions/openpower-dumps/dump_manager_system.hpp
similarity index 100%
rename from dump_manager_system.hpp
rename to dump-extensions/openpower-dumps/dump_manager_system.hpp
diff --git a/dump-extensions/openpower-dumps/meson.build b/dump-extensions/openpower-dumps/meson.build
new file mode 100644
index 0000000..308e167
--- /dev/null
+++ b/dump-extensions/openpower-dumps/meson.build
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: Apache-2.0
+
+phosphor_dump_manager_sources += [
+        'dump-extensions/openpower-dumps/dump-extensions.cpp',
+        'dump-extensions/openpower-dumps/dump_manager_system.cpp',
+        'dump-extensions/openpower-dumps/system_dump_entry.cpp'
+    ]
diff --git a/system_dump_entry.cpp b/dump-extensions/openpower-dumps/system_dump_entry.cpp
similarity index 100%
rename from system_dump_entry.cpp
rename to dump-extensions/openpower-dumps/system_dump_entry.cpp
diff --git a/system_dump_entry.hpp b/dump-extensions/openpower-dumps/system_dump_entry.hpp
similarity index 100%
rename from system_dump_entry.hpp
rename to dump-extensions/openpower-dumps/system_dump_entry.hpp
diff --git a/dump_manager_main.cpp b/dump_manager_main.cpp
index 4ac89af..e38a521 100644
--- a/dump_manager_main.cpp
+++ b/dump_manager_main.cpp
@@ -1,15 +1,17 @@
 #include "config.h"
 
+#include "dump-extensions.hpp"
 #include "dump_internal.hpp"
 #include "dump_manager.hpp"
 #include "dump_manager_bmc.hpp"
-#include "dump_manager_system.hpp"
 #include "elog_watch.hpp"
 #include "watch.hpp"
 #include "xyz/openbmc_project/Common/error.hpp"
 
+#include <memory>
 #include <phosphor-logging/elog-errors.hpp>
 #include <sdbusplus/bus.hpp>
+#include <vector>
 
 int main()
 {
@@ -59,14 +61,24 @@
 
     try
     {
-        phosphor::dump::bmc::Manager bmcDumpMgr(
-            bus, eventP, BMC_DUMP_OBJPATH, BMC_DUMP_OBJ_ENTRY, BMC_DUMP_PATH);
-        // Restore dump d-bus objects.
-        bmcDumpMgr.restore();
-        phosphor::dump::bmc::internal::Manager mgr(bus, bmcDumpMgr,
+        phosphor::dump::DumpManagerList dumpMgrList{};
+        std::unique_ptr<phosphor::dump::bmc::Manager> bmcDumpMgr =
+            std::make_unique<phosphor::dump::bmc::Manager>(
+                bus, eventP, BMC_DUMP_OBJPATH, BMC_DUMP_OBJ_ENTRY,
+                BMC_DUMP_PATH);
+
+        phosphor::dump::bmc::internal::Manager mgr(bus, *bmcDumpMgr,
                                                    OBJ_INTERNAL);
-        phosphor::dump::system::Manager systemDumpMgr(bus, SYSTEM_DUMP_OBJPATH,
-                                                      SYSTEM_DUMP_OBJ_ENTRY);
+        dumpMgrList.push_back(std::move(bmcDumpMgr));
+
+        phosphor::dump::loadExtensions(bus, dumpMgrList);
+
+        // Restore dbus objects of all dumps
+        for (auto& dmpMgr : dumpMgrList)
+        {
+            dmpMgr->restore();
+        }
+
         phosphor::dump::elog::Watch eWatch(bus, mgr);
         bus.attach_event(eventP.get(), SD_EVENT_PRIORITY_NORMAL);
 
diff --git a/meson.build b/meson.build
index 8492d5d..e896d61 100644
--- a/meson.build
+++ b/meson.build
@@ -103,7 +103,6 @@
         'dump_entry.cpp',
         'dump_manager.cpp',
         'dump_manager_bmc.cpp',
-        'dump_manager_system.cpp',
         'dump_manager_main.cpp',
         'dump_serialize.cpp',
         'elog_watch.cpp',
@@ -113,7 +112,6 @@
         'watch.cpp',
         'bmc_dump_entry.cpp',
         'dump_utils.cpp',
-        'system_dump_entry.cpp',
         'dump_offload.cpp'
     ]
 
@@ -130,6 +128,9 @@
 # for phosphor_dump_manager
 subdir('offload-extensions')
 
+#pick any architecture specific dumps
+subdir('dump-extensions')
+
 phosphor_dump_monitor_sources = [
         'core_manager.cpp',
         'core_manager_main.cpp',
diff --git a/meson_options.txt b/meson_options.txt
index 21517ca..48e7038 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -86,3 +86,8 @@
 option('host-dump-offload-transport', type : 'string',
         value : 'default',
         description : 'To specify the host dump transport protocol')
+
+option('openpower-dumps-extension', type: 'feature',
+        value : 'disabled',
+        description : 'Enable Open Power specific dumps'
+      )
