diff --git a/extensions/openpower-pels/failing_mtms.cpp b/extensions/openpower-pels/failing_mtms.cpp
index 1b15c16..b60ce31 100644
--- a/extensions/openpower-pels/failing_mtms.cpp
+++ b/extensions/openpower-pels/failing_mtms.cpp
@@ -20,6 +20,8 @@
     _header.version = failingMTMSVersion;
     _header.subType = 0;
     _header.componentID = static_cast<uint16_t>(ComponentID::phosphorLogging);
+
+    _valid = true;
 }
 
 FailingMTMS::FailingMTMS(Stream& pel)
diff --git a/extensions/openpower-pels/manager.cpp b/extensions/openpower-pels/manager.cpp
index 2141a71..bc62bd3 100644
--- a/extensions/openpower-pels/manager.cpp
+++ b/extensions/openpower-pels/manager.cpp
@@ -116,8 +116,8 @@
     {
         AdditionalData ad{additionalData};
 
-        auto pel =
-            std::make_unique<PEL>(*entry, obmcLogID, timestamp, severity, ad);
+        auto pel = std::make_unique<PEL>(*entry, obmcLogID, timestamp, severity,
+                                         ad, *_dataIface);
 
         _repo.add(pel);
     }
diff --git a/extensions/openpower-pels/pel.cpp b/extensions/openpower-pels/pel.cpp
index 157af5a..ffd4974 100644
--- a/extensions/openpower-pels/pel.cpp
+++ b/extensions/openpower-pels/pel.cpp
@@ -1,6 +1,7 @@
 #include "pel.hpp"
 
 #include "bcd_time.hpp"
+#include "failing_mtms.hpp"
 #include "log_id.hpp"
 #include "section_factory.hpp"
 #include "src.hpp"
@@ -16,7 +17,8 @@
 
 PEL::PEL(const message::Entry& entry, uint32_t obmcLogID, uint64_t timestamp,
          phosphor::logging::Entry::Level severity,
-         const AdditionalData& additionalData)
+         const AdditionalData& additionalData,
+         const DataInterfaceBase& dataIface)
 {
     _ph = std::make_unique<PrivateHeader>(entry.componentID, obmcLogID,
                                           timestamp);
@@ -25,7 +27,8 @@
     auto src = std::make_unique<SRC>(entry, additionalData);
     _optionalSections.push_back(std::move(src));
 
-    // Add future sections here
+    auto mtms = std::make_unique<FailingMTMS>(dataIface);
+    _optionalSections.push_back(std::move(mtms));
 
     _ph->sectionCount() = 2 + _optionalSections.size();
 }
diff --git a/extensions/openpower-pels/pel.hpp b/extensions/openpower-pels/pel.hpp
index 9f34b62..bc857e2 100644
--- a/extensions/openpower-pels/pel.hpp
+++ b/extensions/openpower-pels/pel.hpp
@@ -1,6 +1,7 @@
 #pragma once
 
 #include "additional_data.hpp"
+#include "data_interface.hpp"
 #include "private_header.hpp"
 #include "registry.hpp"
 #include "src.hpp"
@@ -85,10 +86,12 @@
      * @param[in] timestamp - Timestamp from the event log
      * @param[in] severity - Severity from the event log
      * @param[in] additionalData - The AdditionalData contents
+     * @param[in] dataIface - The data interface object
      */
     PEL(const openpower::pels::message::Entry& entry, uint32_t obmcLogID,
         uint64_t timestamp, phosphor::logging::Entry::Level severity,
-        const AdditionalData& additionalData);
+        const AdditionalData& additionalData,
+        const DataInterfaceBase& dataIface);
 
     /**
      * @brief Convenience function to return the log ID field from the
diff --git a/test/openpower-pels/pel_test.cpp b/test/openpower-pels/pel_test.cpp
index 1f9917a..b0c6528 100644
--- a/test/openpower-pels/pel_test.cpp
+++ b/test/openpower-pels/pel_test.cpp
@@ -1,6 +1,7 @@
 #include "elog_entry.hpp"
 #include "extensions/openpower-pels/generic.hpp"
 #include "extensions/openpower-pels/pel.hpp"
+#include "mocks.hpp"
 #include "pel_utils.hpp"
 
 #include <filesystem>
@@ -121,9 +122,10 @@
     regEntry.src.reasonCode = 0x1234;
 
     AdditionalData ad;
+    MockDataInterface dataIface;
 
-    PEL pel{regEntry, 42, timestamp, phosphor::logging::Entry::Level::Error,
-            ad};
+    PEL pel{regEntry, 42, timestamp, phosphor::logging::Entry::Level::Error, ad,
+            dataIface};
 
     EXPECT_TRUE(pel.valid());
     EXPECT_EQ(pel.privateHeader()->obmcLogID(), 42);
@@ -131,8 +133,6 @@
 
     EXPECT_EQ(pel.primarySRC().value()->asciiString(),
               "BD051234                        ");
-
-    // Add more checks as more sections are added
 }
 
 // Test that we'll create Generic optional sections for sections that
