diff --git a/analyzer/analyzer_main.cpp b/analyzer/analyzer_main.cpp
index 4be14f5..e59c95b 100644
--- a/analyzer/analyzer_main.cpp
+++ b/analyzer/analyzer_main.cpp
@@ -35,12 +35,10 @@
 
 /**
  * @brief Will create and submit a PEL using the given data.
- * @param i_isoData   The data gathered during isolation (for FFDC).
  * @param i_servData  Data regarding service actions gathered during analysis.
  * @return The platform log ID. Will return zero if no PEL is generated.
  */
-uint32_t createPel(const libhei::IsolationData& i_isoData,
-                   const ServiceData& i_servData);
+uint32_t createPel(const ServiceData& i_servData);
 
 //------------------------------------------------------------------------------
 
@@ -151,7 +149,7 @@
         }
 
         // Start building the service data.
-        ServiceData servData{rootCause, i_type};
+        ServiceData servData{rootCause, i_type, isoData};
 
         // Apply any service actions, if needed. Note that there are no
         // resolutions for manual analysis.
@@ -173,7 +171,7 @@
         }
 
         // Create and commit a PEL.
-        o_plid = createPel(isoData, servData);
+        o_plid = createPel(servData);
 
         if (0 == o_plid)
         {
diff --git a/analyzer/create_pel.cpp b/analyzer/create_pel.cpp
index 5afe6ba..a5982ea 100644
--- a/analyzer/create_pel.cpp
+++ b/analyzer/create_pel.cpp
@@ -316,8 +316,7 @@
 
 //------------------------------------------------------------------------------
 
-uint32_t createPel(const libhei::IsolationData& i_isoData,
-                   const ServiceData& i_servData)
+uint32_t createPel(const ServiceData& i_servData)
 {
     uint32_t o_plid = 0; // default, zero indicates PEL was not created
 
@@ -344,10 +343,10 @@
     __addCalloutFFDC(i_servData, userDataFiles);
 
     // Capture the complete signature list.
-    __captureSignatureList(i_isoData, userDataFiles);
+    __captureSignatureList(i_servData.getIsolationData(), userDataFiles);
 
     // Capture the complete signature list.
-    __captureRegisterDump(i_isoData, userDataFiles);
+    __captureRegisterDump(i_servData.getIsolationData(), userDataFiles);
 
     // Now, that all of the user data files have been created, transform the
     // data into the proper format for the PEL.
diff --git a/analyzer/service_data.hpp b/analyzer/service_data.hpp
index 1639ed0..44f31b9 100644
--- a/analyzer/service_data.hpp
+++ b/analyzer/service_data.hpp
@@ -18,13 +18,15 @@
   public:
     /**
      * @brief Constructor from components.
-     * @param The signature of the root cause attention.
-     * @param The type of analysis to perform.
+     * @param i_rootCause    The signature of the root cause attention.
+     * @param i_analysisType The type of analysis to perform.
+     * @param i_isoData      The data found during isolation.
      */
     ServiceData(const libhei::Signature& i_rootCause,
-                AnalysisType i_analysisType) :
+                AnalysisType i_analysisType,
+                const libhei::IsolationData& i_isoData) :
         iv_rootCause(i_rootCause),
-        iv_analysisType(i_analysisType)
+        iv_analysisType(i_analysisType), iv_isoData(i_isoData)
     {}
 
     /** @brief Destructor. */
@@ -43,6 +45,9 @@
     /** The type of analysis to perform. */
     const AnalysisType iv_analysisType;
 
+    /** The data found during isolation. */
+    const libhei::IsolationData iv_isoData;
+
     /** The list of callouts that will be added to a PEL. */
     nlohmann::json iv_calloutList = nlohmann::json::array();
 
@@ -63,6 +68,12 @@
         return iv_analysisType;
     }
 
+    /** @return The data found during isolation. */
+    const libhei::IsolationData& getIsolationData() const
+    {
+        return iv_isoData;
+    }
+
     /** @return Returns the guard type based on current analysis policies. */
     callout::GuardType queryGuardPolicy() const
     {
