diff --git a/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java b/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
index a1f68e6..aef9f78 100644
--- a/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
+++ b/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
@@ -70,7 +70,7 @@
       TestRepository<InMemoryRepository> repo = cloneProject(testRepoKeys[i], admin);
 
       PushOneCommit push =
-          pushFactory.create(admin.getIdent(), repo, "Subject", "file" + i, "file");
+          pushFactory.create(admin.newIdent(), repo, "Subject", "file" + i, "file");
       push.to("refs/heads/master").assertOkStatus();
     }
   }
@@ -82,7 +82,7 @@
     allProjectRepo.reset("config");
     PushOneCommit push =
         pushFactory.create(
-            admin.getIdent(), allProjectRepo, "Subject", "supermanifest.config", config);
+            admin.newIdent(), allProjectRepo, "Subject", "supermanifest.config", config);
     PushOneCommit.Result res = push.to("refs/meta/config");
     res.assertOkStatus();
   }
@@ -122,7 +122,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -153,7 +153,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -185,7 +185,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -248,11 +248,11 @@
             + "\" path=\"manifest2\" />\n"
             + "</projects>\n</manifest>\n";
     pushFactory
-        .create(admin.getIdent(), manifest2Repo, "Subject", "default", xml2)
+        .create(admin.newIdent(), manifest2Repo, "Subject", "default", xml2)
         .to("refs/heads/master")
         .assertOkStatus();
     pushFactory
-        .create(admin.getIdent(), manifest1Repo, "Subject", "default", xml1)
+        .create(admin.newIdent(), manifest1Repo, "Subject", "default", xml1)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -298,7 +298,7 @@
             + "</projects>\n</manifest>\n";
     Result c =
         pushFactory
-            .create(admin.getIdent(), manifest2Repo, "Subject", "default", xml2)
+            .create(admin.newIdent(), manifest2Repo, "Subject", "default", xml2)
             .to("refs/heads/master");
     c.assertOkStatus();
     RevCommit commit = c.getCommit();
@@ -322,7 +322,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifest2Repo, "Subject", "default", xml2)
+        .create(admin.newIdent(), manifest2Repo, "Subject", "default", xml2)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -348,7 +348,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifest1Repo, "Subject", "default", xml1)
+        .create(admin.newIdent(), manifest1Repo, "Subject", "default", xml1)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -400,7 +400,7 @@
             + "\" path=\"manifest2\" />\n"
             + "</projects>\n</manifest>\n";
     pushFactory
-        .create(admin.getIdent(), manifest2Repo, "Subject", "default", xml2)
+        .create(admin.newIdent(), manifest2Repo, "Subject", "default", xml2)
         .to("refs/heads/b1")
         .assertOkStatus();
 
@@ -423,7 +423,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifest2Repo, "Subject", "default", xml2)
+        .create(admin.newIdent(), manifest2Repo, "Subject", "default", xml2)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -447,7 +447,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifest1Repo, "Subject", "default", xml1)
+        .create(admin.newIdent(), manifest1Repo, "Subject", "default", xml1)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -524,7 +524,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/src1")
         .assertOkStatus();
 
@@ -540,7 +540,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/src2")
         .assertOkStatus();
 
@@ -610,7 +610,7 @@
             + "</projects>\n</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -670,7 +670,7 @@
     NameKey manifestKey = projectOperations.newProject().name(name("manifest")).create();
     TestRepository<InMemoryRepository> manifestRepo = cloneProject(manifestKey, admin);
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -681,7 +681,7 @@
             + "</imports>\n</manifest>";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "super", superXml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "super", superXml)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -703,7 +703,7 @@
     // (rather than the one mentioned in srcPath), to double check that we don't try to be too
     // smart about eluding nops.
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml + " ")
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml + " ")
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -743,7 +743,7 @@
             + "  toolType = jiri\n");
     TestRepository<InMemoryRepository> manifestRepo = cloneProject(manifestKey, admin);
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default", xml)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -759,7 +759,7 @@
             + "</imports>\n</manifest>";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "super", superXml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "super", superXml)
         .to("refs/heads/master")
         .assertOkStatus();
 
diff --git a/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java b/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
index 6f376a5..3f012c6 100644
--- a/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
+++ b/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
@@ -61,7 +61,7 @@
       TestRepository<InMemoryRepository> repo = cloneProject(testRepoKeys[i], admin);
 
       PushOneCommit push =
-          pushFactory.create(admin.getIdent(), repo, "Subject", "file" + i, "file");
+          pushFactory.create(admin.newIdent(), repo, "Subject", "file" + i, "file");
 
       Result r = push.to("refs/heads/master");
       r.assertOkStatus();
@@ -76,7 +76,7 @@
     allProjectRepo.reset("config");
     PushOneCommit push =
         pushFactory.create(
-            admin.getIdent(), allProjectRepo, "Subject", "supermanifest.config", config);
+            admin.newIdent(), allProjectRepo, "Subject", "supermanifest.config", config);
     PushOneCommit.Result res = push.to("refs/meta/config");
     res.assertOkStatus();
   }
@@ -116,7 +116,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -143,7 +143,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -173,7 +173,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -205,7 +205,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -257,7 +257,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -276,7 +276,7 @@
 
     { // Advance head, but the manifest refers to the previous one.
       TestRepository<InMemoryRepository> repo = cloneProject(testRepoKeys[0], admin);
-      PushOneCommit push = pushFactory.create(admin.getIdent(), repo, "Subject", "file3", "file");
+      PushOneCommit push = pushFactory.create(admin.newIdent(), repo, "Subject", "file3", "file");
 
       Result r = push.to("refs/heads/master");
       r.assertOkStatus();
@@ -317,7 +317,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
@@ -417,7 +417,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/src1")
         .assertOkStatus();
 
@@ -432,7 +432,7 @@
             + "</manifest>\n";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/src2")
         .assertOkStatus();
 
@@ -474,7 +474,7 @@
     Project.NameKey manifestKey = projectOperations.newProject().name(name("manifest")).create();
     TestRepository<InMemoryRepository> manifestRepo = cloneProject(manifestKey, admin);
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -485,7 +485,7 @@
             + "</manifest>";
 
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "super.xml", superXml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "super.xml", superXml)
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -506,7 +506,7 @@
     // (rather than the one mentioned in srcPath), to double check that we don't try to be too
     // smart about eliding nops.
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml + " ")
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml + " ")
         .to("refs/heads/master")
         .assertOkStatus();
 
@@ -552,7 +552,7 @@
             + "\" path=\"path1\" />\n"
             + "</manifest>\n";
     pushFactory
-        .create(admin.getIdent(), manifestRepo, "Subject", "default.xml", xml)
+        .create(admin.newIdent(), manifestRepo, "Subject", "default.xml", xml)
         .to("refs/heads/srcbranch")
         .assertOkStatus();
 
