diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraConfig.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraConfig.java
index f4cf11d..c2160c3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraConfig.java
@@ -137,7 +137,7 @@
     if (!Strings.isNullOrEmpty(projectName)) {
       try {
         return cfgFactory.getFromProjectConfigWithInheritance(
-            new Project.NameKey(projectName), pluginName);
+            Project.nameKey(projectName), pluginName);
       } catch (NoSuchProjectException e) {
         log.warn(
             "Unable to get project configuration for {}: project '{}' not found ",
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersion.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersion.java
index db6de54..7ea0514 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersion.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersion.java
@@ -54,7 +54,7 @@
     if (!parameters.isPresent()) {
       return;
     }
-    Project.NameKey projectName = new Project.NameKey(properties.get("project"));
+    Project.NameKey projectName = Project.nameKey(properties.get("project"));
     JiraItsServerInfo jiraItsServerInfo = serverInfoProvider.get(projectName);
     jiraClient.markVersionAsReleased(
         jiraItsServerInfo, itsProject, parameters.get().getPropertyValue());
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraConfigTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraConfigTest.java
index 5348e8f..e1ac132 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraConfigTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraConfigTest.java
@@ -64,7 +64,7 @@
 
   @Test
   public void testGetPluginConfigFor() throws NoSuchProjectException {
-    Project.NameKey project = new Project.NameKey("$project");
+    Project.NameKey project = Project.nameKey("$project");
     PluginConfig pluginCfg = new PluginConfig(PLUGIN_NAME, new Config());
     when(cfgFactory.getFromProjectConfigWithInheritance(project, PLUGIN_NAME))
         .thenReturn(pluginCfg);
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerInfoProviderTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerInfoProviderTest.java
index c8fabc7..755b384 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerInfoProviderTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerInfoProviderTest.java
@@ -28,7 +28,7 @@
 @RunWith(MockitoJUnitRunner.class)
 public class JiraItsServerInfoProviderTest {
 
-  private static final Project.NameKey PROJECT_NAMEKEY = new Project.NameKey("project");
+  private static final Project.NameKey PROJECT_NAMEKEY = Project.nameKey("project");
 
   @Mock private JiraConfig jiraConfig;
   @Mock private JiraItsServerCache serverCache;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerTest.java
index 78cb0fb..cc88df7 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/JiraItsServerTest.java
@@ -27,7 +27,7 @@
 
 @RunWith(MockitoJUnitRunner.class)
 public class JiraItsServerTest {
-  private static final Project.NameKey PROJECT_NAMEKEY = new Project.NameKey("project");
+  private static final Project.NameKey PROJECT_NAMEKEY = Project.nameKey("project");
 
   @Mock private JiraItsServerInfoProvider jiraItsserverInfoProvider;
   @Mock private JiraItsFacade itsFacade;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersionTest.java b/src/test/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersionTest.java
index ad29c2a..3acd351 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersionTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/its/jira/workflow/MarkPropertyAsReleasedVersionTest.java
@@ -48,7 +48,7 @@
     its = mock(ItsFacade.class);
     JiraItsServerInfoProvider serverInfoProvider = mock(JiraItsServerInfoProvider.class);
     serverInfo = mock(JiraItsServerInfo.class);
-    when(serverInfoProvider.get(new Project.NameKey(PROJECT_NAME))).thenReturn(serverInfo);
+    when(serverInfoProvider.get(Project.nameKey(PROJECT_NAME))).thenReturn(serverInfo);
     jiraClient = mock(JiraClient.class);
     parametersExtractor = mock(MarkPropertyAsReleasedVersionParametersExtractor.class);
     markPropertyAsReleasedVersion =
