diff --git a/asterix-bad/src/test/java/org/apache/asterix/bad/test/BADRecoveryTest.java b/asterix-bad/src/test/java/org/apache/asterix/bad/test/BADRecoveryTest.java
index b62e4b9..277d718 100644
--- a/asterix-bad/src/test/java/org/apache/asterix/bad/test/BADRecoveryTest.java
+++ b/asterix-bad/src/test/java/org/apache/asterix/bad/test/BADRecoveryTest.java
@@ -51,6 +51,8 @@
     private static File installerTargetPath;
     private static String ncServiceHomeDirName;
     private static String ncServiceHomePath;
+    private static String ncServiceSubDirName;
+    private static String ncServiceSubPath;
     private static String scriptHomePath;
     private static String reportPath;
 
@@ -63,15 +65,11 @@
         installerTargetPath =
                 new File(new File(asterixInstallerPath.getParentFile().getParentFile(), "asterix-server"), "target");
         reportPath = new File(installerTargetPath, "failsafe-reports").getAbsolutePath();
-        ncServiceHomeDirName = installerTargetPath.list(new FilenameFilter() {
-            @Override
-            public boolean accept(File dir, String name) {
-                return new File(dir, name).isDirectory() && name.startsWith("asterix-server")
-                        && name.endsWith("binary-assembly");
-            }
-        })[0];
-        ncServiceHomePath = new File(installerTargetPath, ncServiceHomeDirName).getAbsolutePath();
-
+        ncServiceSubDirName =
+                installerTargetPath.list((dir, name) -> name.matches("asterix-server.*binary-assembly"))[0];
+        ncServiceSubPath = new File(installerTargetPath, ncServiceSubDirName).getAbsolutePath();
+        ncServiceHomeDirName = new File(ncServiceSubPath).list(((dir, name) -> name.matches("apache-asterixdb.*")))[0];
+        ncServiceHomePath = new File(ncServiceSubPath, ncServiceHomeDirName).getAbsolutePath();
         pb = new ProcessBuilder();
         env = pb.environment();
         env.put("JAVA_HOME", System.getProperty("java.home"));
diff --git a/asterix-opt-bom/pom.xml b/asterix-opt-bom/pom.xml
index fbd1bd2..0dcd9bd 100644
--- a/asterix-opt-bom/pom.xml
+++ b/asterix-opt-bom/pom.xml
@@ -30,7 +30,7 @@
   <!-- project coordinates -->
   <groupId>org.apache.asterix</groupId>
   <artifactId>asterix-opt-bom</artifactId>
-  <version>0.9.4-SNAPSHOT</version>
+  <version>0.9.5-SNAPSHOT</version>
   <packaging>pom</packaging>
   <name>asterix-opt-bom</name>
   <description>BAD Extension to AsterixDB</description>
diff --git a/pom.xml b/pom.xml
index c953683..9159682 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,7 +25,7 @@
     <parent>
         <groupId>org.apache.asterix</groupId>
         <artifactId>apache-asterixdb</artifactId>
-        <version>0.9.4-SNAPSHOT</version>
+        <version>0.9.5-SNAPSHOT</version>
     </parent>
     <modules>
         <module>asterix-bad</module>
