diff --git a/dump_utils.cpp b/dump_utils.cpp
index da703ec..c362ee6 100644
--- a/dump_utils.cpp
+++ b/dump_utils.cpp
@@ -1,9 +1,17 @@
+#include "config.h"
+
 #include "dump_utils.hpp"
 
 #include "dump_types.hpp"
 
 #include <phosphor-logging/lg2.hpp>
 
+#include <ctime>
+#include <filesystem>
+#include <optional>
+#include <regex>
+#include <tuple>
+
 namespace phosphor
 {
 namespace dump
@@ -46,5 +54,29 @@
     return response[0].first;
 }
 
+std::optional<std::tuple<uint32_t, uint64_t, uint64_t>>
+    extractDumpDetails(const std::filesystem::path& file)
+{
+    static constexpr auto ID_POS = 1;
+    static constexpr auto EPOCHTIME_POS = 2;
+    std::regex file_regex("obmcdump_([0-9]+)_([0-9]+).([a-zA-Z0-9]+)");
+
+    std::smatch match;
+    std::string name = file.filename().string();
+
+    if (!((std::regex_search(name, match, file_regex)) && (match.size() > 0)))
+    {
+        lg2::error("Invalid Dump file name, FILENAME: {FILENAME}", "FILENAME",
+                   file);
+        return std::nullopt;
+    }
+
+    auto idString = match[ID_POS];
+    uint64_t timestamp = stoull(match[EPOCHTIME_POS]) * 1000 * 1000;
+
+    return std::make_tuple(stoul(idString), timestamp,
+                           std::filesystem::file_size(file));
+}
+
 } // namespace dump
 } // namespace phosphor
