diff --git a/extensions/openpower-pels/additional_data.hpp b/extensions/openpower-pels/additional_data.hpp
new file mode 100644
index 0000000..5cea69b
--- /dev/null
+++ b/extensions/openpower-pels/additional_data.hpp
@@ -0,0 +1,77 @@
+#pragma once
+#include <map>
+#include <optional>
+#include <string>
+#include <vector>
+
+namespace openpower
+{
+namespace pels
+{
+
+/**
+ * @class AdditionalData
+ *
+ * This class takes in the contents of the AdditionalData OpenBMC
+ * event log property, and provides access to its values based on
+ * their keys.
+ *
+ * The property is a vector of strings of the form: "KEY=VALUE",
+ * and this class provides a getValue("KEY") API that would return
+ * "VALUE".
+ */
+class AdditionalData
+{
+  public:
+    AdditionalData() = delete;
+    ~AdditionalData() = default;
+    AdditionalData(const AdditionalData&) = default;
+    AdditionalData& operator=(const AdditionalData&) = default;
+    AdditionalData(AdditionalData&&) = default;
+    AdditionalData& operator=(AdditionalData&&) = default;
+
+    /**
+     * @brief constructor
+     *
+     * @param[in] ad - the AdditionalData property vector with
+     *                 entries of "KEY=VALUE"
+     */
+    AdditionalData(const std::vector<std::string>& ad)
+    {
+        for (auto& item : ad)
+        {
+            auto pos = item.find_first_of('=');
+            if (pos == std::string::npos || pos == 0)
+            {
+                continue;
+            }
+
+            _data[item.substr(0, pos)] = std::move(item.substr(pos + 1));
+        }
+    }
+
+    /**
+     * @brief Returns the value of the AdditionalData item for the
+     *        key passed in.
+     * @param[in] key - the key to search for
+     *
+     * @return optional<string> - the value, if found
+     */
+    std::optional<std::string> getValue(const std::string& key)
+    {
+        auto entry = _data.find(key);
+        if (entry != _data.end())
+        {
+            return entry->second;
+        }
+        return std::nullopt;
+    }
+
+  private:
+    /**
+     * @brief a map of keys to values
+     */
+    std::map<std::string, std::string> _data;
+};
+} // namespace pels
+} // namespace openpower
diff --git a/test/Makefile.am b/test/Makefile.am
index a95677d..6499764 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -110,3 +110,7 @@
 
 # TODO Remove once the test-case failure is resolved openbmc/phosphor-logging#11
 XFAIL_TESTS = elog_errorwrap_test
+
+if ENABLE_PEL_EXTENSION
+include openpower-pels/Makefile.include
+endif
diff --git a/test/openpower-pels/Makefile.include b/test/openpower-pels/Makefile.include
new file mode 100644
index 0000000..98a0acd
--- /dev/null
+++ b/test/openpower-pels/Makefile.include
@@ -0,0 +1,10 @@
+TESTS += $(check_PROGRAMS)
+
+check_PROGRAMS += \
+	additional_data_test
+
+additional_data_test_SOURCES = %reldir%/additional_data_test.cpp
+additional_data_test_CPPFLAGS = $(test_cppflags)
+additional_data_test_CXXFLAGS = $(test_cxxflags)
+additional_data_test_LDADD = $(test_ldadd)
+additional_data_test_LDFLAGS = $(test_ldflags)
diff --git a/test/openpower-pels/additional_data_test.cpp b/test/openpower-pels/additional_data_test.cpp
new file mode 100644
index 0000000..2be06c4
--- /dev/null
+++ b/test/openpower-pels/additional_data_test.cpp
@@ -0,0 +1,27 @@
+#include "extensions/openpower-pels/additional_data.hpp"
+
+#include <gtest/gtest.h>
+
+using namespace openpower::pels;
+
+TEST(AdditionalDataTest, GetKeywords)
+{
+    std::vector<std::string> data{"KEY1=VALUE1", "KEY2=VALUE2",
+                                  "KEY3=", "HELLOWORLD", "=VALUE5"};
+    AdditionalData ad{data};
+
+    EXPECT_TRUE(ad.getValue("KEY1"));
+    EXPECT_EQ(*(ad.getValue("KEY1")), "VALUE1");
+
+    EXPECT_TRUE(ad.getValue("KEY2"));
+    EXPECT_EQ(*(ad.getValue("KEY2")), "VALUE2");
+
+    EXPECT_FALSE(ad.getValue("x"));
+
+    auto value3 = ad.getValue("KEY3");
+    EXPECT_TRUE(value3);
+    EXPECT_TRUE((*value3).empty());
+
+    EXPECT_FALSE(ad.getValue("HELLOWORLD"));
+    EXPECT_FALSE(ad.getValue("VALUE5"));
+}
