diff --git a/README.md b/README.md
index e4cb3c3ab423fedd1a18db97fbb7ca95b31f2077..5915bd661d5d034df8590b64192c8b0d03cf943a 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ If everything goes well, you can access the following services at given location
 * Config Server - http://localhost:8888
 * AngularJS frontend (API Gateway) - http://localhost:8080
 * Customers, Vets and Visits Services - random port, check Eureka Dashboard 
-* Tracing Server (Zipkin) - http://localhost:9411
+* Tracing Server (Zipkin) - http://localhost:9411/zipkin/
 * Admin Server (Spring Boot Admin) - http://localhost:9090
 
 You can tell Config Server to use your local Git repository by using `local` Spring profile and setting
diff --git a/pom.xml b/pom.xml
index 397bb32ab562636bd1fe281479739766bebafd4f..3c9907cc5182461b3d27e8b5e0f29fd9f0d606f7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,25 +1,26 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
 
-	<parent>
-		<groupId>org.springframework.boot</groupId>
-		<artifactId>spring-boot-starter-parent</artifactId>
-		<version>1.5.9.RELEASE</version>
-	</parent>
+    <parent>
+        <groupId>org.springframework.boot</groupId>
+        <artifactId>spring-boot-starter-parent</artifactId>
+        <version>2.0.3.RELEASE</version>
+    </parent>
 
-	<groupId>org.springframework.samples</groupId>
-	<artifactId>spring-petclinic-microservices</artifactId>
-	<version>1.5.9</version>
+    <groupId>org.springframework.samples</groupId>
+    <artifactId>spring-petclinic-microservices</artifactId>
+    <version>2.0.3</version>
     <name>${project.artifactId}</name>
-	<packaging>pom</packaging>
+    <packaging>pom</packaging>
 
-	<modules>
-		<module>spring-petclinic-admin-server</module>
-		<module>spring-petclinic-customers-service</module>
-		<module>spring-petclinic-vets-service</module>
-		<module>spring-petclinic-visits-service</module>
-		<module>spring-petclinic-config-server</module>
+    <modules>
+        <module>spring-petclinic-admin-server</module>
+        <module>spring-petclinic-customers-service</module>
+        <module>spring-petclinic-vets-service</module>
+        <module>spring-petclinic-visits-service</module>
+        <module>spring-petclinic-config-server</module>
         <module>spring-petclinic-discovery-server</module>
         <module>spring-petclinic-api-gateway</module>
         <module>spring-petclinic-monitoring</module>
@@ -28,32 +29,32 @@
 
     <properties>
         <assertj.version>3.9.0</assertj.version>
-        <spring-cloud.version>Edgware.SR1</spring-cloud.version>
-        <sleuth.version>1.3.1.RELEASE</sleuth.version>
+        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
+        <sleuth.version>2.0.0.RC2</sleuth.version>
         <java.version>1.8</java.version>
 
-		<docker.image.prefix>mszarlinski</docker.image.prefix>
+        <docker.image.prefix>mszarlinski</docker.image.prefix>
         <docker.image.exposed.port>9090</docker.image.exposed.port>
         <docker.image.dockerfile.dir>${basedir}</docker.image.dockerfile.dir>
-		<docker.plugin.version>0.4.13</docker.plugin.version>
+        <docker.plugin.version>0.4.13</docker.plugin.version>
     </properties>
 
-	<dependencyManagement>
-		<dependencies>
+    <dependencyManagement>
+        <dependencies>
             <dependency>
                 <groupId>org.springframework.cloud</groupId>
                 <artifactId>spring-cloud-sleuth-dependencies</artifactId>
-				<type>pom</type>
-				<scope>import</scope>
+                <type>pom</type>
+                <scope>import</scope>
                 <version>${sleuth.version}</version>
             </dependency>
-			<dependency>
-				<groupId>org.springframework.cloud</groupId>
-				<artifactId>spring-cloud-dependencies</artifactId>
-				<version>${spring-cloud.version}</version>
-				<type>pom</type>
-				<scope>import</scope>
-			</dependency>
+            <dependency>
+                <groupId>org.springframework.cloud</groupId>
+                <artifactId>spring-cloud-dependencies</artifactId>
+                <version>${spring-cloud.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
 
             <dependency>
                 <groupId>org.springframework.samples.petclinic.monitoring</groupId>
@@ -66,8 +67,8 @@
                 <version>${assertj.version}</version>
                 <scope>test</scope>
             </dependency>
-		</dependencies>
-	</dependencyManagement>
+        </dependencies>
+    </dependencyManagement>
 
     <profiles>
         <profile>
@@ -167,4 +168,12 @@
         </profile>
     </profiles>
 
+    <repositories>
+        <repository>
+            <id>repository.spring.milestone</id>
+            <name>Spring Milestone Repository</name>
+            <url>http://repo.spring.io/milestone</url>
+        </repository>
+    </repositories>
+
 </project>
diff --git a/spring-petclinic-admin-server/pom.xml b/spring-petclinic-admin-server/pom.xml
index e73946fddbddf56764e474a445f17a8412e508f6..8812b82e97b28bbac91c6c4598794386b3dc1694 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>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
-        <spring-boot-admin.version>1.5.6</spring-boot-admin.version>
+        <spring-boot-admin.version>2.0.1</spring-boot-admin.version>
         <docker.image.exposed.port>9090</docker.image.exposed.port>
         <docker.image.dockerfile.dir>${basedir}/../docker</docker.image.dockerfile.dir>
     </properties>
@@ -39,7 +39,7 @@
         <!-- Spring Boot Admin -->
         <dependency>
             <groupId>de.codecentric</groupId>
-            <artifactId>spring-boot-admin-server</artifactId>
+            <artifactId>spring-boot-admin-starter-server</artifactId>
             <version>${spring-boot-admin.version}</version>
         </dependency>
         <dependency>
diff --git a/spring-petclinic-admin-server/src/main/java/org/springframework/samples/petclinic/admin/SpringBootAdminApplication.java b/spring-petclinic-admin-server/src/main/java/org/springframework/samples/petclinic/admin/SpringBootAdminApplication.java
index 97f85e85fa9b7aad8b65b4cfc460a5c9440b7cdd..eb9349cd7b54ed81629825bd0b25b53d5b40e386 100644
--- a/spring-petclinic-admin-server/src/main/java/org/springframework/samples/petclinic/admin/SpringBootAdminApplication.java
+++ b/spring-petclinic-admin-server/src/main/java/org/springframework/samples/petclinic/admin/SpringBootAdminApplication.java
@@ -15,7 +15,7 @@
  */
 package org.springframework.samples.petclinic.admin;
 
-import de.codecentric.boot.admin.config.EnableAdminServer;
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@@ -29,4 +29,5 @@ public class SpringBootAdminApplication {
     public static void main(String[] args) {
         SpringApplication.run(SpringBootAdminApplication.class, args);
     }
+
 }
diff --git a/spring-petclinic-api-gateway/pom.xml b/spring-petclinic-api-gateway/pom.xml
index b7524d045af6f8aaaa38ed27f62f65a2d3b32c2d..e47d85b5117fd354827c470e6574a03ea6c045b8 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>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
@@ -106,7 +106,7 @@
         </dependency>
         <dependency>
             <groupId>org.webjars</groupId>
-            <artifactId>webjars-locator</artifactId>
+            <artifactId>webjars-locator-core</artifactId>
         </dependency>
     </dependencies>
 
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/OwnerDetails.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/OwnerDetails.java
index cc6a7b5235db360d40e3ee954a54579e566ef264..ca2be1cdcca1f5691718441ee84092fafb9f31c0 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/OwnerDetails.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/OwnerDetails.java
@@ -17,6 +17,7 @@ package org.springframework.samples.petclinic.api.application;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -29,17 +30,17 @@ import static java.util.stream.Collectors.toList;
 @Data
 public class OwnerDetails {
 
-    private final int id;
+    private int id;
 
-    private final String firstName;
+    private String firstName;
 
-    private final String lastName;
+    private String lastName;
 
-    private final String address;
+    private String address;
 
-    private final String city;
+    private String city;
 
-    private final String telephone;
+    private String telephone;
 
     private final List<PetDetails> pets = new ArrayList<>();
 
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetDetails.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetDetails.java
index 74a3f20129d7f0a3465db2b5693d482036716a1f..b2b40d0e4a4496e26a07cfe85d078c6c2c498c26 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetDetails.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetDetails.java
@@ -16,6 +16,7 @@
 package org.springframework.samples.petclinic.api.application;
 
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -26,13 +27,13 @@ import java.util.List;
 @Data
 public class PetDetails {
 
-    private final int id;
+    private int id;
 
-    private final String name;
+    private String name;
 
-    private final String birthDate;
+    private String birthDate;
 
-    private final PetType type;
+    private PetType type;
 
     private final List<VisitDetails> visits = new ArrayList<>();
 
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetType.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetType.java
index 10b6fc2cd9d24c3ec161f255d2f9cbb973d37efe..bd284b558c608a7832ad31417d16b9a9721b04fd 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetType.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/PetType.java
@@ -16,6 +16,7 @@
 package org.springframework.samples.petclinic.api.application;
 
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author Maciej Szarlinski
@@ -23,5 +24,5 @@ import lombok.Data;
 @Data
 public class PetType {
 
-    private final String name;
+    private String name;
 }
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/VisitDetails.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/VisitDetails.java
index 99769b0c5a0b43f17384f3ab5d8854b9c3aa8e17..beefaa3fb8667ddee7733e7dd6f3e574316a359a 100644
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/VisitDetails.java
+++ b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/application/VisitDetails.java
@@ -16,6 +16,7 @@
 package org.springframework.samples.petclinic.api.application;
 
 import lombok.Data;
+import lombok.NoArgsConstructor;
 
 /**
  * @author Maciej Szarlinski
@@ -23,11 +24,11 @@ import lombok.Data;
 @Data
 public class VisitDetails {
 
-    private final int id;
+    private int id;
 
-    private final int petId;
+    private int petId;
 
-    private final String date;
+    private String date;
 
-    private final String description;
+    private String description;
 }
diff --git a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java b/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java
deleted file mode 100644
index 1b14759e7ea2091575fa9c5f6457ab2965b9fac8..0000000000000000000000000000000000000000
--- a/spring-petclinic-api-gateway/src/main/java/org/springframework/samples/petclinic/api/infrastructure/config/WebConfig.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright 2002-2017 the original author or authors.
- *
- * Licensed 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.springframework.samples.petclinic.api.infrastructure.config;
-
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
-
-@Configuration
-public class WebConfig extends WebMvcConfigurerAdapter {
-
-    @Override
-    public void addViewControllers(ViewControllerRegistry registry) {
-        registry.addViewController("/").setViewName("index");
-    }
-}
diff --git a/spring-petclinic-config-server/pom.xml b/spring-petclinic-config-server/pom.xml
index c2c3fc5377d246b5281f7b4ba3eff2e13bab3228..752cfa299eb2b46a4d66ba378fb506ae8896dbfa 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>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-customers-service/pom.xml b/spring-petclinic-customers-service/pom.xml
index 98dee28520f69ed84d9752f8a32ddf32e71ba737..7dc6fd570102d960bf0f97844ad0f01f8ec73d36 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>1.5.9</version>
+		<version>2.0.3</version>
 	</parent>
 
     <properties>
@@ -52,7 +52,7 @@
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-eureka</artifactId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java
index bacbf191d37a10937fb74b5a6d960ae118c35e92..360e7652f3a81df2dbcc2c6bff64c79e74a92d39 100644
--- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Owner.java
@@ -31,8 +31,8 @@ import javax.persistence.Id;
 import javax.persistence.OneToMany;
 import javax.persistence.Table;
 import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotEmpty;
 
-import org.hibernate.validator.constraints.NotEmpty;
 import org.springframework.beans.support.MutableSortDefinition;
 import org.springframework.beans.support.PropertyComparator;
 import org.springframework.core.style.ToStringCreator;
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java
index 25ae2d5c0c71e8bfab59ba91464ddf19b2e0b246..e0d28a9fd9d8d15b68d2f31d7b02a4ad13680fa5 100644
--- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/model/Pet.java
@@ -29,6 +29,7 @@ import javax.persistence.Temporal;
 import javax.persistence.TemporalType;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import org.springframework.core.style.ToStringCreator;
 
 /**
  * Simple business object representing a pet.
@@ -100,4 +101,17 @@ public class Pet {
     public void setOwner(final Owner owner) {
         this.owner = owner;
     }
+
+    @Override
+    public String toString() {
+        return new ToStringCreator(this)
+            .append("id", this.getId())
+            .append("name", this.getName())
+            .append("birthDate", this.getBirthDate())
+            .append("type", this.getType().getName())
+            .append("ownerFirstname", this.getOwner().getFirstName())
+            .append("ownerLastname", this.getOwner().getLastName())
+            .toString();
+    }
+
 }
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java
index 802c73d9bee787bf0a52ee2f2df6a80ba07baed6..4cdac535ea4484ce0db7d42ed5cae27f2450cd4b 100644
--- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/OwnerResource.java
@@ -26,6 +26,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author Juergen Hoeller
@@ -56,8 +57,8 @@ class OwnerResource {
      * Read single Owner
      */
     @GetMapping(value = "/{ownerId}")
-    public Owner findOwner(@PathVariable("ownerId") int ownerId) {
-        return ownerRepository.findOne(ownerId);
+    public Optional<Owner> findOwner(@PathVariable("ownerId") int ownerId) {
+        return ownerRepository.findById(ownerId);
     }
 
     /**
@@ -74,7 +75,9 @@ class OwnerResource {
     @PutMapping(value = "/{ownerId}")
     @Monitored
     public Owner updateOwner(@PathVariable("ownerId") int ownerId, @Valid @RequestBody Owner ownerRequest) {
-        final Owner ownerModel = ownerRepository.findOne(ownerId);
+        final Optional<Owner> owner = ownerRepository.findById(ownerId);
+
+        final Owner ownerModel = owner.orElseThrow(() -> new ResourceNotFoundException("Owner "+ownerId+" not found"));
         // This is done by hand for simplicity purpose. In a real life use-case we should consider using MapStruct.
         ownerModel.setFirstName(ownerRequest.getFirstName());
         ownerModel.setLastName(ownerRequest.getLastName());
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java
index a7c7d3032e65d71653665b5083d17fea1cf6cee5..e196ca88232bf602e5edbcebb41ce63d8219aaf3 100644
--- a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/PetResource.java
@@ -24,6 +24,7 @@ import org.springframework.samples.petclinic.monitoring.Monitored;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Optional;
 
 /**
  * @author Juergen Hoeller
@@ -53,7 +54,8 @@ class PetResource {
         @PathVariable("ownerId") int ownerId) {
 
         final Pet pet = new Pet();
-        final Owner owner = ownerRepository.findOne(ownerId);
+        final Optional<Owner> optionalOwner = ownerRepository.findById(ownerId);
+        Owner owner = optionalOwner.orElseThrow(() -> new ResourceNotFoundException("Owner "+ownerId+" not found"));
         owner.addPet(pet);
 
         save(pet, petRequest);
@@ -63,7 +65,9 @@ class PetResource {
     @ResponseStatus(HttpStatus.NO_CONTENT)
     @Monitored
     public void processUpdateForm(@RequestBody PetRequest petRequest) {
-        save(petRepository.findOne(petRequest.getId()), petRequest);
+        int petId = petRequest.getId();
+        Pet pet = findPetById(petId);
+        save(pet, petRequest);
     }
 
     private void save(final Pet pet, final PetRequest petRequest) {
@@ -80,7 +84,16 @@ class PetResource {
 
     @GetMapping("owners/*/pets/{petId}")
     public PetDetails findPet(@PathVariable("petId") int petId) {
-        return new PetDetails(petRepository.findOne(petId));
+        return new PetDetails(findPetById(petId));
+    }
+
+
+    private Pet findPetById(int petId) {
+        Optional<Pet> pet = petRepository.findById(petId);
+        if (!pet.isPresent()) {
+            throw new ResourceNotFoundException("Pet "+petId+" not found");
+        }
+        return pet.get();
     }
 
 }
diff --git a/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/ResourceNotFoundException.java b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/ResourceNotFoundException.java
new file mode 100644
index 0000000000000000000000000000000000000000..c321a99d0d76880f524f42c72cf06a372f7e8064
--- /dev/null
+++ b/spring-petclinic-customers-service/src/main/java/org/springframework/samples/petclinic/customers/web/ResourceNotFoundException.java
@@ -0,0 +1,13 @@
+package org.springframework.samples.petclinic.customers.web;
+
+import org.springframework.http.HttpStatus;
+import org.springframework.web.bind.annotation.ResponseStatus;
+
+@ResponseStatus(value = HttpStatus.NOT_FOUND)
+public class ResourceNotFoundException extends RuntimeException {
+
+    public ResourceNotFoundException(String message) {
+        super(message);
+    }
+
+}
diff --git a/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceDatabaseTest.java b/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceDatabaseTest.java
index cf7b5ab722099b2ba8866153e47d1f400e408d01..376904d484550c87728f33d00782ebaa62e27632 100644
--- a/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceDatabaseTest.java
+++ b/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceDatabaseTest.java
@@ -39,7 +39,7 @@ public class PetResourceDatabaseTest {
 
     @Test
     public void shouldGetAPet() throws Exception {
-        Pet pet = petRepository.findOne(2);
+        Pet pet = petRepository.findById(2).get();
         assertThat(petRepository.findAll()).contains(pet);
     }
 }
diff --git a/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceTest.java b/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceTest.java
index 7f152a673abca990cef3ab0d2bd991ee688ccd67..91ab774960c62c0066f262eaff0b7b8aa7ea5438 100644
--- a/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceTest.java
+++ b/spring-petclinic-customers-service/src/test/java/org/springframework/samples/petclinic/customers/web/PetResourceTest.java
@@ -21,6 +21,8 @@ import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.servlet.MockMvc;
 
+import java.util.Optional;
+
 /**
  * @author Maciej Szarlinski
  */
@@ -43,10 +45,10 @@ public class PetResourceTest {
 
         Pet pet = setupPet();
 
-        given(petRepository.findOne(2)).willReturn(pet);
+        given(petRepository.findById(2)).willReturn(Optional.of(pet));
 
 
-        mvc.perform(get("/owners/2/pets/2.json").accept(MediaType.APPLICATION_JSON))
+        mvc.perform(get("/owners/2/pets/2").accept(MediaType.APPLICATION_JSON))
             .andExpect(status().isOk())
             .andExpect(content().contentType("application/json;charset=UTF-8"))
             .andExpect(jsonPath("$.id").value(2))
diff --git a/spring-petclinic-discovery-server/pom.xml b/spring-petclinic-discovery-server/pom.xml
index ea0c04f86472b012645fe190c87986079531eb2e..dde7ff5f3e2665f35553a9817cec7f2af96a630b 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>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-monitoring/pom.xml b/spring-petclinic-monitoring/pom.xml
index 5f059d6a565da66080388d8b1b3f1b9d135bb555..639e960d9688097d858eab826cd4e5791df8c428 100644
--- a/spring-petclinic-monitoring/pom.xml
+++ b/spring-petclinic-monitoring/pom.xml
@@ -12,7 +12,7 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <dependencies>
diff --git a/spring-petclinic-tracing-server/pom.xml b/spring-petclinic-tracing-server/pom.xml
index df1cb6f05f2fa06d281a0eb071ec7cdfdd4b0e37..832de6c70b16c93cee367980b7a2e88c4d33126e 100644
--- a/spring-petclinic-tracing-server/pom.xml
+++ b/spring-petclinic-tracing-server/pom.xml
@@ -12,10 +12,11 @@
     <parent>
         <groupId>org.springframework.samples</groupId>
         <artifactId>spring-petclinic-microservices</artifactId>
-        <version>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
+        <zipkin.version>2.8.4</zipkin.version>
         <docker.image.exposed.port>8081</docker.image.exposed.port>
         <docker.image.dockerfile.dir>${basedir}/../docker</docker.image.dockerfile.dir>
     </properties>
@@ -46,10 +47,12 @@
         <dependency>
             <groupId>io.zipkin.java</groupId>
             <artifactId>zipkin-server</artifactId>
+            <version>${zipkin.version}</version>
         </dependency>
         <dependency>
             <groupId>io.zipkin.java</groupId>
             <artifactId>zipkin-autoconfigure-ui</artifactId>
+            <version>${zipkin.version}</version>
             <scope>runtime</scope>
         </dependency>
         <dependency>
diff --git a/spring-petclinic-vets-service/pom.xml b/spring-petclinic-vets-service/pom.xml
index c2ea3525250bcae9c70c395723d18de3860594e4..d42a9f3e038f78dc8612ad072048ba9581e00c1d 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>1.5.9</version>
+		<version>2.0.3</version>
 	</parent>
 
     <properties>
@@ -59,7 +59,7 @@
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-eureka</artifactId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
diff --git a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java
index 1a9ace2949ea712696ef71f3549cb671f0adf051..cddb6a9e3bdf6169756b3c2387e01bb2be0b6cda 100644
--- a/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java
+++ b/spring-petclinic-vets-service/src/main/java/org/springframework/samples/petclinic/vets/model/Vet.java
@@ -31,9 +31,9 @@ import javax.persistence.JoinColumn;
 import javax.persistence.JoinTable;
 import javax.persistence.ManyToMany;
 import javax.persistence.Table;
+import javax.validation.constraints.NotEmpty;
 import javax.xml.bind.annotation.XmlElement;
 
-import org.hibernate.validator.constraints.NotEmpty;
 import org.springframework.beans.support.MutableSortDefinition;
 import org.springframework.beans.support.PropertyComparator;
 
diff --git a/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceDatabaseTest.java b/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceDatabaseTest.java
index 6cca60940e2e6733a10c928ed16ff68008a06478..5f1387ae618b8e3400c1cb5d1841fb9e51718bfb 100644
--- a/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceDatabaseTest.java
+++ b/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceDatabaseTest.java
@@ -41,7 +41,7 @@ public class VetResourceDatabaseTest {
 
     @Test
     public void shouldGetAListOfVetsInJSonFormat() throws Exception {
-        Vet vet = vetRepository.findOne(1);
+        Vet vet = vetRepository.findById(1).get();
         assertThat(vetRepository.findAll()).contains(vet);
     }
 }
diff --git a/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceTest.java b/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceTest.java
index 78890eebb09455b61808c22f46dcaf308dc9a500..a2a5b77fd39740e49275b69266f51b426989d898 100644
--- a/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceTest.java
+++ b/spring-petclinic-vets-service/src/test/java/org/springframework/samples/petclinic/vets/web/VetResourceTest.java
@@ -55,7 +55,7 @@ public class VetResourceTest {
 
         given(vetRepository.findAll()).willReturn(asList(vet));
 
-        mvc.perform(get("/vets.json").accept(MediaType.APPLICATION_JSON))
+        mvc.perform(get("/vets").accept(MediaType.APPLICATION_JSON))
             .andExpect(status().isOk())
             .andExpect(jsonPath("$[0].id").value(1));
     }
diff --git a/spring-petclinic-visits-service/pom.xml b/spring-petclinic-visits-service/pom.xml
index 2e44cadf5db16c77b77ceefdd38d9ba2c786a8c8..2d282582bec497d5223396b7cc8ddcf11f41d085 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>1.5.9</version>
+        <version>2.0.3</version>
     </parent>
 
     <properties>
diff --git a/spring-petclinic-visits-service/src/test/java/org/springframework/samples/petclinic/visits/VisitResourceDatabaseTest.java b/spring-petclinic-visits-service/src/test/java/org/springframework/samples/petclinic/visits/VisitResourceDatabaseTest.java
index b5ea583fa9f751d64b63820f9217866e35ab5c69..087d8f7577ec61a88b05221527e4a2aa81e3ba39 100644
--- a/spring-petclinic-visits-service/src/test/java/org/springframework/samples/petclinic/visits/VisitResourceDatabaseTest.java
+++ b/spring-petclinic-visits-service/src/test/java/org/springframework/samples/petclinic/visits/VisitResourceDatabaseTest.java
@@ -40,7 +40,7 @@ public class VisitResourceDatabaseTest {
 
     @Test
     public void shouldGetAListOfVetsInJSonFormat() throws Exception {
-        Visit vet = visitRepository.findOne(1);
+        Visit vet = visitRepository.findById(1).get();
         assertThat(visitRepository.findAll()).contains(vet);
     }
 }