diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
index 1a803e9..46fc817 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfig.java
@@ -64,36 +64,36 @@
   public boolean isEnabled(Event event) {
     if (event instanceof PatchSetCreatedEvent) {
       PatchSetCreatedEvent e = (PatchSetCreatedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof CommentAddedEvent) {
       CommentAddedEvent e = (CommentAddedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof ChangeMergedEvent) {
       ChangeMergedEvent e = (ChangeMergedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof ChangeAbandonedEvent) {
       ChangeAbandonedEvent e = (ChangeAbandonedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof ChangeRestoredEvent) {
       ChangeRestoredEvent e = (ChangeRestoredEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof DraftPublishedEvent) {
       DraftPublishedEvent e = (DraftPublishedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.getRefName());
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else if (event instanceof RefUpdatedEvent) {
       RefUpdatedEvent e = (RefUpdatedEvent) event;
-      return isEnabled(e.getProjectNameKey().get(), e.refUpdate.get().refName);
+      return isEnabled(e.getProjectNameKey(), e.getRefName());
     } else {
       log.debug("Event " + event + " not recognised and ignored");
       return false;
     }
   }
 
-  public boolean isEnabled(String project, String refName) {
-    ProjectState projectState = projectCache.get(new Project.NameKey(project));
+  public boolean isEnabled(Project.NameKey projectNK, String refName) {
+    ProjectState projectState = projectCache.get(projectNK);
     if (projectState == null) {
       log.error("Failed to check if " + pluginName + " is enabled for project "
-          + project + ": Project " + project + " not found");
+          + projectNK.get() + ": Project " + projectNK.get() + " not found");
       return false;
     }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java b/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
index c05118a..4ce687d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateComment.java
@@ -143,7 +143,7 @@
   @Override
   public List<CommitValidationMessage> onCommitReceived(
       CommitReceivedEvent receiveEvent) throws CommitValidationException {
-    if (itsConfig.isEnabled(receiveEvent.project.getName(), receiveEvent.refName)) {
+    if (itsConfig.isEnabled(receiveEvent.getProjectNameKey(), receiveEvent.getRefName())) {
       return validCommit(receiveEvent.commit);
     } else {
       return Collections.emptyList();
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
index 678bc76..c0ff02b 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/its/ItsConfigTest.java
@@ -116,7 +116,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentNoBranchDisabled() {
@@ -127,7 +128,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentNoBranchEnforced() {
@@ -138,7 +140,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchEnabled() {
@@ -149,7 +152,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchDisabled() {
@@ -160,7 +164,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchEnforced() {
@@ -171,7 +176,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentNonMatchingBranchEnabled() {
@@ -182,7 +188,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentNonMatchingBranchDisabled() {
@@ -193,7 +200,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentNonMatchingBranchEnforced() {
@@ -204,7 +212,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchMiddleEnabled() {
@@ -215,7 +224,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchMiddleDisabled() {
@@ -226,7 +236,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefNoParentMatchingBranchMiddleEnforced() {
@@ -237,7 +248,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefParentNoBranchEnabled() {
@@ -248,7 +260,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefParentNoBranchDisabled() {
@@ -259,7 +272,8 @@
 
     replayMocks();
 
-    assertFalse(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertFalse(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledRefParentNoBranchEnforced() {
@@ -270,7 +284,8 @@
 
     replayMocks();
 
-    assertTrue(itsConfig.isEnabled("testProject", "refs/heads/testBranch"));
+    Project.NameKey projectNK = new Project.NameKey("testProject");
+    assertTrue(itsConfig.isEnabled(projectNK, "refs/heads/testBranch"));
   }
 
   public void testIsEnabledEventNoBranches() {
@@ -516,11 +531,10 @@
     setupIsEnabled("true", null, branches);
 
     RefUpdatedEvent event = new RefUpdatedEvent();
-
-    RefUpdateAttribute refUpdate = new RefUpdateAttribute();
-    refUpdate.project = "testProject";
-    refUpdate.refName = "refs/heads/testBranch";
-    event.refUpdate = Suppliers.ofInstance(refUpdate);
+    RefUpdateAttribute refUpdateAttribute = new RefUpdateAttribute();
+    refUpdateAttribute.project = "testProject";
+    refUpdateAttribute.refName = "refs/heads/testBranch";
+    event.refUpdate = Suppliers.ofInstance(refUpdateAttribute);
 
     ItsConfig itsConfig = createItsConfig();
 
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
index 5ddc514..5a45dd4 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/base/validation/ItsValidateCommentTest.java
@@ -467,7 +467,8 @@
   private void setupCommonMocks() {
     expect(itsConfig.getIssuePattern())
         .andReturn(Pattern.compile("bug#(\\d+)")).anyTimes();
-    expect(itsConfig.isEnabled("myProject", null)).andReturn(true)
+    Project.NameKey projectNK = new Project.NameKey("myProject");
+    expect(itsConfig.isEnabled(projectNK, null)).andReturn(true)
         .anyTimes();
   }
 
