diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraClient.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraClient.java
index 9db7ed9..72c5acc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraClient.java
@@ -144,4 +144,25 @@
     }
     return null;
   }
+
+  public String healthCheckAccess() throws IOException {
+    sysInfo();
+    String result = "{\"status\"=\"ok\"}";
+    log.debug("Health check on access result: {}", result);
+    return result;
+  }
+
+  public String healthCheckSysinfo() throws IOException {
+    JiraServerInfo info = sysInfo();
+    String result =
+        "{\"status\"=\"ok\",\"system\"=\"Jira\",\"version\"=\""
+            + info.getVersion()
+            + "\",\"url\"=\""
+            + info.getBaseUri()
+            + "\",\"build\"=\""
+            + info.getBuildNumber()
+            + "\"}";
+    log.debug("Health check on sysinfo result: {}", result);
+    return result;
+  }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
index e94d90e..7e44ffc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/its/jira/JiraItsFacade.java
@@ -65,8 +65,10 @@
 
     return execute(
         () -> {
-          if (check.equals(Check.ACCESS)) return healthCheckAccess();
-          return healthCheckSysinfo();
+          if (check.equals(Check.ACCESS)) {
+            return client().healthCheckAccess();
+          }
+          return client().healthCheckSysinfo();
         });
   }
 
@@ -162,25 +164,4 @@
   public String createLinkForWebui(String url, String text) {
     return "[" + text + "|" + url + "]";
   }
-
-  private String healthCheckAccess() throws IOException {
-    client().sysInfo();
-    String result = "{\"status\"=\"ok\",\"username\"=\"" + getUsername() + "\"}";
-    log.debug("Health check on access result: {}", result);
-    return result;
-  }
-
-  private String healthCheckSysinfo() throws IOException {
-    JiraServerInfo info = client().sysInfo();
-    String result =
-        "{\"status\"=\"ok\",\"system\"=\"Jira\",\"version\"=\""
-            + info.getVersion()
-            + "\",\"url\"=\""
-            + info.getBaseUri()
-            + "\",\"build\"=\""
-            + info.getBuildNumber()
-            + "\"}";
-    log.debug("Health check on sysinfo result: {}", result);
-    return result;
-  }
 }
