diff --git a/presence/Makefile.am b/presence/Makefile.am
index c3c32a5..e06a135 100644
--- a/presence/Makefile.am
+++ b/presence/Makefile.am
@@ -5,6 +5,7 @@
 	phosphor-fan-presence-tach
 
 phosphor_fan_presence_tach_SOURCES = \
+	fan.cpp \
 	fan_enclosure.cpp \
 	tach_sensor.cpp \
 	tach_detect.cpp
diff --git a/presence/fan.cpp b/presence/fan.cpp
new file mode 100644
index 0000000..71f17c7
--- /dev/null
+++ b/presence/fan.cpp
@@ -0,0 +1,71 @@
+/**
+ * Copyright © 2017 IBM Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+#include <map>
+#include <sdbusplus/message.hpp>
+#include <string>
+#include "fan.hpp"
+#include "sdbusplus.hpp"
+
+namespace phosphor
+{
+namespace fan
+{
+namespace presence
+{
+
+using namespace std::literals::string_literals;
+
+static const auto invNamespace = "/xyz/openbmc_project/inventory"s;
+static const auto itemIface = "xyz.openbmc_project.Inventory.Item"s;
+static const auto invMgrIface = "xyz.openbmc_project.Inventory.Manager"s;
+
+void setPresence(const Fan& fan, bool newState)
+{
+    using namespace sdbusplus::message;
+
+    using Properties = std::map<std::string, variant<std::string, bool>>;
+    using Interfaces = std::map<std::string, Properties>;
+
+    std::map<object_path, Interfaces> obj =
+    {{
+        std::get<1>(fan),
+        {{
+            itemIface,
+            {
+                {"Present"s, newState},
+                {"PrettyName"s, std::get<0>(fan)},
+            }
+        }}
+    }};
+
+    util::SDBusPlus::lookupAndCallMethod(
+            invNamespace,
+            invMgrIface,
+            "Notify"s,
+            obj);
+}
+
+bool getPresence(const Fan& fan)
+{
+    return util::SDBusPlus::getProperty<bool>(
+            std::get<1>(fan),
+            itemIface,
+            "Present"s);
+}
+
+} // namespace presence
+} // namespace fan
+} // namespace phosphor
diff --git a/presence/fan.hpp b/presence/fan.hpp
new file mode 100644
index 0000000..c743e3e
--- /dev/null
+++ b/presence/fan.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include <string>
+#include <tuple>
+
+namespace phosphor
+{
+namespace fan
+{
+namespace presence
+{
+
+/** @brief PrettyName and inventory path. */
+using Fan = std::tuple<std::string, std::string>;
+
+/**
+ * @brief Update the presence state.
+ *
+ * Update the Present property of the
+ * xyz.openbmc_project.Inventory.Item interface.
+ *
+ * @param[in] fan - The fan to update.
+ * @param[in] newState - The new state of the fan.
+ */
+void setPresence(const Fan& fan, bool newState);
+
+/**
+ * @brief Read the presence state.
+ *
+ * Read the Present property of the
+ * xyz.openbmc_project.Inventory.Item
+ *
+ * @param[in] fan - The fan to read.
+ */
+bool getPresence(const Fan& fan);
+} // namespace presence
+} // namespace fan
+} // namespace phosphor
