diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
index 5c946c4..83c9cb9 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/ImportProject.java
@@ -232,7 +232,8 @@
       checkProjectInSource(pm);
       setParentProjectName(input, pm);
       checkPreconditions(pm);
-      try (Repository repo = openRepoStep.open(targetProject, resume, pm)) {
+      try (Repository repo = openRepoStep.open(targetProject, resume, pm,
+          parent)) {
         ImportJson.persist(lockFile, importJson.format(input, info), pm);
         configRepoStep.configure(repo, srcProject, input.from, pm);
         gitFetchStep.fetch(input.user, input.pass, repo, pm);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
index 8b347a1..cacc18e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/importer/OpenRepositoryStep.java
@@ -19,13 +19,16 @@
 
 import com.google.gerrit.extensions.registration.DynamicSet;
 import com.google.gerrit.extensions.restapi.ResourceConflictException;
+import com.google.gerrit.extensions.restapi.UnprocessableEntityException;
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.git.GitRepositoryManager;
 import com.google.gerrit.server.project.CreateProjectArgs;
 import com.google.gerrit.server.project.ProjectCache;
+import com.google.gerrit.server.project.ProjectsCollection;
 import com.google.gerrit.server.validators.ProjectCreationValidationListener;
 import com.google.gerrit.server.validators.ValidationException;
 import com.google.inject.Inject;
+import com.google.inject.Provider;
 import com.google.inject.Singleton;
 
 import org.eclipse.jgit.errors.RepositoryNotFoundException;
@@ -40,18 +43,22 @@
   private final ProjectCache projectCache;
   private final DynamicSet<ProjectCreationValidationListener>
       projectCreationValidationListeners;
+  private final Provider<ProjectsCollection> projectsCollection;
 
   @Inject
   OpenRepositoryStep(GitRepositoryManager git,
       ProjectCache projectCache,
-      DynamicSet<ProjectCreationValidationListener> projectCreationValidationListeners) {
+      DynamicSet<ProjectCreationValidationListener> projectCreationValidationListeners,
+      Provider<ProjectsCollection> projectsCollection) {
     this.git = git;
     this.projectCache = projectCache;
     this.projectCreationValidationListeners = projectCreationValidationListeners;
+    this.projectsCollection = projectsCollection;
   }
 
-  Repository open(Project.NameKey name, boolean resume, ProgressMonitor pm)
-      throws ResourceConflictException, IOException {
+  Repository open(Project.NameKey name, boolean resume, ProgressMonitor pm,
+      Project.NameKey parent)
+      throws ResourceConflictException, IOException, UnprocessableEntityException {
     pm.beginTask("Open repository", 1);
     try {
       Repository repo = git.openRepository(name);
@@ -69,17 +76,18 @@
       }
     }
 
-    beforeCreateProject(name);
+    beforeCreateProject(name, parent);
     Repository repo = git.createRepository(name);
     onProjectCreated(name);
     updateAndEnd(pm);
     return repo;
   }
 
-  private void beforeCreateProject(Project.NameKey name)
-      throws ResourceConflictException {
+  private void beforeCreateProject(Project.NameKey name, Project.NameKey parent)
+      throws ResourceConflictException, UnprocessableEntityException, IOException {
     CreateProjectArgs args = new CreateProjectArgs();
     args.setProjectName(name);
+    args.newParent = projectsCollection.get().parse(parent.get()).getControl();
     for (ProjectCreationValidationListener l : projectCreationValidationListeners) {
       try {
         l.validateNewProject(args);
