diff --git a/control/types.hpp b/control/types.hpp
index d3ddb16..915b8b4 100644
--- a/control/types.hpp
+++ b/control/types.hpp
@@ -53,6 +53,10 @@
                                 std::string,
                                 PropertyVariantType>;
 
+constexpr auto namePos = 0;
+constexpr auto hasOwnerPos = 1;
+using Service = std::tuple<std::string, bool>;
+
 constexpr auto intervalPos = 0;
 using Timer = std::tuple<std::chrono::seconds>;
 
diff --git a/control/zone.cpp b/control/zone.cpp
index 3d7852e..b9a7583 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -115,6 +115,36 @@
     }
 }
 
+void Zone::setServiceOwner(const Group* group,
+                           const std::string& name,
+                           const bool hasOwner)
+{
+    try
+    {
+        auto& sNames = _services.at(*group);
+        auto it = std::find_if(
+            sNames.begin(),
+            sNames.end(),
+            [&name](auto const& entry)
+            {
+                return name == std::get<namePos>(entry);
+            }
+        );
+        if (it != std::end(sNames))
+        {
+            std::get<hasOwnerPos>(*it) = hasOwner;
+        }
+        else
+        {
+            _services[*group].emplace_back(name, hasOwner);
+        }
+    }
+    catch (const std::out_of_range& oore)
+    {
+        _services[*group].emplace_back(name, hasOwner);
+    }
+}
+
 void Zone::setFloor(uint64_t speed)
 {
     _floorSpeed = speed;
diff --git a/control/zone.hpp b/control/zone.hpp
index 8869f91..9c08032 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -128,6 +128,17 @@
         };
 
         /**
+         * @brief Set or update a service name owner in use
+         *
+         * @param[in] group - Group associated with service
+         * @param[in] name - Service name
+         * @param[in] hasOwner - Whether the service is owned or not
+         */
+        void setServiceOwner(const Group* group,
+                             const std::string& name,
+                             const bool hasOwner);
+
+        /**
          * @brief Initialize a set speed event properties and actions
          *
          * @param[in] event - Set speed event
@@ -372,6 +383,11 @@
         std::map<const Group, bool> _active;
 
         /**
+         * @brief Map of group service names
+         */
+        std::map<const Group, std::vector<Service>> _services;
+
+        /**
          * @brief List of signal event arguments and Dbus matches for callbacks
          */
         std::vector<SignalEvent> _signalEvents;
