diff --git a/BUILD b/BUILD
index 85d236c..03fd510 100644
--- a/BUILD
+++ b/BUILD
@@ -26,6 +26,7 @@
         ":supermanifest__plugin",
         "//java/com/google/gerrit/acceptance:lib",
         "//lib/bouncycastle:bcprov",
+        "//lib/commons:lang3",
         "//lib/jetty:http",
         "//plugins:plugin-lib",
     ],
diff --git a/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java b/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
index 6160532..f9b2a5f 100644
--- a/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
+++ b/javatests/com/googlesource/gerrit/plugins/supermanifest/JiriSuperManifestIT.java
@@ -22,13 +22,16 @@
 import com.google.gerrit.acceptance.PushOneCommit;
 import com.google.gerrit.acceptance.PushOneCommit.Result;
 import com.google.gerrit.acceptance.TestPlugin;
+import com.google.gerrit.acceptance.testsuite.project.ProjectOperations;
 import com.google.gerrit.extensions.api.projects.BranchApi;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.Project.NameKey;
 import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.inject.Inject;
 import java.net.URI;
 import java.util.Arrays;
+import org.apache.commons.lang.RandomStringUtils;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
 import org.eclipse.jgit.junit.TestRepository;
 import org.eclipse.jgit.lib.BlobBasedConfig;
@@ -42,10 +45,17 @@
 public class JiriSuperManifestIT extends LightweightPluginDaemonTest {
   NameKey[] testRepoKeys;
 
+  @Inject private ProjectOperations projectOperations;
+
   void setupTestRepos(String prefix) throws Exception {
     testRepoKeys = new NameKey[2];
     for (int i = 0; i < 2; i++) {
-      testRepoKeys[i] = createProject(prefix + i);
+      testRepoKeys[i] =
+          projectOperations
+              .newProject()
+              .name(RandomStringUtils.randomAlphabetic(8) + prefix + i)
+              .withEmptyCommit()
+              .create();
 
       TestRepository<InMemoryRepository> repo = cloneProject(testRepoKeys[i], admin);
 
diff --git a/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java b/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
index f97451a..38ff0c2 100644
--- a/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
+++ b/javatests/com/googlesource/gerrit/plugins/supermanifest/RepoSuperManifestIT.java
@@ -23,12 +23,15 @@
 import com.google.gerrit.acceptance.PushOneCommit.Result;
 import com.google.gerrit.acceptance.RestResponse;
 import com.google.gerrit.acceptance.TestPlugin;
+import com.google.gerrit.acceptance.testsuite.project.ProjectOperations;
 import com.google.gerrit.extensions.api.projects.BranchApi;
 import com.google.gerrit.extensions.restapi.ResourceNotFoundException;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.reviewdb.client.RefNames;
+import com.google.inject.Inject;
 import java.net.URI;
 import java.util.Arrays;
+import org.apache.commons.lang.RandomStringUtils;
 import org.eclipse.jetty.http.HttpStatus;
 import org.eclipse.jgit.internal.storage.dfs.InMemoryRepository;
 import org.eclipse.jgit.junit.TestRepository;
@@ -43,11 +46,18 @@
   Project.NameKey[] testRepoKeys;
   String[] testRepoCommits;
 
+  @Inject private ProjectOperations projectOperations;
+
   void setupTestRepos(String prefix) throws Exception {
     testRepoKeys = new Project.NameKey[2];
     testRepoCommits = new String[2];
     for (int i = 0; i < 2; i++) {
-      testRepoKeys[i] = createProject(prefix + i);
+      testRepoKeys[i] =
+          projectOperations
+              .newProject()
+              .name(RandomStringUtils.randomAlphabetic(8) + prefix + i)
+              .withEmptyCommit()
+              .create();
 
       TestRepository<InMemoryRepository> repo = cloneProject(testRepoKeys[i], admin);
 
@@ -552,8 +562,7 @@
 
     Config base = new Config();
     String gitmodule = branch.file(".gitmodules").asString();
-    BlobBasedConfig cfg =
-        new BlobBasedConfig(base, gitmodule.getBytes(UTF_8));
+    BlobBasedConfig cfg = new BlobBasedConfig(base, gitmodule.getBytes(UTF_8));
 
     String subUrl = cfg.getString("submodule", testRepoKeys[0].get(), "url");
 
