diff --git a/lib/gerrit/BUCK b/lib/gerrit/BUCK
index 629181b..950a90d 100644
--- a/lib/gerrit/BUCK
+++ b/lib/gerrit/BUCK
@@ -1,12 +1,12 @@
 include_defs('//bucklets/maven_jar.bucklet')
 
-VER = '2.12'
+VER = '2.13'
 REPO = MAVEN_CENTRAL
 
 maven_jar(
   name = 'plugin-api',
   id = 'com.google.gerrit:gerrit-plugin-api:' + VER,
-  sha1 = '8ce1f6e65078bbcf03a1758f96b3ebca19b7fe3c',
+  sha1 = 'e25d55b8f41627c4ae6b9d2069ec398638b219a3',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
@@ -14,7 +14,7 @@
 maven_jar(
   name = 'acceptance-framework',
   id = 'com.google.gerrit:gerrit-acceptance-framework:' + VER,
-  sha1 = 'f35140148294239012b1a5052181783c0c9f4ffd',
+  sha1 = 'a6913a61196a8fccdb45e761f43a0b7e21867c90',
   license = 'Apache2.0',
   attach_source = False,
   repository = REPO,
diff --git a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
index 6022a04..d11afca 100644
--- a/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
+++ b/src/main/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidator.java
@@ -37,6 +37,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+
 @Singleton
 public class ProjectCreationValidator
     implements ProjectCreationValidationListener {
@@ -127,7 +129,7 @@
             .apply(TopLevelResource.INSTANCE, new GroupInput());
       }
       return AccountGroup.UUID.parse(groupInfo.id);
-    } catch (RestApiException | OrmException e) {
+    } catch (RestApiException | OrmException | IOException e ) {
       log.error("Failed to create project " + name + ": " + e.getMessage(), e);
       throw new ValidationException(AN_ERROR_OCCURRED_MSG);
     }
diff --git a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorTest.java b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorTest.java
index d305210..b61f1aa 100644
--- a/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorTest.java
+++ b/src/test/java/com/ericsson/gerrit/plugins/projectgroupstructure/ProjectCreationValidatorTest.java
@@ -30,13 +30,10 @@
 import com.google.gerrit.reviewdb.client.Project;
 import com.google.gerrit.server.project.ProjectState;
 
-import org.apache.http.HttpStatus;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
-import java.io.IOException;
-
 @Ignore
 public class ProjectCreationValidatorTest extends PluginDaemonTest {
 
@@ -49,14 +46,14 @@
   }
 
   @Test
-  public void shouldAllowAnyUsersToCreateUnderAllProjects() throws IOException {
+  public void shouldAllowAnyUsersToCreateUnderAllProjects() throws Exception {
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
-    assertThat(adminSession.put("/projects/" + name("someProject"), in)
-        .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+    adminRestSession.put("/projects/" + name("someProject"), in)
+        .assertCreated();
 
-    assertThat(userSession.put("/projects/" + name("someOtherProject"), in)
-        .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + name("someOtherProject"), in)
+        .assertCreated();
   }
 
   @Test
@@ -65,13 +62,12 @@
     String parent = name("parentProject");
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
-    assertThat(userSession.put("/projects/" + parent, in).getStatusCode())
-        .isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + parent, in).assertCreated();
 
     // Creation is rejected when root project name contains slashes
     RestResponse r =
-        userSession.put("/projects/" + Url.encode("a/parentProject"), in);
-    assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_CONFLICT);
+        userRestSession.put("/projects/" + Url.encode("a/parentProject"), in);
+    r.assertConflict();
     assertThat(r.getEntityContent())
         .contains("Root project name cannot contains slashes");
   }
@@ -83,34 +79,32 @@
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
     String parent = name("parentProject");
-    assertThat(userSession.put("/projects/" + parent, in).getStatusCode())
-        .isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + parent, in).assertCreated();
 
     // Creation is rejected when project name does not start with parent
     in = new ProjectInput();
     in.parent = parent;
-    RestResponse r = userSession.put("/projects/childProject", in);
-    assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_CONFLICT);
+    RestResponse r = userRestSession.put("/projects/childProject", in);
+    r.assertConflict();
     assertThat(r.getEntityContent())
         .contains("Project name must start with parent project name");
 
     // Creation is OK when project name starts with parent
-    assertThat(
-        userSession.put("/projects/" + Url.encode(parent + "/childProject"), in)
-            .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in)
+        .assertCreated();
 
     // Creation is rejected when project name does not start with nested parent
     String nestedParent = parent + "/childProject";
     in.parent = nestedParent;
-    r = userSession.put("/projects/grandchild", in);
-    assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_CONFLICT);
+    r = userRestSession.put("/projects/grandchild", in);
+    r.assertConflict();
     assertThat(r.getEntityContent())
         .contains("Project name must start with parent project name");
 
     // Creation is OK when project name starts with nested parent
-    assertThat(userSession
+    userRestSession
         .put("/projects/" + Url.encode(nestedParent + "/grandchild"), in)
-        .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+        .assertCreated();
   }
 
   @Test
@@ -122,41 +116,36 @@
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
     in.owners = Lists.newArrayList(ownerGroup);
-    assertThat(adminSession.put("/projects/" + parent, in).getStatusCode())
-        .isEqualTo(HttpStatus.SC_CREATED);
+    adminRestSession.put("/projects/" + parent, in).assertCreated();
 
     // Creation is rejected when user is not owner of parent
     in = new ProjectInput();
     in.parent = parent;
-    RestResponse r = userSession
+    RestResponse r = userRestSession
         .put("/projects/" + Url.encode(parent + "/childProject"), in);
-    assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_CONFLICT);
+    r.assertConflict();
     assertThat(r.getEntityContent())
         .contains("You must be owner of the parent project");
 
     // Creation is OK when user is owner of parent
     g.addMembers(user.username);
-    assertThat(
-        userSession.put("/projects/" + Url.encode(parent + "/childProject"), in)
-            .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + Url.encode(parent + "/childProject"), in)
+        .assertCreated();
   }
 
   @Test
-  public void shouldAllowAdminsToByPassAnyRule() throws IOException {
+  public void shouldAllowAdminsToByPassAnyRule() throws Exception {
     // Root project with a slash
     String parent = name("orgA/parentProject");
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
-    assertThat(
-        adminSession.put("/projects/" + Url.encode(parent), in).getStatusCode())
-            .isEqualTo(HttpStatus.SC_CREATED);
+    adminRestSession.put("/projects/" + Url.encode(parent), in).assertCreated();
 
     // Child project without name of parent as prefix
     in = new ProjectInput();
     in.parent = parent;
-    assertThat(
-        adminSession.put("/projects/" + Url.encode("orgA/childProject"), in)
-            .getStatusCode()).isEqualTo(HttpStatus.SC_CREATED);
+    adminRestSession.put("/projects/" + Url.encode("orgA/childProject"), in)
+        .assertCreated();
   }
 
   @Test
@@ -165,8 +154,7 @@
     String rootProject = name("rootProject");
     ProjectInput in = new ProjectInput();
     in.permissionsOnly = true;
-    assertThat(userSession.put("/projects/" + rootProject, in).getStatusCode())
-        .isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + rootProject, in).assertCreated();
     ProjectState projectState =
         projectCache.get(new Project.NameKey(rootProject));
     assertThat(projectState.getOwners().size()).isEqualTo(1);
@@ -177,8 +165,7 @@
     rootProject = name("rootProject2");
     String existingGroupName = rootProject + "-admins";
     gApi.groups().create(existingGroupName);
-    assertThat(userSession.put("/projects/" + rootProject, in).getStatusCode())
-        .isEqualTo(HttpStatus.SC_CREATED);
+    userRestSession.put("/projects/" + rootProject, in).assertCreated();
     projectState = projectCache.get(new Project.NameKey(rootProject));
     assertThat(projectState.getOwners().size()).isEqualTo(1);
     String expectedOwnerGroup = existingGroupName + "-"
@@ -190,8 +177,8 @@
 
   @Test
   public void shouldBlockRootCodeProject() throws Exception {
-    RestResponse r = userSession.put("/projects/" + Url.encode("project1"));
-    assertThat(r.getStatusCode()).isEqualTo(HttpStatus.SC_CONFLICT);
+    RestResponse r = userRestSession.put("/projects/" + Url.encode("project1"));
+    r.assertConflict();
     assertThat(r.getEntityContent())
         .contains("Regular projects are not allowed as root");
   }
