diff --git a/Dockerfile b/Dockerfile
index ffc8e4e..4d4400d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -33,6 +33,6 @@
 
 WORKDIR /tmp
 
-COPY --from=builder /builddir/service/build/libs/service-0.1.0-BUILD-SNAPSHOT-boot.jar ./provisioner-service-boot.jar
+COPY --from=builder /builddir/service/build/libs/service-0.1.x-SNAPSHOT-boot.jar ./provisioner-service-boot.jar
 
 CMD ["java", "-jar", "provisioner-service-boot.jar"]
diff --git a/README.md b/README.md
index 3dda2ba..26f03c5 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# Apache Fineract CN Provisioner [![Build Status](https://api.travis-ci.com/apache/fineract-cn-provisioner.svg?branch=develop)](https://travis-ci.com/apache/fineract-cn-provisioner) [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/apache/fineract-cn-provisioner)](https://hub.docker.com/r/apache/fineract-cn-provisioner/builds)
+# Apache Fineract CN Provisioner [![Build Status](https://api.travis-ci.com/apache/fineract-cn-provisioner.svg?branch=0.1.x)](https://travis-ci.com/apache/fineract-cn-provisioner) [![Docker Cloud Build Status](https://img.shields.io/docker/cloud/build/apache/fineract-cn-provisioner)](https://hub.docker.com/r/apache/fineract-cn-provisioner/builds)
 
 
 This service provisions services for tenants of an Apache Fineract CN installation.
diff --git a/component-test/src/main/java/org/apache/fineract/cn/provisioner/tenant/Fixture.java b/component-test/src/main/java/org/apache/fineract/cn/provisioner/tenant/Fixture.java
index 623282c..087387f 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/provisioner/tenant/Fixture.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/provisioner/tenant/Fixture.java
@@ -20,6 +20,7 @@
 
 
 import org.apache.commons.lang.RandomStringUtils;
+import org.apache.fineract.cn.postgresql.util.PostgreSQLConstants;
 import org.apache.fineract.cn.provisioner.api.v1.domain.CassandraConnectionInfo;
 import org.apache.fineract.cn.provisioner.api.v1.domain.DatabaseConnectionInfo;
 import org.apache.fineract.cn.provisioner.api.v1.domain.Tenant;
@@ -42,12 +43,12 @@
 
     final DatabaseConnectionInfo databaseConnectionInfo = new DatabaseConnectionInfo();
     compTestTenant.setDatabaseConnectionInfo(databaseConnectionInfo);
-    databaseConnectionInfo.setDriverClass("org.mariadb.jdbc.Driver");
+    databaseConnectionInfo.setDriverClass("org.postgresql.Driver");
     databaseConnectionInfo.setDatabaseName(compTestTenant.getIdentifier());
     databaseConnectionInfo.setHost("localhost");
-    databaseConnectionInfo.setPort("3306");
-    databaseConnectionInfo.setUser("root");
-    databaseConnectionInfo.setPassword("mysql");
+    databaseConnectionInfo.setPort("5432");
+    databaseConnectionInfo.setUser("postgres");
+    databaseConnectionInfo.setPassword("postgres");
 
     return compTestTenant;
   }
diff --git a/shared.gradle b/shared.gradle
index df19a19..15f4644 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -16,19 +16,19 @@
  */
 
 group 'org.apache.fineract.cn.provisioner'
-version '0.1.0-BUILD-SNAPSHOT'
+version '0.1.x-SNAPSHOT'
 
 ext.versions = [
-        fineractidentityservice : '0.1.0-BUILD-SNAPSHOT',
-        frameworkanubis         : '0.1.0-BUILD-SNAPSHOT',
-        frameworkanput          : '0.1.0-BUILD-SNAPSHOT',
-        frameworkapi            : '0.1.0-BUILD-SNAPSHOT',
-        frameworklang           : '0.1.0-BUILD-SNAPSHOT',
-        frameworkasync          : '0.1.0-BUILD-SNAPSHOT',
-        frameworkcassandra      : '0.1.0-BUILD-SNAPSHOT',
-        frameworkmariadb        : '0.1.0-BUILD-SNAPSHOT',
-        frameworkcrypto         : '0.1.0-BUILD-SNAPSHOT',
-        frameworktest           : '0.1.0-BUILD-SNAPSHOT',
+        fineractidentityservice : '0.1.x-SNAPSHOT',
+        frameworkanubis         : '0.1.x-SNAPSHOT',
+        frameworkanput          : '0.1.x-SNAPSHOT',
+        frameworkapi            : '0.1.x-SNAPSHOT',
+        frameworklang           : '0.1.x-SNAPSHOT',
+        frameworkasync          : '0.1.x-SNAPSHOT',
+        frameworkcassandra      : '0.1.x-SNAPSHOT',
+        frameworkmariadb        : '0.1.x-SNAPSHOT',
+        frameworkcrypto         : '0.1.x-SNAPSHOT',
+        frameworktest           : '0.1.x-SNAPSHOT',
         springcontext           : '4.3.3.RELEASE',
         activeMQ                : '5.13.2',
         validator               : '5.3.0.Final'
@@ -61,7 +61,7 @@
 dependencies {
     compile(
             [group: 'com.google.code.findbugs', name: 'jsr305'],
-            [group: 'org.apache.fineract.cn', name: 'postgresql', version: '0.1.0-BUILD-SNAPSHOT'],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: '0.1.x-SNAPSHOT'],
             [group: 'postgresql', name: 'postgresql', version: '9.0-801.jdbc4']
     )
 
