This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git


The following commit(s) were added to refs/heads/develop by this push:
     new 7ce19d703 Date to LocalDate - Client
7ce19d703 is described below

commit 7ce19d703b2d528e3df1cfec8e38c4abe8a58b1d
Author: Adam Saghy <[email protected]>
AuthorDate: Mon Jul 11 11:34:59 2022 +0200

    Date to LocalDate - Client
---
 .../portfolio/client/api/ClientsApiResource.java   |   7 +-
 .../fineract/portfolio/client/domain/Client.java   | 125 +++++++--------------
 .../portfolio/client/domain/ClientCharge.java      |  23 +---
 .../client/domain/ClientFamilyMembers.java         |  15 +--
 .../portfolio/client/domain/ClientNonPerson.java   |  25 +----
 .../portfolio/client/domain/ClientTransaction.java |  21 ++--
 .../client/domain/ClientTransferDetails.java       |  16 +--
 ...lientFamilyMembersWritePlatformServiceImpl.java |  67 ++++-------
 .../client/service/ClientReadPlatformService.java  |   4 +-
 .../service/ClientReadPlatformServiceImpl.java     |   5 +-
 ...lientWritePlatformServiceJpaRepositoryImpl.java |  14 +--
 .../ClientAttributeIncentiveCalculation.java       |   3 +-
 ...nsferWritePlatformServiceJpaRepositoryImpl.java |  11 +-
 13 files changed, 109 insertions(+), 227 deletions(-)

diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
index 10127b802..39b8b3e0f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/api/ClientsApiResource.java
@@ -30,7 +30,6 @@ import java.io.InputStream;
 import java.time.LocalDate;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -61,7 +60,6 @@ import 
org.apache.fineract.infrastructure.core.data.UploadRequest;
 import 
org.apache.fineract.infrastructure.core.exception.UnrecognizedQueryParamException;
 import 
org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings;
 import 
org.apache.fineract.infrastructure.core.serialization.ToApiJsonSerializer;
-import org.apache.fineract.infrastructure.core.service.DateUtils;
 import org.apache.fineract.infrastructure.core.service.Page;
 import org.apache.fineract.infrastructure.core.service.SearchParameters;
 import 
org.apache.fineract.infrastructure.security.service.PlatformSecurityContext;
@@ -442,8 +440,7 @@ public class ClientsApiResource {
     public String retrieveTransferTemplate(@PathParam("clientId") final Long 
clientId, @Context final UriInfo uriInfo) {
 
         
this.context.authenticatedUser().validateHasReadPermission(ClientApiConstants.CLIENT_RESOURCE_NAME);
-        final Date transferDate = 
this.clientReadPlatformService.retrieveClientTransferProposalDate(clientId);
-        return this.toApiJsonSerializer.serialize(
-                (transferDate != null ? 
LocalDate.ofInstant(transferDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant()) : null));
+        final LocalDate transferDate = 
this.clientReadPlatformService.retrieveClientTransferProposalDate(clientId);
+        return this.toApiJsonSerializer.serialize(transferDate);
     }
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
index 8c0c1b271..bec334a53 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/Client.java
@@ -19,10 +19,8 @@
 package org.apache.fineract.portfolio.client.domain;
 
 import java.time.LocalDate;
-import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -39,11 +37,8 @@ import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 import javax.persistence.UniqueConstraint;
-import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.fineract.infrastructure.codes.domain.CodeValue;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
@@ -92,12 +87,10 @@ public final class Client extends AbstractPersistableCustom 
{
     private CodeValue subStatus;
 
     @Column(name = "activation_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date activationDate;
+    private LocalDate activationDate;
 
     @Column(name = "office_joining_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date officeJoiningDate;
+    private LocalDate officeJoiningDate;
 
     @Column(name = "firstname", length = 50, nullable = true)
     private String firstname;
@@ -127,8 +120,7 @@ public final class Client extends AbstractPersistableCustom 
{
     private String externalId;
 
     @Column(name = "date_of_birth", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date dateOfBirth;
+    private LocalDate dateOfBirth;
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "gender_cv_id", nullable = true)
@@ -150,16 +142,14 @@ public final class Client extends 
AbstractPersistableCustom {
     private CodeValue closureReason;
 
     @Column(name = "closedon_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date closureDate;
+    private LocalDate closureDate;
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "reject_reason_cv_id", nullable = true)
     private CodeValue rejectionReason;
 
     @Column(name = "rejectedon_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date rejectionDate;
+    private LocalDate rejectionDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "rejectedon_userid", nullable = true)
@@ -170,16 +160,14 @@ public final class Client extends 
AbstractPersistableCustom {
     private CodeValue withdrawalReason;
 
     @Column(name = "withdrawn_on_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date withdrawalDate;
+    private LocalDate withdrawalDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "withdraw_on_userid", nullable = true)
     private AppUser withdrawnBy;
 
     @Column(name = "reactivated_on_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date reactivateDate;
+    private LocalDate reactivateDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "reactivated_on_userid", nullable = true)
@@ -190,16 +178,14 @@ public final class Client extends 
AbstractPersistableCustom {
     private AppUser closedBy;
 
     @Column(name = "submittedon_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date submittedOnDate;
+    private LocalDate submittedOnDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "submittedon_userid", nullable = true)
     private AppUser submittedBy;
 
     @Column(name = "updated_on", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date updatedOnDate;
+    private LocalDate updatedOnDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "updated_by", nullable = true)
@@ -227,16 +213,14 @@ public final class Client extends 
AbstractPersistableCustom {
     private Integer legalForm;
 
     @Column(name = "reopened_on_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date reopenedDate;
+    private LocalDate reopenedDate;
 
     @ManyToOne(optional = true, fetch = FetchType.LAZY)
     @JoinColumn(name = "reopened_by_userid", nullable = true)
     private AppUser reopenedBy;
 
     @Column(name = "proposed_transfer_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date proposedTransferDate;
+    private LocalDate proposedTransferDate;
 
     @OneToMany(mappedBy = "client", cascade = CascadeType.ALL, orphanRemoval = 
true, fetch = FetchType.LAZY)
     private Set<ClientCollateralManagement> clientCollateralManagements = new 
HashSet<>();
@@ -304,58 +288,44 @@ public final class Client extends 
AbstractPersistableCustom {
             this.accountNumber = accountNo;
         }
 
-        this.submittedOnDate = 
Date.from(submittedOnDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        this.submittedOnDate = submittedOnDate;
         this.submittedBy = currentUser;
 
         this.status = status.getValue();
         this.office = office;
         if (StringUtils.isNotBlank(externalId)) {
             this.externalId = externalId.trim();
-        } else {
-            this.externalId = null;
         }
 
         if (StringUtils.isNotBlank(mobileNo)) {
             this.mobileNo = mobileNo.trim();
-        } else {
-            this.mobileNo = null;
         }
 
         if (StringUtils.isNotBlank(emailAddress)) {
             this.emailAddress = emailAddress.trim();
-        } else {
-            this.emailAddress = null;
         }
 
         if (activationDate != null) {
-            this.activationDate = 
Date.from(activationDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            this.activationDate = activationDate;
             this.activatedBy = currentUser;
         }
-        if (officeJoiningDate != null) {
-            this.officeJoiningDate = 
Date.from(officeJoiningDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
-        }
+
+        this.officeJoiningDate = officeJoiningDate;
+
         if (StringUtils.isNotBlank(firstname)) {
             this.firstname = firstname.trim();
-        } else {
-            this.firstname = null;
         }
 
         if (StringUtils.isNotBlank(middlename)) {
             this.middlename = middlename.trim();
-        } else {
-            this.middlename = null;
         }
 
         if (StringUtils.isNotBlank(lastname)) {
             this.lastname = lastname.trim();
-        } else {
-            this.lastname = null;
         }
 
         if (StringUtils.isNotBlank(fullname)) {
             this.fullname = fullname.trim();
-        } else {
-            this.fullname = null;
         }
 
         if (clientParentGroup != null) {
@@ -370,9 +340,9 @@ public final class Client extends AbstractPersistableCustom 
{
         if (gender != null) {
             this.gender = gender;
         }
-        if (dateOfBirth != null) {
-            this.dateOfBirth = 
Date.from(dateOfBirth.atStartOfDay(ZoneId.systemDefault()).toInstant());
-        }
+
+        this.dateOfBirth = dateOfBirth;
+
         this.clientType = clientType;
         this.clientClassification = clientClassification;
         this.setLegalForm(legalForm);
@@ -440,7 +410,7 @@ public final class Client extends AbstractPersistableCustom 
{
             throw new PlatformApiDataValidationException(dataValidationErrors);
         }
 
-        this.activationDate = 
Date.from(activationLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        this.activationDate = activationLocalDate;
         this.activatedBy = currentUser;
         this.officeJoiningDate = this.activationDate;
         this.status = ClientStatus.ACTIVE.getValue();
@@ -618,8 +588,7 @@ public final class Client extends AbstractPersistableCustom 
{
             actualChanges.put(ClientApiConstants.dateFormatParamName, 
dateFormatAsInput);
             actualChanges.put(ClientApiConstants.localeParamName, 
localeAsInput);
 
-            final LocalDate newValue = 
command.localDateValueOfParameterNamed(ClientApiConstants.activationDateParamName);
-            this.activationDate = 
Date.from(newValue.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            this.activationDate = 
command.localDateValueOfParameterNamed(ClientApiConstants.activationDateParamName);
             this.officeJoiningDate = this.activationDate;
         }
 
@@ -629,8 +598,7 @@ public final class Client extends AbstractPersistableCustom 
{
             actualChanges.put(ClientApiConstants.dateFormatParamName, 
dateFormatAsInput);
             actualChanges.put(ClientApiConstants.localeParamName, 
localeAsInput);
 
-            final LocalDate newValue = 
command.localDateValueOfParameterNamed(ClientApiConstants.dateOfBirthParamName);
-            this.dateOfBirth = 
Date.from(newValue.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            this.dateOfBirth = 
command.localDateValueOfParameterNamed(ClientApiConstants.dateOfBirthParamName);
         }
 
         if 
(command.isChangeInLocalDateParameterNamed(ClientApiConstants.submittedOnDateParamName,
 getSubmittedOnDate())) {
@@ -639,8 +607,7 @@ public final class Client extends AbstractPersistableCustom 
{
             actualChanges.put(ClientApiConstants.dateFormatParamName, 
dateFormatAsInput);
             actualChanges.put(ClientApiConstants.localeParamName, 
localeAsInput);
 
-            final LocalDate newValue = 
command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName);
-            this.submittedOnDate = 
Date.from(newValue.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            this.submittedOnDate = 
command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName);
         }
 
         validateUpdate();
@@ -753,23 +720,15 @@ public final class Client extends 
AbstractPersistableCustom {
     }
 
     public LocalDate getSubmittedOnDate() {
-        return 
ObjectUtils.defaultIfNull(LocalDate.ofInstant(this.submittedOnDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant()), null);
+        return this.submittedOnDate;
     }
 
     public LocalDate getActivationLocalDate() {
-        LocalDate activationLocalDate = null;
-        if (this.activationDate != null) {
-            activationLocalDate = 
LocalDate.ofInstant(this.activationDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
-        }
-        return activationLocalDate;
+        return this.activationDate;
     }
 
     public LocalDate getOfficeJoiningLocalDate() {
-        LocalDate officeJoiningLocalDate = null;
-        if (this.officeJoiningDate != null) {
-            officeJoiningLocalDate = 
LocalDate.ofInstant(this.officeJoiningDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
-        }
-        return officeJoiningLocalDate;
+        return this.officeJoiningDate;
     }
 
     public boolean isOfficeIdentifiedBy(final Long officeId) {
@@ -840,7 +799,7 @@ public final class Client extends AbstractPersistableCustom 
{
         this.transferToOffice = office;
     }
 
-    public void updateOfficeJoiningDate(final Date date) {
+    public void updateOfficeJoiningDate(final LocalDate date) {
         this.officeJoiningDate = date;
     }
 
@@ -872,7 +831,7 @@ public final class Client extends AbstractPersistableCustom 
{
         return this.groups;
     }
 
-    public void close(final AppUser currentUser, final CodeValue 
closureReason, final Date closureDate) {
+    public void close(final AppUser currentUser, final CodeValue 
closureReason, final LocalDate closureDate) {
         this.closureReason = closureReason;
         this.closureDate = closureDate;
         this.closedBy = currentUser;
@@ -959,19 +918,19 @@ public final class Client extends 
AbstractPersistableCustom {
     }
 
     public LocalDate getClosureDate() {
-        return 
ObjectUtils.defaultIfNull(LocalDate.ofInstant(this.closureDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant()), null);
+        return this.closureDate;
     }
 
     public LocalDate getRejectedDate() {
-        return 
ObjectUtils.defaultIfNull(LocalDate.ofInstant(this.rejectionDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant()), null);
+        return this.rejectionDate;
     }
 
     public LocalDate getWithdrawalDate() {
-        return 
ObjectUtils.defaultIfNull(LocalDate.ofInstant(this.withdrawalDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant()), null);
+        return this.withdrawalDate;
     }
 
     public LocalDate getReopenedDate() {
-        return this.reopenedDate == null ? null : 
LocalDate.ofInstant(this.reopenedDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
+        return this.reopenedDate;
     }
 
     public CodeValue gender() {
@@ -998,19 +957,15 @@ public final class Client extends 
AbstractPersistableCustom {
         this.gender = gender;
     }
 
-    public Date dateOfBirth() {
+    public LocalDate dateOfBirth() {
         return this.dateOfBirth;
     }
 
     public LocalDate dateOfBirthLocalDate() {
-        LocalDate dateOfBirth = null;
-        if (this.dateOfBirth != null) {
-            dateOfBirth = LocalDate.ofInstant(this.dateOfBirth.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
-        }
-        return dateOfBirth;
+        return this.dateOfBirth;
     }
 
-    public void reject(AppUser currentUser, CodeValue rejectionReason, Date 
rejectionDate) {
+    public void reject(AppUser currentUser, CodeValue rejectionReason, 
LocalDate rejectionDate) {
         this.rejectionReason = rejectionReason;
         this.rejectionDate = rejectionDate;
         this.rejectedBy = currentUser;
@@ -1020,7 +975,7 @@ public final class Client extends 
AbstractPersistableCustom {
 
     }
 
-    public void withdraw(AppUser currentUser, CodeValue withdrawalReason, Date 
withdrawalDate) {
+    public void withdraw(AppUser currentUser, CodeValue withdrawalReason, 
LocalDate withdrawalDate) {
         this.withdrawalReason = withdrawalReason;
         this.withdrawalDate = withdrawalDate;
         this.withdrawnBy = currentUser;
@@ -1030,7 +985,7 @@ public final class Client extends 
AbstractPersistableCustom {
 
     }
 
-    public void reActivate(AppUser currentUser, Date reactivateDate) {
+    public void reActivate(AppUser currentUser, LocalDate reactivateDate) {
         this.closureDate = null;
         this.closureReason = null;
         this.reactivateDate = reactivateDate;
@@ -1041,7 +996,7 @@ public final class Client extends 
AbstractPersistableCustom {
 
     }
 
-    public void reOpened(AppUser currentUser, Date reopenedDate) {
+    public void reOpened(AppUser currentUser, LocalDate reopenedDate) {
         this.reopenedDate = reopenedDate;
         this.reopenedBy = currentUser;
         this.updatedBy = currentUser;
@@ -1074,11 +1029,11 @@ public final class Client extends 
AbstractPersistableCustom {
         return this.lastname;
     }
 
-    public Date getProposedTransferDate() {
+    public LocalDate getProposedTransferDate() {
         return proposedTransferDate;
     }
 
-    public void updateProposedTransferDate(Date proposedTransferDate) {
+    public void updateProposedTransferDate(LocalDate proposedTransferDate) {
         this.proposedTransferDate = proposedTransferDate;
     }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
index 203e1ccd5..74357c62d 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientCharge.java
@@ -20,19 +20,14 @@ package org.apache.fineract.portfolio.client.domain;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
-import java.time.ZoneId;
-import java.util.Date;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import 
org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
-import org.apache.fineract.infrastructure.core.service.DateUtils;
 import org.apache.fineract.organisation.monetary.domain.MonetaryCurrency;
 import org.apache.fineract.organisation.monetary.domain.Money;
 import org.apache.fineract.organisation.office.domain.OrganisationCurrency;
@@ -56,9 +51,8 @@ public class ClientCharge extends AbstractPersistableCustom {
     @Column(name = "charge_time_enum", nullable = false)
     private Integer chargeTime;
 
-    @Temporal(TemporalType.DATE)
     @Column(name = "charge_due_date")
-    private Date dueDate;
+    private LocalDate dueDate;
 
     @Column(name = "charge_calculation_enum")
     private Integer chargeCalculation;
@@ -90,9 +84,8 @@ public class ClientCharge extends AbstractPersistableCustom {
     @Column(name = "is_active", nullable = false)
     private boolean status = true;
 
-    @Temporal(TemporalType.DATE)
     @Column(name = "inactivated_on_date")
-    private Date inactivationDate;
+    private LocalDate inactivationDate;
 
     @Transient
     private OrganisationCurrency currency;
@@ -116,7 +109,7 @@ public class ClientCharge extends AbstractPersistableCustom 
{
         this.charge = charge;
         this.penaltyCharge = charge.isPenalty();
         this.chargeTime = charge.getChargeTimeType();
-        this.dueDate = (dueDate == null) ? null : 
Date.from(dueDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        this.dueDate = dueDate;
         this.chargeCalculation = charge.getChargeCalculation();
 
         BigDecimal chargeAmount = charge.getAmount();
@@ -220,11 +213,7 @@ public class ClientCharge extends 
AbstractPersistableCustom {
     }
 
     public LocalDate getDueLocalDate() {
-        LocalDate dueDate = null;
-        if (this.dueDate != null) {
-            dueDate = LocalDate.ofInstant(this.dueDate.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
-        }
-        return dueDate;
+        return this.dueDate;
     }
 
     public Client getClient() {
@@ -239,7 +228,7 @@ public class ClientCharge extends AbstractPersistableCustom 
{
         return this.chargeTime;
     }
 
-    public Date getDueDate() {
+    public LocalDate getDueDate() {
         return this.dueDate;
     }
 
@@ -267,7 +256,7 @@ public class ClientCharge extends AbstractPersistableCustom 
{
         return !this.status;
     }
 
-    public Date getInactivationDate() {
+    public LocalDate getInactivationDate() {
         return this.inactivationDate;
     }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
index 5c18cd260..6746922ce 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientFamilyMembers.java
@@ -19,14 +19,12 @@
 
 package org.apache.fineract.portfolio.client.domain;
 
-import java.util.Date;
+import java.time.LocalDate;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import org.apache.fineract.infrastructure.codes.domain.CodeValue;
 import 
org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
@@ -76,12 +74,11 @@ public class ClientFamilyMembers extends 
AbstractPersistableCustom {
     private CodeValue profession;
 
     @Column(name = "date_of_birth", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date dateOfBirth;
+    private LocalDate dateOfBirth;
 
     private ClientFamilyMembers(final Client client, final String firstName, 
final String middleName, final String lastName,
             final String qualification, final String mobileNumber, final Long 
age, final Boolean isDependent, final CodeValue relationship,
-            final CodeValue maritalStatus, final CodeValue gender, final Date 
dateOfBirth, final CodeValue profession) {
+            final CodeValue maritalStatus, final CodeValue gender, final 
LocalDate dateOfBirth, final CodeValue profession) {
 
         this.client = client;
         this.firstName = firstName;
@@ -104,7 +101,7 @@ public class ClientFamilyMembers extends 
AbstractPersistableCustom {
 
     public static ClientFamilyMembers fromJson(final Client client, final 
String firstName, final String middleName, final String lastName,
             final String qualification, final String mobileNumber, final Long 
age, final Boolean isDependent, final CodeValue relationship,
-            final CodeValue maritalStatus, final CodeValue gender, final Date 
dateOfBirth, final CodeValue profession) {
+            final CodeValue maritalStatus, final CodeValue gender, final 
LocalDate dateOfBirth, final CodeValue profession) {
         return new ClientFamilyMembers(client, firstName, middleName, 
lastName, qualification, mobileNumber, age, isDependent, relationship,
                 maritalStatus, gender, dateOfBirth, profession);
     }
@@ -181,11 +178,11 @@ public class ClientFamilyMembers extends 
AbstractPersistableCustom {
         this.profession = profession;
     }
 
-    public Date getDateOfBirth() {
+    public LocalDate getDateOfBirth() {
         return this.dateOfBirth;
     }
 
-    public void setDateOfBirth(Date dateOfBirth) {
+    public void setDateOfBirth(LocalDate dateOfBirth) {
         this.dateOfBirth = dateOfBirth;
     }
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
index 5c6772f3e..5c5414af5 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientNonPerson.java
@@ -19,9 +19,7 @@
 package org.apache.fineract.portfolio.client.domain;
 
 import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -32,15 +30,12 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToOne;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.fineract.infrastructure.codes.domain.CodeValue;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.ApiParameterError;
 import 
org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 import 
org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException;
-import org.apache.fineract.infrastructure.core.service.DateUtils;
 import org.apache.fineract.portfolio.client.api.ClientApiConstants;
 
 @Entity
@@ -59,8 +54,7 @@ public class ClientNonPerson extends 
AbstractPersistableCustom {
     private String incorpNumber;
 
     @Column(name = "incorp_validity_till", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date incorpValidityTill;
+    private LocalDate incorpValidityTill;
 
     @ManyToOne(fetch = FetchType.LAZY)
     @JoinColumn(name = "main_business_line_cv_id", nullable = true)
@@ -94,18 +88,12 @@ public class ClientNonPerson extends 
AbstractPersistableCustom {
 
         if (StringUtils.isNotBlank(incorpNumber)) {
             this.incorpNumber = incorpNumber.trim();
-        } else {
-            this.incorpNumber = null;
         }
 
-        if (incorpValidityTill != null) {
-            this.incorpValidityTill = 
Date.from(incorpValidityTill.atStartOfDay(ZoneId.systemDefault()).toInstant());
-        }
+        this.incorpValidityTill = incorpValidityTill;
 
         if (StringUtils.isNotBlank(remarks)) {
             this.remarks = remarks.trim();
-        } else {
-            this.remarks = null;
         }
 
         validate(client);
@@ -139,11 +127,7 @@ public class ClientNonPerson extends 
AbstractPersistableCustom {
     }
 
     public LocalDate getIncorpValidityTillLocalDate() {
-        LocalDate incorpValidityTillLocalDate = null;
-        if (this.incorpValidityTill != null) {
-            incorpValidityTillLocalDate = 
LocalDate.ofInstant(this.incorpValidityTill.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
-        }
-        return incorpValidityTillLocalDate;
+        return this.incorpValidityTill;
     }
 
     public Long constitutionId() {
@@ -195,8 +179,7 @@ public class ClientNonPerson extends 
AbstractPersistableCustom {
             actualChanges.put(ClientApiConstants.dateFormatParamName, 
dateFormatAsInput);
             actualChanges.put(ClientApiConstants.localeParamName, 
localeAsInput);
 
-            final LocalDate newValue = 
command.localDateValueOfParameterNamed(ClientApiConstants.incorpValidityTillParamName);
-            this.incorpValidityTill = 
Date.from(newValue.atStartOfDay(ZoneId.systemDefault()).toInstant());
+            this.incorpValidityTill = 
command.localDateValueOfParameterNamed(ClientApiConstants.incorpValidityTillParamName);
         }
 
         if 
(command.isChangeInLongParameterNamed(ClientApiConstants.constitutionIdParamName,
 constitutionId())) {
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
index ea343223b..0023d9025 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransaction.java
@@ -20,9 +20,8 @@ package org.apache.fineract.portfolio.client.domain;
 
 import java.math.BigDecimal;
 import java.time.LocalDate;
-import java.time.ZoneId;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
@@ -36,8 +35,6 @@ import javax.persistence.JoinColumn;
 import javax.persistence.ManyToOne;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import javax.persistence.Transient;
 import javax.persistence.UniqueConstraint;
 import org.apache.fineract.accounting.glaccount.domain.GLAccount;
@@ -73,9 +70,8 @@ public class ClientTransaction extends 
AbstractPersistableCustom {
     @Column(name = "transaction_type_enum", nullable = false)
     private Integer typeOf;
 
-    @Temporal(TemporalType.DATE)
     @Column(name = "transaction_date", nullable = false)
-    private Date dateOf;
+    private LocalDate dateOf;
 
     @Column(name = "amount", scale = 6, precision = 19, nullable = false)
     private BigDecimal amount;
@@ -86,9 +82,8 @@ public class ClientTransaction extends 
AbstractPersistableCustom {
     @Column(name = "external_id", length = 100, nullable = true, unique = true)
     private String externalId;
 
-    @Temporal(TemporalType.TIMESTAMP)
     @Column(name = "created_date", nullable = false)
-    private Date createdDate;
+    private LocalDateTime createdDate;
 
     @ManyToOne
     @JoinColumn(name = "appuser_id", nullable = true)
@@ -107,7 +102,7 @@ public class ClientTransaction extends 
AbstractPersistableCustom {
         final boolean isReversed = false;
         final String externalId = null;
         return new ClientTransaction(client, office, paymentDetail, 
ClientTransactionType.PAY_CHARGE.getValue(), date, amount, isReversed,
-                externalId, DateUtils.getDateOfTenant(), currencyCode, 
appUser);
+                externalId, DateUtils.getLocalDateTimeOfTenant(), 
currencyCode, appUser);
     }
 
     public static ClientTransaction waiver(final Client client, final Office 
office, final LocalDate date, final Money amount,
@@ -116,17 +111,17 @@ public class ClientTransaction extends 
AbstractPersistableCustom {
         final String externalId = null;
         final PaymentDetail paymentDetail = null;
         return new ClientTransaction(client, office, paymentDetail, 
ClientTransactionType.WAIVE_CHARGE.getValue(), date, amount, isReversed,
-                externalId, DateUtils.getDateOfTenant(), currencyCode, 
appUser);
+                externalId, DateUtils.getLocalDateTimeOfTenant(), 
currencyCode, appUser);
     }
 
     public ClientTransaction(Client client, Office office, PaymentDetail 
paymentDetail, Integer typeOf, LocalDate transactionLocalDate,
-            Money amount, boolean reversed, String externalId, Date 
createdDate, String currencyCode, AppUser appUser) {
+            Money amount, boolean reversed, String externalId, LocalDateTime 
createdDate, String currencyCode, AppUser appUser) {
 
         this.client = client;
         this.office = office;
         this.paymentDetail = paymentDetail;
         this.typeOf = typeOf;
-        this.dateOf = 
Date.from(transactionLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
+        this.dateOf = transactionLocalDate;
         this.amount = amount.getAmount();
         this.reversed = reversed;
         this.externalId = externalId;
@@ -228,7 +223,7 @@ public class ClientTransaction extends 
AbstractPersistableCustom {
     }
 
     public LocalDate getTransactionDate() {
-        return LocalDate.ofInstant(this.dateOf.toInstant(), 
DateUtils.getDateTimeZoneOfTenant());
+        return this.dateOf;
     }
 
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
index 6f1408c28..f0e6e37ca 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/domain/ClientTransferDetails.java
@@ -19,12 +19,10 @@
 
 package org.apache.fineract.portfolio.client.domain;
 
-import java.util.Date;
+import java.time.LocalDate;
 import javax.persistence.Column;
 import javax.persistence.Entity;
 import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
 import 
org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom;
 
 @SuppressWarnings("serial")
@@ -42,23 +40,21 @@ public class ClientTransferDetails extends 
AbstractPersistableCustom {
     private Long toOfficeId;
 
     @Column(name = "proposed_transfer_date", nullable = true)
-    @Temporal(TemporalType.DATE)
-    private Date proposedTransferDate;
+    private LocalDate proposedTransferDate;
 
     @Column(name = "transfer_type", nullable = false)
     private Integer transferEventType;
 
     @Column(name = "submitted_on", nullable = false)
-    @Temporal(TemporalType.DATE)
-    private Date submittedOn;
+    private LocalDate submittedOn;
 
     @Column(name = "submitted_by", nullable = false)
     private Long submittedBy;
 
     protected ClientTransferDetails() {}
 
-    private ClientTransferDetails(final Long clientId, final Long 
fromOfficeId, final Long toOfficeId, final Date proposedTransferDate,
-            final Integer transferEventType, final Date submittedOn, final 
Long submittedBy) {
+    private ClientTransferDetails(final Long clientId, final Long 
fromOfficeId, final Long toOfficeId, final LocalDate proposedTransferDate,
+            final Integer transferEventType, final LocalDate submittedOn, 
final Long submittedBy) {
         this.clientId = clientId;
         this.fromOfficeId = fromOfficeId;
         this.toOfficeId = toOfficeId;
@@ -69,7 +65,7 @@ public class ClientTransferDetails extends 
AbstractPersistableCustom {
     }
 
     public static ClientTransferDetails instance(final Long clientId, final 
Long fromOfficeId, final Long toOfficeId,
-            final Date proposedTransferDate, final Integer transferEventType, 
final Date submittedOn, final Long submittedBy) {
+            final LocalDate proposedTransferDate, final Integer 
transferEventType, final LocalDate submittedOn, final Long submittedBy) {
         return new ClientTransferDetails(clientId, fromOfficeId, toOfficeId, 
proposedTransferDate, transferEventType, submittedOn,
                 submittedBy);
 
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java
index 4bcd83d50..e58fa70c4 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientFamilyMembersWritePlatformServiceImpl.java
@@ -22,10 +22,10 @@ package org.apache.fineract.portfolio.client.service;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.time.LocalDate;
+import java.time.format.DateTimeFormatter;
+import java.time.format.DateTimeFormatterBuilder;
+import java.time.format.DateTimeParseException;
 import org.apache.fineract.infrastructure.codes.domain.CodeValue;
 import org.apache.fineract.infrastructure.codes.domain.CodeValueRepository;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
@@ -82,40 +82,19 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
         String mobileNumber = "";
         Long age = null;
         Boolean isDependent = false;
-        Date dateOfBirth = null;
+        LocalDate dateOfBirth = null;
 
         this.context.authenticatedUser();
         apiJsonDeserializer.validateForCreate(clientId, command.json());
 
         Client client = 
clientRepositoryWrapper.findOneWithNotFoundDetection(clientId);
-
-        if (command.stringValueOfParameterNamed("firstName") != null) {
-            firstName = command.stringValueOfParameterNamed("firstName");
-        }
-
-        if (command.stringValueOfParameterNamed("middleName") != null) {
-            middleName = command.stringValueOfParameterNamed("middleName");
-        }
-
-        if (command.stringValueOfParameterNamed("lastName") != null) {
-            lastName = command.stringValueOfParameterNamed("lastName");
-        }
-
-        if (command.stringValueOfParameterNamed("qualification") != null) {
-            qualification = 
command.stringValueOfParameterNamed("qualification");
-        }
-
-        if (command.stringValueOfParameterNamed("mobileNumber") != null) {
-            mobileNumber = command.stringValueOfParameterNamed("mobileNumber");
-        }
-
-        if (command.longValueOfParameterNamed("age") != null) {
-            age = command.longValueOfParameterNamed("age");
-        }
-
-        if (command.booleanObjectValueOfParameterNamed("isDependent") != null) 
{
-            isDependent = 
command.booleanObjectValueOfParameterNamed("isDependent");
-        }
+        firstName = command.stringValueOfParameterNamed("firstName");
+        middleName = command.stringValueOfParameterNamed("middleName");
+        lastName = command.stringValueOfParameterNamed("lastName");
+        qualification = command.stringValueOfParameterNamed("qualification");
+        mobileNumber = command.stringValueOfParameterNamed("mobileNumber");
+        age = command.longValueOfParameterNamed("age");
+        isDependent = 
command.booleanObjectValueOfParameterNamed("isDependent");
 
         if (command.longValueOfParameterNamed("relationshipId") != null) {
             relationshipId = 
command.longValueOfParameterNamed("relationshipId");
@@ -137,10 +116,7 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
             profession = 
this.codeValueRepository.getReferenceById(professionId);
         }
 
-        if (command.dateValueOfParameterNamed("dateOfBirth") != null) {
-            dateOfBirth = command.dateValueOfParameterNamed("dateOfBirth");
-
-        }
+        dateOfBirth = command.localDateValueOfParameterNamed("dateOfBirth");
 
         ClientFamilyMembers clientFamilyMembers = 
ClientFamilyMembers.fromJson(client, firstName, middleName, lastName, 
qualification,
                 mobileNumber, age, isDependent, relationship, maritalStatus, 
gender, dateOfBirth, profession);
@@ -166,7 +142,7 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
         String middleName = "";
         String lastName = "";
         String qualification = "";
-        Date dateOfBirth = null;
+        LocalDate dateOfBirth = null;
         String mobileNumber = "";
         Long age = null;
         Boolean isDependent = false;
@@ -238,12 +214,13 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
 
             if (member.get("dateOfBirth") != null) {
 
-                DateFormat format = new 
SimpleDateFormat(member.get("dateFormat").getAsString());
-                Date date;
+                DateTimeFormatter formatter = new 
DateTimeFormatterBuilder().appendPattern(member.get("dateFormat").getAsString())
+                        .toFormatter();
+                LocalDate date;
                 try {
-                    date = 
format.parse(member.get("dateOfBirth").getAsString());
+                    date = 
LocalDate.parse(member.get("dateOfBirth").getAsString(), formatter);
                     dateOfBirth = date;
-                } catch (ParseException e) {
+                } catch (DateTimeParseException e) {
                     // TODO Auto-generated catch block
                     LOG.error("Problem occurred in addClientFamilyMember 
function", e);
                 }
@@ -280,7 +257,7 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
         String middleName = "";
         String lastName = "";
         String qualification = "";
-        Date dateOfBirth = null;
+        LocalDate dateOfBirth = null;
         String mobileNumber = "";
         Long age = null;
         Boolean isDependent = false;
@@ -359,8 +336,8 @@ public class ClientFamilyMembersWritePlatformServiceImpl 
implements ClientFamily
             clientFamilyMember.setProfession(profession);
         }
 
-        if (command.dateValueOfParameterNamed("dateOfBirth") != null) {
-            dateOfBirth = command.dateValueOfParameterNamed("dateOfBirth");
+        if (command.localDateValueOfParameterNamed("dateOfBirth") != null) {
+            dateOfBirth = 
command.localDateValueOfParameterNamed("dateOfBirth");
             clientFamilyMember.setDateOfBirth(dateOfBirth);
 
         }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
index 647a45955..5c74e7ec0 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformService.java
@@ -18,8 +18,8 @@
  */
 package org.apache.fineract.portfolio.client.service;
 
+import java.time.LocalDate;
 import java.util.Collection;
-import java.util.Date;
 import org.apache.fineract.infrastructure.core.service.Page;
 import org.apache.fineract.infrastructure.core.service.SearchParameters;
 import org.apache.fineract.portfolio.client.data.ClientData;
@@ -57,7 +57,7 @@ public interface ClientReadPlatformService {
      */
     Collection<Long> retrieveUserClients(Long aUserID);
 
-    Date retrieveClientTransferProposalDate(Long clientId);
+    LocalDate retrieveClientTransferProposalDate(Long clientId);
 
     void validateClient(Long clientId);
 }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
index fd02045ef..150d2520c 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientReadPlatformServiceImpl.java
@@ -25,7 +25,6 @@ import java.time.LocalDate;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
-import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -845,11 +844,11 @@ public class ClientReadPlatformServiceImpl implements 
ClientReadPlatformService
     }
 
     @Override
-    public Date retrieveClientTransferProposalDate(Long clientId) {
+    public LocalDate retrieveClientTransferProposalDate(Long clientId) {
         validateClient(clientId);
         final String sql = "SELECT cl.proposed_transfer_date FROM m_client cl 
WHERE cl.id =? ";
         try {
-            return this.jdbcTemplate.queryForObject(sql, Date.class, clientId);
+            return this.jdbcTemplate.queryForObject(sql, LocalDate.class, 
clientId);
         } catch (final EmptyResultDataAccessException e) {
             return null;
         }
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java
index c02f4d033..65f8cb33f 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java
@@ -20,9 +20,7 @@ package org.apache.fineract.portfolio.client.service;
 
 import com.google.gson.JsonElement;
 import java.time.LocalDate;
-import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
-import java.util.Date;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
@@ -748,7 +746,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
                 }
             }
 
-            client.close(currentUser, closureReason, 
Date.from(closureDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+            client.close(currentUser, closureReason, closureDate);
             this.clientRepository.saveAndFlush(client);
             return new CommandProcessingResultBuilder() //
                     .withCommandId(command.commandId()) //
@@ -842,7 +840,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
             throw new InvalidClientStateTransitionException("rejection", 
"date.cannot.before.client.submitted.date", errorMessage,
                     rejectionDate, client.getSubmittedOnDate());
         }
-        client.reject(currentUser, rejectionReason, 
Date.from(rejectionDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+        client.reject(currentUser, rejectionReason, rejectionDate);
         clientRepository.saveAndFlush(client);
         businessEventNotifierService.notifyPostBusinessEvent(new 
ClientRejectBusinessEvent(client));
         return new CommandProcessingResultBuilder() //
@@ -873,7 +871,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
             throw new InvalidClientStateTransitionException("withdrawal", 
"date.cannot.before.client.submitted.date", errorMessage,
                     withdrawalDate, client.getSubmittedOnDate());
         }
-        client.withdraw(currentUser, withdrawalReason, 
Date.from(withdrawalDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+        client.withdraw(currentUser, withdrawalReason, withdrawalDate);
         this.clientRepository.saveAndFlush(client);
         return new CommandProcessingResultBuilder() //
                 .withCommandId(command.commandId()) //
@@ -898,7 +896,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
             throw new InvalidClientStateTransitionException("reactivation", 
"date.cannot.before.client.closed.date", errorMessage,
                     reactivateDate, client.getClosureDate());
         }
-        client.reActivate(currentUser, 
Date.from(reactivateDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+        client.reActivate(currentUser, reactivateDate);
         this.clientRepository.saveAndFlush(client);
         return new CommandProcessingResultBuilder() //
                 .withCommandId(command.commandId()) //
@@ -924,7 +922,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
                     undoRejectDate, client.getRejectedDate());
         }
 
-        client.reOpened(currentUser, 
Date.from(undoRejectDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+        client.reOpened(currentUser, undoRejectDate);
         this.clientRepository.saveAndFlush(client);
 
         return new CommandProcessingResultBuilder() //
@@ -950,7 +948,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl 
implements ClientWriteP
             throw new InvalidClientStateTransitionException("reopened", 
"date.cannot.before.client.withdrawal.date", errorMessage,
                     undoWithdrawalDate, client.getWithdrawalDate());
         }
-        client.reOpened(currentUser, 
Date.from(undoWithdrawalDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+        client.reOpened(currentUser, undoWithdrawalDate);
         this.clientRepository.saveAndFlush(client);
 
         return new CommandProcessingResultBuilder() //
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
index f705d9871..10830276b 100755
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/interestratechart/incentive/ClientAttributeIncentiveCalculation.java
@@ -42,8 +42,7 @@ public class ClientAttributeIncentiveCalculation extends 
AttributeIncentiveCalcu
             break;
             case AGE:
                 if (client.dateOfBirth() != null) {
-                    final LocalDate dobLocalDate = 
LocalDate.ofInstant(client.dateOfBirth().toInstant(),
-                            DateUtils.getDateTimeZoneOfTenant());
+                    final LocalDate dobLocalDate = client.dateOfBirth();
                     final int age = 
Math.toIntExact(ChronoUnit.YEARS.between(dobLocalDate, 
DateUtils.getBusinessLocalDate()));
                     applyIncentive = 
applyIncentive(incentivesFields.conditionType(), 
Long.valueOf(incentivesFields.attributeValue()),
                             (long) age);
diff --git 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
index dace0392f..4d483f463 100644
--- 
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
+++ 
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/transfer/service/TransferWritePlatformServiceJpaRepositoryImpl.java
@@ -21,9 +21,7 @@ package org.apache.fineract.portfolio.transfer.service;
 import com.google.gson.JsonArray;
 import com.google.gson.JsonObject;
 import java.time.LocalDate;
-import java.time.ZoneId;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 import org.apache.fineract.infrastructure.core.api.JsonCommand;
 import org.apache.fineract.infrastructure.core.data.CommandProcessingResult;
@@ -474,7 +472,7 @@ public class TransferWritePlatformServiceJpaRepositoryImpl 
implements TransferWr
             case PROPOSAL:
                 client.setStatus(ClientStatus.TRANSFER_IN_PROGRESS.getValue());
                 client.updateTransferToOffice(destinationOffice);
-                
client.updateProposedTransferDate(Date.from(transferDate.atStartOfDay(ZoneId.systemDefault()).toInstant()));
+                client.updateProposedTransferDate(transferDate);
             break;
             case REJECTION:
                 client.setStatus(ClientStatus.TRANSFER_ON_HOLD.getValue());
@@ -488,10 +486,9 @@ public class TransferWritePlatformServiceJpaRepositoryImpl 
implements TransferWr
         }
 
         this.noteWritePlatformService.createAndPersistClientNote(client, 
jsonCommand);
-        Date proposedTransferDate = transferDate != null ? 
Date.from(transferDate.atStartOfDay(ZoneId.systemDefault()).toInstant()) : null;
-        this.clientTransferDetailsRepositoryWrapper.save(
-                ClientTransferDetails.instance(client.getId(), 
client.getOffice().getId(), destinationOffice.getId(), proposedTransferDate,
-                        transferEventType.getValue(), 
DateUtils.getBusinessDate(), this.context.authenticatedUser().getId()));
+        this.clientTransferDetailsRepositoryWrapper
+                .save(ClientTransferDetails.instance(client.getId(), 
client.getOffice().getId(), destinationOffice.getId(), transferDate,
+                        transferEventType.getValue(), 
DateUtils.getBusinessLocalDate(), this.context.authenticatedUser().getId()));
     }
 
     private List<Client> assembleListOfClients(final JsonCommand command) {

Reply via email to