diff --git a/extensions/openpower-pels/repository.cpp b/extensions/openpower-pels/repository.cpp
index 81832dd..21b0243 100644
--- a/extensions/openpower-pels/repository.cpp
+++ b/extensions/openpower-pels/repository.cpp
@@ -162,5 +162,41 @@
     return std::nullopt;
 }
 
+void Repository::for_each(ForEachFunc func) const
+{
+    for (const auto& [id, path] : _idsToPELs)
+    {
+        std::ifstream file{path};
+
+        if (!file.good())
+        {
+            auto e = errno;
+            log<level::ERR>("Repository::for_each: Unable to open PEL file",
+                            entry("ERRNO=%d", e),
+                            entry("PATH=%s", path.c_str()));
+            continue;
+        }
+
+        std::vector<uint8_t> data{std::istreambuf_iterator<char>(file),
+                                  std::istreambuf_iterator<char>()};
+        file.close();
+
+        PEL pel{data};
+
+        try
+        {
+            if (func(pel))
+            {
+                break;
+            }
+        }
+        catch (std::exception& e)
+        {
+            log<level::ERR>("Repository::for_each function exception",
+                            entry("ERROR=%s", e.what()));
+        }
+    }
+}
+
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/repository.hpp b/extensions/openpower-pels/repository.hpp
index d153400..a1d4a24 100644
--- a/extensions/openpower-pels/repository.hpp
+++ b/extensions/openpower-pels/repository.hpp
@@ -148,6 +148,26 @@
      */
     std::optional<std::vector<uint8_t>> getPELData(const LogID& id);
 
+    using ForEachFunc = std::function<bool(const PEL&)>;
+
+    /**
+     * @brief Run a user defined function on every PEL in the repository.
+     *
+     * ForEachFunc takes a const PEL reference, and should return
+     * true to stop iterating and return out of for_each.
+     *
+     * For example, to save up to 100 IDs in the repo into a vector:
+     *
+     *     std::vector<uint32_t> ids;
+     *     ForEachFunc f = [&ids](const PEL& pel) {
+     *         ids.push_back(pel.id());
+     *         return ids.size() == 100 ? true : false;
+     *     };
+     *
+     * @param[in] func - The function to run.
+     */
+    void for_each(ForEachFunc func) const;
+
   private:
     /**
      * @brief Finds an entry in the _idsToPELs map.
