diff --git a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
index 32037b1..9159bb0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroup.java
@@ -103,10 +103,11 @@
   @Override
   public GroupDescription.Basic get(AccountGroup.UUID uuid) {
     String ident = username(uuid);
-    Optional<AccountState> state;
+    Optional<AccountState> state = Optional.empty();
     if (ident.matches(ACCOUNT_ID_PATTERN)) {
       state = accountCache.get(Account.id(Integer.parseInt(ident)));
-    } else if (ExternalId.isValidUsername(ident)) {
+    }
+    if (!state.isPresent() && ExternalId.isValidUsername(ident)) {
       state = accountCache.getByUsername(ident);
     } else {
       return null;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java b/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java
index c6e6e80..8d18233 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/singleusergroup/SingleUserGroupTest.java
@@ -18,9 +18,14 @@
 
 import com.google.gerrit.acceptance.LightweightPluginDaemonTest;
 import com.google.gerrit.acceptance.NoHttpd;
+import com.google.gerrit.acceptance.TestAccount;
 import com.google.gerrit.acceptance.TestPlugin;
 import com.google.gerrit.acceptance.testsuite.request.RequestScopeOperations;
+import com.google.gerrit.common.data.GroupDescription;
 import com.google.gerrit.extensions.common.GroupInfo;
+import com.google.gerrit.reviewdb.client.AccountGroup;
+import com.google.gerrit.server.IdentifiedUser;
+import com.google.gerrit.server.account.GroupBackend;
 import com.google.inject.Inject;
 import java.util.Map;
 import org.junit.Test;
@@ -32,6 +37,8 @@
 public class SingleUserGroupTest extends LightweightPluginDaemonTest {
   @Inject private RequestScopeOperations requestScopeOperations;
 
+  @Inject private GroupBackend groupBackend;
+
   @Test
   public void testSuggestion() throws Exception {
     // No ability to modify account and therefore no ACL to see secondary email
@@ -39,4 +46,18 @@
     Map<String, GroupInfo> groups = gApi.groups().list().withSuggest("adm").getAsMap();
     assertThat(groups).containsKey("user/Administrator (admin)");
   }
+
+  @Test
+  public void testAllNumericUserGroup() throws Exception {
+    String numericUsername = "123456";
+    TestAccount numericAccount = accountCreator.create(numericUsername);
+    IdentifiedUser numericUser = identifiedUserFactory.create(numericAccount.id());
+
+    GroupDescription.Basic numericUserGroup =
+        groupBackend.get(AccountGroup.UUID.parse("user:" + numericUsername));
+    assertThat(numericUserGroup).isNotNull();
+
+    assertThat(groupBackend.membershipsOf(numericUser).contains(numericUserGroup.getGroupUUID()))
+        .isTrue();
+  }
 }
