Added "ifNotExists" to all cassandra table creation statements.
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationCallEndpointSets.java b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationCallEndpointSets.java
index 83bd201..b1796d7 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationCallEndpointSets.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationCallEndpointSets.java
@@ -57,14 +57,13 @@
   }
 
   public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
+        .addClusteringColumn(CALLENDPOINTSET_IDENTIFIER_COLUMN, DataType.text())
+        .addColumn(CALLENDPOINT_GROUP_IDENTIFIERS_COLUMN, DataType.list(DataType.text()));
 
-    final Create createTableStatement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
-                    .addClusteringColumn(CALLENDPOINTSET_IDENTIFIER_COLUMN, DataType.text())
-                    .addColumn(CALLENDPOINT_GROUP_IDENTIFIERS_COLUMN, DataType.list(DataType.text()));
-
-    cassandraSessionProvider.getTenantSession().execute(createTableStatement);
+    cassandraSessionProvider.getTenantSession().execute(create);
   }
 
   public void add(final ApplicationCallEndpointSetEntity entity) {
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissionUsers.java b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissionUsers.java
index c783b70..5cf627f 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissionUsers.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissionUsers.java
@@ -44,15 +44,14 @@
   }
 
   public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
+        .addClusteringColumn(PERMITTABLE_GROUP_IDENTIFIER_COLUMN, DataType.text())
+        .addClusteringColumn(USER_IDENTIFIER_COLUMN, DataType.text())
+        .addColumn(ENABLED_COLUMN, DataType.cboolean());
 
-    final Create createTableStatement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
-                    .addClusteringColumn(PERMITTABLE_GROUP_IDENTIFIER_COLUMN, DataType.text())
-                    .addClusteringColumn(USER_IDENTIFIER_COLUMN, DataType.text())
-                    .addColumn(ENABLED_COLUMN, DataType.cboolean());
-
-    cassandraSessionProvider.getTenantSession().execute(createTableStatement);
+    cassandraSessionProvider.getTenantSession().execute(create);
   }
 
   public boolean enabled(final String applicationIdentifier,
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissions.java b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissions.java
index e29b582..0281c00 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissions.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationPermissions.java
@@ -56,14 +56,13 @@
   }
 
   public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
+        .addClusteringColumn(PERMITTABLE_GROUP_IDENTIFIER_COLUMN, DataType.text())
+        .addUDTColumn(PERMISSION_COLUMN, SchemaBuilder.frozen(Permissions.TYPE_NAME));
 
-    final Create createTableStatement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
-                    .addClusteringColumn(PERMITTABLE_GROUP_IDENTIFIER_COLUMN, DataType.text())
-                    .addUDTColumn(PERMISSION_COLUMN, SchemaBuilder.frozen(Permissions.TYPE_NAME));
-
-    cassandraSessionProvider.getTenantSession().execute(createTableStatement);
+    cassandraSessionProvider.getTenantSession().execute(create);
 
   }
 
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationSignatures.java b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationSignatures.java
index 6e1519f..150f5b4 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/ApplicationSignatures.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/ApplicationSignatures.java
@@ -59,15 +59,15 @@
     this.tenantAwareCassandraMapperProvider = tenantAwareCassandraMapperProvider;
   }
 
-  public void buildTable()
-  {
-    final Create createTable = SchemaBuilder.createTable(TABLE_NAME)
-            .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
-            .addClusteringColumn(KEY_TIMESTAMP_COLUMN, DataType.text())
-            .addColumn(PUBLIC_KEY_MOD_COLUMN, DataType.varint())
-            .addColumn(PUBLIC_KEY_EXP_COLUMN, DataType.varint());
+  public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(APPLICATION_IDENTIFIER_COLUMN, DataType.text())
+        .addClusteringColumn(KEY_TIMESTAMP_COLUMN, DataType.text())
+        .addColumn(PUBLIC_KEY_MOD_COLUMN, DataType.varint())
+        .addColumn(PUBLIC_KEY_EXP_COLUMN, DataType.varint());
 
-    cassandraSessionProvider.getTenantSession().execute(createTable);
+    cassandraSessionProvider.getTenantSession().execute(create);
   }
 
   public void add(final ApplicationSignatureEntity entity) {
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/PermittableGroups.java b/service/src/main/java/io/mifos/identity/internal/repository/PermittableGroups.java
index e770022..b77974e 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/PermittableGroups.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/PermittableGroups.java
@@ -19,6 +19,8 @@
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.Statement;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.datastax.driver.core.schemabuilder.Create;
+import com.datastax.driver.core.schemabuilder.CreateType;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 import com.datastax.driver.mapping.Mapper;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
@@ -28,9 +30,9 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * @author Myrle Krantz
@@ -61,21 +63,20 @@
   }
 
   public void buildTable() {
-    final String type_statement =
-            SchemaBuilder.createType(TYPE_NAME)
-                    .addColumn(PATH_FIELD, DataType.text())
-                    .addColumn(METHOD_FIELD, DataType.text())
-                    .addColumn(SOURCE_GROUP_ID_FIELD, DataType.text())
-                    .buildInternal();
-    cassandraSessionProvider.getTenantSession().execute(type_statement);
+    final CreateType createType = SchemaBuilder.createType(TYPE_NAME)
+        .ifNotExists()
+        .addColumn(PATH_FIELD, DataType.text())
+        .addColumn(METHOD_FIELD, DataType.text())
+        .addColumn(SOURCE_GROUP_ID_FIELD, DataType.text());
 
-    final String table_statement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(IDENTIFIER_COLUMN, DataType.text())
-                    .addUDTListColumn(PERMITTABLES_COLUMN, SchemaBuilder.frozen(TYPE_NAME))
-                    .buildInternal();
+    cassandraSessionProvider.getTenantSession().execute(createType);
 
-    cassandraSessionProvider.getTenantSession().execute(table_statement);
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(IDENTIFIER_COLUMN, DataType.text())
+        .addUDTListColumn(PERMITTABLES_COLUMN, SchemaBuilder.frozen(TYPE_NAME));
+
+    cassandraSessionProvider.getTenantSession().execute(create);
 
   }
 
@@ -101,7 +102,6 @@
 
     final Statement statement = QueryBuilder.select().all().from(TABLE_NAME);
 
-    return entityMapper.map(tenantSession.execute(statement)).all()
-            .stream().collect(Collectors.toList());
+    return new ArrayList<>(entityMapper.map(tenantSession.execute(statement)).all());
   }
 }
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/Roles.java b/service/src/main/java/io/mifos/identity/internal/repository/Roles.java
index 6fbbc31..7682cc4 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/Roles.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/Roles.java
@@ -19,6 +19,7 @@
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.Statement;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 import com.datastax.driver.mapping.Mapper;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
@@ -28,9 +29,9 @@
 import org.springframework.stereotype.Component;
 import org.springframework.util.Assert;
 
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
-import java.util.stream.Collectors;
 
 /**
  * @author Myrle Krantz
@@ -56,14 +57,12 @@
   }
 
   public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(IDENTIFIER_COLUMN, DataType.text())
+        .addUDTListColumn(PERMISSIONS_COLUMN, SchemaBuilder.frozen(Permissions.TYPE_NAME));
 
-    final String table_statement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(IDENTIFIER_COLUMN, DataType.text())
-                    .addUDTListColumn(PERMISSIONS_COLUMN, SchemaBuilder.frozen(Permissions.TYPE_NAME))
-                    .buildInternal();
-
-    cassandraSessionProvider.getTenantSession().execute(table_statement);
+    cassandraSessionProvider.getTenantSession().execute(create);
 
   }
 
@@ -99,7 +98,6 @@
 
     final Statement statement = QueryBuilder.select().all().from(TABLE_NAME);
 
-    return entityMapper.map(tenantSession.execute(statement)).all()
-            .stream().collect(Collectors.toList());
+    return new ArrayList<>(entityMapper.map(tenantSession.execute(statement)).all());
   }
 }
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/Signatures.java b/service/src/main/java/io/mifos/identity/internal/repository/Signatures.java
index 83b33de..a54b003 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/Signatures.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/Signatures.java
@@ -22,7 +22,9 @@
 import com.datastax.driver.core.querybuilder.QueryBuilder;
 import com.datastax.driver.core.querybuilder.Select;
 import com.datastax.driver.core.querybuilder.Update;
+import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.datastax.driver.core.schemabuilder.SchemaStatement;
 import com.datastax.driver.mapping.Mapper;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
 import io.mifos.core.cassandra.core.TenantAwareCassandraMapperProvider;
@@ -62,23 +64,21 @@
   }
 
   public void buildTable() {
-    final String statement =
-            SchemaBuilder.createTable(TABLE_NAME)
-                    .addPartitionKey(KEY_TIMESTAMP_COLUMN, DataType.text())
-                    .addColumn(VALID_COLUMN, DataType.cboolean())
-                    .addColumn(PRIVATE_KEY_MOD_COLUMN, DataType.varint())
-                    .addColumn(PRIVATE_KEY_EXP_COLUMN, DataType.varint())
-                    .addColumn(PUBLIC_KEY_MOD_COLUMN, DataType.varint())
-                    .addColumn(PUBLIC_KEY_EXP_COLUMN, DataType.varint())
-                    .buildInternal();
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(KEY_TIMESTAMP_COLUMN, DataType.text())
+        .addColumn(VALID_COLUMN, DataType.cboolean())
+        .addColumn(PRIVATE_KEY_MOD_COLUMN, DataType.varint())
+        .addColumn(PRIVATE_KEY_EXP_COLUMN, DataType.varint())
+        .addColumn(PUBLIC_KEY_MOD_COLUMN, DataType.varint())
+        .addColumn(PUBLIC_KEY_EXP_COLUMN, DataType.varint());
 
-    cassandraSessionProvider.getTenantSession().execute(statement);
+    cassandraSessionProvider.getTenantSession().execute(create);
 
-    final String createValidIndex = SchemaBuilder.createIndex(INDEX_NAME)
-            .ifNotExists()
-            .onTable(TABLE_NAME)
-            .andColumn(VALID_COLUMN)
-            .toString();
+    final SchemaStatement createValidIndex = SchemaBuilder.createIndex(INDEX_NAME)
+        .ifNotExists()
+        .onTable(TABLE_NAME)
+        .andColumn(VALID_COLUMN);
 
     cassandraSessionProvider.getTenantSession().execute(createValidIndex);
   }
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/Tenants.java b/service/src/main/java/io/mifos/identity/internal/repository/Tenants.java
index 3355f49..7d61c3a 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/Tenants.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/Tenants.java
@@ -18,6 +18,7 @@
 import com.datastax.driver.core.BoundStatement;
 import com.datastax.driver.core.DataType;
 import com.datastax.driver.core.KeyspaceMetadata;
+import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
 import io.mifos.core.cassandra.core.TenantAwareEntityTemplate;
@@ -51,15 +52,14 @@
   }
 
   public void buildTable() {
-    final String statement =
-        SchemaBuilder.createTable(TABLE_NAME)
-            .addPartitionKey(VERSION_COLUMN, DataType.cint())
-            .addColumn(FIXED_SALT_COLUMN, DataType.blob())
-            .addColumn(PASSWORD_EXPIRES_IN_DAYS_COLUMN, DataType.cint())
-            .addColumn(TIME_TO_CHANGE_PASSWORD_AFTER_EXPIRATION_IN_DAYS, DataType.cint())
-            .buildInternal();
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
+        .addPartitionKey(VERSION_COLUMN, DataType.cint())
+        .addColumn(FIXED_SALT_COLUMN, DataType.blob())
+        .addColumn(PASSWORD_EXPIRES_IN_DAYS_COLUMN, DataType.cint())
+        .addColumn(TIME_TO_CHANGE_PASSWORD_AFTER_EXPIRATION_IN_DAYS, DataType.cint());
 
-    cassandraSessionProvider.getTenantSession().execute(statement);
+    cassandraSessionProvider.getTenantSession().execute(create);
   }
 
   public void add(
diff --git a/service/src/main/java/io/mifos/identity/internal/repository/Users.java b/service/src/main/java/io/mifos/identity/internal/repository/Users.java
index 5fca016..0b0620d 100644
--- a/service/src/main/java/io/mifos/identity/internal/repository/Users.java
+++ b/service/src/main/java/io/mifos/identity/internal/repository/Users.java
@@ -19,6 +19,7 @@
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.Statement;
 import com.datastax.driver.core.querybuilder.QueryBuilder;
+import com.datastax.driver.core.schemabuilder.Create;
 import com.datastax.driver.core.schemabuilder.SchemaBuilder;
 import com.datastax.driver.mapping.Mapper;
 import io.mifos.core.cassandra.core.CassandraSessionProvider;
@@ -59,18 +60,17 @@
     this.tenantAwareCassandraMapperProvider = tenantAwareCassandraMapperProvider;
   }
 
-  public void buildTable()
-  {
-    final String createTable = SchemaBuilder.createTable(TABLE_NAME)
+  public void buildTable() {
+    final Create create = SchemaBuilder.createTable(TABLE_NAME)
+        .ifNotExists()
         .addPartitionKey(IDENTIFIER_COLUMN, DataType.text())
         .addColumn(ROLE_COLUMN, DataType.text())
         .addColumn(PASSWORD_COLUMN, DataType.blob())
         .addColumn(SALT_COLUMN, DataType.blob())
         .addColumn(ITERATION_COUNT_COLUMN, DataType.cint())
-        .addColumn(PASSWORD_EXPIRES_ON_COLUMN, DataType.date())
-        .buildInternal();
+        .addColumn(PASSWORD_EXPIRES_ON_COLUMN, DataType.date());
 
-    cassandraSessionProvider.getTenantSession().execute(createTable);
+    cassandraSessionProvider.getTenantSession().execute(create);
   }
 
   public void add(final UserEntity instance) {