diff --git a/indexer-core/pom.xml b/indexer-core/pom.xml
index c46de1cd796b1e4220a5388c54b48ca9d830349e..72a8765968e63a730c463a5f130f9d989123faae 100644
--- a/indexer-core/pom.xml
+++ b/indexer-core/pom.xml
@@ -201,18 +201,6 @@
 			<scope>test</scope>
 		</dependency>
 
-		<!-- swagger dependencies -->
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger2</artifactId>
-			<version>${springfox-version}</version>
-		</dependency>
-		<dependency>
-			<groupId>io.springfox</groupId>
-			<artifactId>springfox-swagger-ui</artifactId>
-			<version>${springfox-version}</version>
-		</dependency>
-
 	</dependencies>
 
     <build>
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/HomeController.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/HomeController.java
index eb1576dfb15d87cdfd9f7fc733a1546380c247f5..9638ba469d37d45fa83d27b614e4743f975daae6 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/HomeController.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/HomeController.java
@@ -7,7 +7,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 public class HomeController {
     @RequestMapping(value = "/swagger")
     public String swagger() {
-        System.out.println("swagger-ui.html");
-        return "redirect:swagger-ui.html";
+        return "redirect:swagger-ui/index.html";
     }
 }
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SpringfoxSwaggerHostResolver.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SpringfoxSwaggerHostResolver.java
new file mode 100644
index 0000000000000000000000000000000000000000..ba3701ff9f9710030c27805d69d8c6f825da9e01
--- /dev/null
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SpringfoxSwaggerHostResolver.java
@@ -0,0 +1,35 @@
+package org.opengroup.osdu.indexer.swagger;
+
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.servers.Server;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import springfox.documentation.oas.web.OpenApiTransformationContext;
+import springfox.documentation.oas.web.WebMvcOpenApiTransformationFilter;
+import springfox.documentation.spi.DocumentationType;
+
+import javax.servlet.http.HttpServletRequest;
+
+@Component
+@Order(Ordered.LOWEST_PRECEDENCE)
+public class SpringfoxSwaggerHostResolver implements WebMvcOpenApiTransformationFilter {
+
+	@Override
+	public boolean supports(DocumentationType delimiter) {
+		return delimiter == DocumentationType.OAS_30;
+	}
+
+	@Override
+	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;
+	}
+}
\ No newline at end of file
diff --git a/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SwaggerDocumentationConfig.java b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SwaggerDocumentationConfig.java
index 5811f6bb8b7e7239c81de143d1329c04ed98864b..1581a366b7392e361ca159b87d9447fe2b61421c 100644
--- a/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SwaggerDocumentationConfig.java
+++ b/indexer-core/src/main/java/org/opengroup/osdu/indexer/swagger/SwaggerDocumentationConfig.java
@@ -3,67 +3,63 @@ package org.opengroup.osdu.indexer.swagger;
 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 springfox.documentation.builders.PathSelectors;
 import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.schema.ModelRef;
+import springfox.documentation.builders.RequestParameterBuilder;
+import springfox.documentation.oas.annotations.EnableOpenApi;
 import springfox.documentation.service.ApiKey;
 import springfox.documentation.service.AuthorizationScope;
+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 springfox.documentation.service.Parameter;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 
 @Configuration
-@EnableSwagger2
+@EnableOpenApi
 public class SwaggerDocumentationConfig {
-    public static final String AUTHORIZATION_HEADER = "Authorization";
-    public static final String DEFAULT_INCLUDE_PATTERN = "/.*";
+	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<>();
-        builder.name(DpsHeaders.DATA_PARTITION_ID)
-                .description("data partition id")
-                .defaultValue("common")
-                .modelRef(new ModelRef("string"))
-                .parameterType("header")
-                .required(true)
-                .build();
-        parameters.add(builder.build());
-        return new Docket(DocumentationType.SWAGGER_2)
-                .globalOperationParameters(parameters)
-                .select()
-                .apis(RequestHandlerSelectors.basePackage("org.opengroup.osdu.indexer.api"))
-                .build()
-                .securityContexts(Collections.singletonList(securityContext()))
-                .securitySchemes(Collections.singletonList(apiKey()));
-    }
+	@Bean
+	public Docket api() {
+		RequestParameterBuilder builder = new RequestParameterBuilder();
+		List<RequestParameter> parameters = new ArrayList<>();
+		builder.name(DpsHeaders.DATA_PARTITION_ID)
+		.description("data partition id")
+		.in(ParameterType.HEADER)
+		.required(true)
+		.build();
+		parameters.add(builder.build());
+		return new Docket(DocumentationType.OAS_30)
+				.globalRequestParameters(parameters)
+				.select()
+				.apis(RequestHandlerSelectors.basePackage("org.opengroup.osdu.indexer.api"))
+				.build()
+				.securityContexts(Collections.singletonList(securityContext()))
+				.securitySchemes(Collections.singletonList(apiKey()));
+	}
 
-    private ApiKey apiKey() {
-        return new ApiKey("JWT", AUTHORIZATION_HEADER, "header");
-    }
-
-    private SecurityContext securityContext() {
-        return SecurityContext.builder()
-                .securityReferences(defaultAuth())
-                .forPaths(PathSelectors.regex(DEFAULT_INCLUDE_PATTERN))
-                .build();
-    }
+	private ApiKey apiKey() {
+		return new ApiKey(AUTHORIZATION_HEADER, AUTHORIZATION_HEADER, "header");
+	}
 
+	private SecurityContext securityContext() {
+		return SecurityContext.builder()
+				.securityReferences(defaultAuth())
+				.operationSelector(o -> PathSelectors.regex(DEFAULT_INCLUDE_PATTERN).test(o.requestMappingPattern()))
+				.build();
+	}
     List<SecurityReference> defaultAuth() {
         AuthorizationScope authorizationScope
                 = new AuthorizationScope("global", "accessEverything");
         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 e4b5cc89bd0624207846359b418a5d3034c37ec3..000613cc8352b686b89226d3a756f2033d51ef13 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,7 +17,6 @@
 
     <properties>
         <java.version>1.8</java.version>
-        <springfox-version>2.7.0</springfox-version>
         <spring-cloud.version>Greenwich.SR2</spring-cloud.version>
         <os-core-common.version>0.13.0-rc6</os-core-common.version>
         <snakeyaml.version>1.26</snakeyaml.version>
@@ -38,6 +37,7 @@
 <!--        <failOnMissingWebXml>false</failOnMissingWebXml>-->
 <!--        <spring-cloud.version>Greenwich.SR2</spring-cloud.version>-->
 <!--        <springfox-version>2.7.0</springfox-version>-->
+            <springfox.version>3.0.0</springfox.version>
     </properties>
 
     <licenses>
@@ -130,14 +130,46 @@
         </dependencies>
     </dependencyManagement>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>1.18.16</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
+	<dependencies>
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<version>1.18.16</version>
+			<scope>provided</scope>
+		</dependency>
+		<!--Swagger -->
+		<dependency>
+			<groupId>io.springfox</groupId>
+			<artifactId>springfox-boot-starter</artifactId>
+			<version>${springfox.version}</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework.plugin</groupId>
+					<artifactId>spring-plugin-core</artifactId>
+				</exclusion>
+				<exclusion>
+					<groupId>org.springframework.plugin</groupId>
+					<artifactId>spring-plugin-metadata</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.plugin</groupId>
+			<artifactId>spring-plugin-core</artifactId>
+			<version>2.0.0.RELEASE</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.plugin</groupId>
+			<artifactId>spring-plugin-metadata</artifactId>
+			<version>2.0.0.RELEASE</version>
+			<exclusions>
+				<exclusion>
+					<groupId>org.springframework.plugin</groupId>
+					<artifactId>spring-plugin-core</artifactId>
+				</exclusion>
+			</exclusions>
+		</dependency>
+	</dependencies>
 
     <modules>
         <module>indexer-core</module>
diff --git a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/security/AADSecurityConfig.java b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/security/AADSecurityConfig.java
index ce59f2e5c65b6aa3aea5361b7bb1a11c2cd1f690..fd1150ce646395d0c0029a812fd643f056fbe2ef 100644
--- a/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/security/AADSecurityConfig.java
+++ b/provider/indexer-azure/src/main/java/org/opengroup/osdu/indexer/azure/security/AADSecurityConfig.java
@@ -41,11 +41,13 @@ public class AADSecurityConfig extends WebSecurityConfigurerAdapter {
                         "/index-worker", "/_dps/task-handlers", "/_dps/task-handlers/**",
                         "/reindex",
                         "/v2/api-docs",
+                        "/v3/api-docs",
                         "/swagger-resources/**",
                         "/configuration/security",
                         "/swagger",
                         "/info",
                         "/swagger-ui.html",
+                        "/swagger-ui/**",
                         "/webjars/**").permitAll()
                 .anyRequest().authenticated()
                 .and().addFilterBefore(appRoleAuthFilter, UsernamePasswordAuthenticationFilter.class);