diff --git a/vpd-manager/include/event_logger.hpp b/vpd-manager/include/event_logger.hpp
index aec8d30..65399e9 100644
--- a/vpd-manager/include/event_logger.hpp
+++ b/vpd-manager/include/event_logger.hpp
@@ -41,6 +41,17 @@
     static std::string getErrorMsg(const std::exception& i_exception);
 
     /**
+     * @brief API to get string representation of a Error type enum.
+     *
+     * @param[in] i_exception - Exception object.
+     *
+     * @return Error msg set for the specific error type. Default error msg
+     * otherwise.
+     */
+    static std::string getErrorTypeString(
+        const types::ErrorType& i_errorType) noexcept;
+
+    /**
      * @brief An API to create a PEL with inventory path callout.
      *
      * This API calls an async method to create PEL, and also handles inventory
diff --git a/vpd-manager/include/ipz_parser.hpp b/vpd-manager/include/ipz_parser.hpp
index b41b7b6..61100e9 100644
--- a/vpd-manager/include/ipz_parser.hpp
+++ b/vpd-manager/include/ipz_parser.hpp
@@ -152,10 +152,11 @@
      *
      * @param[in] itrToPT - Iterator to PT record in VPD vector.
      * @param[in] ptLength - length of the PT record.
-     * @return List of record's offset.
+     * @return Pair of list of record's offset and a list of invalid
+     * records found during parsing
      */
-    types::RecordOffsetList readPT(types::BinaryVector::const_iterator& itrToPT,
-                                   auto ptLength);
+    std::pair<types::RecordOffsetList, types::InvalidRecordList> readPT(
+        types::BinaryVector::const_iterator& itrToPT, auto ptLength);
 
     /**
      * @brief API to read keyword data based on its encoding type.
@@ -255,6 +256,20 @@
                                 const types::RecordOffset& i_recordDataOffset,
                                 types::BinaryVector& io_vpdVector);
 
+    /**
+     * @brief API to process list of invalid records found during parsing
+     *
+     * This API takes a list of invalid records found while parsing a given
+     * EEPROM, logs a predictive PEL with details about the invalid records and
+     * then dumps the EEPROM data to filesystem.
+     *
+     * @param[in] i_invalidRecordList - a list of invalid records
+     *
+     * @return On success returns true, false otherwise.
+     */
+    bool processInvalidRecords(
+        const types::InvalidRecordList& i_invalidRecordList) const noexcept;
+
     // Holds VPD data.
     const types::BinaryVector& m_vpdVector;
 
diff --git a/vpd-manager/include/types.hpp b/vpd-manager/include/types.hpp
index 09153f4..cffab81 100644
--- a/vpd-manager/include/types.hpp
+++ b/vpd-manager/include/types.hpp
@@ -198,5 +198,10 @@
 using ExceptionInfoVariant = std::variant<std::monostate, ErrorType, std::string>;
 /* Error info map of format <Error format, Value> */
 using ExceptionDataMap = std::map<std::string, ExceptionInfoVariant>;
+
+/* Pair of invalid record name and error encountered while parsing the record*/
+using InvalidRecordEntry = std::pair<Record,ErrorType>;
+/* List of invalid record entries*/
+using InvalidRecordList = std::vector<InvalidRecordEntry>;
 } // namespace types
 } // namespace vpd
