diff --git a/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java b/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java
index 16265fbfbd6bca861a4710138a0413c20df8d914..870639d179eb34dc13e3e89ffc69a20db1244608 100644
--- a/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java
+++ b/cadc-access-control/src/main/java/ca/nrc/cadc/ac/GroupURI.java
@@ -156,16 +156,19 @@ public class GroupURI
     }
 
     @Override
-    public boolean equals(Object rhs)
+    public boolean equals(Object other)
     {
-        if (rhs == null)
+        if (other == null)
             return false;
-        if (this == rhs)
+        if (this == other)
             return true;
-        if (rhs instanceof GroupURI)
+        if (other instanceof GroupURI)
         {
-            GroupURI vu = (GroupURI) rhs;
-            return uri.toString().equals(vu.uri.toString());
+
+            GroupURI oID = (GroupURI) other;
+            String otherURI = getServiceIDString() + "?" + oID.getName();
+            String thisURI = getServiceIDString() + "?" + this.getName();
+            return thisURI.equals(otherURI);
         }
         return false;
     }
@@ -200,15 +203,20 @@ public class GroupURI
         return name;
     }
 
-    public URI getServiceID()
+    public String getServiceIDString()
     {
-        String serviceID = uri.getScheme() +
+        return uri.getScheme() +
             "://" +
             uri.getAuthority() +
             uri.getPath();
+    }
+
+    public URI getServiceID()
+    {
+        String serviceIDString = getServiceIDString();
         try
         {
-            return new URI(serviceID);
+            return new URI(serviceIDString);
         }
         catch (URISyntaxException e)
         {
diff --git a/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java b/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java
index 423f7df9f070bf2d8771c67a31bdb40e3adf28f0..16b658bbefa8308e336af149285fedb6f5575f78 100644
--- a/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java
+++ b/cadc-access-control/src/test/java/ca/nrc/cadc/ac/GroupURITest.java
@@ -18,6 +18,18 @@ public class GroupURITest
         Log4jInit.setLevel("ca.nrc.cadc.ac", Level.DEBUG);
     }
 
+    @Test
+    public void testEquals()
+    {
+        GroupURI uri1 = new GroupURI("ivo://example.org/gms?name");
+        GroupURI uri2 = new GroupURI("ivo://example.org/gms?name");
+        Assert.assertTrue(uri1.equals(uri2));
+
+        uri1 = new GroupURI("ivo://example.org/gms?name");
+        uri2 = new GroupURI("ivo://example.org/gms#name");
+        Assert.assertTrue(uri1.equals(uri2));
+    }
+
     @Test
     public void testMalformed()
     {