diff --git a/vpd-manager/src/worker.cpp b/vpd-manager/src/worker.cpp
index b8b5d2c..d533017 100644
--- a/vpd-manager/src/worker.cpp
+++ b/vpd-manager/src/worker.cpp
@@ -1329,6 +1329,10 @@
     }
     catch (std::exception& l_ex)
     {
+        std::string l_exMsg{
+            std::string(__FUNCTION__) + " : VPD parsing failed for " +
+            i_vpdFilePath + " due to error: " + l_ex.what()};
+
         // If post fail action is required, execute it.
         if (jsonUtility::isActionRequired(m_parsedJson, i_vpdFilePath,
                                           "postFailAction", "collection"))
@@ -1336,16 +1340,20 @@
             if (!jsonUtility::executePostFailAction(m_parsedJson, i_vpdFilePath,
                                                     "collection"))
             {
-                throw std::runtime_error(
-                    std::string(__FUNCTION__) + "VPD parsing failed for " +
-                    i_vpdFilePath + " due to error: " + l_ex.what() +
-                    ". Post Fail Action also failed, aborting collection for this FRU");
+                l_exMsg +=
+                    ". Post Fail Action also failed, aborting collection for this FRU";
             }
         }
 
-        throw std::runtime_error(
-            std::string(__FUNCTION__) + "VPD parsing failed for " +
-            i_vpdFilePath + " due to error: " + l_ex.what());
+        if (typeid(l_ex) == typeid(DataException))
+        {
+            throw DataException(l_exMsg);
+        }
+        else if (typeid(l_ex) == typeid(EccException))
+        {
+            throw EccException(l_exMsg);
+        }
+        throw std::runtime_error(l_exMsg);
     }
 }
 
@@ -1431,7 +1439,11 @@
         }
 
         EventLogger::createSyncPel(
-            EventLogger::getErrorType(ex), types::SeverityType::Informational,
+            EventLogger::getErrorType(ex),
+            (typeid(ex) == typeid(DataException)) ||
+                    (typeid(ex) == typeid(EccException))
+                ? types::SeverityType::Warning
+                : types::SeverityType::Informational,
             __FILE__, __FUNCTION__, 0, EventLogger::getErrorMsg(ex),
             std::nullopt, std::nullopt, std::nullopt, std::nullopt);
 
