diff --git a/extensions/openpower-pels/pel.cpp b/extensions/openpower-pels/pel.cpp
index 13e94d0..167d28a 100644
--- a/extensions/openpower-pels/pel.cpp
+++ b/extensions/openpower-pels/pel.cpp
@@ -62,12 +62,26 @@
     auto ud = util::makeSysInfoUserDataSection(additionalData, dataIface);
     _optionalSections.push_back(std::move(ud));
 
+    // Create a UserData section from AdditionalData.
     if (!additionalData.empty())
     {
         ud = util::makeADUserDataSection(additionalData);
 
-        // To be safe, check there isn't too much data
-        if (size() + ud->header().size <= _maxPELSize)
+        // Shrink the section if necessary.
+        if (size() + ud->header().size > _maxPELSize)
+        {
+            if (ud->shrink(_maxPELSize - size()))
+            {
+                _optionalSections.push_back(std::move(ud));
+            }
+            else
+            {
+                log<level::WARNING>(
+                    "Dropping AdditionalData UserData section",
+                    entry("SECTION_SIZE=%d\n", ud->header().size));
+            }
+        }
+        else
         {
             _optionalSections.push_back(std::move(ud));
         }
diff --git a/test/openpower-pels/pel_test.cpp b/test/openpower-pels/pel_test.cpp
index 8832038..ea1842d 100644
--- a/test/openpower-pels/pel_test.cpp
+++ b/test/openpower-pels/pel_test.cpp
@@ -180,6 +180,47 @@
     EXPECT_EQ(udCount, 2); // AD section and sysInfo section
 }
 
+// Test that when the AdditionalData size is over 16KB that
+// the PEL that's created is exactly 16KB since the UserData
+// section that contains all that data was pruned.
+TEST_F(PELTest, CreateTooBigADTest)
+{
+    message::Entry regEntry;
+    uint64_t timestamp = 5;
+
+    regEntry.name = "test";
+    regEntry.subsystem = 5;
+    regEntry.actionFlags = 0xC000;
+    regEntry.src.type = 0xBD;
+    regEntry.src.reasonCode = 0x1234;
+
+    // Over the 16KB max PEL size
+    std::string bigAD{"KEY1="};
+    bigAD += std::string(17000, 'G');
+
+    std::vector<std::string> data{bigAD};
+    AdditionalData ad{data};
+    MockDataInterface dataIface;
+
+    PEL pel{regEntry, 42, timestamp, phosphor::logging::Entry::Level::Error, ad,
+            dataIface};
+
+    EXPECT_TRUE(pel.valid());
+    EXPECT_EQ(pel.size(), 16384);
+
+    // Make sure that there are still 2 UD sections.
+    size_t udCount = 0;
+    for (const auto& section : pel.optionalSections())
+    {
+        if (section->header().id == static_cast<uint16_t>(SectionID::userData))
+        {
+            udCount++;
+        }
+    }
+
+    EXPECT_EQ(udCount, 2); // AD section and sysInfo section
+}
+
 // Test that we'll create Generic optional sections for sections that
 // there aren't explicit classes for.
 TEST_F(PELTest, GenericSectionTest)
