diff --git a/extensions/openpower-pels/pel.cpp b/extensions/openpower-pels/pel.cpp
index 29d86d5..c4156a8 100644
--- a/extensions/openpower-pels/pel.cpp
+++ b/extensions/openpower-pels/pel.cpp
@@ -2,12 +2,15 @@
 
 #include "bcd_time.hpp"
 #include "failing_mtms.hpp"
+#include "hexdump.hpp"
 #include "log_id.hpp"
+#include "pel_values.hpp"
 #include "section_factory.hpp"
 #include "src.hpp"
 #include "stream.hpp"
 #include "user_data_formats.hpp"
 
+#include <iostream>
 #include <phosphor-logging/log.hpp>
 
 namespace openpower
@@ -15,6 +18,7 @@
 namespace pels
 {
 namespace message = openpower::pels::message;
+namespace pv = openpower::pels::pel_values;
 
 PEL::PEL(const message::Entry& entry, uint32_t obmcLogID, uint64_t timestamp,
          phosphor::logging::Entry::Level severity,
@@ -171,5 +175,45 @@
 }
 
 } // namespace util
+void PEL::printSectionInJSON(Section& section, std::string& buf) const
+{
+    char tmpB[5];
+    if (section.valid())
+    {
+        uint8_t id[] = {static_cast<uint8_t>(section.header().id >> 8),
+                        static_cast<uint8_t>(section.header().id)};
+        sprintf(tmpB, "%c%c", id[0], id[1]);
+        std::string sectionID(tmpB);
+        std::string sectionName = pv::sectionTitles.count(sectionID)
+                                      ? pv::sectionTitles.at(sectionID)
+                                      : "Unknown Section";
+        buf += "\n\"" + sectionName + "\":[\n ";
+        std::vector<uint8_t> data;
+        Stream s{data};
+        section.flatten(s);
+        std::string dstr = dumpHex(std::data(data), data.size());
+        buf += dstr + "\n],\n";
+    }
+    else
+    {
+        buf += "\n\"Invalid Section  \":[\n invalid \n],\n";
+    }
+}
+
+void PEL::toJSON()
+{
+    std::string buf = "{";
+    printSectionInJSON(*(_ph.get()), buf);
+    printSectionInJSON(*(_uh.get()), buf);
+    for (auto& section : this->optionalSections())
+    {
+        printSectionInJSON(*(section.get()), buf);
+    }
+    buf += "}";
+    std::size_t found = buf.rfind(",");
+    if (found != std::string::npos)
+        buf.replace(found, 1, "");
+    std::cout << buf << std::endl;
+}
 } // namespace pels
 } // namespace openpower
