diff --git a/item_updater.hpp b/item_updater.hpp
index 3c8698f..893e8b9 100755
--- a/item_updater.hpp
+++ b/item_updater.hpp
@@ -18,11 +18,57 @@
         sdbusplus::xyz::openbmc_project::Common::server::FactoryReset,
         sdbusplus::org::openbmc::server::Associations,
         sdbusplus::xyz::openbmc_project::Collection::server::DeleteAll>;
+using GardResetInherit = sdbusplus::server::object::object<
+        sdbusplus::xyz::openbmc_project::Common::server::FactoryReset>;
 namespace MatchRules = sdbusplus::bus::match::rules;
 
 using AssociationList =
         std::vector<std::tuple<std::string, std::string, std::string>>;
 
+constexpr auto GARD_PATH = "/org/openpower/control/gard";
+
+/** @class GardReset
+ *  @brief OpenBMC GARD factory reset implementation.
+ *  @details An implementation of xyz.openbmc_project.Common.FactoryReset under
+ *  /org/openpower/control/gard.
+ */
+class GardReset : public GardResetInherit
+{
+    public:
+        /** @brief Constructs GardReset.
+         *
+         * @param[in] bus    - The Dbus bus object
+         * @param[in] path   - The Dbus object path
+         */
+        GardReset(sdbusplus::bus::bus& bus,
+                  const std::string& path) :
+                GardResetInherit(bus, path.c_str(), true),
+                bus(bus),
+                path(path)
+        {
+            std::vector<std::string> interfaces({interface});
+            bus.emit_interfaces_added(path.c_str(), interfaces);
+        }
+
+        ~GardReset()
+        {
+            std::vector<std::string> interfaces({interface});
+            bus.emit_interfaces_removed(path.c_str(), interfaces);
+        }
+
+    private:
+        // TODO Remove once openbmc/openbmc#1975 is resolved
+        static constexpr auto interface =
+                "xyz.openbmc_project.Common.FactoryReset";
+        sdbusplus::bus::bus& bus;
+        std::string path;
+
+        /**
+         * @brief GARD factory reset - clears the PNOR GARD partition.
+         */
+        void reset() override;
+};
+
 /** @class ItemUpdater
  *  @brief Manages the activation of the host version items.
  */
@@ -47,6 +93,10 @@
                                     std::placeholders::_1))
         {
             processPNORImage();
+            gardReset = std::make_unique<GardReset>(bus, GARD_PATH);
+
+            // Emit deferred signal.
+            emit_object_added();
         }
 
         /** @brief Sets the given priority free by incrementing
@@ -119,6 +169,9 @@
          */
         void removeActiveAssociation(const std::string& path);
 
+        /** @brief Persistent GardReset dbus object */
+        std::unique_ptr<GardReset> gardReset;
+
     private:
         /** @brief Callback function for Software.Version match.
          *  @details Creates an Activation D-Bus object.
