diff --git a/pom.xml b/pom.xml
index b936a371ab9c8d6242707b3c47e2f170796b9da8..1af53f806a04bb161eb4f6d98c8e9324a3bb7a6b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,14 +20,14 @@
     <properties>
         <!-- Third librairies -->
         <spring-data-jdbc.version>1.2.1.RELEASE</spring-data-jdbc.version>
-        <springfox-swagger.version>3.0.0</springfox-swagger.version>
+        <springdoc-openapi-ui.version>1.6.11</springdoc-openapi-ui.version>
         <jackson-databind-nullable.version>0.2.1</jackson-databind-nullable.version>
         <mapstruct.version>1.4.1.Final</mapstruct.version>
         <jaxb-api.version>2.3.0</jaxb-api.version>
 
         <!-- Maven plugins -->
         <jacoco.version>0.8.7</jacoco.version>
-        <openapi-generator-maven-plugin.version>5.2.1</openapi-generator-maven-plugin.version>
+        <openapi-generator-maven-plugin.version>6.0.1</openapi-generator-maven-plugin.version>
         <build-helper-maven-plugin.version>3.2.0</build-helper-maven-plugin.version>
 
         <!-- Docker -->
@@ -122,9 +122,9 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>io.springfox</groupId>
-            <artifactId>springfox-boot-starter</artifactId>
-            <version>${springfox-swagger.version}</version>
+            <groupId>org.springdoc</groupId>
+            <artifactId>springdoc-openapi-ui</artifactId>
+            <version>${springdoc-openapi-ui.version}</version>
         </dependency>
 
         <dependency>
@@ -288,6 +288,8 @@
                                 <openApiNullable>false</openApiNullable>
                                 <!-- override the default library to jersey2 -->
                                 <serializationLibrary>jackson</serializationLibrary>
+                                <!-- switch documentation provider to springdoc -->
+                                <documentationProvider>springdoc</documentationProvider>
                             </configOptions>
                         </configuration>
                     </execution>
diff --git a/src/main/java/org/springframework/samples/petclinic/config/SwaggerConfig.java b/src/main/java/org/springframework/samples/petclinic/config/SwaggerConfig.java
index 8bf32512e41adf5467490e57c8a91405b93e891f..44fdae44c12484d083bf3f0792d4d19c104a0435 100755
--- a/src/main/java/org/springframework/samples/petclinic/config/SwaggerConfig.java
+++ b/src/main/java/org/springframework/samples/petclinic/config/SwaggerConfig.java
@@ -17,24 +17,16 @@
 package org.springframework.samples.petclinic.config;
 
 
-import org.springframework.beans.BeansException;
-import org.springframework.beans.factory.config.BeanPostProcessor;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.util.ReflectionUtils;
-import org.springframework.web.servlet.mvc.method.RequestMappingInfoHandlerMapping;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.service.Contact;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.spring.web.plugins.WebFluxRequestHandlerProvider;
-import springfox.documentation.spring.web.plugins.WebMvcRequestHandlerProvider;
 
-import java.lang.reflect.Field;
 import java.util.Collections;
-import java.util.List;
+
+import io.swagger.v3.oas.models.Components;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Contact;
+import io.swagger.v3.oas.models.info.Info;
+import io.swagger.v3.oas.models.info.License;
 
 /**
  * Java config for Springfox swagger documentation plugin
@@ -44,62 +36,31 @@ import java.util.List;
 @Configuration
 public class SwaggerConfig {
 
-   @Bean
-   public Docket customDocket(){
-      return new Docket(DocumentationType.OAS_30)
-    		  .select()
-              .apis(RequestHandlerSelectors.any())
-              .paths(PathSelectors.any())
-              .build()
-              .apiInfo(getApiInfo());
-   }
-
-   private ApiInfo getApiInfo() {
-	   return new ApiInfo(
-		"REST Petclinic backend Api Documentation",
-		"This is REST API documentation of the Spring Petclinic backend. If authentication is enabled, when calling the APIs use admin/admin",
-		"1.0",
-		"Petclinic backend terms of service",
-		new Contact(
-				"Vitaliy Fedoriv",
-				"https://github.com/spring-petclinic/spring-petclinic-rest",
-				"vitaliy.fedoriv@gmail.com"),
-		"Apache 2.0",
-		"http://www.apache.org/licenses/LICENSE-2.0", Collections.emptyList());
-   }
-
-    /**
-     * Springfox workaround required by Spring Boot 2.6
-     * See https://github.com/springfox/springfox/issues/3462
-     */
     @Bean
-    public static BeanPostProcessor springfoxHandlerProviderBeanPostProcessor() {
-        return new BeanPostProcessor() {
+    OpenAPI customOpenAPI() {
 
-            @Override
-            public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
-                if (bean instanceof WebMvcRequestHandlerProvider || bean instanceof WebFluxRequestHandlerProvider) {
-                    customizeSpringfoxHandlerMappings(getHandlerMappings(bean));
-                }
-                return bean;
-            }
-
-            private <T extends RequestMappingInfoHandlerMapping> void customizeSpringfoxHandlerMappings(List<T> mappings) {
-                mappings.removeIf(mapping -> mapping.getPatternParser() != null);
-            }
+        return new OpenAPI().components(new Components()).info(new Info()
+                .title("REST Petclinic backend Api Documentation").version("1.0")
+                .termsOfService("Petclinic backend terms of service")
+                .description(
+                        "This is REST API documentation of the Spring Petclinic backend. If authentication is enabled, when calling the APIs use admin/admin")
+                .license(swaggerLicense()).contact(swaggerContact()));
+    }
 
-            @SuppressWarnings("unchecked")
-            private List<RequestMappingInfoHandlerMapping> getHandlerMappings(Object bean) {
-                try {
-                    Field field = ReflectionUtils.findField(bean.getClass(), "handlerMappings");
-                    field.setAccessible(true);
-                    return (List<RequestMappingInfoHandlerMapping>) field.get(bean);
-                } catch (IllegalArgumentException | IllegalAccessException e) {
-                    throw new IllegalStateException(e);
-                }
-            }
-        };
+    private Contact swaggerContact() {
+        Contact petclinicContact = new Contact();
+        petclinicContact.setName("Vitaliy Fedoriv");
+        petclinicContact.setEmail("vitaliy.fedoriv@gmail.com");
+        petclinicContact.setUrl("https://github.com/spring-petclinic/spring-petclinic-rest");
+        return petclinicContact;
     }
 
+    private License swaggerLicense() {
+        License petClinicLicense = new License();
+        petClinicLicense.setName("Apache 2.0");
+        petClinicLicense.setUrl("http://www.apache.org/licenses/LICENSE-2.0");
+        petClinicLicense.setExtensions(Collections.emptyMap());
+        return petClinicLicense;
+    }
 
 }
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java
index fab71415c72c26b8bdd8bc661d5c0c15edb22a2b..b47b430a17c406bc134d5f29b7ea616ff323337c 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/OwnerRestController.java
@@ -16,7 +16,6 @@
 
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -31,13 +30,11 @@ import org.springframework.samples.petclinic.rest.dto.*;
 import org.springframework.samples.petclinic.service.ClinicService;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.CrossOrigin;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.transaction.Transactional;
-import javax.validation.constraints.Min;
 import java.util.Collection;
 import java.util.List;
 
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java
index ecee18cfec930e7302415c7b0f1f83a50420ca39..95c6af223de9d9d5e6389f18a06c14fb67b29f29 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetRestController.java
@@ -16,7 +16,6 @@
 
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.samples.petclinic.mapper.PetMapper;
@@ -28,8 +27,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.transaction.Transactional;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java
index 213e96984c80067aa3456ef389cc81a46d793cf9..e2436d7a7d474923dcbe804cb63265dacf86f8a4 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/PetTypeRestController.java
@@ -16,7 +16,6 @@
 
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -30,8 +29,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.transaction.Transactional;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java
index b01ccc21f7fcb02497949b017731525fa52cd522..1dbbd64ef22acc10f45d3201b4557f9f531d96db 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/SpecialtyRestController.java
@@ -16,7 +16,6 @@
 
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -30,8 +29,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.transaction.Transactional;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java
index 8a0732c1c1468258fe4f328aeca455f67b575e14..787bc7fa6b073f7ed3a2dfc88cc40f72397c8732 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/VetRestController.java
@@ -15,7 +15,6 @@
  */
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -31,8 +30,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.transaction.Transactional;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java b/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java
index c99382d0e678f9ba34f2c018cc5444ea1e7f37f2..bae92d2d5695f892a6d0013d3028a994720faea3 100644
--- a/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java
+++ b/src/main/java/org/springframework/samples/petclinic/rest/controller/VisitRestController.java
@@ -16,7 +16,6 @@
 
 package org.springframework.samples.petclinic.rest.controller;
 
-import io.swagger.annotations.ApiParam;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -30,8 +29,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import javax.transaction.Transactional;
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
 import java.util.ArrayList;
 import java.util.List;
 
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index c558a190eaf8662d51e6b07fe25f87f95c141b85..27f427499035bc193b512706d4d3ef8d2d0dbb5e 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -23,10 +23,6 @@ spring.profiles.active=hsqldb,spring-data-jpa
 server.port=9966
 server.servlet.context-path=/petclinic/
 
-# Springfox workaround required by Spring Boot 2.6
-# See https://github.com/springfox/springfox/issues/3462
-spring.mvc.pathmatch.matching-strategy=ant_path_matcher
-
 spring.messages.basename=messages/messages
 spring.jpa.open-in-view=false