diff --git a/extensions/openpower-pels/failing_mtms.cpp b/extensions/openpower-pels/failing_mtms.cpp
index d4cdf37..b45c05d 100644
--- a/extensions/openpower-pels/failing_mtms.cpp
+++ b/extensions/openpower-pels/failing_mtms.cpp
@@ -15,6 +15,7 @@
  */
 #include "failing_mtms.hpp"
 
+#include "json_utils.hpp"
 #include "pel_types.hpp"
 
 #include <phosphor-logging/log.hpp>
@@ -85,5 +86,19 @@
     stream >> _header >> _mtms;
 }
 
+std::optional<std::string> FailingMTMS::getJSON() const
+{
+    std::string json;
+    jsonInsert(json, "Section Version", getNumberString("%d", _header.version),
+               1);
+    jsonInsert(json, "Sub-section type", getNumberString("%d", _header.subType),
+               1);
+    jsonInsert(json, "Created by", getNumberString("0x%X", _header.componentID),
+               1);
+    jsonInsert(json, "Machine Type Model", _mtms.machineTypeAndModel(), 1);
+    jsonInsert(json, "Serial Number", trimEnd(_mtms.machineSerialNumber()), 1);
+    json.erase(json.size() - 2);
+    return json;
+}
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/failing_mtms.hpp b/extensions/openpower-pels/failing_mtms.hpp
index 65186eb..8f5cd44 100644
--- a/extensions/openpower-pels/failing_mtms.hpp
+++ b/extensions/openpower-pels/failing_mtms.hpp
@@ -81,6 +81,12 @@
         return _mtms.machineSerialNumber();
     }
 
+    /**
+     * @brief Get section in JSON.
+     * @return std::optional<std::string> - Failing MTMS section in JSON
+     */
+    std::optional<std::string> getJSON() const override;
+
   private:
     /**
      * @brief Validates the section contents
diff --git a/extensions/openpower-pels/json_utils.cpp b/extensions/openpower-pels/json_utils.cpp
index cd41804..871bd32 100644
--- a/extensions/openpower-pels/json_utils.cpp
+++ b/extensions/openpower-pels/json_utils.cpp
@@ -193,5 +193,15 @@
         jsonStr.append("[],\n");
     }
 }
+
+std::string trimEnd(std::string s)
+{
+    const char* t = " \t\n\r\f\v";
+    if (s.find_last_not_of(t) != std::string::npos)
+    {
+        s.erase(s.find_last_not_of(t) + 1);
+    }
+    return s;
+}
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/json_utils.hpp b/extensions/openpower-pels/json_utils.hpp
index f3fb767..e122f47 100644
--- a/extensions/openpower-pels/json_utils.hpp
+++ b/extensions/openpower-pels/json_utils.hpp
@@ -76,5 +76,12 @@
     return numString;
 }
 
+/**
+ * @brief helper function to trim trailing whitespaces
+ * @return std::string - trimmed string
+ * @param[in] std::string - string to trim
+ */
+std::string trimEnd(std::string s);
+
 } // namespace pels
 } // namespace openpower
diff --git a/extensions/openpower-pels/tools/peltool.cpp b/extensions/openpower-pels/tools/peltool.cpp
index f1d5f59..ed6daa2 100644
--- a/extensions/openpower-pels/tools/peltool.cpp
+++ b/extensions/openpower-pels/tools/peltool.cpp
@@ -182,21 +182,6 @@
     }
 }
 
-/**
- * @brief helper function to trim trailing whitespaces
- * @return std::string - trimmed string
- * @param[in] std::string - string to trim
- */
-const char* ws = " \t\n\r\f\v";
-std::string trim(std::string s, const char* t = ws)
-{
-    if (s.find_last_not_of(t) != std::string::npos)
-    {
-        s.erase(s.find_last_not_of(t) + 1);
-    }
-    return s;
-}
-
 template <typename T>
 std::string genPELJSON(T itr, bool hidden, message::Registry& registry)
 {
