diff --git a/control/zone.cpp b/control/zone.cpp
index 5fe9b01..784004e 100644
--- a/control/zone.cpp
+++ b/control/zone.cpp
@@ -120,6 +120,32 @@
     }
 }
 
+void Zone::removeService(const Group* group,
+                         const std::string& name)
+{
+    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))
+        {
+            // Remove service name from group
+            sNames.erase(it);
+        }
+    }
+    catch (const std::out_of_range& oore)
+    {
+        // No services for group found
+    }
+}
+
 void Zone::setServiceOwner(const Group* group,
                            const std::string& name,
                            const bool hasOwner)
@@ -152,7 +178,8 @@
 
 void Zone::setServices(const Group* group)
 {
-    // TODO Remove empty service name if exists
+    // Remove the empty service name if exists
+    removeService(group, "");
     for (auto it = group->begin(); it != group->end(); ++it)
     {
         std::string name;
diff --git a/control/zone.hpp b/control/zone.hpp
index 9565933..dbf4378 100644
--- a/control/zone.hpp
+++ b/control/zone.hpp
@@ -140,6 +140,15 @@
         };
 
         /**
+         * @brief Remove a service associated to a group
+         *
+         * @param[in] group - Group associated with service
+         * @param[in] name - Service name to remove
+         */
+        void removeService(const Group* group,
+                           const std::string& name);
+
+        /**
          * @brief Set or update a service name owner in use
          *
          * @param[in] group - Group associated with service
