diff --git a/docker/grafana/dashboards/grafana-petclinic-dashboard.json b/docker/grafana/dashboards/grafana-petclinic-dashboard.json
index 6d79a8d5f45cbab728b11a49e5a9f0d43b725619..ccd51d1bfa54cef2ed952b4542b659b5925c4413 100644
--- a/docker/grafana/dashboards/grafana-petclinic-dashboard.json
+++ b/docker/grafana/dashboards/grafana-petclinic-dashboard.json
@@ -283,7 +283,7 @@
       "tableColumn": "",
       "targets": [
         {
-          "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"200\"})",
+          "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"204\"})",
           "format": "time_series",
           "instant": true,
           "intervalFactor": 1,
@@ -446,7 +446,7 @@
       "tableColumn": "",
       "targets": [
         {
-          "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"204\"})",
+          "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"201\"})",
           "format": "time_series",
           "instant": true,
           "intervalFactor": 1,
@@ -528,7 +528,7 @@
       "tableColumn": "Value",
       "targets": [
         {
-          "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"204\"})",
+          "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"201\"})",
           "format": "time_series",
           "instant": true,
           "intervalFactor": 1,
@@ -598,21 +598,21 @@
           "refId": "A"
         },
         {
-          "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"204\"})",
+          "expr": "sum(petclinic_pet_seconds_count{method=\"POST\", status=\"201\"})",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "pet create",
           "refId": "B"
         },
         {
-          "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"204\"})",
+          "expr": "sum(petclinic_visit_seconds_count{method=\"POST\", status=\"201\"})",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "visit create",
           "refId": "C"
         },
         {
-          "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"200\"})",
+          "expr": "sum(petclinic_owner_seconds_count{method=\"PUT\", status=\"204\"})",
           "format": "time_series",
           "intervalFactor": 1,
           "legendFormat": "owner update",
diff --git a/pom.xml b/pom.xml
index 3627c00deff6697f2bed2f7505e74270df667a9d..8314aff7194e7f2f348be0ac3d49ad777d560131 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,12 +6,12 @@
     <parent>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-parent</artifactId>
-        <version>2.0.6.RELEASE</version>
+        <version>2.1.1.RELEASE</version>
     </parent>
 
     <groupId>org.springframework.samples</groupId>
     <artifactId>spring-petclinic-microservices</artifactId>
-    <version>2.0.6</version>
+    <version>2.1.2</version>
     <name>${project.artifactId}</name>
     <packaging>pom</packaging>
 
@@ -30,9 +30,9 @@
         <java.version>1.8</java.version>
         <assertj.version>3.11.1</assertj.version>
 
-        <spring-boot.version>2.0.4.RELEASE</spring-boot.version>
-        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
-        <sleuth.version>2.0.0.RC2</sleuth.version>
+        <spring-boot.version>2.1.2.RELEASE</spring-boot.version>
+        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
+        <micrometer.version>1.0.5</micrometer.version>
 
         <maven-surefire-plugin.version>2.22.0</maven-surefire-plugin.version>
 
@@ -45,13 +45,6 @@
 
     <dependencyManagement>
         <dependencies>
-            <dependency>
-                <groupId>org.springframework.cloud</groupId>
-                <artifactId>spring-cloud-sleuth-dependencies</artifactId>
-                <type>pom</type>
-                <scope>import</scope>
-                <version>${sleuth.version}</version>
-            </dependency>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-dependencies</artifactId>
diff --git a/spring-petclinic-admin-server/pom.xml b/spring-petclinic-admin-server/pom.xml
index 960be82512f423e584b54be977eb3596835110bf..7aaa088f344243c6eabae4cad731a52ea7339a04 100644
--- a/spring-petclinic-admin-server/pom.xml
+++ b/spring-petclinic-admin-server/pom.xml
@@ -12,11 +12,11 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
 
     <properties>
-        <spring-boot-admin.version>2.0.3</spring-boot-admin.version>
+        <spring-boot-admin.version>2.1.2</spring-boot-admin.version>
         <docker.image.exposed.port>9090</docker.image.exposed.port>
         <docker.image.dockerfile.dir>${basedir}/../docker</docker.image.dockerfile.dir>
     </properties>
diff --git a/spring-petclinic-api-gateway/pom.xml b/spring-petclinic-api-gateway/pom.xml
index 790845120eb49db6ac2ab97087eab572d478338c..b179c8c4e12d6d174fdba8addcb10fec73a63c0b 100644
--- a/spring-petclinic-api-gateway/pom.xml
+++ b/spring-petclinic-api-gateway/pom.xml
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/VisitDetails.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/VisitDetails.java
index 29b7c21927030b9c479b71fc81c1dbfda30656c9..7c8a7827bdb569f3d2ba9c5fb46cd394e057f2e4 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/VisitDetails.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/VisitDetails.java
@@ -15,19 +15,21 @@
  */
 package org.springframework.samples.petclinic.api.dto;
 
+import lombok.NoArgsConstructor;
 import lombok.Value;
 
 /**
  * @author Maciej Szarlinski
  */
 @Value
+@NoArgsConstructor
 public class VisitDetails {
 
-    private int id;
+    private Integer id = null;
 
-    private int petId;
+    private Integer petId = null;
 
-    private String date;
+    private String date = null;
 
-    private String description;
+    private String description = null;
 }
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/Visits.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/Visits.java
index 58708bc91e4d2082cd16ea0a5200f65970c01c59..25957cf424c076dcff1c89c4ba6119b04d68c124 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/Visits.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/dto/Visits.java
@@ -16,12 +16,17 @@
 package org.springframework.samples.petclinic.api.dto;
 
 import java.util.List;
+
+import lombok.NoArgsConstructor;
 import lombok.Value;
 
 /**
  * @author Maciej Szarlinski
  */
 @Value
+@NoArgsConstructor
 public class Visits {
-    private List<VisitDetails> items;
+
+    private List<VisitDetails> items = null;
+
 }
diff --git a/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/ApiGatewayApplicationTests.java b/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/ApiGatewayApplicationTests.java
index 939092f5601b65ef560982ae8cef138ded7e5cf8..864d4fbf3bdbaf1add8d3585d418b6b76b9aa052 100644
--- a/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/ApiGatewayApplicationTests.java
+++ b/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/ApiGatewayApplicationTests.java
@@ -1,12 +1,9 @@
 package org.springframework.samples.petclinic.api;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-@ExtendWith(SpringExtension.class)
 @ActiveProfiles("test")
 @SpringBootTest
 class ApiGatewayApplicationTests {
diff --git a/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/application/VisitsServiceClientTest.java b/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/application/VisitsServiceClientTest.java
index 506ded57e67e7986e1f4edcccc27a3b0456c857c..465ab7b7438ed2b1783b11ba97a772c42c15b688 100644
--- a/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/application/VisitsServiceClientTest.java
+++ b/spring-petclinic-api-gateway/src/test/java/org/springframework/samples/petclinic/api/application/VisitsServiceClientTest.java
@@ -2,16 +2,12 @@ package org.springframework.samples.petclinic.api.application;
 
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.EnableAspectJAutoProxy;
 import org.springframework.http.MediaType;
 import org.springframework.samples.petclinic.api.dto.VisitDetails;
-import org.springframework.test.context.ContextConfiguration;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
 import org.springframework.test.web.client.MockRestServiceServer;
 import org.springframework.web.client.RestTemplate;
 
@@ -25,10 +21,9 @@ import static org.springframework.test.web.client.match.MockRestRequestMatchers.
 import static org.springframework.test.web.client.response.MockRestResponseCreators.withServerError;
 import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
 
-@ExtendWith(SpringExtension.class)
 @EnableCircuitBreaker
 @EnableAspectJAutoProxy
-@ContextConfiguration(classes = {VisitsServiceClient.class})
+@SpringJUnitConfig(classes = {VisitsServiceClient.class, RestTemplate.class})
 class VisitsServiceClientTest {
 
     private static final Integer PET_ID = 1;
@@ -41,21 +36,11 @@ class VisitsServiceClientTest {
 
     private MockRestServiceServer mockServer;
 
-    @Configuration
-    static class Config {
-        @Bean
-        public RestTemplate restTemplate() {
-            return new RestTemplate();
-        }
-    }
-
-
     @BeforeEach
     public void setUp() {
         mockServer = MockRestServiceServer.createServer(restTemplate);
     }
 
-
     @Test
     public void getVisitsForPets_withAvailableVisitsService() {
         mockServer.expect(requestTo("http://visits-service/pets/visits?petId=1"))
diff --git a/spring-petclinic-config-server/pom.xml b/spring-petclinic-config-server/pom.xml
index 39eccfa106c32a9d9716e6c6607e91545c40b49f..3410f2f1af3112645bf845634d8c7f39f6f36508 100644
--- a/spring-petclinic-config-server/pom.xml
+++ b/spring-petclinic-config-server/pom.xml
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-config-server/src/test/java/org/springframework/samples/petclinic/config/PetclinicConfigServerApplicationTests.java b/spring-petclinic-config-server/src/test/java/org/springframework/samples/petclinic/config/PetclinicConfigServerApplicationTests.java
index 52423bfcbbae2bc88d1bd0535c6e527e74772c8d..e4cd33f3a12aeb05a98f8408b17ec055dd720521 100644
--- a/spring-petclinic-config-server/src/test/java/org/springframework/samples/petclinic/config/PetclinicConfigServerApplicationTests.java
+++ b/spring-petclinic-config-server/src/test/java/org/springframework/samples/petclinic/config/PetclinicConfigServerApplicationTests.java
@@ -16,11 +16,8 @@
 package org.springframework.samples.petclinic.config;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-@ExtendWith(SpringExtension.class)
 @SpringBootTest
 class PetclinicConfigServerApplicationTests {
 
diff --git a/spring-petclinic-customers-service/pom.xml b/spring-petclinic-customers-service/pom.xml
index 9c411deb62087ea1fee872ed9515896b7c5e025d..dccc8e5a5e27a9a0b1a884c9bea6d6bb52ce7019 100644
--- a/spring-petclinic-customers-service/pom.xml
+++ b/spring-petclinic-customers-service/pom.xml
@@ -11,7 +11,7 @@
 	<parent>
 		<groupId>org.springframework.samples</groupId>
 		<artifactId>spring-petclinic-microservices</artifactId>
-		<version>2.0.6</version>
+		<version>2.1.2</version>
 	</parent>
 
     <properties>
diff --git a/spring-petclinic-discovery-server/pom.xml b/spring-petclinic-discovery-server/pom.xml
index 5cefc3dd66d769502d7015cb677306b32216b0ae..1049dbeb9dcf9b0323082691c6b1bcc84e602527 100644
--- a/spring-petclinic-discovery-server/pom.xml
+++ b/spring-petclinic-discovery-server/pom.xml
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-discovery-server/src/test/java/org/springframework/samples/petclinic/discovery/DiscoveryServerApplicationTests.java b/spring-petclinic-discovery-server/src/test/java/org/springframework/samples/petclinic/discovery/DiscoveryServerApplicationTests.java
index 0d82eebef1eacf4a34a71010015ee2c3e77f5ea9..a1ede35e1f95b45ae1667b4d32fbf44c1279aabd 100644
--- a/spring-petclinic-discovery-server/src/test/java/org/springframework/samples/petclinic/discovery/DiscoveryServerApplicationTests.java
+++ b/spring-petclinic-discovery-server/src/test/java/org/springframework/samples/petclinic/discovery/DiscoveryServerApplicationTests.java
@@ -16,11 +16,8 @@
 package org.springframework.samples.petclinic.discovery;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-@ExtendWith(SpringExtension.class)
 @SpringBootTest
 class DiscoveryServerApplicationTests {
 
diff --git a/spring-petclinic-hystrix-dashboard/pom.xml b/spring-petclinic-hystrix-dashboard/pom.xml
index 81ef00b2cd7cd13af450cb402544d6161f1801a7..3b847df6a181dc01ef4bdc659309d1519fed032e 100644
--- a/spring-petclinic-hystrix-dashboard/pom.xml
+++ b/spring-petclinic-hystrix-dashboard/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>spring-petclinic-microservices</artifactId>
         <groupId>org.springframework.samples</groupId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 
diff --git a/spring-petclinic-hystrix-dashboard/src/test/java/org/springframework/samples/petclinic/dashboard/HystrixDashboardApplicationTests.java b/spring-petclinic-hystrix-dashboard/src/test/java/org/springframework/samples/petclinic/dashboard/HystrixDashboardApplicationTests.java
index 18bc6d7e569145f9a4dd1de55d5b2429c3d8ce9d..2049712ef00b1f8edd764bc34bc14ed0542527a5 100644
--- a/spring-petclinic-hystrix-dashboard/src/test/java/org/springframework/samples/petclinic/dashboard/HystrixDashboardApplicationTests.java
+++ b/spring-petclinic-hystrix-dashboard/src/test/java/org/springframework/samples/petclinic/dashboard/HystrixDashboardApplicationTests.java
@@ -1,11 +1,8 @@
 package org.springframework.samples.petclinic.dashboard;
 
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit.jupiter.SpringExtension;
 
-@ExtendWith(SpringExtension.class)
 @SpringBootTest
 class HystrixDashboardApplicationTests {
 
diff --git a/spring-petclinic-vets-service/pom.xml b/spring-petclinic-vets-service/pom.xml
index 9f3c58cd7f1bbeb78151a69dae1d2ae98396761f..ba93f4603c65628440d0e4a319ca632b34a9a3fa 100644
--- a/spring-petclinic-vets-service/pom.xml
+++ b/spring-petclinic-vets-service/pom.xml
@@ -11,7 +11,7 @@
 	<parent>
 		<groupId>org.springframework.samples</groupId>
 		<artifactId>spring-petclinic-microservices</artifactId>
-		<version>2.0.6</version>
+		<version>2.1.2</version>
 	</parent>
 
     <properties>
diff --git a/spring-petclinic-visits-service/pom.xml b/spring-petclinic-visits-service/pom.xml
index 2bf6cc5d07af1dc9d18e0913f6ee2d8a42e1440a..bf5b1b76a98576119995059b579061280bd6f9fa 100644
--- a/spring-petclinic-visits-service/pom.xml
+++ b/spring-petclinic-visits-service/pom.xml
@@ -11,7 +11,7 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>2.0.6</version>
+        <version>2.1.2</version>
     </parent>
 
     <properties>