diff --git a/Makefile.am b/Makefile.am
index bdd02d4..1c8c9ae 100755
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,8 +9,7 @@
 	dump_utils.hpp \
 	watch.hpp \
 	elog_watch.hpp \
-	dump_serialize.hpp \
-	pldm_interface.hpp
+	dump_serialize.hpp
 
 nobase_nodist_include_HEADERS = \
 	xyz/openbmc_project/Dump/Internal/Create/server.hpp
@@ -28,7 +27,6 @@
 	xyz/openbmc_project/Dump/Internal/Create/server.cpp \
 	elog_watch.cpp \
 	dump_serialize.cpp \
-	pldm_interface.cpp \
 	dump_utils.cpp \
         system_dump_entry.cpp
 
@@ -40,8 +38,7 @@
 phosphor_dump_manager_CXXFLAGS = \
 	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
 	$(SDBUSPLUS_CFLAGS) \
-	$(PHOSPHOR_LOGGING_CFLAGS) \
-	$(LIBPLDM_CFLAGS)
+	$(PHOSPHOR_LOGGING_CFLAGS)
 
 phosphor_dump_monitor_CXXFLAGS = \
 	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
@@ -51,14 +48,15 @@
 	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
 	$(SDBUSPLUS_LIBS) \
 	$(PHOSPHOR_LOGGING_LIBS) \
-	-lstdc++fs \
-	$(LIBPLDM_LIBS)
+	-lstdc++fs
 
 phosphor_dump_monitor_LDADD = \
 	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
 	$(PHOSPHOR_LOGGING_LIBS) \
 	-lstdc++fs
 
+include offload-extensions/extensions.mk
+
 # Be sure to build needed files before compiling
 BUILT_SOURCES = \
 	xyz/openbmc_project/Dump/Internal/Create/server.cpp \
diff --git a/configure.ac b/configure.ac
index 5a3eb3a..6051460 100755
--- a/configure.ac
+++ b/configure.ac
@@ -12,12 +12,23 @@
 AC_PROG_MKDIR_P
 AC_CHECK_PROG([DIRNAME], dirname, dirname)
 
+AC_ARG_WITH([host-dump-offload-transport],
+	[
+AS_HELP_STRING([--with-host-dump-offload-transport],
+		[To specify the host dump transport protocol])])
+
 # Check for libraries
 PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221])
 PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces])
 PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus])
 PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging])
-PKG_CHECK_MODULES([LIBPLDM], [libpldm])
+
+AM_CONDITIONAL([DEFAULT_HOST_OFFLOAD], [test "x$with_host_dump_offload_transport" == "x"])
+AM_CONDITIONAL([ENABLE_PLDM_OFFLOAD], [test "$with_host_dump_offload_transport" == "pldm"])
+
+AS_IF([test "$with_host_dump_offload_transport" == "pldm"],
+    [AX_PKG_CHECK_MODULES([LIBPLDM], [libpldm])]
+)
 
 # Check for sdbus++
 AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++])
diff --git a/offload-extensions.hpp b/offload-extensions.hpp
new file mode 100644
index 0000000..3a1ab9c
--- /dev/null
+++ b/offload-extensions.hpp
@@ -0,0 +1,17 @@
+namespace phosphor
+{
+namespace dump
+{
+namespace host
+{
+
+/**
+ * @brief Initiate offload of the dump with provided id
+ *
+ * @param[in] id - The Dump Source ID.
+ *
+ */
+void requestOffload(uint32_t id);
+} // namespace host
+} // namespace dump
+} // namespace phosphor
diff --git a/offload-extensions/default/default.cpp b/offload-extensions/default/default.cpp
new file mode 100644
index 0000000..6a14fdc
--- /dev/null
+++ b/offload-extensions/default/default.cpp
@@ -0,0 +1,17 @@
+#include <cstdint>
+#include <stdexcept>
+
+namespace phosphor
+{
+namespace dump
+{
+namespace host
+{
+void requestOffload(uint32_t id)
+{
+    throw std::runtime_error("Hostdump offload method not specified");
+}
+
+} // namespace host
+} // namespace dump
+} // namespace phosphor
diff --git a/offload-extensions/default/default.mk b/offload-extensions/default/default.mk
new file mode 100644
index 0000000..5774fd5
--- /dev/null
+++ b/offload-extensions/default/default.mk
@@ -0,0 +1,2 @@
+phosphor_dump_manager_SOURCES += \
+       offload-extensions/default/default.cpp
diff --git a/offload-extensions/extensions.mk b/offload-extensions/extensions.mk
new file mode 100644
index 0000000..b663f62
--- /dev/null
+++ b/offload-extensions/extensions.mk
@@ -0,0 +1,7 @@
+if ENABLE_PLDM_OFFLOAD
+include offload-extensions/pldm/pldm.mk
+endif
+
+if DEFAULT_HOST_OFFLOAD
+include offload-extensions/default/default.mk
+endif
diff --git a/offload-extensions/pldm/pldm.mk b/offload-extensions/pldm/pldm.mk
new file mode 100644
index 0000000..c136fbb
--- /dev/null
+++ b/offload-extensions/pldm/pldm.mk
@@ -0,0 +1,12 @@
+noinst_HEADERS += \
+        offload-extensions/pldm/pldm_interface.hpp
+
+phosphor_dump_manager_LDADD += \
+	$(LIBPLDM_LIBS)
+
+phosphor_dump_manager_CXXFLAGS += \
+        $(LIBPLDM_CFLAGS)
+
+phosphor_dump_manager_SOURCES += \
+       offload-extensions/pldm/pldm_interface.cpp
+
diff --git a/pldm_interface.cpp b/offload-extensions/pldm/pldm_interface.cpp
similarity index 94%
rename from pldm_interface.cpp
rename to offload-extensions/pldm/pldm_interface.cpp
index 57d7a2c..dfff103 100644
--- a/pldm_interface.cpp
+++ b/offload-extensions/pldm/pldm_interface.cpp
@@ -31,6 +31,20 @@
 {
 namespace dump
 {
+namespace host
+{
+/**
+ * @brief Initiate offload of the dump with provided id
+ *
+ * @param[in] id - The Dump Source ID.
+ *
+ */
+void requestOffload(uint32_t id)
+{
+    pldm::requestOffload(id);
+}
+} // namespace host
+
 namespace pldm
 {
 
diff --git a/pldm_interface.hpp b/offload-extensions/pldm/pldm_interface.hpp
similarity index 100%
rename from pldm_interface.hpp
rename to offload-extensions/pldm/pldm_interface.hpp
diff --git a/system_dump_entry.cpp b/system_dump_entry.cpp
index 970be7d..53d8788 100644
--- a/system_dump_entry.cpp
+++ b/system_dump_entry.cpp
@@ -1,6 +1,6 @@
 #include "system_dump_entry.hpp"
 
-#include "pldm_interface.hpp"
+#include "offload-extensions.hpp"
 
 namespace phosphor
 {
@@ -8,12 +8,11 @@
 {
 namespace system
 {
-using namespace phosphor::dump::pldm;
 
 void Entry::initiateOffload(std::string uri)
 {
     phosphor::dump::Entry::initiateOffload(uri);
-    requestOffload(sourceDumpId());
+    phosphor::dump::host::requestOffload(sourceDumpId());
 }
 
 } // namespace system
