diff --no-dereference -uNr opennebula-5.4.1.orig/src/group/GroupPool.cc opennebula-5.4.1-nodelusergroupowning/src/group/GroupPool.cc
--- opennebula-5.4.1.orig/src/group/GroupPool.cc	2017-09-19 08:03:16.000000000 -0500
+++ opennebula-5.4.1-nodelusergroupowning/src/group/GroupPool.cc	2017-10-17 11:39:12.503868090 -0500
@@ -202,6 +202,24 @@
         return -3;
     }
 
+    // Return an error if there are any resources owned by this group
+    /// Images
+    ImagePool *ipool = Nebula::instance().get_ipool();
+    ostringstream gidSearchPattern;
+    std::vector<int> imageIdsOwnedByGroup;
+
+    gidSearchPattern << "gid = " << group->get_oid();
+    ipool->search(imageIdsOwnedByGroup, "image_pool", gidSearchPattern.str());
+    if (imageIdsOwnedByGroup.size() > 0) {
+        ostringstream oss;
+        oss << "Group " << group->get_oid();
+        oss << " owns images";
+        error_msg = oss.str();
+        NebulaLog::log("GROUP", Log::ERROR, error_msg);
+        return -4;
+    }
+
+    // Pass deletion to the next layer of abstraction
     rc = group->drop(db);
 
     if( rc != 0 )
