diff --git a/.gitignore b/.gitignore
index 6dba3b6..33c9268 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,6 +3,10 @@
 build/
 target/
 out/
+.project
+.classpath
+bin
+.settings
 
 # Ignore Gradle GUI config
 gradle-app.setting
diff --git a/api/build.gradle b/api/build.gradle
index 36420e0..edaa3ea 100644
--- a/api/build.gradle
+++ b/api/build.gradle
@@ -22,10 +22,11 @@
 }
 
 plugins {
-    id 'com.github.hierynomus.license' version '0.13.1'
-    id("org.nosphere.apache.rat") version "0.5.2"
-    id "com.jfrog.artifactory" version "4.9.5"
-    id "io.spring.dependency-management" version "1.0.8.RELEASE"
+    id 'com.github.hierynomus.license' version '0.15.0'
+    id 'org.nosphere.apache.rat' version '0.6.0'
+    id 'com.jfrog.artifactory' version '4.15.1'
+    id 'org.springframework.boot' version '2.2.6.RELEASE'
+    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
     id 'maven-publish'
     id 'java'
 }
@@ -34,13 +35,17 @@
 
 dependencies {
     compile(
-            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-feign'],
+            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-openfeign'],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.hibernatevalidator],
             [group: 'org.apache.fineract.cn', name: 'api', version: versions.frameworkapi],
             [group: 'org.apache.fineract.cn.anubis', name: 'api', version: versions.frameworkanubis]
     )
 }
 
+jar {
+    enabled = true
+}
+
 publishing {
     publications {
         api(MavenPublication) {
diff --git a/api/src/main/java/org/apache/fineract/cn/identity/api/v1/client/IdentityManager.java b/api/src/main/java/org/apache/fineract/cn/identity/api/v1/client/IdentityManager.java
index a41a41e..301e608 100644
--- a/api/src/main/java/org/apache/fineract/cn/identity/api/v1/client/IdentityManager.java
+++ b/api/src/main/java/org/apache/fineract/cn/identity/api/v1/client/IdentityManager.java
@@ -35,7 +35,7 @@
 import org.apache.fineract.cn.anubis.api.v1.validation.ValidKeyTimestamp;
 import org.apache.fineract.cn.api.annotation.ThrowsException;
 import org.apache.fineract.cn.api.util.CustomFeignClientsConfiguration;
-import org.springframework.cloud.netflix.feign.FeignClient;
+import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PathVariable;
diff --git a/component-test/build.gradle b/component-test/build.gradle
index cfb2685..ab522a2 100644
--- a/component-test/build.gradle
+++ b/component-test/build.gradle
@@ -17,7 +17,7 @@
 
 buildscript {
     ext {
-        springBootVersion = '1.4.1.RELEASE'
+        springBootVersion = '2.2.6.RELEASE'
     }
 
     repositories {
@@ -25,15 +25,16 @@
     }
 
     dependencies {
-        classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.3")
+        classpath("org.asciidoctor:asciidoctor-gradle-plugin:1.5.7")
     }
 }
 
 plugins {
-    id 'com.github.hierynomus.license' version '0.13.1'
-    id("org.nosphere.apache.rat") version "0.5.2"
-    id "com.jfrog.artifactory" version "4.9.5"
-    id "org.springframework.boot" version "1.4.3.RELEASE"
+    id 'com.github.hierynomus.license' version '0.15.0'
+    id 'org.nosphere.apache.rat' version '0.6.0'
+    id 'com.jfrog.artifactory' version '4.15.1'
+    id 'org.springframework.boot' version '2.2.6.RELEASE'
+    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
     id 'maven'
     id 'maven-publish'
     id 'java'
@@ -42,7 +43,7 @@
 apply from: '../shared.gradle'
 apply plugin: 'org.asciidoctor.convert'
 
-bootRepackage {
+bootJar {
     enabled = false
 }
 
@@ -57,15 +58,19 @@
             [group: 'org.apache.fineract.cn.anubis', name: 'api', version: versions.frameworkanubis],
             [group: 'org.apache.fineract.cn.anubis', name: 'test', version: versions.frameworkanubis],
             [group: 'org.springframework.restdocs', name: 'spring-restdocs-mockmvc'],
-            [group: 'junit', name: 'junit', version: '4.12']
+            [group: 'junit', name: 'junit', version: '4.13']
     )
 }
 
+jar {
+    enabled = true
+}
+
 asciidoctor {
-        sourceDir 'build/doc/asciidoc/'
-        outputDir 'build/doc/html5'
-        options backend: "html", doctype: "book"
-        attributes "source-highlighter": "highlightjs", \
-                'snippets': file('build/doc/generated-snippets/')
-    }
+    sourceDir 'build/doc/asciidoc/'
+    outputDir 'build/doc/html5'
+    options backend: "html", doctype: "book"
+    attributes "source-highlighter": "highlightjs", \
+        'snippets': file('build/doc/generated-snippets/')
+}
 
diff --git a/service/build.gradle b/service/build.gradle
index 9168a03..4505dd0 100644
--- a/service/build.gradle
+++ b/service/build.gradle
@@ -17,7 +17,7 @@
 
 buildscript {
     ext {
-        springBootVersion = '1.4.1.RELEASE'
+        springBootVersion = '2.2.6.RELEASE'
     }
     repositories {
         jcenter()
@@ -25,10 +25,11 @@
 }
 
 plugins {
-    id 'com.github.hierynomus.license' version '0.13.1'
-    id("org.nosphere.apache.rat") version "0.5.2"
-    id "com.jfrog.artifactory" version "4.9.5"
-    id "org.springframework.boot" version "1.4.3.RELEASE"
+    id 'com.github.hierynomus.license' version '0.15.0'
+    id 'org.nosphere.apache.rat' version '0.6.0'
+    id 'com.jfrog.artifactory' version '4.15.1'
+    id 'org.springframework.boot' version '2.2.6.RELEASE'
+    id 'io.spring.dependency-management' version '1.0.9.RELEASE'
     id 'maven'
     id 'maven-publish'
     id 'java'
@@ -39,7 +40,7 @@
 
 apply from: '../shared.gradle'
 
-bootRepackage {
+bootJar {
     enabled = true
     classifier = 'boot'
 }
@@ -47,7 +48,7 @@
 dependencies {
     compile(
             [group: 'org.springframework.cloud', name: 'spring-cloud-starter-config'],
-            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-eureka'],
+            [group: 'org.springframework.cloud', name: 'spring-cloud-starter-netflix-eureka-client'],
             [group: 'org.springframework.boot', name: 'spring-boot-starter-jetty'],
             [group: 'org.hibernate', name: 'hibernate-validator', version: versions.hibernatevalidator],
             [group: 'org.apache.fineract.cn', name: 'lang', version: versions.frameworklang],
@@ -64,8 +65,12 @@
     )
 }
 
+jar {
+    enabled = true
+}
+
 tasks.withType(PublishToMavenLocal) { task ->
-    task.dependsOn 'bootRepackage'
+    task.dependsOn 'bootJar'
 }
 
 publishing {
@@ -78,7 +83,7 @@
         }
         bootService(MavenPublication) {
             // "boot" jar
-            artifact(file("$buildDir/libs/$project.name-$project.version-${bootRepackage.classifier}.jar"))
+            artifact(file("$buildDir/libs/$project.name-$project.version-${bootJar.classifier}.jar"))
             groupId project.group
             artifactId ("$project.name-boot")
             version project.version
diff --git a/shared.gradle b/shared.gradle
index 5188308..acc650e 100644
--- a/shared.gradle
+++ b/shared.gradle
@@ -28,7 +28,7 @@
         frameworkcassandra : 'spring_boot_2-SNAPSHOT',
         frameworkcommand   : 'spring_boot_2-SNAPSHOT',
         jjwt               : '0.6.0',
-        hibernatevalidator : '5.3.0.Final'
+        hibernatevalidator : '6.1.4.Final'
 ]
 
 tasks.withType(JavaCompile) {
@@ -44,8 +44,8 @@
 
 dependencyManagement {
     imports {
-        mavenBom 'io.spring.platform:platform-bom:Athens-RELEASE'
-        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Camden.SR1'
+        mavenBom 'io.spring.platform:platform-bom:Cairo-SR8'
+        mavenBom 'org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR3'
     }
 }
 
@@ -113,6 +113,10 @@
             "**/build/**",
             "gradlew",
             "gradlew.bat",
-            "README.md"
+            "README.md",
+            ".settings/**",
+            ".project",
+            ".classpath",
+            "**/bin/**"
     ]
 }
