diff --git a/dump_manager.cpp b/dump_manager.cpp
index d0376a5..3b00119 100644
--- a/dump_manager.cpp
+++ b/dump_manager.cpp
@@ -1,4 +1,5 @@
 #include <unistd.h>
+#include <sys/inotify.h>
 
 #include <phosphor-logging/elog-errors.hpp>
 
@@ -112,5 +113,17 @@
     entries.erase(entryId);
 }
 
+void Manager::watchCallback(const UserMap& fileInfo)
+{
+    for (const auto& i : fileInfo)
+    {
+        // For any new dump file create dump entry object.
+        if (IN_CLOSE_WRITE == i.second)
+        {
+            createEntry(i.first);
+        }
+    }
+}
+
 } //namespace dump
 } //namespace phosphor
diff --git a/dump_manager.hpp b/dump_manager.hpp
index b4c09c1..55947b2 100644
--- a/dump_manager.hpp
+++ b/dump_manager.hpp
@@ -9,6 +9,8 @@
 #include "xyz/openbmc_project/Dump/Internal/Create/server.hpp"
 #include "dump_entry.hpp"
 #include "dump_utils.hpp"
+#include "watch.hpp"
+#include "config.h"
 
 namespace phosphor
 {
@@ -21,6 +23,8 @@
 
 } // namespace internal
 
+using UserMap = phosphor::dump::inotify::UserMap;
+
 using Type =
     sdbusplus::xyz::openbmc_project::Dump::Internal::server::Create::Type;
 
@@ -57,7 +61,16 @@
             CreateIface(bus, path),
             bus(bus),
             eventLoop(event.get()),
-            lastEntryId(0)
+            lastEntryId(0),
+            dumpWatch(eventLoop,
+                  IN_NONBLOCK,
+                  IN_CLOSE_WRITE,
+                  EPOLLIN,
+                  BMC_DUMP_FILE_DIR,
+                  std::bind(
+                       std::mem_fn(
+                            &phosphor::dump::Manager::watchCallback),
+                            this, std::placeholders::_1))
         {}
 
         /** @brief Implementation for CreateDump
@@ -67,6 +80,11 @@
          */
         uint32_t createDump() override;
 
+        /** @brief Implementation of dump watch call back
+         *  @param [in] fileInfo - map of file info  path:event
+         */
+        void watchCallback(const UserMap& fileInfo);
+
     private:
         /** @brief Create Dump entry d-bus object
          *  @param[in] fullPath - Full path of the Dump file name
@@ -117,6 +135,9 @@
 
         /** @brief Id of the last Dump entry */
         uint32_t lastEntryId;
+
+        /** @brief Dump watch object */
+        phosphor::dump::inotify::Watch dumpWatch;
 };
 
 } // namespace dump
diff --git a/dump_manager_main.cpp b/dump_manager_main.cpp
index 6be9a29..2cb6d2b 100644
--- a/dump_manager_main.cpp
+++ b/dump_manager_main.cpp
@@ -5,6 +5,7 @@
 #include "config.h"
 #include "dump_manager.hpp"
 #include "dump_internal.hpp"
+#include "watch.hpp"
 
 int main(int argc, char* argv[])
 {
@@ -34,6 +35,7 @@
         phosphor::dump::Manager manager(bus, eventP, DUMP_OBJPATH);
         phosphor::dump::internal::Manager mgr(bus, OBJ_INTERNAL);
         bus.attach_event(eventP.get(), SD_EVENT_PRIORITY_NORMAL);
+
         auto rc = sd_event_loop(eventP.get());
         if (rc < 0)
         {
