diff --git a/config/config.h.meson b/config/config.h.meson
index f852bab..0c3bb6d 100644
--- a/config/config.h.meson
+++ b/config/config.h.meson
@@ -34,7 +34,8 @@
 static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_UPDATE_TS = "3";
 static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_EVENTID = "4";
 static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_RESOLUTION = "5";
-static constexpr size_t CLASS_VERSION = 5;
+static constexpr auto FIRST_CEREAL_CLASS_VERSION_WITH_METADATA_DICT = "6";
+static constexpr size_t CLASS_VERSION = 6;
 
 static constexpr bool LG2_COMMIT_DBUS = @lg2_commit_dbus@;
 static constexpr bool LG2_COMMIT_JOURNAL = @lg2_commit_journal@;
diff --git a/elog_serialize.cpp b/elog_serialize.cpp
index 1fd5a1f..6a2dac4 100644
--- a/elog_serialize.cpp
+++ b/elog_serialize.cpp
@@ -3,6 +3,7 @@
 #include "elog_serialize.hpp"
 
 #include <cereal/archives/binary.hpp>
+#include <cereal/types/map.hpp>
 #include <cereal/types/string.hpp>
 #include <cereal/types/tuple.hpp>
 #include <cereal/types/vector.hpp>
@@ -30,7 +31,7 @@
 template <class Archive>
 void save(Archive& a, const Entry& e, const std::uint32_t /*version*/)
 {
-    a(e.id(), e.severity(), e.timestamp(), e.message(), e.additionalData(),
+    a(e.id(), e.severity(), e.timestamp(), e.message(), e.additionalData2(),
       e.associations(), e.resolved(), e.version(), e.updateTimestamp(),
       e.eventId(), e.resolution());
 }
@@ -51,7 +52,7 @@
     Entry::Level severity{};
     uint64_t timestamp{};
     std::string message{};
-    std::vector<std::string> additionalData{};
+    std::map<std::string, std::string> additionalData{};
     bool resolved{};
     AssociationList associations{};
     std::string fwVersion{};
@@ -61,25 +62,41 @@
 
     if (version < std::stoul(FIRST_CEREAL_CLASS_VERSION_WITH_FWLEVEL))
     {
-        a(id, severity, timestamp, message, additionalData, associations,
+        std::vector<std::string> additionalData_old{};
+        a(id, severity, timestamp, message, additionalData_old, associations,
           resolved);
         updateTimestamp = timestamp;
+        additionalData = util::additional_data::parse(additionalData_old);
     }
     else if (version < std::stoul(FIRST_CEREAL_CLASS_VERSION_WITH_UPDATE_TS))
     {
-        a(id, severity, timestamp, message, additionalData, associations,
+        std::vector<std::string> additionalData_old{};
+        a(id, severity, timestamp, message, additionalData_old, associations,
           resolved, fwVersion);
         updateTimestamp = timestamp;
+        additionalData = util::additional_data::parse(additionalData_old);
     }
     else if (version < std::stoul(FIRST_CEREAL_CLASS_VERSION_WITH_EVENTID))
     {
-        a(id, severity, timestamp, message, additionalData, associations,
+        std::vector<std::string> additionalData_old{};
+        a(id, severity, timestamp, message, additionalData_old, associations,
           resolved, fwVersion, updateTimestamp);
+        additionalData = util::additional_data::parse(additionalData_old);
     }
     else if (version < std::stoul(FIRST_CEREAL_CLASS_VERSION_WITH_RESOLUTION))
     {
-        a(id, severity, timestamp, message, additionalData, associations,
+        std::vector<std::string> additionalData_old{};
+        a(id, severity, timestamp, message, additionalData_old, associations,
           resolved, fwVersion, updateTimestamp, eventId);
+        additionalData = util::additional_data::parse(additionalData_old);
+    }
+    else if (version <
+             std::stoul(FIRST_CEREAL_CLASS_VERSION_WITH_METADATA_DICT))
+    {
+        std::vector<std::string> additionalData_old{};
+        a(id, severity, timestamp, message, additionalData_old, associations,
+          resolved, fwVersion, updateTimestamp, eventId, resolution);
+        additionalData = util::additional_data::parse(additionalData_old);
     }
     else
     {
@@ -91,8 +108,8 @@
     e.severity(severity, true);
     e.timestamp(timestamp, true);
     e.message(message, true);
-    e.additionalData(additionalData, true);
-    e.additionalData2(util::additional_data::parse(additionalData), true);
+    e.additionalData(util::additional_data::combine(additionalData), true);
+    e.additionalData2(additionalData, true);
     e.sdbusplus::server::xyz::openbmc_project::logging::Entry::resolved(
         resolved, true);
     e.associations(associations, true);
diff --git a/test/serialization_test_properties.cpp b/test/serialization_test_properties.cpp
index d7d5455..60fc6ae 100644
--- a/test/serialization_test_properties.cpp
+++ b/test/serialization_test_properties.cpp
@@ -13,7 +13,7 @@
 {
     auto id = 99;
     phosphor::logging::AssociationList assocations{};
-    std::vector<std::string> testData{"additional", "data"};
+    std::vector<std::string> testData{"additional=1", "data=yes"};
     uint64_t timestamp{100};
     std::string message{"test error"};
     std::string fwLevel{"level42"};
