diff --git a/defines.hpp b/defines.hpp
index e391879..84ddae3 100644
--- a/defines.hpp
+++ b/defines.hpp
@@ -52,7 +52,8 @@
     B1,  /**< MAC Address */
     VN,  /**< FRU manufacturer name */
     MB,  /**< FRU manufacture date */
-    MM   /**< FRU model */
+    MM,  /**< FRU model */
+    UD   /**< System UUID */
 };
 
 /** @brief Convert VPD Keyword name from enum to string
@@ -116,6 +117,12 @@
     return "MM";
 }
 
+template<>
+constexpr const char* getKeyword<Keyword::UD>()
+{
+    return "UD";
+}
+
 } // namespace record
 
 /** @brief FRUs whose VPD we're interested in
diff --git a/impl.cpp b/impl.cpp
index c06700f..7ac147d 100644
--- a/impl.cpp
+++ b/impl.cpp
@@ -25,6 +25,11 @@
 
 static constexpr auto MAC_ADDRESS_LEN_BYTES = 6;
 static constexpr auto LAST_KW = "PF";
+static constexpr auto UUID_LEN_BYTES = 16;
+static constexpr auto UUID_TIME_LOW_END = 8;
+static constexpr auto UUID_TIME_MID_END = 13;
+static constexpr auto UUID_TIME_HIGH_END = 18;
+static constexpr auto UUID_CLK_SEQ_END = 23;
 
 static const std::unordered_map<std::string,
        internal::KeywordInfo> supportedKeywords =
@@ -37,7 +42,8 @@
     {"B1", std::make_tuple(record::Keyword::B1, keyword::Encoding::B1)},
     {"VN", std::make_tuple(record::Keyword::VN, keyword::Encoding::ASCII)},
     {"MB", std::make_tuple(record::Keyword::MB, keyword::Encoding::RAW)},
-    {"MM", std::make_tuple(record::Keyword::MM, keyword::Encoding::ASCII)}
+    {"MM", std::make_tuple(record::Keyword::MM, keyword::Encoding::ASCII)},
+    {"UD", std::make_tuple(record::Keyword::UD, keyword::Encoding::UD)}
 };
 
 namespace
@@ -251,6 +257,28 @@
             return result;
         }
 
+        case keyword::Encoding::UD:
+        {
+            //UD, the UUID info, represented as
+            //123e4567-e89b-12d3-a456-426655440000
+            //<time_low>-<time_mid>-<time hi and version>
+            //-<clock_seq_hi_and_res clock_seq_low>-<48 bits node id>
+            auto stop = std::next(iterator, UUID_LEN_BYTES);
+            std::string data(iterator, stop);
+            std::string result{};
+            std::for_each(data.cbegin(), data.cend(),
+                [&result](size_t c)
+                {
+                    result += toHex(c >> 4);
+                    result += toHex(c & 0x0F);
+                });
+            result.insert(UUID_TIME_LOW_END, 1, '-');
+            result.insert(UUID_TIME_MID_END, 1, '-');
+            result.insert(UUID_TIME_HIGH_END, 1, '-');
+            result.insert(UUID_CLK_SEQ_END, 1, '-');
+
+            return result;
+        }
         default:
             break;
     }
diff --git a/impl.hpp b/impl.hpp
index d8af32d..520a7e0 100644
--- a/impl.hpp
+++ b/impl.hpp
@@ -18,7 +18,8 @@
     ASCII, /**< data encoded in ascii */
     RAW,   /**< raw data */
     // Keywords needing custom decoding
-    B1     /**< The keyword B1 needs to be decoded specially */
+    B1,     /**< The keyword B1 needs to be decoded specially */
+    UD      /**< Special decoding of UD meant for UUID */
 };
 
 } // namespace keyword
diff --git a/writefru.yaml b/writefru.yaml
index c9f1d80..6e75dcd 100644
--- a/writefru.yaml
+++ b/writefru.yaml
@@ -9,6 +9,8 @@
         PrettyName: VINI,DR
     xyz.openbmc_project.Inventory.Decorator.Revision:
         Version: VINI,HW
+    xyz.openbmc_project.Common.UUID:
+        UUID: OSYS,UD
 
 ETHERNET:
     xyz.openbmc_project.Inventory.Item.NetworkInterface:
