Merge pull request #11 from Izakey/FINCN-122

Migrate deposit service from MariaDB to PostgreSQL
diff --git a/NOTICE.txt b/NOTICE.txt
index 69c4995..e6f96b3 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -1,5 +1,5 @@
 Apache Fineract CN Deposit-Account-Management
-Copyright [2017-2018] The Apache Software Foundation
+Copyright [2017-2019] The Apache Software Foundation
 
 This product includes software developed at
 The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/component-test/src/main/java/org/apache/fineract/cn/deposit/AbstractDepositAccountManagementTest.java b/component-test/src/main/java/org/apache/fineract/cn/deposit/AbstractDepositAccountManagementTest.java
index 5da6c56..5076d2d 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/deposit/AbstractDepositAccountManagementTest.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/deposit/AbstractDepositAccountManagementTest.java
@@ -58,7 +58,7 @@
   public static final String TEST_LOGGER = "test-logger";
 
   @ClassRule
-  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, mariaDBInitializer);
+  public final static TenantDataStoreContextTestRule tenantDataStoreContext = TenantDataStoreContextTestRule.forRandomTenantName(cassandraInitializer, postgreSQLInitializer);
 
   @Rule
   public final TenantApplicationSecurityEnvironmentTestRule tenantApplicationSecurityEnvironment
diff --git a/component-test/src/main/java/org/apache/fineract/cn/deposit/SuiteTestEnvironment.java b/component-test/src/main/java/org/apache/fineract/cn/deposit/SuiteTestEnvironment.java
index c8a0716..ba09946 100644
--- a/component-test/src/main/java/org/apache/fineract/cn/deposit/SuiteTestEnvironment.java
+++ b/component-test/src/main/java/org/apache/fineract/cn/deposit/SuiteTestEnvironment.java
@@ -21,7 +21,7 @@
 
 import org.apache.fineract.cn.test.env.TestEnvironment;
 import org.apache.fineract.cn.test.fixture.cassandra.CassandraInitializer;
-import org.apache.fineract.cn.test.fixture.mariadb.MariaDBInitializer;
+import org.apache.fineract.cn.test.fixture.postgresql.PostgreSQLInitializer;
 import org.junit.ClassRule;
 import org.junit.rules.RuleChain;
 import org.junit.rules.RunExternalResourceOnce;
@@ -34,11 +34,11 @@
   static final String APP_NAME = "deposit-v1";
   static final TestEnvironment testEnvironment = new TestEnvironment(APP_NAME);
   static final CassandraInitializer cassandraInitializer = new CassandraInitializer();
-  static final MariaDBInitializer mariaDBInitializer = new MariaDBInitializer();
+  static final PostgreSQLInitializer postgreSQLInitializer = new PostgreSQLInitializer();
 
   @ClassRule
   public static TestRule orderClassRules = RuleChain
       .outerRule(new RunExternalResourceOnce(testEnvironment))
       .around(new RunExternalResourceOnce(cassandraInitializer))
-      .around(new RunExternalResourceOnce(mariaDBInitializer));
+      .around(new RunExternalResourceOnce(postgreSQLInitializer));
 }
diff --git a/service/build.gradle b/service/build.gradle
index 1ac923a..78b9cc4 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -55,7 +55,8 @@
             [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
             [group: 'org.apache.fineract.cn', name: 'async', version: versions.frameworkasync],
             [group: 'org.apache.fineract.cn', name: 'cassandra', version: versions.frameworkcassandra],
-            [group: 'org.apache.fineract.cn', name: 'mariadb', version: versions.frameworkmariadb],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: versions.frameworkmariadb],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: '0.1.0-BUILD-SNAPSHOT'],
             [group: 'org.apache.fineract.cn', name: 'command', version: versions.frameworkcommand],
             [group: 'org.apache.fineract.cn.accounting', name: 'api', version: versions.frameworkledger],
             [group: 'org.apache.fineract.cn.rhythm', name: 'spi', version: versions.frameworkrhythm],
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/DepositAccountManagementConfiguration.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/DepositAccountManagementConfiguration.java
index cea6978..2f5a083 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/DepositAccountManagementConfiguration.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/DepositAccountManagementConfiguration.java
@@ -25,7 +25,7 @@
 import org.apache.fineract.cn.command.config.EnableCommandProcessing;
 import org.apache.fineract.cn.lang.config.EnableServiceException;
 import org.apache.fineract.cn.lang.config.EnableTenantContext;
-import org.apache.fineract.cn.mariadb.config.EnableMariaDB;
+import org.apache.fineract.cn.postgresql.config.EnablePostgreSQL;
 import org.apache.fineract.cn.rhythm.api.v1.client.RhythmManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -46,7 +46,7 @@
 @EnableAsync
 @EnableTenantContext
 @EnableCassandra
-@EnableMariaDB
+@EnablePostgreSQL
 @EnableCommandProcessing
 @EnableAnubis
 @EnableServiceException
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/MigrationAggregate.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/MigrationAggregate.java
index a071225..d96019e 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/MigrationAggregate.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/command/handler/MigrationAggregate.java
@@ -27,7 +27,7 @@
 import org.apache.fineract.cn.command.annotation.CommandHandler;
 import org.apache.fineract.cn.command.annotation.EventEmitter;
 import org.apache.fineract.cn.lang.ApplicationName;
-import org.apache.fineract.cn.mariadb.domain.FlywayFactoryBean;
+import org.apache.fineract.cn.postgresql.domain.FlywayFactoryBean;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/DividendDistributionEntity.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/DividendDistributionEntity.java
index 514c8c0..9a9d1a7 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/DividendDistributionEntity.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/DividendDistributionEntity.java
@@ -31,7 +31,7 @@
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
-import org.apache.fineract.cn.mariadb.util.LocalDateTimeConverter;
+import org.apache.fineract.cn.postgresql.util.LocalDateTimeConverter;
 
 @Entity
 @Table(name = "shed_dividend_distributions")
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionCommandEntity.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
index 7c8cb75..5ae1209 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionCommandEntity.java
@@ -29,7 +29,7 @@
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
-import org.apache.fineract.cn.mariadb.util.LocalDateTimeConverter;
+import org.apache.fineract.cn.postgresql.util.LocalDateTimeConverter;
 
 @Entity
 @Table(name = "shed_commands")
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionEntity.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionEntity.java
index 193a952..987e32d 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionEntity.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductDefinitionEntity.java
@@ -26,7 +26,7 @@
 import javax.persistence.GenerationType;
 import javax.persistence.Id;
 import javax.persistence.Table;
-import org.apache.fineract.cn.mariadb.util.LocalDateTimeConverter;
+import org.apache.fineract.cn.postgresql.util.LocalDateTimeConverter;
 
 @Entity
 @Table(name = "shed_product_definitions")
diff --git a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductInstanceEntity.java b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductInstanceEntity.java
index c0eaab3..49a4e20 100644
--- a/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductInstanceEntity.java
+++ b/service/src/main/java/org/apache/fineract/cn/deposit/service/internal/repository/ProductInstanceEntity.java
@@ -31,8 +31,8 @@
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
-import org.apache.fineract.cn.mariadb.util.LocalDateConverter;
-import org.apache.fineract.cn.mariadb.util.LocalDateTimeConverter;
+import org.apache.fineract.cn.postgresql.util.LocalDateConverter;
+import org.apache.fineract.cn.postgresql.util.LocalDateTimeConverter;
 
 @Entity
 @Table(name = "shed_product_instances")
diff --git a/service/src/main/resources/application.yml b/service/src/main/resources/application.yml
index 26ebee9..af72284 100644
--- a/service/src/main/resources/application.yml
+++ b/service/src/main/resources/application.yml
@@ -23,6 +23,11 @@
       enabled: false
     config:
       enabled: false
+  datasource:
+    driver-class-name: org.postgresql.Driver
+    url: jdbc:postgresql://localhost:5432/playground
+    username: postgres
+    password: postgres
 
 eureka:
   client:
@@ -42,13 +47,13 @@
     write: LOCAL_QUORUM
     delete: LOCAL_QUORUM
 
-mariadb:
-  driverClass: org.mariadb.jdbc.Driver
+postgresql:
+  driverClass: org.postgresql.Driver
   database: seshat
   host: localhost
-  port: 3306
-  user: root
-  password: mysql
+  port: 5432
+  user: postgres
+  password: postgres
 
 bonecp:
   idleMaxAgeInMinutes: 240
diff --git a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
similarity index 68%
rename from service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
rename to service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
index 3c0e529..dadbcc7 100644
--- a/service/src/main/resources/db/migrations/mariadb/V1__initial_setup.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V1__initial_setup.sql
@@ -18,7 +18,7 @@
 --
 
 CREATE TABLE shed_product_definitions (
-  id                         BIGINT         NOT NULL AUTO_INCREMENT,
+  id                         BIGSERIAL      NOT NULL,
   a_type                     VARCHAR(32)    NOT NULL,
   identifier                 VARCHAR(32)    NOT NULL,
   a_name                     VARCHAR(256)   NOT NULL,
@@ -34,67 +34,48 @@
   last_modified_on           TIMESTAMP(3)   NULL,
   last_modified_by           VARCHAR(32)    NULL,
   CONSTRAINT shed_product_definitions_pk PRIMARY KEY (id),
-  CONSTRAINT shed_prod_def_identifier_uq UNIQUE (identifier)
-);
+  CONSTRAINT shed_prod_def_identifier_uq UNIQUE (identifier));
 
 CREATE TABLE shed_currencies (
-  id                    BIGINT       NOT NULL AUTO_INCREMENT,
+  id                    BIGSERIAL    NOT NULL,
   product_definition_id BIGINT       NOT NULL,
   a_code                VARCHAR(4)   NOT NULL,
   a_name                VARCHAR(256) NOT NULL,
   sign                  VARCHAR(4)   NOT NULL,
-  scale                 INTEGER(5)   NOT NULL,
-  CONSTRAINT shed_currencies PRIMARY KEY (id),
-  CONSTRAINT shed_currencies_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  scale                 INT          NOT NULL,
+  CONSTRAINT shed_currencies_pk PRIMARY KEY (id),
+  CONSTRAINT shed_currencies_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
 
 CREATE TABLE shed_terms (
-  id                    BIGINT       NOT NULL AUTO_INCREMENT,
+  id                    BIGSERIAL    NOT NULL,
   product_definition_id BIGINT       NOT NULL,
-  period                INTEGER(5)   NOT NULL,
+  period                INT          NOT NULL,
   time_unit             VARCHAR(32)  NOT NULL,
   interest_payable      VARCHAR(32)  NOT NULL,
-  CONSTRAINT shed_terms PRIMARY KEY (id),
-  CONSTRAINT shed_terms_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  CONSTRAINT shed_terms_pk PRIMARY KEY (id),
+  CONSTRAINT shed_terms_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
 
 CREATE TABLE shed_actions (
-  id               BIGINT        NOT NULL AUTO_INCREMENT,
+  id               BIGSERIAL     NOT NULL,
   identifier       VARCHAR(32)   NOT NULL,
   a_name           VARCHAR(256)  NOT NULL,
   description      VARCHAR(2048) NULL,
   transaction_type VARCHAR(32)   NOT NULL,
-  CONSTRAINT shed_actions PRIMARY KEY (id),
-  CONSTRAINT shed_actions_identifier_uq UNIQUE (identifier)
-);
+  CONSTRAINT shed_actions_pk PRIMARY KEY (id),
+  CONSTRAINT shed_actions_identifier_uq UNIQUE (identifier));
 
-INSERT INTO shed_actions
-  (identifier, a_name, transaction_type)
-VALUES
-  ('Open', 'Account Opening', 'ACCO');
+INSERT INTO shed_actions (identifier, a_name, transaction_type) VALUES ('Open', 'Account Opening', 'ACCO');
 
-INSERT INTO shed_actions
-  (identifier, a_name, transaction_type)
-VALUES
-  ('Transfer', 'Account Transfer', 'ACCT');
+INSERT INTO shed_actions (identifier, a_name, transaction_type) VALUES ('Transfer', 'Account Transfer', 'ACCT');
 
-INSERT INTO shed_actions
-  (identifier, a_name, transaction_type)
-VALUES
-  ('Close', 'Account Closing', 'ACCC');
+INSERT INTO shed_actions (identifier, a_name, transaction_type)VALUES ('Close', 'Account Closing', 'ACCC');
 
-INSERT INTO shed_actions
-  (identifier, a_name, transaction_type)
-VALUES
-  ('Deposit', 'Cash Deposit', 'CDPT');
+INSERT INTO shed_actions (identifier, a_name, transaction_type) VALUES ('Deposit', 'Cash Deposit', 'CDPT');
 
-INSERT INTO shed_actions
-  (identifier, a_name, transaction_type)
-VALUES
-  ('Withdraw', 'Cash Withdrawal', 'CWDL');
+INSERT INTO shed_actions (identifier, a_name, transaction_type) VALUES ('Withdraw', 'Cash Withdrawal', 'CWDL');
 
 CREATE TABLE shed_charges (
-  id                        BIGINT        NOT NULL AUTO_INCREMENT,
+  id                        BIGSERIAL     NOT NULL,
   action_id                 BIGINT        NOT NULL,
   product_definition_id     BIGINT        NOT NULL,
   income_account_identifier VARCHAR(32)   NOT NULL,
@@ -102,24 +83,22 @@
   description               VARCHAR(2048) NULL,
   proportional              BOOLEAN   NOT NULL,
   amount                    NUMERIC(5, 2)  NULL,
-  CONSTRAINT shed_charges PRIMARY KEY (id),
+  CONSTRAINT shed_charges_pk PRIMARY KEY (id),
   CONSTRAINT shed_charges_actions_fk FOREIGN KEY (action_id) REFERENCES shed_actions (id),
-  CONSTRAINT shed_charges_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  CONSTRAINT shed_charges_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
 
 CREATE TABLE shed_commands (
-  id                    BIGINT        NOT NULL AUTO_INCREMENT,
+  id                    BIGSERIAL     NOT NULL,
   product_definition_id BIGINT        NOT NULL,
   a_action              VARCHAR(256)  NOT NULL,
   note                  VARCHAR(2048) NULL,
   created_on            TIMESTAMP(3)  NOT NULL,
   created_by            VARCHAR(32)   NOT NULL,
-  CONSTRAINT shed_commands PRIMARY KEY (id),
-  CONSTRAINT shed_commands_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  CONSTRAINT shed_commands_pk PRIMARY KEY (id),
+  CONSTRAINT shed_commands_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
 
 CREATE TABLE shed_product_instances (
-  id                    BIGINT       NOT NULL AUTO_INCREMENT,
+  id                    BIGSERIAL    NOT NULL,
   customer_identifier   VARCHAR(32)  NOT NULL,
   product_definition_id BIGINT       NOT NULL,
   account_identifier    VARCHAR(32)  NOT NULL,
@@ -130,5 +109,4 @@
   last_modified_by      VARCHAR(32)  NULL,
   CONSTRAINT shed_product_instances_pk PRIMARY KEY (id),
   CONSTRAINT shed_prod_inst_identifier_uq UNIQUE (account_identifier),
-  CONSTRAINT shed_prod_inst_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  CONSTRAINT shed_prod_inst_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
diff --git a/service/src/main/resources/db/migrations/mariadb/V2__modify_product_instances.sql b/service/src/main/resources/db/migrations/postgresql/V2__modify_product_instances.sql
similarity index 86%
rename from service/src/main/resources/db/migrations/mariadb/V2__modify_product_instances.sql
rename to service/src/main/resources/db/migrations/postgresql/V2__modify_product_instances.sql
index 57b27b0..4331f6d 100644
--- a/service/src/main/resources/db/migrations/mariadb/V2__modify_product_instances.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V2__modify_product_instances.sql
@@ -17,5 +17,5 @@
 -- under the License.
 --
 
-ALTER TABLE shed_product_instances MODIFY COLUMN account_identifier VARCHAR(34) NOT NULL;
+ALTER TABLE shed_product_instances ALTER COLUMN account_identifier TYPE VARCHAR(34), ALTER COLUMN account_identifier SET NOT NULL;
 ALTER TABLE shed_product_instances ADD COLUMN beneficiaries VARCHAR(256) NULL;
\ No newline at end of file
diff --git a/service/src/main/resources/db/migrations/mariadb/V3__term_nullable.sql b/service/src/main/resources/db/migrations/postgresql/V3__term_nullable.sql
similarity index 80%
rename from service/src/main/resources/db/migrations/mariadb/V3__term_nullable.sql
rename to service/src/main/resources/db/migrations/postgresql/V3__term_nullable.sql
index 5d998cb..bf64ac4 100644
--- a/service/src/main/resources/db/migrations/mariadb/V3__term_nullable.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V3__term_nullable.sql
@@ -17,5 +17,5 @@
 -- under the License.
 --
 
-ALTER TABLE shed_terms MODIFY COLUMN period INTEGER(5) NULL;
-ALTER TABLE shed_terms MODIFY COLUMN time_unit VARCHAR(32) NULL;
\ No newline at end of file
+ALTER TABLE shed_terms ALTER COLUMN period TYPE INT, ALTER COLUMN period SET DEFAULT NULL;
+ALTER TABLE shed_terms ALTER COLUMN time_unit TYPE VARCHAR(32), ALTER COLUMN time_unit SET DEFAULT NULL;
\ No newline at end of file
diff --git a/service/src/main/resources/db/migrations/mariadb/V4__add_unique_constraint_charges.sql b/service/src/main/resources/db/migrations/postgresql/V4__add_unique_constraint_charges.sql
similarity index 100%
rename from service/src/main/resources/db/migrations/mariadb/V4__add_unique_constraint_charges.sql
rename to service/src/main/resources/db/migrations/postgresql/V4__add_unique_constraint_charges.sql
diff --git a/service/src/main/resources/db/migrations/mariadb/V5__interest_calculation.sql b/service/src/main/resources/db/migrations/postgresql/V5__interest_calculation.sql
similarity index 74%
rename from service/src/main/resources/db/migrations/mariadb/V5__interest_calculation.sql
rename to service/src/main/resources/db/migrations/postgresql/V5__interest_calculation.sql
index a814296..f3a0dc7 100644
--- a/service/src/main/resources/db/migrations/mariadb/V5__interest_calculation.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V5__interest_calculation.sql
@@ -19,25 +19,23 @@
 
 ALTER TABLE shed_product_definitions ADD COLUMN cash_account_identifier VARCHAR(34) NULL;
 ALTER TABLE shed_product_definitions ADD COLUMN accrue_account_identifier VARCHAR(34) NULL;
-ALTER TABLE shed_product_definitions MODIFY COLUMN equity_ledger_identifier VARCHAR(34) NOT NULL;
-ALTER TABLE shed_product_definitions MODIFY COLUMN expense_account_identifier VARCHAR(34) NOT NULL;
+ALTER TABLE shed_product_definitions ALTER COLUMN equity_ledger_identifier TYPE VARCHAR(34), ALTER COLUMN equity_ledger_identifier SET NOT NULL;
+ALTER TABLE shed_product_definitions ALTER COLUMN expense_account_identifier TYPE VARCHAR(34) ,ALTER COLUMN expense_account_identifier SET NOT NULL;
 
 CREATE TABLE shed_accrued_interests (
-  id                          BIGINT         NOT NULL AUTO_INCREMENT,
+  id                          BIGSERIAL      NOT NULL,
   accrue_account_identifier   VARCHAR(34)    NOT NULL,
   customer_account_identifier VARCHAR(34)    NOT NULL,
   amount                      NUMERIC(15, 5) NOT NULL,
   CONSTRAINT shed_accrued_interests_pk PRIMARY KEY (id),
-  CONSTRAINT shed_accrued_interests_uq UNIQUE (accrue_account_identifier, customer_account_identifier)
-);
+  CONSTRAINT shed_accrued_interests_uq UNIQUE (accrue_account_identifier, customer_account_identifier));
 
 CREATE TABLE shed_dividend_distributions (
-  id                    BIGINT         NOT NULL AUTO_INCREMENT,
+  id                    BIGSERIAL         NOT NULL,
   product_definition_id BIGINT         NOT NULL,
   due_date              DATE           NOT NULL,
   rate                  NUMERIC(15, 5) NOT NULL,
   created_on            TIMESTAMP(3)   NOT NULL,
   created_by            VARCHAR(32)    NOT NULL,
-  CONSTRAINT shed_dividend_distributions PRIMARY KEY (id),
-  CONSTRAINT shed_div_dist_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id)
-);
+  CONSTRAINT shed_dividend_distributions_pk PRIMARY KEY (id),
+  CONSTRAINT shed_div_dist_prod_def_fk FOREIGN KEY (product_definition_id) REFERENCES shed_product_definitions (id));
diff --git a/service/src/main/resources/db/migrations/mariadb/V6__add_opened_on_last_transaction_to_instance.sql b/service/src/main/resources/db/migrations/postgresql/V6__add_opened_on_last_transaction_to_instance.sql
similarity index 91%
rename from service/src/main/resources/db/migrations/mariadb/V6__add_opened_on_last_transaction_to_instance.sql
rename to service/src/main/resources/db/migrations/postgresql/V6__add_opened_on_last_transaction_to_instance.sql
index 1d9d592..8dbcb20 100644
--- a/service/src/main/resources/db/migrations/mariadb/V6__add_opened_on_last_transaction_to_instance.sql
+++ b/service/src/main/resources/db/migrations/postgresql/V6__add_opened_on_last_transaction_to_instance.sql
@@ -20,4 +20,4 @@
 ALTER TABLE shed_product_instances ADD COLUMN opened_on DATE NULL;
 ALTER TABLE shed_product_instances ADD COLUMN last_transaction_date TIMESTAMP(3) NULL;
 
-UPDATE shed_product_instances set opened_on = CURDATE() WHERE a_state <> 'PENDING';
\ No newline at end of file
+UPDATE shed_product_instances set opened_on = CURRENT_DATE WHERE a_state <> 'PENDING';
\ No newline at end of file
diff --git a/shared.gradle b/shared.gradle
index 393cf72..580a0d8 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -64,7 +64,8 @@
 
 dependencies {
     compile(
-            [group: 'com.google.code.findbugs', name: 'jsr305']
+            [group: 'com.google.code.findbugs', name: 'jsr305'],
+            [group: 'org.apache.fineract.cn', name: 'postgresql', version: '0.1.0-BUILD-SNAPSHOT']
     )
 
     testCompile(