diff --git a/vpd-manager/src/event_logger.cpp b/vpd-manager/src/event_logger.cpp
index 893f4e1..77de7c5 100644
--- a/vpd-manager/src/event_logger.cpp
+++ b/vpd-manager/src/event_logger.cpp
@@ -370,4 +370,43 @@
     }
     return l_errorInfo;
 }
+
+types::ErrorType EventLogger::getErrorType(const std::exception& i_exception)
+{
+    const auto& l_exceptionDataMap = getExceptionData(i_exception);
+
+    auto l_itrToErrType = l_exceptionDataMap.find("ErrorType");
+    if (l_itrToErrType == l_exceptionDataMap.end())
+    {
+        return types::ErrorType::InternalFailure;
+    }
+
+    auto l_ptrToErrType =
+        std::get_if<types::ErrorType>(&l_itrToErrType->second);
+    if (!l_ptrToErrType)
+    {
+        return types::ErrorType::InternalFailure;
+    }
+
+    return *l_ptrToErrType;
+}
+
+std::string EventLogger::getErrorMsg(const std::exception& i_exception)
+{
+    const auto& l_exceptionDataMap = getExceptionData(i_exception);
+
+    auto l_itrToErrMsg = l_exceptionDataMap.find("ErrorMsg");
+    if (l_itrToErrMsg == l_exceptionDataMap.end())
+    {
+        return i_exception.what();
+    }
+
+    auto l_ptrToErrMsg = std::get_if<std::string>(&l_itrToErrMsg->second);
+    if (!l_ptrToErrMsg)
+    {
+        return i_exception.what();
+    }
+
+    return *l_ptrToErrMsg;
+}
 } // namespace vpd
