diff --git a/attn/attn_logging.cpp b/attn/attn_logging.cpp
index 014fc96..3bdf1c2 100644
--- a/attn/attn_logging.cpp
+++ b/attn/attn_logging.cpp
@@ -60,7 +60,8 @@
         std::vector<util::FFDCFile> files{createFFDCFiles()};
 
         // Create FFDC tuples used to pass FFDC files to D-Bus method
-        std::vector<FFDCTuple> ffdcTuples{createFFDCTuples(files)};
+        std::vector<util::FFDCTuple> ffdcTuples{};
+        util::transformFFDC(files, ffdcTuples);
 
         // attach additional data
         method.append(eventName,
@@ -288,17 +289,4 @@
     return files;
 }
 
-/** create tuples of FFDC files */
-std::vector<FFDCTuple> createFFDCTuples(std::vector<util::FFDCFile>& files)
-{
-    std::vector<FFDCTuple> ffdcTuples{};
-    for (util::FFDCFile& file : files)
-    {
-        ffdcTuples.emplace_back(
-            file.getFormat(), file.getSubType(), file.getVersion(),
-            sdbusplus::message::unix_fd(file.getFileDescriptor()));
-    }
-    return ffdcTuples;
-}
-
 } // namespace attn
diff --git a/attn/attn_logging.hpp b/attn/attn_logging.hpp
index 8b5feba..659048c 100644
--- a/attn/attn_logging.hpp
+++ b/attn/attn_logging.hpp
@@ -48,9 +48,6 @@
 /** @brief commit attention handler failure event to log */
 void eventAttentionFail(int i_error);
 
-using FFDCTuple =
-    std::tuple<util::FFDCFormat, uint8_t, uint8_t, sdbusplus::message::unix_fd>;
-
 /**
  * Create an FFDCFile object containing the specified lines of text data.
  *
@@ -72,15 +69,4 @@
  */
 std::vector<util::FFDCFile> createFFDCFiles();
 
-/**
- * Create FFDCTuple objects corresponding to the specified FFDC files.
- *
- * The D-Bus method to create an error log requires a vector of tuples to
- * pass in the FFDC file information.
- *
- * @param files FFDC files
- * @return vector of FFDCTuple objects
- */
-std::vector<FFDCTuple> createFFDCTuples(std::vector<util::FFDCFile>& files);
-
 } // namespace attn
diff --git a/util/ffdc_file.hpp b/util/ffdc_file.hpp
index f23fddd..6f71e2a 100644
--- a/util/ffdc_file.hpp
+++ b/util/ffdc_file.hpp
@@ -65,7 +65,7 @@
      *
      * @return file descriptor
      */
-    int getFileDescriptor()
+    int getFileDescriptor() const
     {
         // Return the integer file descriptor within the FileDescriptor object
         return descriptor();
@@ -153,4 +153,21 @@
     FileDescriptor descriptor{};
 };
 
+using FFDCTuple =
+    std::tuple<FFDCFormat, uint8_t, uint8_t, sdbusplus::message::unix_fd>;
+
+/** Transforms a list of FFDC files to a list of FFDC tuples. */
+inline void transformFFDC(const std::vector<FFDCFile>& i_files,
+                          std::vector<FFDCTuple>& o_tuples)
+{
+    o_tuples.clear();
+
+    std::transform(i_files.begin(), i_files.end(), o_tuples.begin(),
+                   [](const auto& e) {
+                       return FFDCTuple(
+                           e.getFormat(), e.getSubType(), e.getVersion(),
+                           sdbusplus::message::unix_fd(e.getFileDescriptor()));
+                   });
+}
+
 } // namespace util
diff --git a/util/file_descriptor.hpp b/util/file_descriptor.hpp
index 51c125e..425a2bb 100644
--- a/util/file_descriptor.hpp
+++ b/util/file_descriptor.hpp
@@ -77,7 +77,7 @@
      * @return File descriptor.  Returns -1 if this object does not contain an
      *         open file descriptor.
      */
-    int operator()()
+    int operator()() const
     {
         return fd;
     }
