diff --git a/fw-update/activation.cpp b/fw-update/activation.cpp
new file mode 100644
index 0000000..d39cf9f
--- /dev/null
+++ b/fw-update/activation.cpp
@@ -0,0 +1,35 @@
+#include "fw-update/activation.hpp"
+
+#include "fw-update/update_manager.hpp"
+
+namespace pldm
+{
+namespace fw_update
+{
+
+ActivationIntf::Activations
+    Activation::activation(ActivationIntf::Activations value)
+{
+    if (value == ActivationIntf::Activations::Activating)
+    {
+        deleteImpl.reset();
+        updateManager->activatePackage();
+    }
+    else if (value == ActivationIntf::Activations::Active ||
+             value == ActivationIntf::Activations::Failed)
+    {
+        if (!deleteImpl)
+        {
+            deleteImpl = std::make_unique<Delete>(bus, objPath, updateManager);
+        }
+    }
+
+    return ActivationIntf::activation(value);
+}
+
+void Delete::delete_()
+{
+    updateManager->clearActivationInfo();
+}
+} // namespace fw_update
+} // namespace pldm
diff --git a/fw-update/activation.hpp b/fw-update/activation.hpp
index 50a6dbb..4af7c44 100644
--- a/fw-update/activation.hpp
+++ b/fw-update/activation.hpp
@@ -1,7 +1,5 @@
 #pragma once
 
-#include "fw-update/update_manager.hpp"
-
 #include <sdbusplus/bus.hpp>
 #include <xyz/openbmc_project/Object/Delete/server.hpp>
 #include <xyz/openbmc_project/Software/Activation/server.hpp>
@@ -15,6 +13,8 @@
 namespace fw_update
 {
 
+class UpdateManager;
+
 using ActivationIntf = sdbusplus::server::object_t<
     sdbusplus::xyz::openbmc_project::Software::server::Activation>;
 using ActivationProgressIntf = sdbusplus::server::object_t<
@@ -63,10 +63,7 @@
     {}
 
     /** @brief Delete the Activation D-Bus object for the FW update package */
-    void delete_() override
-    {
-        updateManager->clearActivationInfo();
-    }
+    void delete_() override;
 
   private:
     UpdateManager* updateManager;
@@ -104,24 +101,7 @@
 
     /** @brief Overriding Activation property setter function
      */
-    Activations activation(Activations value) override
-    {
-        if (value == Activations::Activating)
-        {
-            deleteImpl.reset();
-            updateManager->activatePackage();
-        }
-        else if (value == Activations::Active || value == Activations::Failed)
-        {
-            if (!deleteImpl)
-            {
-                deleteImpl = std::make_unique<Delete>(bus, objPath,
-                                                      updateManager);
-            }
-        }
-
-        return ActivationIntf::activation(value);
-    }
+    Activations activation(Activations value) override;
 
     /** @brief Overriding RequestedActivations property setter function
      */
diff --git a/fw-update/test/meson.build b/fw-update/test/meson.build
index 5749e14..5af5dc9 100644
--- a/fw-update/test/meson.build
+++ b/fw-update/test/meson.build
@@ -1,5 +1,6 @@
 fw_update_test_src = declare_dependency(
           sources: [
+            '../activation.cpp',
             '../inventory_manager.cpp',
             '../package_parser.cpp',
             '../device_updater.cpp',
diff --git a/fw-update/update_manager.hpp b/fw-update/update_manager.hpp
index 780ce49..26a1de9 100644
--- a/fw-update/update_manager.hpp
+++ b/fw-update/update_manager.hpp
@@ -3,6 +3,7 @@
 #include "common/instance_id.hpp"
 #include "common/types.hpp"
 #include "device_updater.hpp"
+#include "fw-update/activation.hpp"
 #include "package_parser.hpp"
 #include "requester/handler.hpp"
 #include "watch.hpp"
@@ -30,9 +31,6 @@
 using DeviceUpdaterInfos = std::vector<DeviceUpdaterInfo>;
 using TotalComponentUpdates = size_t;
 
-class Activation;
-class ActivationProgress;
-
 class UpdateManager
 {
   public:
diff --git a/meson.build b/meson.build
index 100c0f9..bfbf63e 100644
--- a/meson.build
+++ b/meson.build
@@ -164,6 +164,7 @@
   'pldmd',
   'pldmd/pldmd.cpp',
   'pldmd/dbus_impl_pdr.cpp',
+  'fw-update/activation.cpp',
   'fw-update/inventory_manager.cpp',
   'fw-update/package_parser.cpp',
   'fw-update/device_updater.cpp',
