diff --git a/legal-core/pom.xml b/legal-core/pom.xml
index 257e8237e9f651e7392a7cb57fb7b234d2fc7b22..0bdc841519c7b931a551bba412361c324c323a79 100644
--- a/legal-core/pom.xml
+++ b/legal-core/pom.xml
@@ -16,7 +16,6 @@
 	<description>Legal service core</description>
 
 	<properties>
-		<springfox-version>2.7.0</springfox-version>
 	</properties>
 
 	<dependencies>
@@ -152,27 +151,6 @@
 			<version>1.2.0</version>
 			<scope>test</scope>
 		</dependency>
-
-		<!-- swagger dependencies -->
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-			<version>${springfox-version}</version>
-			<exclusions>
-				<exclusion>
-					<!--
-					Excluding com.google.guava:guava:jar:18.0, because it has security vulnerability
-					-->
-					<groupId>com.google.guava</groupId>
-					<artifactId>guava</artifactId>
-				</exclusion>
-			</exclusions>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-			<version>${springfox-version}</version>
-		</dependency>
 	</dependencies>
 
 	<build>
diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java
new file mode 100644
index 0000000000000000000000000000000000000000..7addb2c112382e6be197fc4069376d2a8f58e67c
--- /dev/null
+++ b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SpringfoxSwaggerHostResolver.java
@@ -0,0 +1,34 @@
+package org.opengroup.osdu.legal.swagger;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import io.swagger.v3.oas.models.servers.Server;
+import io.swagger.v3.oas.models.OpenAPI;
+import springfox.documentation.oas.web.OpenApiTransformationContext;
+import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter;
+import springfox.documentation.spi.DocumentationType;
+
+@Component
+@Order(Ordered.LOWEST_PRECEDENCE)
+public class SpringfoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter {
+
+	public boolean supports(DocumentationType delimiter) {
+		return delimiter == DocumentationType.OAS_30;
+	}
+
+	public OpenAPI transform(OpenApiTransformationContext<HttpServletRequest> context) {
+		OpenAPI swagger = context.getSpecification();
+
+		Server server = swagger.getServers().get(0);
+		if (server.getUrl().contains(":443")) {
+			// via the gateway
+			server.setUrl(server.getUrl().replace(":443", ""));
+		}
+
+		return swagger;
+	}
+
+}
diff --git a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java
index b7e9d53b21f90260ee65902e1bf9f4cd546db2b1..a29e3e793b064bfc4c9408676227c9cbf877ff3b 100644
--- a/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java
+++ b/legal-core/src/main/java/org/opengroup/osdu/legal/swagger/SwaggerDocumentationConfig.java
@@ -1,45 +1,45 @@
 package org.opengroup.osdu.legal.swagger;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
 import org.opengroup.osdu.core.common.model.http.DpsHeaders;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import springfox.documentation.builders.ParameterBuilder;
+import org.springframework.context.annotation.Profile;
+
 import springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
 import springfox.documentation.service.ApiKey;
 import springfox.documentation.service.AuthorizationScope;
-import springfox.documentation.service.Parameter;
+import springfox.documentation.service.ParameterType;
+import springfox.documentation.service.RequestParameter;
 import springfox.documentation.service.SecurityReference;
 import springfox.documentation.spi.DocumentationType;
 import springfox.documentation.spi.service.contexts.SecurityContext;
 import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import springfox.documentation.builders.RequestParameterBuilder;
+import springfox.documentation.oas.annotations.EnableOpenApi;
 
 @Configuration
-@EnableSwagger2
+@EnableOpenApi
 public class SwaggerDocumentationConfig {
     public static final String AUTHORIZATION_HEADER = "Authorization";
     public static final String DEFAULT_INCLUDE_PATTERN = "/.*";
 
     @Bean
     public Docket api() {
-        ParameterBuilder builder = new ParameterBuilder();
-        List<Parameter> parameters = new ArrayList<>();
+    	RequestParameterBuilder builder = new RequestParameterBuilder();
+    	List<RequestParameter> parameters = new ArrayList<>();
         builder.name(DpsHeaders.DATA_PARTITION_ID)
                 .description("tenant")
-                .defaultValue("common")
-                .modelRef(new ModelRef("string"))
-                .parameterType("header")
+                .in(ParameterType.HEADER)
                 .required(true)
                 .build();
         parameters.add(builder.build());
-        return new Docket(DocumentationType.SWAGGER_2)
-                .globalOperationParameters(parameters)
+        return new Docket(DocumentationType.OAS_30)
+            	.globalRequestParameters(parameters)
                 .select()
                 .apis(RequestHandlerSelectors.basePackage("org.opengroup.osdu.legal.api"))
                 .build()
@@ -48,13 +48,13 @@ public class SwaggerDocumentationConfig {
     }
 
     private ApiKey apiKey() {
-        return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
+    	return new ApiKey(AUTHORIZATION_HEADER, AUTHORIZATION_HEADER, "header");
     }
 
     private SecurityContext securityContext() {
         return SecurityContext.builder()
                 .securityReferences(defaultAuth())
-                .forPaths(PathSelectors.regex(DEFAULT_INCLUDE_PATTERN))
+                .operationSelector(o -> PathSelectors.regex(DEFAULT_INCLUDE_PATTERN).test(o.requestMappingPattern()))
                 .build();
     }
 
@@ -64,6 +64,6 @@ public class SwaggerDocumentationConfig {
         AuthorizationScope[] authorizationScopes =
                 new AuthorizationScope[]{authorizationScope};
         return Collections.singletonList(
-                new SecurityReference("JWT", authorizationScopes));
+        		 new SecurityReference(AUTHORIZATION_HEADER, authorizationScopes));
     }
 }
diff --git a/pom.xml b/pom.xml
index 1f614e119321016feb7c671537e3479af12708b2..af095f8539467ad3763d1c51242f31c25eb31a21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,6 +11,7 @@
         <os-core-common.version>0.13.0-rc4</os-core-common.version>
         <snakeyaml.version>1.26</snakeyaml.version>
         <resilience4jVersion>1.7.0</resilience4jVersion>
+        <springfox.version>3.0.0</springfox.version>
     </properties>
 
     <licenses>
@@ -92,6 +93,15 @@
             </dependency>
         </dependencies>
     </dependencyManagement>
+	
+		<dependencies>
+		    <!--Swagger-->
+			<dependency>
+      			<groupId>io.springfox</groupId>
+      			<artifactId>springfox-boot-starter</artifactId>
+      			<version>${springfox.version}</version>
+    		</dependency>
+		</dependencies>
 
     <profiles>
         <profile>
diff --git a/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java b/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java
index 2ab268ad34fecfed67658c8a5781b2244f2ef6af..935321178b3dbf6ff609f7978d24acdafe7771de 100644
--- a/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java
+++ b/provider/legal-azure/src/main/java/org/opengroup/osdu/legal/azure/security/AADSecurityConfig.java
@@ -42,12 +42,14 @@ public class AADSecurityConfig extends WebSecurityConfigurerAdapter {
             .authorizeRequests()
             .antMatchers("/", "/index.html",
                     "/v2/api-docs",
+                    "/v3/api-docs",
                     "/configuration/ui",
                     "/swagger-resources/**",
                     "/configuration/security",
                     "/swagger",
                     "/info",
                     "/swagger-ui.html",
+                    "/swagger-ui/**",
                     "/webjars/**").permitAll()
             .anyRequest().authenticated()
             .and()