You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fineract.apache.org by pt...@apache.org on 2020/11/08 02:19:41 UTC

[fineract] branch develop created (now ef3e2e3)

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

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


      at ef3e2e3  Fix Bulk Import failing for office names containing hyphens (FINERACT-1256)

This branch includes the following new commits:

     new 73e330a  Move all SDK client tests into integrationtests (FINERACT-1209)
     new ef3e2e3  Fix Bulk Import failing for office names containing hyphens (FINERACT-1256)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[fineract] 01/02: Move all SDK client tests into integrationtests (FINERACT-1209)

Posted by pt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 73e330a58e1f1697ee8915bc25e5beb25ad913d8
Author: Michael Vorburger <mi...@vorburger.ch>
AuthorDate: Fri Nov 6 23:47:05 2020 +0100

    Move all SDK client tests into integrationtests (FINERACT-1209)
    
    And run the against localhost instead of https://fineract.dev
---
 fineract-client/build.gradle                       |   6 +-
 .../fineract/client/util/FineractClient.java       |   3 +-
 ...tTest.java => FineractClientTechnicalTest.java} |  34 +------
 .../organisation/staff/api/StaffApiResource.java   |  21 ++---
 .../staff/api/StaffApiResourceSwagger.java         |  14 +--
 integration-tests/dependencies.gradle              |   1 +
 .../integrationtests/StaffImageApiTest.java        | 102 ---------------------
 .../fineract/integrationtests/StaffTest.java       |   2 +-
 .../integrationtests/client}/CallSubject.java      |   2 +-
 .../integrationtests/client}/ClientTest.java       |  14 +--
 .../integrationtests/client}/DocumentTest.java     |   7 +-
 .../integrationtests/client}/ImageTest.java        |  34 +++----
 .../integrationtests/client}/IntegrationTest.java  |   9 +-
 .../integrationtests/client}/OfficeTest.java       |  15 ++-
 .../integrationtests/client/StaffTest.java         |  67 ++++++++++++++
 .../integrationtests/common/ImageHelper.java       |  81 ----------------
 .../test/resources/michael.vorburger-crepes.jpg    | Bin
 17 files changed, 134 insertions(+), 278 deletions(-)

diff --git a/fineract-client/build.gradle b/fineract-client/build.gradle
index b11b028..4bcbe9e 100644
--- a/fineract-client/build.gradle
+++ b/fineract-client/build.gradle
@@ -103,7 +103,11 @@ compileJava {
 }
 
 tasks.withType(JavaCompile) {
-    // the generated code contains some warnings in build/generated/java/src/main/java/org/apache/fineract/client/auth/OAuthOkHttpClient.java#L71 that won't pass
+    // the generated code in build/generated/java/src/main/java/org/apache/fineract/client/auth/OAuthOkHttpClient.java#L71 currently uses deprecated RequestBody.create(MediaType,String)
+    // TODO FINERACT-1247 why does this not work:
+    //   options.compilerArgs -= ["-Xlint:deprecation"]
+    //   options.compilerArgs += ["-Xlint:-deprecation"]
+    // So we just have to use:
     options.compilerArgs -= ["-Werror"]
 }
 
diff --git a/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java b/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java
index ab12819..e6a4a64 100644
--- a/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java
+++ b/fineract-client/src/main/java/org/apache/fineract/client/util/FineractClient.java
@@ -453,7 +453,8 @@ public final class FineractClient {
                         }
                     };
 
-                    SSLContext sslContext = SSLContext.getInstance("SSL"); // TODO "SSL" or "TLS" as in hooks.processor.ProcessorHelper?
+                    // TODO "SSL" or "TLS" as in hooks.processor.ProcessorHelper?
+                    SSLContext sslContext = SSLContext.getInstance("SSL");
                     sslContext.init(null, new TrustManager[] { insecureX509TrustManager }, new SecureRandom());
                     SSLSocketFactory insecureSslSocketFactory = sslContext.getSocketFactory();
 
diff --git a/fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTest.java b/fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTechnicalTest.java
similarity index 54%
rename from fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTest.java
rename to fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTechnicalTest.java
index 9afb89a..63bb567 100644
--- a/fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTest.java
+++ b/fineract-client/src/test/java/org/apache/fineract/client/test/FineractClientTechnicalTest.java
@@ -18,48 +18,18 @@
  */
 package org.apache.fineract.client.test;
 
-import static com.google.common.truth.Truth.assertThat;
-import static org.apache.fineract.client.util.Calls.ok;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import okhttp3.logging.HttpLoggingInterceptor.Level;
 import org.apache.fineract.client.util.FineractClient;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 /**
- * Illustrates use of Fineract SDK REST Client.
+ * Tests a few technical aspect of the Fineract SDK REST Client.
  *
  * @author Michael Vorburger.ch
  */
-public class FineractClientTest {
-
-    void checkClients(FineractClient fineract) {
-        assertThat(ok(fineract.clients.retrieveAll20(null, null, null, null, null, null, null, null, 0, 100, null, null, null))
-                .getTotalFilteredRecords()).isAtLeast(3);
-    }
-
-    @Test
-    void testRetrieveAllClientsFromFineractDev() {
-        FineractClient fineract = FineractClient.builder().baseURL("https://demo.fineract.dev/fineract-provider/api/v1/").tenant("default")
-                .basicAuth("mifos", "password").logging(Level.BODY).build();
-        checkClients(fineract);
-    }
-
-    @Test
-    @Disabled // TODO remove Disabled once https://issues.apache.org/jira/browse/FINERACT-1209 is fixed
-    void testRetrieveAllClientsFromLocalhostWithInsecureSelfSignedCert() {
-        FineractClient fineract = FineractClient.builder().baseURL("https://localhost:8443/fineract-provider/api/v1/").tenant("default")
-                .basicAuth("mifos", "password").insecure(true).build();
-        checkClients(fineract);
-    }
-
-    @Test // FINERACT-1220
-    void testOfficesDateFormat() {
-        FineractClient fineract = FineractClient.builder().baseURL("https://demo.fineract.dev/fineract-provider/api/v1/").tenant("default")
-                .basicAuth("mifos", "password").insecure(true).logging(Level.BODY).build();
-        ok(fineract.offices.retrieveOffices(true, null, null));
-    }
+public class FineractClientTechnicalTest {
 
     @Test
     @Disabled // TODO remove Ignore once https://issues.apache.org/jira/browse/FINERACT-1221 is fixed
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResource.java
index 6a0f0ea..81e653f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResource.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResource.java
@@ -115,9 +115,8 @@ public class StaffApiResource {
             + "and for status=ALL, it Returns both ACTIVE and INACTIVE Staff.\n" + "\n" + "Example Requests:\n" + "\n"
             + "staff?status=active")
     @ApiResponses({
-            @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = StaffApiResourceSwagger.GetStaffResponse.class)))),
-            @ApiResponse(responseCode = "200", description = "GET https://DomainName/api/v1/staff?status={ACTIVE|INACTIVE|ALL}", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.GetStaffResponse.class))) })
-    public String retrieveStaff(@Context final UriInfo uriInfo,
+            @ApiResponse(responseCode = "200", description = "OK", content = @Content(array = @ArraySchema(schema = @Schema(implementation = StaffApiResourceSwagger.RetrieveOneResponse.class)))) })
+    public String retrieveAll(@Context final UriInfo uriInfo,
             @QueryParam("officeId") @Parameter(description = "officeId") final Long officeId,
             @DefaultValue("false") @QueryParam("staffInOfficeHierarchy") @Parameter(description = "staffInOfficeHierarchy") final boolean staffInOfficeHierarchy,
             @DefaultValue("false") @QueryParam("loanOfficersOnly") @Parameter(description = "loanOfficersOnly") final boolean loanOfficersOnly,
@@ -143,8 +142,8 @@ public class StaffApiResource {
             + "officeId, firstname, lastname\n" + "\n" + "Optional Fields: \n" + "isLoanOfficer, isActive")
     @RequestBody(required = true, content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.PostStaffRequest.class)))
     @ApiResponses({
-            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.PostStaffResponse.class))) })
-    public String createStaff(@Parameter(hidden = true) final String apiRequestBodyAsJson) {
+            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.CreateStaffResponse.class))) })
+    public String create(@Parameter(hidden = true) final String apiRequestBodyAsJson) {
 
         final CommandWrapper commandRequest = new CommandWrapperBuilder().createStaff().withJson(apiRequestBodyAsJson).build();
 
@@ -160,8 +159,8 @@ public class StaffApiResource {
     @Operation(summary = "Retrieve a Staff Member", description = "Returns the details of a Staff Member.\n" + "\n" + "Example Requests:\n"
             + "\n" + "staff/1")
     @ApiResponses({
-            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.GetStaffResponse.class))) })
-    public String retreiveStaff(@PathParam("staffId") @Parameter(description = "staffId") final Long staffId,
+            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.RetrieveOneResponse.class))) })
+    public String retrieveOne(@PathParam("staffId") @Parameter(description = "staffId") final Long staffId,
             @Context final UriInfo uriInfo) {
 
         this.context.authenticatedUser().validateHasReadPermission(this.resourceNameForPermissions);
@@ -183,8 +182,8 @@ public class StaffApiResource {
     @Operation(summary = "Update a Staff Member", description = "Updates the details of a staff member.")
     @RequestBody(required = true, content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.PutStaffRequest.class)))
     @ApiResponses({
-            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.PutStaffResponse.class))) })
-    public String updateStaff(@PathParam("staffId") @Parameter(description = "staffId") final Long staffId,
+            @ApiResponse(responseCode = "200", description = "OK", content = @Content(schema = @Schema(implementation = StaffApiResourceSwagger.UpdateStaffResponse.class))) })
+    public String update(@PathParam("staffId") @Parameter(description = "staffId") final Long staffId,
             @Parameter(hidden = true) final String apiRequestBodyAsJson) {
 
         final CommandWrapper commandRequest = new CommandWrapperBuilder().updateStaff(staffId).withJson(apiRequestBodyAsJson).build();
@@ -197,14 +196,14 @@ public class StaffApiResource {
     @GET
     @Path("downloadtemplate")
     @Produces("application/vnd.ms-excel")
-    public Response getStaffTemplate(@QueryParam("officeId") final Long officeId, @QueryParam("dateFormat") final String dateFormat) {
+    public Response getTemplate(@QueryParam("officeId") final Long officeId, @QueryParam("dateFormat") final String dateFormat) {
         return bulkImportWorkbookPopulatorService.getTemplate(GlobalEntityType.STAFF.toString(), officeId, null, dateFormat);
     }
 
     @POST
     @Path("uploadtemplate")
     @Consumes(MediaType.MULTIPART_FORM_DATA)
-    public String postStaffTemplate(@FormDataParam("file") InputStream uploadedInputStream,
+    public String postTemplate(@FormDataParam("file") InputStream uploadedInputStream,
             @FormDataParam("file") FormDataContentDisposition fileDetail, @FormDataParam("locale") final String locale,
             @FormDataParam("dateFormat") final String dateFormat) {
         final Long importDocumentId = this.bulkImportWorkbookService.importWorkbook(GlobalEntityType.STAFF.toString(), uploadedInputStream,
diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResourceSwagger.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResourceSwagger.java
index 289a968..95e5e55 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResourceSwagger.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/staff/api/StaffApiResourceSwagger.java
@@ -39,7 +39,7 @@ final class StaffApiResourceSwagger {
         }
 
         @Schema(example = "1")
-        public Long id;
+        public Long officeId;
         @Schema(example = "John")
         public String firstname;
         @Schema(example = "Doe")
@@ -62,9 +62,9 @@ final class StaffApiResourceSwagger {
     }
 
     @Schema(description = "PostStaffResponse")
-    public static final class PostStaffResponse {
+    public static final class CreateStaffResponse {
 
-        private PostStaffResponse() {
+        private CreateStaffResponse() {
 
         }
 
@@ -75,9 +75,9 @@ final class StaffApiResourceSwagger {
     }
 
     @Schema(description = "GetStaffResponse")
-    public static final class GetStaffResponse {
+    public static final class RetrieveOneResponse {
 
-        private GetStaffResponse() {
+        private RetrieveOneResponse() {
 
         }
 
@@ -119,9 +119,9 @@ final class StaffApiResourceSwagger {
     }
 
     @Schema(description = "PutStaffResponse")
-    public static final class PutStaffResponse {
+    public static final class UpdateStaffResponse {
 
-        private PutStaffResponse() {
+        private UpdateStaffResponse() {
 
         }
 
diff --git a/integration-tests/dependencies.gradle b/integration-tests/dependencies.gradle
index be1b2b8..ec47d59 100644
--- a/integration-tests/dependencies.gradle
+++ b/integration-tests/dependencies.gradle
@@ -23,6 +23,7 @@ dependencies {
     tomcat 'org.apache.tomcat:tomcat:9.0.39@zip'
     testImplementation( files("$rootDir/fineract-provider/build/classes/java/main/"),
             project(path: ':fineract-provider', configuration: 'runtimeElements'),
+            project(path: ':fineract-client', configuration: 'runtimeElements'),
             'org.junit.jupiter:junit-jupiter-api:5.7.0',
             'com.google.truth:truth:1.0.1',
             'com.google.truth.extensions:truth-java8-extension:1.0.1',
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffImageApiTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffImageApiTest.java
deleted file mode 100644
index 54f7d59..0000000
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffImageApiTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import io.restassured.builder.RequestSpecBuilder;
-import io.restassured.builder.ResponseSpecBuilder;
-import io.restassured.http.ContentType;
-import io.restassured.specification.RequestSpecification;
-import io.restassured.specification.ResponseSpecification;
-import org.apache.fineract.integrationtests.common.ImageHelper;
-import org.apache.fineract.integrationtests.common.Utils;
-import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-@Deprecated // replaced by new ImageTest, can be deleted as FINERACT-1209 is fully implemented
-public class StaffImageApiTest {
-
-    private RequestSpecification requestSpec;
-    private ResponseSpecification responseSpec;
-    private ResponseSpecification responseSpec404;
-
-    @BeforeEach
-    public void setup() {
-        Utils.initializeRESTAssured();
-        this.requestSpec = new RequestSpecBuilder().setContentType(ContentType.JSON).build();
-        this.requestSpec.header("Authorization", "Basic " + Utils.loginIntoServerAndGetBase64EncodedAuthenticationKey());
-        this.responseSpec = new ResponseSpecBuilder().expectStatusCode(200).build();
-        this.responseSpec404 = new ResponseSpecBuilder().expectStatusCode(404).build();
-    }
-
-    @Test
-    public void createStaffImage() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-    }
-
-    @Test
-    public void getStaffImage() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-
-        String imageAsText = ImageHelper.getStaffImageAsText(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull("Image id should not be null", imageAsText);
-        assertEquals(ImageHelper.generateImageAsText(), imageAsText);
-    }
-
-    @Test
-    public void getStaffImageAsBinary() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-
-        byte[] imageAsBytes = ImageHelper.getStaffImageAsBinary(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageAsBytes, "Image content should not be null");
-        assertEquals(251, imageAsBytes.length);
-    }
-
-    @Test
-    public void updateImage() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-
-        imageId = ImageHelper.updateImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-    }
-
-    @Test
-    public void deleteStaffImage() {
-        Integer staffId = StaffHelper.createStaff(this.requestSpec, this.responseSpec);
-        Integer imageId = ImageHelper.createImageForStaff(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-
-        imageId = ImageHelper.deleteStaffImage(this.requestSpec, this.responseSpec, staffId);
-        assertNotNull(imageId, "Image id should not be null");
-
-        ImageHelper.getStaffImageAsBinary(this.requestSpec, this.responseSpec404, staffId);
-        // No additional Assertion required, the point is the responseSpec404
-    }
-}
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffTest.java
index c18ee3f..016f758 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/StaffTest.java
@@ -33,6 +33,7 @@ import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
+@Deprecated // TODO move this into new org.apache.fineract.integrationtests.client.StaffTest
 public class StaffTest {
 
     private RequestSpecification requestSpec;
@@ -61,7 +62,6 @@ public class StaffTest {
 
     @Test
     public void testStaffCreateValidationError() {
-
         final String noOfficeJson = StaffHelper.createStaffWithJSONFields("firstname", "lastname");
         final String noFirstnameJson = StaffHelper.createStaffWithJSONFields("officeId", "lastname");
         final String noLastnameJson = StaffHelper.createStaffWithJSONFields("officeId", "firstname");
diff --git a/fineract-client/src/test/java/org/apache/fineract/client/testutil/CallSubject.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/CallSubject.java
similarity index 97%
rename from fineract-client/src/test/java/org/apache/fineract/client/testutil/CallSubject.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/CallSubject.java
index f2e6c7b..38e26c6 100644
--- a/fineract-client/src/test/java/org/apache/fineract/client/testutil/CallSubject.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/CallSubject.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.client.testutil;
+package org.apache.fineract.integrationtests.client;
 
 import com.google.common.truth.FailureMetadata;
 import com.google.common.truth.Subject;
diff --git a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ClientTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientTest.java
similarity index 86%
rename from fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ClientTest.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientTest.java
index af6b66c..5d44ff0 100644
--- a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ClientTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ClientTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.integrationtests.newstyle;
+package org.apache.fineract.integrationtests.client;
 
 import java.util.Optional;
 import org.apache.fineract.client.models.GetClientsResponse;
@@ -39,14 +39,14 @@ public class ClientTest extends IntegrationTest {
 
     @Test
     @Order(2)
-    void retrieveOneExisting() {
-        assertThat(retrieveOne()).isPresent();
+    void retrieveAnyExisting() {
+        assertThat(retrieveFirst()).isPresent();
     }
 
     // The following are not tests, but helpful utilities for other tests
 
     public Long getClientId() {
-        return retrieveOne().orElseGet(this::create);
+        return retrieveFirst().orElseGet(this::create);
     }
 
     Long create() {
@@ -56,13 +56,13 @@ public class ClientTest extends IntegrationTest {
         // TODO why dateFormat and locale required even when no activationDate?!
         // https://issues.apache.org/jira/browse/FINERACT-1233
         return (long) ok(fineract().clients
-                .create5(new PostClientsRequest().officeId(1).fullname("TestClient").dateFormat(dateFormat()).locale("en_US")))
+                .create6(new PostClientsRequest().officeId(1).fullname("TestClient").dateFormat(dateFormat()).locale("en_US")))
                         .getClientId();
     }
 
-    Optional<Long> retrieveOne() {
+    Optional<Long> retrieveFirst() {
         GetClientsResponse clients = ok(
-                fineract().clients.retrieveAll20(null, null, null, null, null, null, null, null, 0, 1, null, null, false));
+                fineract().clients.retrieveAll21(null, null, null, null, null, null, null, null, 0, 1, null, null, false));
         if (clients.getTotalFilteredRecords() > 0) {
             // TODO rm long cast, see https://issues.apache.org/jira/browse/FINERACT-1230
             return Optional.of((long) clients.getPageItems().get(0).getId());
diff --git a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/DocumentTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/DocumentTest.java
similarity index 91%
rename from fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/DocumentTest.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/DocumentTest.java
index fed52b8..1d7d49b 100644
--- a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/DocumentTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/DocumentTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.integrationtests.newstyle;
+package org.apache.fineract.integrationtests.client;
 
 import java.io.File;
 import java.io.IOException;
@@ -24,7 +24,6 @@ import okhttp3.MediaType;
 import okhttp3.MultipartBody.Part;
 import okhttp3.ResponseBody;
 import org.apache.fineract.client.models.GetEntityTypeEntityIdDocumentsResponse;
-import org.apache.fineract.client.models.PostEntityTypeEntityIdDocumentsResponse;
 import org.apache.fineract.client.util.Parts;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
@@ -54,9 +53,7 @@ public class DocumentTest extends IntegrationTest {
         String name = "Test";
         Part part = Parts.fromFile(testFile);
         String description = null;
-        // TODO used var in tests when moved from fineract-client (Java 8 only) to new module
-        PostEntityTypeEntityIdDocumentsResponse response = ok(
-                fineract().documents.createDocument("clients", clientId, part, name, description));
+        var response = ok(fineract().documents.createDocument("clients", clientId, part, name, description));
         assertThat(response.getResourceId()).isNotNull();
         assertThat(response.getResourceIdentifier()).isNotEmpty();
         documentId = response.getResourceId();
diff --git a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ImageTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ImageTest.java
similarity index 80%
rename from fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ImageTest.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ImageTest.java
index 56b951e..8bf466b 100644
--- a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/ImageTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/ImageTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.integrationtests.newstyle;
+package org.apache.fineract.integrationtests.client;
 
 import java.io.File;
 import java.io.IOException;
@@ -24,7 +24,6 @@ import okhttp3.MediaType;
 import okhttp3.ResponseBody;
 import org.apache.fineract.client.services.ImagesApi;
 import org.apache.fineract.client.util.Parts;
-import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
 import retrofit2.Call;
@@ -37,28 +36,24 @@ import retrofit2.http.Headers;
  *
  * @author Michael Vorburger.ch
  */
-@Disabled // TODO FINERACT-1247
 public class ImageTest extends IntegrationTest {
 
-    // TODO This "new style" test is equivalent to the old StaffImageApiTest, so we could delete that (after
-    // FINERACT-1209)
-
     final File testImage = new File(getClass().getResource("/michael.vorburger-crepes.jpg").getFile());
 
     Long clientId = new ClientTest().getClientId();
-    // staffId is hard-coded to 1L below, because that always exists
+    Long staffId = new StaffTest().getStaffId();
 
     @Test
     @Order(1)
     void create() {
-        ok(fineract().images.create("staff", 1L, Parts.fromFile(testImage)));
+        ok(fineract().images.create("staff", staffId, Parts.fromFile(testImage)));
         ok(fineract().images.create("clients", clientId, Parts.fromFile(testImage)));
     }
 
     @Test
     @Order(2)
     void getOriginalSize() throws IOException {
-        ResponseBody r = ok(fineract().images.get("staff", 1L, 3505, 1972, null));
+        ResponseBody r = ok(fineract().images.get("staff", staffId, 3505, 1972, null));
         assertThat(r.contentType()).isEqualTo(MediaType.get("text/plain"));
         String encodedImage = r.string();
         assertThat(encodedImage).startsWith("data:image/jpeg;base64,");
@@ -69,14 +64,14 @@ public class ImageTest extends IntegrationTest {
     @Test
     @Order(3)
     void getSmallerSize() throws IOException {
-        ResponseBody r = ok(fineract().images.get("staff", 1L, 128, 128, null));
+        ResponseBody r = ok(fineract().images.get("staff", staffId, 128, 128, null));
         assertThat(r.string()).hasLength(6591);
     }
 
     @Test
     @Order(4)
     void getBiggerSize() throws IOException {
-        ResponseBody r = ok(fineract().images.get("staff", 1L, 9000, 6000, null));
+        ResponseBody r = ok(fineract().images.get("staff", staffId, 9000, 6000, null));
         assertThat(r.string()).hasLength(2846549);
     }
 
@@ -84,21 +79,22 @@ public class ImageTest extends IntegrationTest {
     @Order(5)
     void getInlineOctetOutput() throws IOException {
         // 3505x1972 is the exact original size of testFile
-        Response<ResponseBody> r = okR(fineract().images.get("staff", 1L, 3505, 1972, "inline_octet"));
+        Response<ResponseBody> r = okR(fineract().images.get("staff", staffId, 3505, 1972, "inline_octet"));
         try (ResponseBody body = r.body()) {
             assertThat(body.contentType()).isEqualTo(MediaType.get("image/jpeg"));
             assertThat(body.bytes().length).isEqualTo(testImage.length());
             assertThat(body.contentLength()).isEqualTo(testImage.length());
         }
 
-        String expectedFileName = "test, testJPEG"; // without dot!
+        var staff = ok(fineract().staff.retrieveOne8(staffId));
+        String expectedFileName = staff.getDisplayName() + "JPEG"; // without dot!
         assertThat(Parts.fileName(r)).hasValue(expectedFileName);
     }
 
     @Test
     @Order(6)
     void getOctetOutput() throws IOException {
-        ResponseBody r = ok(fineract().images.get("staff", 1L, 3505, 1972, "octet"));
+        ResponseBody r = ok(fineract().images.get("staff", staffId, 3505, 1972, "octet"));
         assertThat(r.contentType()).isEqualTo(MediaType.get("image/jpeg"));
         assertThat(r.bytes().length).isEqualTo(testImage.length());
         assertThat(r.contentLength()).isEqualTo(testImage.length());
@@ -107,7 +103,7 @@ public class ImageTest extends IntegrationTest {
     @Test
     @Order(7)
     void getAnotherOutput() throws IOException {
-        ResponseBody r = ok(fineract().images.get("staff", 1L, 3505, 1972, "abcd"));
+        ResponseBody r = ok(fineract().images.get("staff", staffId, 3505, 1972, "abcd"));
         assertThat(r.contentType()).isEqualTo(MediaType.get("text/plain"));
         assertThat(r.string()).startsWith("data:image/jpeg;base64,");
     }
@@ -115,7 +111,7 @@ public class ImageTest extends IntegrationTest {
     @Test
     @Order(8)
     void getText() throws IOException {
-        ResponseBody r = ok(fineract().createService(ImagesApiWithHeadersForTest.class).getText("staff", 1L, 3505, 1972, null));
+        ResponseBody r = ok(fineract().createService(ImagesApiWithHeadersForTest.class).getText("staff", staffId, 3505, 1972, null));
         assertThat(r.contentType()).isEqualTo(MediaType.get("text/plain"));
         assertThat(r.string()).startsWith("data:image/jpeg;base64,");
     }
@@ -123,7 +119,7 @@ public class ImageTest extends IntegrationTest {
     @Test
     @Order(9)
     void getBytes() throws IOException {
-        ResponseBody r = ok(fineract().createService(ImagesApiWithHeadersForTest.class).getBytes("staff", 1L, 3505, 1972, null));
+        ResponseBody r = ok(fineract().createService(ImagesApiWithHeadersForTest.class).getBytes("staff", staffId, 3505, 1972, null));
         assertThat(r.contentType()).isEqualTo(MediaType.get("image/jpeg"));
         assertThat(r.bytes().length).isEqualTo(testImage.length());
     }
@@ -131,13 +127,13 @@ public class ImageTest extends IntegrationTest {
     @Test
     @Order(50)
     void update() {
-        ok(fineract().images.update("staff", 1L, Parts.fromFile(testImage)));
+        ok(fineract().images.update("staff", staffId, Parts.fromFile(testImage)));
     }
 
     @Test
     @Order(99)
     void delete() {
-        ok(fineract().images.delete("staff", 1L));
+        ok(fineract().images.delete("staff", staffId));
         ok(fineract().images.delete("clients", clientId));
     }
 
diff --git a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/IntegrationTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java
similarity index 91%
rename from fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/IntegrationTest.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java
index 523d409..1319326 100644
--- a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/IntegrationTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/IntegrationTest.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.integrationtests.newstyle;
+package org.apache.fineract.integrationtests.client;
 
 import com.google.common.truth.BigDecimalSubject;
 import com.google.common.truth.BooleanSubject;
@@ -35,7 +35,6 @@ import java.math.BigDecimal;
 import java.util.Optional;
 import java.util.Random;
 import okhttp3.logging.HttpLoggingInterceptor.Level;
-import org.apache.fineract.client.testutil.CallSubject;
 import org.apache.fineract.client.util.Calls;
 import org.apache.fineract.client.util.FineractClient;
 import org.junit.jupiter.api.MethodOrderer;
@@ -62,9 +61,9 @@ public abstract class IntegrationTest {
 
     protected FineractClient fineract() {
         if (fineract == null) {
-            // TODO change from Fineract.dev to https://localhost:8443/fineract-provider/api/v1/ after FINERACT-1209
-            String url = System.getProperty("fineract.it.url", "https://demo.fineract.dev/fineract-provider/api/v1/");
-            fineract = FineractClient.builder().baseURL(url).tenant("default").basicAuth("mifos", "password").insecure(true)
+            String url = System.getProperty("fineract.it.url", "https://localhost:8443/fineract-provider/api/v1/");
+            // insecure(true) should *ONLY* ever be used for https://localhost:8443, NOT in real clients!!
+            fineract = FineractClient.builder().insecure(true).baseURL(url).tenant("default").basicAuth("mifos", "password")
                     .logging(Level.NONE).build();
         }
         return fineract;
diff --git a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/OfficeTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/OfficeTest.java
similarity index 68%
rename from fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/OfficeTest.java
rename to integration-tests/src/test/java/org/apache/fineract/integrationtests/client/OfficeTest.java
index ddfe5db..13ecb93 100644
--- a/fineract-client/src/test/java/org/apache/fineract/integrationtests/newstyle/OfficeTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/OfficeTest.java
@@ -16,9 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.fineract.integrationtests.newstyle;
+package org.apache.fineract.integrationtests.client;
 
 import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.List;
+import org.apache.fineract.client.models.GetOfficesResponse;
 import org.apache.fineract.client.models.PostOfficesRequest;
 import org.junit.jupiter.api.Order;
 import org.junit.jupiter.api.Test;
@@ -36,13 +39,15 @@ public class OfficeTest extends IntegrationTest {
         // NB parentId(1) always exists (Head Office)
         // NB name random() because Office Names have to be unique
         // TODO requiring dateFormat(..).locale(..) is dumb :( see https://issues.apache.org/jira/browse/FINERACT-1233
-        assertThat(ok(fineract().offices.createOffice(new PostOfficesRequest().name("TestOffice-" + random()).parentId(1L)
-                .openingDate(LocalDate.now()).dateFormat(dateFormat()).locale("en_US"))).getOfficeId()).isGreaterThan(0);
+        assertThat(ok(fineract().offices.createOffice(new PostOfficesRequest().name("TestOffice_" + random()).parentId(1L)
+                .openingDate(LocalDate.now(ZoneId.of("UTC"))).dateFormat(dateFormat()).locale("en_US"))).getOfficeId()).isGreaterThan(0);
     }
 
     @Test
     @Order(2)
-    void retrieveOneExisting() {
-        assertThat(ok(fineract().offices.retrieveOffices(true, null, null)).size()).isAtLeast(2);
+    void retrieveOneExistingInclDateFormat() { // see FINERACT-1220 re. what this tests re. Date Format
+        List<GetOfficesResponse> response = ok(fineract().offices.retrieveOffices(true, null, null));
+        assertThat(response.size()).isAtLeast(1);
+        assertThat(response.get(0).getOpeningDate()).isNotNull();
     }
 }
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/StaffTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/StaffTest.java
new file mode 100644
index 0000000..29a0f8b
--- /dev/null
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/client/StaffTest.java
@@ -0,0 +1,67 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.fineract.integrationtests.client;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.Optional;
+import org.apache.fineract.client.models.PostStaffRequest;
+import org.junit.jupiter.api.Order;
+import org.junit.jupiter.api.Test;
+
+/**
+ * Integration Test for /staff API.
+ *
+ * @author Michael Vorburger.ch
+ */
+public class StaffTest extends IntegrationTest {
+
+    @Test
+    @Order(1)
+    void createOne() {
+        assertThat(create()).isGreaterThan(0);
+    }
+
+    @Test
+    @Order(2)
+    void retrieveAnyExisting() {
+        assertThat(retrieveFirst()).isPresent();
+    }
+
+    // The following are not tests, but helpful utilities for other tests
+
+    public Long getStaffId() {
+        return retrieveFirst().orElseGet(this::create);
+    }
+
+    Long create() {
+        return ok(fineract().staff
+                .create3(new PostStaffRequest().officeId(1L).firstname("StaffTest " + random()).lastname("Staffer " + random())
+                        .externalId(random()).joiningDate(LocalDate.now(ZoneId.of("UTC"))).dateFormat(dateFormat()).locale("en_US")))
+                                .getResourceId();
+    }
+
+    Optional<Long> retrieveFirst() {
+        var staff = ok(fineract().staff.retrieveAll16(1L, true, false, "ACTIVE"));
+        if (staff.size() > 0) {
+            return Optional.of((long) staff.get(0).getId());
+        }
+        return Optional.empty();
+    }
+}
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ImageHelper.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ImageHelper.java
deleted file mode 100644
index 4a2f0b9..0000000
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/common/ImageHelper.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.fineract.integrationtests.common;
-
-import io.restassured.specification.RequestSpecification;
-import io.restassured.specification.ResponseSpecification;
-import org.apache.http.HttpHeaders;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-@Deprecated // replaced by new ImageTest, can be deleted as FINERACT-1209 is fully implemented
-public final class ImageHelper {
-
-    private ImageHelper() {
-
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(ImageHelper.class);
-    private static final String STAFF_IMAGE_URL = "/fineract-provider/api/v1/staff/";
-    private static final String IMAGES_URI = "/images";
-
-    public static Integer createImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        LOG.info("---------------------------------CREATING AN IMAGE FOR STAFF---------------------------------------------");
-        final String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPost(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
-    }
-
-    public static Integer updateImageForStaff(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        LOG.info("---------------------------------UPDATING AN IMAGE FOR STAFF---------------------------------------------");
-        final String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerPut(requestSpec, responseSpec, URL, generateImageAsText(), "resourceId");
-    }
-
-    public static String getStaffImageAsText(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        LOG.info("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        final String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        requestSpec.header(HttpHeaders.ACCEPT, "text/plain");
-        return Utils.performGetTextResponse(requestSpec, responseSpec, URL);
-    }
-
-    public static byte[] getStaffImageAsBinary(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        LOG.info("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        final String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        requestSpec.header(HttpHeaders.ACCEPT, "application/octet-stream");
-        return Utils.performGetBinaryResponse(requestSpec, responseSpec, URL);
-    }
-
-    public static Integer deleteStaffImage(final RequestSpecification requestSpec, final ResponseSpecification responseSpec,
-            Integer staffId) {
-        LOG.info("---------------------------------RETRIEVING STAFF IMAGE---------------------------------------------");
-        final String URL = STAFF_IMAGE_URL + staffId + IMAGES_URI + "?" + Utils.TENANT_IDENTIFIER;
-        return Utils.performServerDelete(requestSpec, responseSpec, URL, "resourceId");
-    }
-
-    public static String generateImageAsText() {
-        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ\r\n"
-                + "bWFnZVJlYWR5ccllPAAAAJ1JREFUeNpi+P//PwMIA4E9EG8E4idQDGLbw+WhiiqA+D8OXAFVAzbp\r\n"
-                + "DxBvB2JLIGaGYkuoGEjOhhFIHAbij0BdPgxYACMj42ogJQpifwBiXSDeC8JIbt4LxSC5DyxQjTeB\r\n"
-                + "+BeaYb+Q5EBOAVutCzMJHUNNPADzzDokiYdAfAmJvwLkGeTgWQfyKZICS6hYBTwc0QL8ORSjBDhA\r\n" + "gAEAOg13B6R/SAgAAAAASUVORK5CYII=";
-    }
-}
diff --git a/fineract-client/src/test/resources/michael.vorburger-crepes.jpg b/integration-tests/src/test/resources/michael.vorburger-crepes.jpg
similarity index 100%
rename from fineract-client/src/test/resources/michael.vorburger-crepes.jpg
rename to integration-tests/src/test/resources/michael.vorburger-crepes.jpg


[fineract] 02/02: Fix Bulk Import failing for office names containing hyphens (FINERACT-1256)

Posted by pt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit ef3e2e3c9274e2126e8526c93213b91226b1b181
Author: Michael Vorburger <mi...@vorburger.ch>
AuthorDate: Sat Nov 7 02:18:30 2020 +0100

    Fix Bulk Import failing for office names containing hyphens (FINERACT-1256)
---
 .../populator/AbstractWorkbookPopulator.java       | 10 ++++
 .../centers/CentersWorkbookPopulator.java          |  8 +--
 .../chartofaccounts/ChartOfAccountsWorkbook.java   | 16 +++---
 .../client/ClientEntityWorkbookPopulator.java      | 21 ++++---
 .../client/ClientPersonWorkbookPopulator.java      | 19 +++----
 .../FixedDepositTransactionWorkbookPopulator.java  | 13 ++---
 .../FixedDepositWorkbookPopulator.java             | 32 +++++------
 .../populator/group/GroupsWorkbookPopulator.java   | 14 ++---
 .../guarantor/GuarantorWorkbookPopulator.java      | 29 +++++-----
 .../JournalEntriesWorkbookPopulator.java           | 10 ++--
 .../populator/loan/LoanWorkbookPopulator.java      | 64 +++++++++++-----------
 .../LoanRepaymentWorkbookPopulator.java            | 20 +++----
 .../populator/office/OfficeWorkbookPopulator.java  |  3 +-
 ...curringDepositTransactionWorkbookPopulator.java | 13 ++---
 .../RecurringDepositWorkbookPopulator.java         | 38 ++++++-------
 .../SavingsTransactionsWorkbookPopulator.java      | 13 ++---
 .../savings/SavingsWorkbookPopulator.java          | 47 ++++++++--------
 .../SharedAccountWorkBookPopulator.java            | 20 +++----
 .../populator/users/UserWorkbookPopulator.java     |  8 +--
 .../savings/SavingsWorkbookPopulateTest.java       | 24 ++++----
 20 files changed, 207 insertions(+), 215 deletions(-)

diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java
index aae7752..0251a23 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/AbstractWorkbookPopulator.java
@@ -24,10 +24,12 @@ import java.text.SimpleDateFormat;
 import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
+import java.util.regex.Pattern;
 import org.apache.fineract.organisation.office.data.OfficeData;
 import org.apache.fineract.portfolio.client.data.ClientData;
 import org.apache.fineract.portfolio.group.data.GroupGeneralData;
 import org.apache.poi.ss.usermodel.CellStyle;
+import org.apache.poi.ss.usermodel.Name;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
@@ -37,6 +39,7 @@ import org.slf4j.LoggerFactory;
 public abstract class AbstractWorkbookPopulator implements WorkbookPopulator {
 
     private static final Logger LOG = LoggerFactory.getLogger(AbstractWorkbookPopulator.class);
+    private static final Pattern NAME_REGEX = Pattern.compile("[ @#&()<>,;.:$£€§°\\\\/=!\\?\\-\\+\\*\"\\[\\]]");
 
     protected void writeInt(int colIndex, Row row, int value) {
         row.createCell(colIndex).setCellValue(value);
@@ -162,4 +165,11 @@ public abstract class AbstractWorkbookPopulator implements WorkbookPopulator {
         }
     }
 
+    /**
+     * See {@link Name#setNameName(String)} and https://issues.apache.org/jira/browse/FINERACT-1256.
+     */
+    protected void setSanitized(Name poiName, String roughName) {
+        String sanitized = NAME_REGEX.matcher(roughName.trim()).replaceAll("_");
+        poiName.setNameName(sanitized);
+    }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java
index b231a8d..c2d15ce 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/centers/CentersWorkbookPopulator.java
@@ -40,9 +40,9 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class CentersWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private GroupSheetPopulator groupSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final GroupSheetPopulator groupSheetPopulator;
 
     public CentersWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
             GroupSheetPopulator groupSheetPopulator) {
@@ -231,7 +231,5 @@ public class CentersWorkbookPopulator extends AbstractWorkbookPopulator {
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
         }
-
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java
index c552392..afc61e7 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/chartofaccounts/ChartOfAccountsWorkbook.java
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
 public class ChartOfAccountsWorkbook extends AbstractWorkbookPopulator {
 
     private static final Logger LOG = LoggerFactory.getLogger(ChartOfAccountsWorkbook.class);
-    private List<GLAccountData> glAccounts;
+    private final List<GLAccountData> glAccounts;
     private Map<String, List<String>> accountTypeToAccountNameAndTag;
     private Map<Integer, Integer[]> accountTypeToBeginEndIndexesofAccountNames;
     private List<String> accountTypesNoDuplicatesList;
@@ -76,7 +76,7 @@ public class ChartOfAccountsWorkbook extends AbstractWorkbookPopulator {
     private void addToaccountTypeToAccountNameMap(String key, String value) {
         List<String> values = accountTypeToAccountNameAndTag.get(key);
         if (values == null) {
-            values = new ArrayList<String>();
+            values = new ArrayList<>();
         }
         if (!values.contains(value)) {
             values.add(value);
@@ -128,14 +128,14 @@ public class ChartOfAccountsWorkbook extends AbstractWorkbookPopulator {
             Name tags = chartOfAccountsWorkbook.createName();
             Integer[] tagValueBeginEndIndexes = accountTypeToBeginEndIndexesofAccountNames.get(i);
             if (accountTypeToBeginEndIndexesofAccountNames != null) {
-                tags.setNameName("Tags_" + accountTypesNoDuplicatesList.get(i));
+                setSanitized(tags, "Tags_" + accountTypesNoDuplicatesList.get(i));
                 tags.setRefersToFormula(TemplatePopulateImportConstants.CHART_OF_ACCOUNTS_SHEET_NAME + "!$S$" + tagValueBeginEndIndexes[0]
                         + ":$S$" + tagValueBeginEndIndexes[1]);
             }
             Name accountNames = chartOfAccountsWorkbook.createName();
             Integer[] accountNamesBeginEndIndexes = accountTypeToBeginEndIndexesofAccountNames.get(i);
             if (accountNamesBeginEndIndexes != null) {
-                accountNames.setNameName("AccountName_" + accountTypesNoDuplicatesList.get(i));
+                setSanitized(accountNames, "AccountName_" + accountTypesNoDuplicatesList.get(i));
                 accountNames.setRefersToFormula(TemplatePopulateImportConstants.CHART_OF_ACCOUNTS_SHEET_NAME + "!$Q$"
                         + accountNamesBeginEndIndexes[0] + ":$Q$" + accountNamesBeginEndIndexes[1]);
             }
@@ -163,15 +163,15 @@ public class ChartOfAccountsWorkbook extends AbstractWorkbookPopulator {
 
     private void setLookupTable(Sheet chartOfAccountsSheet) {
         accountTypesNoDuplicatesList = new ArrayList<>();
-        for (int i = 0; i < glAccounts.size(); i++) {
-            if (!accountTypesNoDuplicatesList.contains(glAccounts.get(i).getType().getValue())) {
-                accountTypesNoDuplicatesList.add(glAccounts.get(i).getType().getValue());
+        for (GLAccountData glAccount : glAccounts) {
+            if (!accountTypesNoDuplicatesList.contains(glAccount.getType().getValue())) {
+                accountTypesNoDuplicatesList.add(glAccount.getType().getValue());
             }
         }
         int rowIndex = 1;
         int startIndex = 1;
         int accountTypeIndex = 0;
-        accountTypeToBeginEndIndexesofAccountNames = new HashMap<Integer, Integer[]>();
+        accountTypeToBeginEndIndexesofAccountNames = new HashMap<>();
         for (String accountType : accountTypesNoDuplicatesList) {
             startIndex = rowIndex + 1;
             Row row = chartOfAccountsSheet.createRow(rowIndex);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientEntityWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientEntityWorkbookPopulator.java
index 23a137d..ee5724f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientEntityWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientEntityWorkbookPopulator.java
@@ -40,15 +40,15 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class ClientEntityWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private List<CodeValueData> clientTypeCodeValues;
-    private List<CodeValueData> constitutionCodeValues;
-    private List<CodeValueData> clientClassificationCodeValues;
-    private List<CodeValueData> addressTypesCodeValues;
-    private List<CodeValueData> stateProvinceCodeValues;
-    private List<CodeValueData> countryCodeValues;
-    private List<CodeValueData> mainBusinesslineCodeValues;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final List<CodeValueData> clientTypeCodeValues;
+    private final List<CodeValueData> constitutionCodeValues;
+    private final List<CodeValueData> clientClassificationCodeValues;
+    private final List<CodeValueData> addressTypesCodeValues;
+    private final List<CodeValueData> stateProvinceCodeValues;
+    private final List<CodeValueData> countryCodeValues;
+    private final List<CodeValueData> mainBusinesslineCodeValues;
 
     public ClientEntityWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
             List<CodeValueData> clientTypeCodeValues, List<CodeValueData> constitutionCodeValues, List<CodeValueData> mainBusinessline,
@@ -368,11 +368,10 @@ public class ClientEntityWorkbookPopulator extends AbstractWorkbookPopulator {
             Integer[] officeNameToBeginEndIndexesOfStaff = personnelSheetPopulator.getOfficeNameToBeginEndIndexesOfStaff().get(i);
             if (officeNameToBeginEndIndexesOfStaff != null) {
                 Name name = clientWorkbook.createName();
-                name.setNameName("Staff_" + offices.get(i).name().trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Staff_" + offices.get(i).name());
                 name.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfStaff[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
         }
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java
index e8c6978..64ca249 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/client/ClientPersonWorkbookPopulator.java
@@ -40,14 +40,14 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class ClientPersonWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private List<CodeValueData> clientTypeCodeValues;
-    private List<CodeValueData> genderCodeValues;
-    private List<CodeValueData> clientClassificationCodeValues;
-    private List<CodeValueData> addressTypesCodeValues;
-    private List<CodeValueData> stateProvinceCodeValues;
-    private List<CodeValueData> countryCodeValues;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final List<CodeValueData> clientTypeCodeValues;
+    private final List<CodeValueData> genderCodeValues;
+    private final List<CodeValueData> clientClassificationCodeValues;
+    private final List<CodeValueData> addressTypesCodeValues;
+    private final List<CodeValueData> stateProvinceCodeValues;
+    private final List<CodeValueData> countryCodeValues;
 
     public ClientPersonWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
             List<CodeValueData> clientTypeCodeValues, List<CodeValueData> genderCodeValues, List<CodeValueData> clientClassification,
@@ -340,11 +340,10 @@ public class ClientPersonWorkbookPopulator extends AbstractWorkbookPopulator {
             Integer[] officeNameToBeginEndIndexesOfStaff = personnelSheetPopulator.getOfficeNameToBeginEndIndexesOfStaff().get(i);
             if (officeNameToBeginEndIndexesOfStaff != null) {
                 Name name = clientWorkbook.createName();
-                name.setNameName("Staff_" + offices.get(i).name().trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Staff_" + offices.get(i).name());
                 name.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfStaff[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
         }
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositTransactionWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositTransactionWorkbookPopulator.java
index bf277a3..e641cda 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositTransactionWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositTransactionWorkbookPopulator.java
@@ -44,11 +44,11 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class FixedDepositTransactionWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
 
-    private List<SavingsAccountData> savingsAccounts;
+    private final List<SavingsAccountData> savingsAccounts;
 
     public FixedDepositTransactionWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             ExtrasSheetPopulator extrasSheetPopulator, List<SavingsAccountData> savingsAccounts) {
@@ -144,7 +144,7 @@ public class FixedDepositTransactionWorkbookPopulator extends AbstractWorkbookPo
             Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i);
             Name name = savingsTransactionWorkbook.createName();
             if (officeNameToBeginEndIndexesOfClients != null) {
-                name.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Client_" + officeNames.get(i));
                 name.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfClients[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -178,8 +178,7 @@ public class FixedDepositTransactionWorkbookPopulator extends AbstractWorkbookPo
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveSavings.size(); j++) {
             Name name = savingsTransactionWorkbook.createName();
-            name.setNameName(
-                    "Account_" + clientsWithActiveSavings.get(j).replace(" ", "_") + "_" + clientIdsWithActiveSavings.get(j) + "_");
+            setSanitized(name, "Account_" + clientsWithActiveSavings.get(j) + "_" + clientIdsWithActiveSavings.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.FIXED_DEPOSIT_TRANSACTION_SHEET_NAME + "!$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[0] + ":$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[1]);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositWorkbookPopulator.java
index 0fde396..5d265a9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/fixeddeposits/FixedDepositWorkbookPopulator.java
@@ -45,10 +45,10 @@ import org.slf4j.LoggerFactory;
 public class FixedDepositWorkbookPopulator extends AbstractWorkbookPopulator {
 
     private static final Logger LOG = LoggerFactory.getLogger(FixedDepositWorkbookPopulator.class);
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private FixedDepositProductSheetPopulator productSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final FixedDepositProductSheetPopulator productSheetPopulator;
 
     public FixedDepositWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             PersonnelSheetPopulator personnelSheetPopulator, FixedDepositProductSheetPopulator fixedDepositProductSheetPopulator) {
@@ -195,12 +195,12 @@ public class FixedDepositWorkbookPopulator extends AbstractWorkbookPopulator {
             Name clientName = savingsWorkbook.createName();
             Name fieldOfficerName = savingsWorkbook.createName();
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                fieldOfficerName.setNameName("Staff_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(fieldOfficerName, "Staff_" + officeNames.get(i));
                 fieldOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
             if (officeNameToBeginEndIndexesOfClients != null) {
-                clientName.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(clientName, "Client_" + officeNames.get(i));
                 clientName.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfClients[0] + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -231,13 +231,13 @@ public class FixedDepositWorkbookPopulator extends AbstractWorkbookPopulator {
             FixedDepositProductData product = products.get(i);
             String productName = product.getName().replaceAll("[ ]", "_");
 
-            interestCompoundingPeriodName.setNameName("Interest_Compouding_" + productName);
-            interestPostingPeriodName.setNameName("Interest_Posting_" + productName);
-            interestCalculationName.setNameName("Interest_Calculation_" + productName);
-            daysInYearName.setNameName("Days_In_Year_" + productName);
-            minDepositName.setNameName("Min_Deposit_" + productName);
-            maxDepositName.setNameName("Max_Deposit_" + productName);
-            depositName.setNameName("Deposit_" + productName);
+            setSanitized(interestCompoundingPeriodName, "Interest_Compouding_" + productName);
+            setSanitized(interestPostingPeriodName, "Interest_Posting_" + productName);
+            setSanitized(interestCalculationName, "Interest_Calculation_" + productName);
+            setSanitized(daysInYearName, "Days_In_Year_" + productName);
+            setSanitized(minDepositName, "Min_Deposit_" + productName);
+            setSanitized(maxDepositName, "Max_Deposit_" + productName);
+            setSanitized(depositName, "Deposit_" + productName);
             interestCompoundingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$E$" + (i + 2));
             interestPostingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$F$" + (i + 2));
             interestCalculationName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$G$" + (i + 2));
@@ -247,15 +247,15 @@ public class FixedDepositWorkbookPopulator extends AbstractWorkbookPopulator {
             maxDepositName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$M$" + (i + 2));
 
             if (product.getMinDepositTermType() != null) {
-                minDepositTermTypeName.setNameName("Term_Type_" + productName);
+                setSanitized(minDepositTermTypeName, "Term_Type_" + productName);
                 minDepositTermTypeName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$P$" + (i + 2));
             }
             if (product.getLockinPeriodFrequency() != null) {
-                lockinPeriodName.setNameName("Lockin_Period_" + productName);
+                setSanitized(lockinPeriodName, "Lockin_Period_" + productName);
                 lockinPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$I$" + (i + 2));
             }
             if (product.getLockinPeriodFrequencyType() != null) {
-                lockinPeriodFrequencyName.setNameName("Lockin_Frequency_" + productName);
+                setSanitized(lockinPeriodFrequencyName, "Lockin_Frequency_" + productName);
                 lockinPeriodFrequencyName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$J$" + (i + 2));
             }
         }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java
index 25edd9d..91ed8f6 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/group/GroupsWorkbookPopulator.java
@@ -41,10 +41,10 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private CenterSheetPopulator centerSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final CenterSheetPopulator centerSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
 
     public GroupsWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
             CenterSheetPopulator centerSheetPopulator, ClientSheetPopulator clientSheetPopulator) {
@@ -241,17 +241,15 @@ public class GroupsWorkbookPopulator extends AbstractWorkbookPopulator {
             Name centerName = centerWorkbook.createName();
 
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                loanOfficerName.setNameName("Staff_" + offices.get(i).name().trim().replaceAll("[ )(]", "_"));
+                setSanitized(loanOfficerName, "Staff_" + offices.get(i).name());
                 loanOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
             if (officeNameToBeginEndIndexesOfCenters != null) {
-                centerName.setNameName("Center_" + offices.get(i).name().trim().replaceAll("[ )(]", "_"));
+                setSanitized(centerName, "Center_" + offices.get(i).name());
                 centerName.setRefersToFormula(TemplatePopulateImportConstants.CENTER_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfCenters[0] + ":$B$" + officeNameToBeginEndIndexesOfCenters[1]);
             }
         }
-
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java
index 47a4ac8..97b98f8 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/guarantor/GuarantorWorkbookPopulator.java
@@ -45,11 +45,11 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private List<LoanAccountData> loans;
-    private List<SavingsAccountData> savings;
-    private List<CodeValueData> guarantorRelationshipTypes;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final List<LoanAccountData> loans;
+    private final List<SavingsAccountData> savings;
+    private final List<CodeValueData> guarantorRelationshipTypes;
 
     public GuarantorWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             List<LoanAccountData> loans, List<SavingsAccountData> savings, List<CodeValueData> guarantorRelationshipTypes) {
@@ -240,7 +240,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
 
     private void setNames(Sheet worksheet) {
         Workbook addGurarantorWorkbook = worksheet.getWorkbook();
-        ArrayList<String> officeNames = new ArrayList<String>(officeSheetPopulator.getOfficeNames());
+        ArrayList<String> officeNames = new ArrayList<>(officeSheetPopulator.getOfficeNames());
 
         // Office Names
         Name officeGroup = addGurarantorWorkbook.createName();
@@ -258,7 +258,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
             Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i);
             Name name = addGurarantorWorkbook.createName();
             if (officeNameToBeginEndIndexesOfClients != null) {
-                name.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Client_" + officeNames.get(i));
                 name.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfClients[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -266,9 +266,9 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
 
         // Counting clients with active loans and starting and end addresses of
         // cells
-        HashMap<String, Integer[]> clientNameToBeginEndIndexes = new HashMap<String, Integer[]>();
-        ArrayList<String> clientsWithActiveLoans = new ArrayList<String>();
-        ArrayList<String> clientIdsWithActiveLoans = new ArrayList<String>();
+        HashMap<String, Integer[]> clientNameToBeginEndIndexes = new HashMap<>();
+        ArrayList<String> clientsWithActiveLoans = new ArrayList<>();
+        ArrayList<String> clientIdsWithActiveLoans = new ArrayList<>();
         int startIndex = 1;
         int endIndex = 1;
         String clientName = "";
@@ -292,7 +292,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveLoans.size(); j++) {
             Name name = addGurarantorWorkbook.createName();
-            name.setNameName("Account_" + clientsWithActiveLoans.get(j).replaceAll(" ", "_") + "_" + clientIdsWithActiveLoans.get(j) + "_");
+            setSanitized(name, "Account_" + clientsWithActiveLoans.get(j) + "_" + clientIdsWithActiveLoans.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.GUARANTOR_SHEET_NAME + "!$CE$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveLoans.get(j))[0] + ":$CE$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveLoans.get(j))[1]);
@@ -300,8 +300,8 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
         /// savings
         // Counting clients with active savings and starting and end addresses
         /// of cells for naming
-        ArrayList<String> clientsWithActiveSavings = new ArrayList<String>();
-        ArrayList<String> clientIdsWithActiveSavings = new ArrayList<String>();
+        ArrayList<String> clientsWithActiveSavings = new ArrayList<>();
+        ArrayList<String> clientIdsWithActiveSavings = new ArrayList<>();
         clientName = "";
         clientId = "";
         for (int i = 0; i < savings.size(); i++) {
@@ -322,8 +322,7 @@ public class GuarantorWorkbookPopulator extends AbstractWorkbookPopulator {
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveSavings.size(); j++) {
             Name name = addGurarantorWorkbook.createName();
-            name.setNameName("SavingsAccount_" + clientsWithActiveSavings.get(j).replaceAll(" ", "_") + "_"
-                    + clientIdsWithActiveSavings.get(j) + "_");
+            setSanitized(name, "SavingsAccount_" + clientsWithActiveSavings.get(j) + "_" + clientIdsWithActiveSavings.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.GUARANTOR_SHEET_NAME + "!$CG$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[0] + ":$CG$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[1]);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java
index c455d6a..4a17189 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/journalentry/JournalEntriesWorkbookPopulator.java
@@ -39,9 +39,9 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private GlAccountSheetPopulator glAccountSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final GlAccountSheetPopulator glAccountSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
 
     public JournalEntriesWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, GlAccountSheetPopulator glAccountSheetPopulator,
             ExtrasSheetPopulator extrasSheetPopulator) {
@@ -169,9 +169,7 @@ public class JournalEntriesWorkbookPopulator extends AbstractWorkbookPopulator {
 
     private void setDefaults(Sheet worksheet) {
         for (Integer rowNo = 1; rowNo < 1000; rowNo++) {
-            Row row = worksheet.createRow(rowNo);
+            worksheet.createRow(rowNo);
         }
-
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loan/LoanWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loan/LoanWorkbookPopulator.java
index af5c199..b78c133 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loan/LoanWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loan/LoanWorkbookPopulator.java
@@ -46,12 +46,12 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class LoanWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private GroupSheetPopulator groupSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private LoanProductSheetPopulator productSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final GroupSheetPopulator groupSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final LoanProductSheetPopulator productSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
 
     public LoanWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             GroupSheetPopulator groupSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
@@ -432,21 +432,20 @@ public class LoanWorkbookPopulator extends AbstractWorkbookPopulator {
             Name groupName = loanWorkbook.createName();
 
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                loanOfficerName.setNameName("Staff_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(loanOfficerName, "Staff_" + officeNames.get(i));
                 loanOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
             if (officeNameToBeginEndIndexesOfClients != null) {
-                clientName.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(clientName, "Client_" + officeNames.get(i));
                 clientName.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfClients[0] + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
             if (officeNameToBeginEndIndexesOfGroups != null) {
-                groupName.setNameName("Group_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(groupName, "Group_" + officeNames.get(i));
                 groupName.setRefersToFormula(TemplatePopulateImportConstants.GROUP_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfGroups[0] + ":$B$" + officeNameToBeginEndIndexesOfGroups[1]);
             }
-
         }
 
         // Product Name
@@ -499,28 +498,28 @@ public class LoanWorkbookPopulator extends AbstractWorkbookPopulator {
             Name graceOnInterestChargedName = loanWorkbook.createName();
             Name startDateName = loanWorkbook.createName();
             String productName = products.get(i).getName().replaceAll("[ ]", "_");
-            fundName.setNameName("FUND_" + productName);
-            principalName.setNameName("PRINCIPAL_" + productName);
-            minPrincipalName.setNameName("MIN_PRINCIPAL_" + productName);
-            maxPrincipalName.setNameName("MAX_PRINCIPAL_" + productName);
-            noOfRepaymentName.setNameName("NO_REPAYMENT_" + productName);
-            minNoOfRepayment.setNameName("MIN_REPAYMENT_" + productName);
-            maxNoOfRepaymentName.setNameName("MAX_REPAYMENT_" + productName);
-            repaymentEveryName.setNameName("REPAYMENT_EVERY_" + productName);
-            repaymentFrequencyName.setNameName("REPAYMENT_FREQUENCY_" + productName);
-            interestName.setNameName("INTEREST_" + productName);
-            minInterestName.setNameName("MIN_INTEREST_" + productName);
-            maxInterestName.setNameName("MAX_INTEREST_" + productName);
-            interestFrequencyName.setNameName("INTEREST_FREQUENCY_" + productName);
-            amortizationName.setNameName("AMORTIZATION_" + productName);
-            interestTypeName.setNameName("INTEREST_TYPE_" + productName);
-            interestCalculationPeriodName.setNameName("INTEREST_CALCULATION_" + productName);
-            transactionProcessingStrategyName.setNameName("STRATEGY_" + productName);
-            arrearsToleranceName.setNameName("ARREARS_TOLERANCE_" + productName);
-            graceOnPrincipalPaymentName.setNameName("GRACE_PRINCIPAL_" + productName);
-            graceOnInterestPaymentName.setNameName("GRACE_INTEREST_PAYMENT_" + productName);
-            graceOnInterestChargedName.setNameName("GRACE_INTEREST_CHARGED_" + productName);
-            startDateName.setNameName("START_DATE_" + productName);
+            setSanitized(fundName, "FUND_" + productName);
+            setSanitized(principalName, "PRINCIPAL_" + productName);
+            setSanitized(minPrincipalName, "MIN_PRINCIPAL_" + productName);
+            setSanitized(maxPrincipalName, "MAX_PRINCIPAL_" + productName);
+            setSanitized(noOfRepaymentName, "NO_REPAYMENT_" + productName);
+            setSanitized(minNoOfRepayment, "MIN_REPAYMENT_" + productName);
+            setSanitized(maxNoOfRepaymentName, "MAX_REPAYMENT_" + productName);
+            setSanitized(repaymentEveryName, "REPAYMENT_EVERY_" + productName);
+            setSanitized(repaymentFrequencyName, "REPAYMENT_FREQUENCY_" + productName);
+            setSanitized(interestName, "INTEREST_" + productName);
+            setSanitized(minInterestName, "MIN_INTEREST_" + productName);
+            setSanitized(maxInterestName, "MAX_INTEREST_" + productName);
+            setSanitized(interestFrequencyName, "INTEREST_FREQUENCY_" + productName);
+            setSanitized(amortizationName, "AMORTIZATION_" + productName);
+            setSanitized(interestTypeName, "INTEREST_TYPE_" + productName);
+            setSanitized(interestCalculationPeriodName, "INTEREST_CALCULATION_" + productName);
+            setSanitized(transactionProcessingStrategyName, "STRATEGY_" + productName);
+            setSanitized(arrearsToleranceName, "ARREARS_TOLERANCE_" + productName);
+            setSanitized(graceOnPrincipalPaymentName, "GRACE_PRINCIPAL_" + productName);
+            setSanitized(graceOnInterestPaymentName, "GRACE_INTEREST_PAYMENT_" + productName);
+            setSanitized(graceOnInterestChargedName, "GRACE_INTEREST_CHARGED_" + productName);
+            setSanitized(startDateName, "START_DATE_" + productName);
             if (products.get(i).getFundName() != null) {
                 fundName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$C$" + (i + 2));
             }
@@ -547,5 +546,4 @@ public class LoanWorkbookPopulator extends AbstractWorkbookPopulator {
             startDateName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$X$" + (i + 2));
         }
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loanrepayment/LoanRepaymentWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loanrepayment/LoanRepaymentWorkbookPopulator.java
index b5291a8..0d9997f 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loanrepayment/LoanRepaymentWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/loanrepayment/LoanRepaymentWorkbookPopulator.java
@@ -53,10 +53,10 @@ import org.slf4j.LoggerFactory;
 public class LoanRepaymentWorkbookPopulator extends AbstractWorkbookPopulator {
 
     private static final Logger LOG = LoggerFactory.getLogger(LoanRepaymentWorkbookPopulator.class);
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
-    private List<LoanAccountData> allloans;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
+    private final List<LoanAccountData> allloans;
     private Map<Long, String> clientIdToClientExternalId;
 
     public LoanRepaymentWorkbookPopulator(List<LoanAccountData> loans, OfficeSheetPopulator officeSheetPopulator,
@@ -173,7 +173,7 @@ public class LoanRepaymentWorkbookPopulator extends AbstractWorkbookPopulator {
             Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i);
             Name name = loanRepaymentWorkbook.createName();
             if (officeNameToBeginEndIndexesOfClients != null) {
-                name.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Client_" + officeNames.get(i));
                 name.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfClients[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -181,9 +181,9 @@ public class LoanRepaymentWorkbookPopulator extends AbstractWorkbookPopulator {
 
         // Counting clients with active loans and starting and end addresses of
         // cells
-        HashMap<String, Integer[]> clientNameToBeginEndIndexes = new HashMap<String, Integer[]>();
-        ArrayList<String> clientsWithActiveLoans = new ArrayList<String>();
-        ArrayList<String> clientIdsWithActiveLoans = new ArrayList<String>();
+        HashMap<String, Integer[]> clientNameToBeginEndIndexes = new HashMap<>();
+        ArrayList<String> clientsWithActiveLoans = new ArrayList<>();
+        ArrayList<String> clientIdsWithActiveLoans = new ArrayList<>();
         int startIndex = 1;
         int endIndex = 1;
         String clientName = "";
@@ -209,7 +209,7 @@ public class LoanRepaymentWorkbookPopulator extends AbstractWorkbookPopulator {
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveLoans.size(); j++) {
             Name name = loanRepaymentWorkbook.createName();
-            name.setNameName("Account_" + clientsWithActiveLoans.get(j).replace(" ", "_") + "_" + clientIdsWithActiveLoans.get(j) + "_");
+            setSanitized(name, "Account_" + clientsWithActiveLoans.get(j) + "_" + clientIdsWithActiveLoans.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.LOAN_REPAYMENT_SHEET_NAME + "!$T$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveLoans.get(j))[0] + ":$T$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveLoans.get(j))[1]);
@@ -305,7 +305,5 @@ public class LoanRepaymentWorkbookPopulator extends AbstractWorkbookPopulator {
         writeString(LoanRepaymentConstants.LOOKUP_PRINCIPAL_COL, rowHeader, "Lookup Principal");
         writeString(LoanRepaymentConstants.LOOKUP_TOTAL_OUTSTANDING_AMOUNT_COL, rowHeader, "Lookup Total Outstanding amount");
         writeString(LoanRepaymentConstants.LOOKUP_LOAN_DISBURSEMENT_DATE_COL, rowHeader, "Lookup Loan Disbursement Date");
-
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/office/OfficeWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/office/OfficeWorkbookPopulator.java
index 6a468cc..643f4e0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/office/OfficeWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/office/OfficeWorkbookPopulator.java
@@ -37,7 +37,7 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class OfficeWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private List<OfficeData> offices;
+    private final List<OfficeData> offices;
 
     public OfficeWorkbookPopulator(List<OfficeData> offices) {
         this.offices = offices;
@@ -118,6 +118,5 @@ public class OfficeWorkbookPopulator extends AbstractWorkbookPopulator {
                     "IF(ISERROR(VLOOKUP($B" + (rowNo + 1) + ",$H$2:$I$" + (offices.size() + 1) + ",2,FALSE)),\"\",(VLOOKUP($B" + (rowNo + 1)
                             + ",$H$2:$I$" + (offices.size() + 1) + ",2,FALSE)))");
         }
-
     }
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositTransactionWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositTransactionWorkbookPopulator.java
index a1d35e4..251e84a 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositTransactionWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositTransactionWorkbookPopulator.java
@@ -44,11 +44,11 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class RecurringDepositTransactionWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
 
-    private List<SavingsAccountData> savingsAccounts;
+    private final List<SavingsAccountData> savingsAccounts;
 
     public RecurringDepositTransactionWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator,
             ClientSheetPopulator clientSheetPopulator, ExtrasSheetPopulator extrasSheetPopulator,
@@ -145,7 +145,7 @@ public class RecurringDepositTransactionWorkbookPopulator extends AbstractWorkbo
             Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i);
             Name name = savingsTransactionWorkbook.createName();
             if (officeNameToBeginEndIndexesOfClients != null) {
-                name.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Client_" + officeNames.get(i));
                 name.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfClients[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -179,8 +179,7 @@ public class RecurringDepositTransactionWorkbookPopulator extends AbstractWorkbo
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveSavings.size(); j++) {
             Name name = savingsTransactionWorkbook.createName();
-            name.setNameName(
-                    "Account_" + clientsWithActiveSavings.get(j).replaceAll(" ", "_") + "_" + clientIdsWithActiveSavings.get(j) + "_");
+            setSanitized(name, "Account_" + clientsWithActiveSavings.get(j) + "_" + clientIdsWithActiveSavings.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.SAVINGS_TRANSACTION_SHEET_NAME + "!$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[0] + ":$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[1]);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositWorkbookPopulator.java
index 5b8c72d..f340c40 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/recurringdeposit/RecurringDepositWorkbookPopulator.java
@@ -42,10 +42,10 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class RecurringDepositWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private RecurringDepositProductSheetPopulator productSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final RecurringDepositProductSheetPopulator productSheetPopulator;
 
     public RecurringDepositWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             PersonnelSheetPopulator personnelSheetPopulator, RecurringDepositProductSheetPopulator recurringDepositProductSheetPopulator) {
@@ -334,12 +334,12 @@ public class RecurringDepositWorkbookPopulator extends AbstractWorkbookPopulator
             Name clientName = savingsWorkbook.createName();
             Name fieldOfficerName = savingsWorkbook.createName();
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                fieldOfficerName.setNameName("Staff_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(fieldOfficerName, "Staff_" + officeNames.get(i));
                 fieldOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
             if (officeNameToBeginEndIndexesOfClients != null) {
-                clientName.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(clientName, "Client_" + officeNames.get(i));
                 clientName.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfClients[0] + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -373,16 +373,16 @@ public class RecurringDepositWorkbookPopulator extends AbstractWorkbookPopulator
             RecurringDepositProductData product = products.get(i);
             String productName = product.getName().replaceAll("[ ]", "_");
 
-            interestCompoundingPeriodName.setNameName("Interest_Compouding_" + productName);
-            interestPostingPeriodName.setNameName("Interest_Posting_" + productName);
-            interestCalculationName.setNameName("Interest_Calculation_" + productName);
-            daysInYearName.setNameName("Days_In_Year_" + productName);
-            minDepositName.setNameName("Min_Deposit_" + productName);
-            maxDepositName.setNameName("Max_Deposit_" + productName);
-            depositName.setNameName("Deposit_" + productName);
-            allowWithdrawalName.setNameName("Allow_Withdrawal_" + productName);
-            mandatoryDepositName.setNameName("Mandatory_Deposit_" + productName);
-            adjustAdvancePaymentsName.setNameName("Adjust_Advance_" + productName);
+            setSanitized(interestCompoundingPeriodName, "Interest_Compouding_" + productName);
+            setSanitized(interestPostingPeriodName, "Interest_Posting_" + productName);
+            setSanitized(interestCalculationName, "Interest_Calculation_" + productName);
+            setSanitized(daysInYearName, "Days_In_Year_" + productName);
+            setSanitized(minDepositName, "Min_Deposit_" + productName);
+            setSanitized(maxDepositName, "Max_Deposit_" + productName);
+            setSanitized(depositName, "Deposit_" + productName);
+            setSanitized(allowWithdrawalName, "Allow_Withdrawal_" + productName);
+            setSanitized(mandatoryDepositName, "Mandatory_Deposit_" + productName);
+            setSanitized(adjustAdvancePaymentsName, "Adjust_Advance_" + productName);
             interestCompoundingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$E$" + (i + 2));
             interestPostingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$F$" + (i + 2));
             interestCalculationName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$G$" + (i + 2));
@@ -395,15 +395,15 @@ public class RecurringDepositWorkbookPopulator extends AbstractWorkbookPopulator
             adjustAdvancePaymentsName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$Z$" + (i + 2));
 
             if (product.getMinDepositTermType() != null) {
-                minDepositTermTypeName.setNameName("Term_Type_" + productName);
+                setSanitized(minDepositTermTypeName, "Term_Type_" + productName);
                 minDepositTermTypeName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$P$" + (i + 2));
             }
             if (product.getLockinPeriodFrequency() != null) {
-                lockinPeriodName.setNameName("Lockin_Period_" + productName);
+                setSanitized(lockinPeriodName, "Lockin_Period_" + productName);
                 lockinPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$I$" + (i + 2));
             }
             if (product.getLockinPeriodFrequencyType() != null) {
-                lockinPeriodFrequencyName.setNameName("Lockin_Frequency_" + productName);
+                setSanitized(lockinPeriodFrequencyName, "Lockin_Frequency_" + productName);
                 lockinPeriodFrequencyName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$J$" + (i + 2));
             }
         }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsTransactionsWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsTransactionsWorkbookPopulator.java
index f2ae4c5..cec61a9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsTransactionsWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsTransactionsWorkbookPopulator.java
@@ -44,11 +44,11 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class SavingsTransactionsWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private ExtrasSheetPopulator extrasSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final ExtrasSheetPopulator extrasSheetPopulator;
 
-    private List<SavingsAccountData> savingsAccounts;
+    private final List<SavingsAccountData> savingsAccounts;
 
     public SavingsTransactionsWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             ExtrasSheetPopulator extrasSheetPopulator, List<SavingsAccountData> savingsAccounts) {
@@ -144,7 +144,7 @@ public class SavingsTransactionsWorkbookPopulator extends AbstractWorkbookPopula
             Integer[] officeNameToBeginEndIndexesOfClients = clientSheetPopulator.getOfficeNameToBeginEndIndexesOfClients().get(i);
             Name name = savingsTransactionWorkbook.createName();
             if (officeNameToBeginEndIndexesOfClients != null) {
-                name.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(name, "Client_" + officeNames.get(i));
                 name.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$" + officeNameToBeginEndIndexesOfClients[0]
                         + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
@@ -178,8 +178,7 @@ public class SavingsTransactionsWorkbookPopulator extends AbstractWorkbookPopula
         // Account Number Named after Clients
         for (int j = 0; j < clientsWithActiveSavings.size(); j++) {
             Name name = savingsTransactionWorkbook.createName();
-            name.setNameName(
-                    "Account_" + clientsWithActiveSavings.get(j).replace(" ", "_") + "_" + clientIdsWithActiveSavings.get(j) + "_");
+            setSanitized(name, "Account_" + clientsWithActiveSavings.get(j) + "_" + clientIdsWithActiveSavings.get(j) + "_");
             name.setRefersToFormula(TemplatePopulateImportConstants.SAVINGS_TRANSACTION_SHEET_NAME + "!$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[0] + ":$Q$"
                     + clientNameToBeginEndIndexes.get(clientsWithActiveSavings.get(j))[1]);
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsWorkbookPopulator.java
index b9b31a9..07dfe80 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/savings/SavingsWorkbookPopulator.java
@@ -43,11 +43,11 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private GroupSheetPopulator groupSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private SavingsProductSheetPopulator productSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final GroupSheetPopulator groupSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final SavingsProductSheetPopulator productSheetPopulator;
 
     public SavingsWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, ClientSheetPopulator clientSheetPopulator,
             GroupSheetPopulator groupSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
@@ -322,17 +322,17 @@ public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
             Name fieldOfficerName = savingsWorkbook.createName();
             Name groupName = savingsWorkbook.createName();
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                fieldOfficerName.setNameName("Staff_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(fieldOfficerName, "Staff_" + officeNames.get(i));
                 fieldOfficerName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
             if (officeNameToBeginEndIndexesOfClients != null) {
-                clientName.setNameName("Client_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(clientName, "Client_" + officeNames.get(i));
                 clientName.setRefersToFormula(TemplatePopulateImportConstants.CLIENT_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfClients[0] + ":$B$" + officeNameToBeginEndIndexesOfClients[1]);
             }
             if (officeNameToBeginEndIndexesOfGroups != null) {
-                groupName.setNameName("Group_" + officeNames.get(i).trim().replaceAll("[ )(]", "_"));
+                setSanitized(groupName, "Group_" + officeNames.get(i));
                 groupName.setRefersToFormula(TemplatePopulateImportConstants.GROUP_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfGroups[0] + ":$B$" + officeNameToBeginEndIndexesOfGroups[1]);
             }
@@ -366,19 +366,19 @@ public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
             Name allowOverdraftName = savingsWorkbook.createName();
             Name overdraftLimitName = savingsWorkbook.createName();
             SavingsProductData product = products.get(i);
-            String productName = product.getName().replaceAll("[ ]", "_");
+            String productName = product.getName();
             if (product.getNominalAnnualInterestRate() != null) {
-                interestRateName.setNameName("Interest_Rate_" + productName);
+                setSanitized(interestRateName, "Interest_Rate_" + productName);
                 interestRateName.setRefersToFormula("Products!$C$" + (i + 2));
             }
-            interestCompoundingPeriodName.setNameName("Interest_Compouding_" + productName);
-            interestPostingPeriodName.setNameName("Interest_Posting_" + productName);
-            interestCalculationName.setNameName("Interest_Calculation_" + productName);
-            daysInYearName.setNameName("Days_In_Year_" + productName);
-            currencyName.setNameName("Currency_" + productName);
-            decimalPlacesName.setNameName("Decimal_Places_" + productName);
-            withdrawalFeeName.setNameName("Withdrawal_Fee_" + productName);
-            allowOverdraftName.setNameName("Overdraft_" + productName);
+            setSanitized(interestCompoundingPeriodName, "Interest_Compouding_" + productName);
+            setSanitized(interestPostingPeriodName, "Interest_Posting_" + productName);
+            setSanitized(interestCalculationName, "Interest_Calculation_" + productName);
+            setSanitized(daysInYearName, "Days_In_Year_" + productName);
+            setSanitized(currencyName, "Currency_" + productName);
+            setSanitized(decimalPlacesName, "Decimal_Places_" + productName);
+            setSanitized(withdrawalFeeName, "Withdrawal_Fee_" + productName);
+            setSanitized(allowOverdraftName, "Overdraft_" + productName);
 
             interestCompoundingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$D$" + (i + 2));
             interestPostingPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$E$" + (i + 2));
@@ -389,26 +389,25 @@ public class SavingsWorkbookPopulator extends AbstractWorkbookPopulator {
             withdrawalFeeName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$N$" + (i + 2));
             allowOverdraftName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$O$" + (i + 2));
             if (product.getOverdraftLimit() != null) {
-                overdraftLimitName.setNameName("Overdraft_Limit_" + productName);
+                setSanitized(overdraftLimitName, "Overdraft_Limit_" + productName);
                 overdraftLimitName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$P$" + (i + 2));
             }
             if (product.getMinRequiredOpeningBalance() != null) {
-                minOpeningBalanceName.setNameName("Min_Balance_" + productName);
+                setSanitized(minOpeningBalanceName, "Min_Balance_" + productName);
                 minOpeningBalanceName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$H$" + (i + 2));
             }
             if (product.getLockinPeriodFrequency() != null) {
-                lockinPeriodName.setNameName("Lockin_Period_" + productName);
+                setSanitized(lockinPeriodName, "Lockin_Period_" + productName);
                 lockinPeriodName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$I$" + (i + 2));
             }
             if (product.getLockinPeriodFrequencyType() != null) {
-                lockinPeriodFrequencyName.setNameName("Lockin_Frequency_" + productName);
+                setSanitized(lockinPeriodFrequencyName, "Lockin_Frequency_" + productName);
                 lockinPeriodFrequencyName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$J$" + (i + 2));
             }
             if (product.getCurrency().currencyInMultiplesOf() != null) {
-                inMultiplesOfName.setNameName("In_Multiples_" + productName);
+                setSanitized(inMultiplesOfName, "In_Multiples_" + productName);
                 inMultiplesOfName.setRefersToFormula(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME + "!$M$" + (i + 2));
             }
         }
     }
-
 }
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/shareaccount/SharedAccountWorkBookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/shareaccount/SharedAccountWorkBookPopulator.java
index 3bc646a..16a32f0 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/shareaccount/SharedAccountWorkBookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/shareaccount/SharedAccountWorkBookPopulator.java
@@ -41,9 +41,9 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class SharedAccountWorkBookPopulator extends AbstractWorkbookPopulator {
 
-    private SharedProductsSheetPopulator sharedProductsSheetPopulator;
-    private ClientSheetPopulator clientSheetPopulator;
-    private SavingsAccountSheetPopulator savingsAccountSheetPopulator;
+    private final SharedProductsSheetPopulator sharedProductsSheetPopulator;
+    private final ClientSheetPopulator clientSheetPopulator;
+    private final SavingsAccountSheetPopulator savingsAccountSheetPopulator;
 
     public SharedAccountWorkBookPopulator(SharedProductsSheetPopulator sharedProductsSheetPopulator,
             ClientSheetPopulator clientSheetPopulator, SavingsAccountSheetPopulator savingsAccountSheetPopulator) {
@@ -150,25 +150,25 @@ public class SharedAccountWorkBookPopulator extends AbstractWorkbookPopulator {
 
             String productName = products.get(i).getName().replaceAll("[ ]", "_");
 
-            currecyName.setNameName("CURRENCY_" + productName);
+            setSanitized(currecyName, "CURRENCY_" + productName);
             currecyName.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$C$" + (i + 2));
 
-            decimalPlacesName.setNameName("DECIMAL_PLACES_" + productName);
+            setSanitized(decimalPlacesName, "DECIMAL_PLACES_" + productName);
             decimalPlacesName.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$D$" + (i + 2));
 
-            todaysPriceName.setNameName("TODAYS_PRICE_" + productName);
+            setSanitized(todaysPriceName, "TODAYS_PRICE_" + productName);
             todaysPriceName.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$E$" + (i + 2));
 
-            currencyInMultiplesName.setNameName("CURRENCY_IN_MULTIPLES_" + productName);
+            setSanitized(currencyInMultiplesName, "CURRENCY_IN_MULTIPLES_" + productName);
             currencyInMultiplesName.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$F$" + (i + 2));
 
-            chargesName1.setNameName("CHARGES_NAME_1_" + productName);
+            setSanitized(chargesName1, "CHARGES_NAME_1_" + productName);
             chargesName1.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$I$" + (i + 2));
 
-            chargesName2.setNameName("CHARGES_NAME_2_" + productName);
+            setSanitized(chargesName2, "CHARGES_NAME_2_" + productName);
             chargesName2.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$K$" + (i + 2));
 
-            chargesName3.setNameName("CHARGES_NAME_3_" + productName);
+            setSanitized(chargesName3, "CHARGES_NAME_3_" + productName);
             chargesName3.setRefersToFormula(TemplatePopulateImportConstants.SHARED_PRODUCTS_SHEET_NAME + "!$M$" + (i + 2));
         }
 
diff --git a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/users/UserWorkbookPopulator.java b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/users/UserWorkbookPopulator.java
index 3c00d41..d1f79d9 100644
--- a/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/users/UserWorkbookPopulator.java
+++ b/fineract-provider/src/main/java/org/apache/fineract/infrastructure/bulkimport/populator/users/UserWorkbookPopulator.java
@@ -40,9 +40,9 @@ import org.apache.poi.ss.util.CellRangeAddressList;
 
 public class UserWorkbookPopulator extends AbstractWorkbookPopulator {
 
-    private OfficeSheetPopulator officeSheetPopulator;
-    private PersonnelSheetPopulator personnelSheetPopulator;
-    private RoleSheetPopulator roleSheetPopulator;
+    private final OfficeSheetPopulator officeSheetPopulator;
+    private final PersonnelSheetPopulator personnelSheetPopulator;
+    private final RoleSheetPopulator roleSheetPopulator;
 
     public UserWorkbookPopulator(OfficeSheetPopulator officeSheetPopulator, PersonnelSheetPopulator personnelSheetPopulator,
             RoleSheetPopulator roleSheetPopulator) {
@@ -105,7 +105,7 @@ public class UserWorkbookPopulator extends AbstractWorkbookPopulator {
             Name userOfficeName = userWorkbook.createName();
 
             if (officeNameToBeginEndIndexesOfStaff != null) {
-                userOfficeName.setNameName("Staff_" + offices.get(i).name().trim().replaceAll("[ )(]", "_"));
+                setSanitized(userOfficeName, "Staff_" + offices.get(i).name());
                 userOfficeName.setRefersToFormula(TemplatePopulateImportConstants.STAFF_SHEET_NAME + "!$B$"
                         + officeNameToBeginEndIndexesOfStaff[0] + ":$B$" + officeNameToBeginEndIndexesOfStaff[1]);
             }
diff --git a/integration-tests/src/test/java/org/apache/fineract/integrationtests/bulkimport/populator/savings/SavingsWorkbookPopulateTest.java b/integration-tests/src/test/java/org/apache/fineract/integrationtests/bulkimport/populator/savings/SavingsWorkbookPopulateTest.java
index 6dd4621..8cbd82d 100644
--- a/integration-tests/src/test/java/org/apache/fineract/integrationtests/bulkimport/populator/savings/SavingsWorkbookPopulateTest.java
+++ b/integration-tests/src/test/java/org/apache/fineract/integrationtests/bulkimport/populator/savings/SavingsWorkbookPopulateTest.java
@@ -18,6 +18,8 @@
  */
 package org.apache.fineract.integrationtests.bulkimport.populator.savings;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.builder.ResponseSpecBuilder;
 import io.restassured.http.ContentType;
@@ -37,7 +39,6 @@ import org.apache.fineract.integrationtests.common.savings.SavingsProductHelper;
 import org.apache.poi.ss.usermodel.Row;
 import org.apache.poi.ss.usermodel.Sheet;
 import org.apache.poi.ss.usermodel.Workbook;
-import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -60,47 +61,46 @@ public class SavingsWorkbookPopulateTest {
         // in order to populate helper sheets
         OfficeHelper officeHelper = new OfficeHelper(requestSpec, responseSpec);
         Integer outcome_office_creation = officeHelper.createOffice("02 May 2000");
-        Assertions.assertNotNull(outcome_office_creation, "Could not create office");
+        assertNotNull(outcome_office_creation, "Could not create office");
 
         // in order to populate helper sheets
         Integer outcome_client_creation = ClientHelper.createClient(requestSpec, responseSpec);
-        Assertions.assertNotNull(outcome_client_creation, "Could not create client");
+        assertNotNull(outcome_client_creation, "Could not create client");
 
         // in order to populate helper sheets
         Integer outcome_group_creation = GroupHelper.createGroup(requestSpec, responseSpec, true);
-        Assertions.assertNotNull(outcome_group_creation, "Could not create group");
+        assertNotNull(outcome_group_creation, "Could not create group");
 
         // in order to populate helper sheets
         Integer outcome_staff_creation = StaffHelper.createStaff(requestSpec, responseSpec);
-        Assertions.assertNotNull(outcome_staff_creation, "Could not create staff");
+        assertNotNull(outcome_staff_creation, "Could not create staff");
 
         SavingsProductHelper savingsProductHelper = new SavingsProductHelper();
         String jsonSavingsProduct = savingsProductHelper.build();
         Integer outcome_sp_creaction = SavingsProductHelper.createSavingsProduct(jsonSavingsProduct, requestSpec, responseSpec);
-        Assertions.assertNotNull(outcome_sp_creaction, "Could not create Savings product");
+        assertNotNull(outcome_sp_creaction, "Could not create Savings product");
 
         SavingsAccountHelper savingsAccountHelper = new SavingsAccountHelper(requestSpec, responseSpec);
         Workbook workbook = savingsAccountHelper.getSavingsWorkbook("dd MMMM yyyy");
 
         Sheet officeSheet = workbook.getSheet(TemplatePopulateImportConstants.OFFICE_SHEET_NAME);
         Row firstOfficeRow = officeSheet.getRow(1);
-        Assertions.assertNotNull(firstOfficeRow.getCell(1), "No offices found ");
+        assertNotNull(firstOfficeRow.getCell(1), "No offices found ");
 
         Sheet clientSheet = workbook.getSheet(TemplatePopulateImportConstants.CLIENT_SHEET_NAME);
         Row firstClientRow = clientSheet.getRow(1);
-        Assertions.assertNotNull(firstClientRow.getCell(1), "No clients found ");
+        assertNotNull(firstClientRow.getCell(1), "No clients found ");
 
         Sheet groupSheet = workbook.getSheet(TemplatePopulateImportConstants.GROUP_SHEET_NAME);
         Row firstGroupRow = groupSheet.getRow(1);
-        Assertions.assertNotNull(firstGroupRow.getCell(1), "No groups found ");
+        assertNotNull(firstGroupRow.getCell(1), "No groups found ");
 
         Sheet staffSheet = workbook.getSheet(TemplatePopulateImportConstants.STAFF_SHEET_NAME);
         Row firstStaffRow = staffSheet.getRow(1);
-        Assertions.assertNotNull(firstStaffRow.getCell(1), "No staff found ");
+        assertNotNull(firstStaffRow.getCell(1), "No staff found ");
 
         Sheet productSheet = workbook.getSheet(TemplatePopulateImportConstants.PRODUCT_SHEET_NAME);
         Row firstProductRow = productSheet.getRow(1);
-        Assertions.assertNotNull(firstProductRow.getCell(1), "No products found ");
-
+        assertNotNull(firstProductRow.getCell(1), "No products found ");
     }
 }