diff --git a/extensions/openpower-pels/manager.cpp b/extensions/openpower-pels/manager.cpp
index 3b1e118..ee5919d 100644
--- a/extensions/openpower-pels/manager.cpp
+++ b/extensions/openpower-pels/manager.cpp
@@ -27,6 +27,7 @@
 
 #include <filesystem>
 #include <fstream>
+#include <locale>
 #include <xyz/openbmc_project/Common/error.hpp>
 #include <xyz/openbmc_project/Logging/Create/server.hpp>
 
@@ -735,7 +736,7 @@
             str += getNumberString("%08X", value);
         }
     }
-    return str;
+    return sanitizeFieldForDBus(str);
 }
 
 void Manager::updateEventId(std::unique_ptr<openpower::pels::PEL>& pel)
@@ -749,6 +750,17 @@
     }
 }
 
+std::string Manager::sanitizeFieldForDBus(std::string field)
+{
+    std::for_each(field.begin(), field.end(), [](char& ch) {
+        if (((ch < ' ') || (ch > '~')) && (ch != '\n') && (ch != '\t'))
+        {
+            ch = ' ';
+        }
+    });
+    return field;
+}
+
 std::string Manager::getResolution(const openpower::pels::PEL& pel) const
 {
     std::string str;
@@ -812,7 +824,7 @@
             }
         }
     }
-    return resolution;
+    return sanitizeFieldForDBus(resolution);
 }
 
 bool Manager::updateResolution(const openpower::pels::PEL& pel)
diff --git a/extensions/openpower-pels/manager.hpp b/extensions/openpower-pels/manager.hpp
index 4432634..fa8ac0f 100644
--- a/extensions/openpower-pels/manager.hpp
+++ b/extensions/openpower-pels/manager.hpp
@@ -273,6 +273,17 @@
      */
     void updateProgressSRC(std::unique_ptr<openpower::pels::PEL>& pel) const;
 
+    /**
+     * @brief Converts unprintable characters from the passed
+     *        in string to spaces so they won't crash D-Bus when
+     *        used as a property value.
+     *
+     * @param[in] field - The field to fix
+     *
+     * @return std::string - The string without non printable characters.
+     */
+    static std::string sanitizeFieldForDBus(std::string field);
+
   private:
     /**
      * @brief Adds a received raw PEL to the PEL repository
diff --git a/test/openpower-pels/pel_manager_test.cpp b/test/openpower-pels/pel_manager_test.cpp
index 0643229..41d6138 100644
--- a/test/openpower-pels/pel_manager_test.cpp
+++ b/test/openpower-pels/pel_manager_test.cpp
@@ -1110,3 +1110,16 @@
     auto& hexwords = pel.primarySRC().value()->hexwordData();
     EXPECT_EQ(hexwords[3] & 0x20000000, 0x20000000);
 }
+
+TEST_F(ManagerTest, TestSanitizeFieldforDBus)
+{
+    std::string base{"(test0!}\n\t ~"};
+    auto string = base;
+    string += char{' ' - 1};
+    string += char{'~' + 1};
+    string += char{0};
+    string += char{static_cast<char>(0xFF)};
+
+    // convert the last four chars to spaces
+    EXPECT_EQ(Manager::sanitizeFieldForDBus(string), base + "    ");
+}
