diff --git a/NOTICE b/NOTICE
index 0469d4b9b7ff2bbf51cc9f677d962e92746e5d4e..40c988551b5d1f392093ac86931b88be67e183bd 100644
--- a/NOTICE
+++ b/NOTICE
@@ -66,15 +66,13 @@ The following software have components provided under the terms of this license:
 - Guava ListenableFuture only (from https://repo1.maven.org/maven2/com/google/guava/listenablefuture)
 - Guava: Google Core Libraries for Java (from http://code.google.com/p/guava-libraries, https://github.com/google/guava, https://repo1.maven.org/maven2/com/google/guava/guava)
 - HTTP functionality for the Reactor Netty library (from https://github.com/reactor/reactor-netty)
-- Hibernate Validator (from https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
+- Hibernate Validator (from http://hibernate.org/validator, https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
 - IBM COS Java SDK for Amazon S3 (from https://github.com/ibm/ibm-cos-sdk-java)
 - IBM COS Java SDK for COS KMS (from https://github.com/ibm/ibm-cos-sdk-java)
 - IBM COS SDK For Java (from https://github.com/ibm/ibm-cos-sdk-java)
 - IBM COS SDK for Java - Core (from https://github.com/ibm/ibm-cos-sdk-java)
 - J2ObjC Annotations (from https://github.com/google/j2objc/)
 - JBoss Logging 3 (from http://www.jboss.org)
-- JBoss Marshalling API (from https://repo1.maven.org/maven2/org/jboss/marshalling/jboss-marshalling)
-- JBoss Marshalling River (from https://repo1.maven.org/maven2/org/jboss/marshalling/jboss-marshalling-river)
 - JCIP Annotations under Apache License (from http://stephenc.github.com/jcip-annotations)
 - JJWT :: API (from https://repo1.maven.org/maven2/io/jsonwebtoken/jjwt-api)
 - JJWT :: Extensions :: Jackson (from https://repo1.maven.org/maven2/io/jsonwebtoken/jjwt-jackson)
@@ -245,14 +243,15 @@ The following software have components provided under the terms of this license:
 - Hamcrest (from http://hamcrest.org/JavaHamcrest/)
 - Hamcrest Core (from http://hamcrest.org/, http://hamcrest.org/JavaHamcrest/, https://repo1.maven.org/maven2/org/hamcrest/hamcrest-core)
 - HdrHistogram (from http://hdrhistogram.github.io/HdrHistogram/)
-- Jodd BeanUtil (from http://jodd.org)
-- Jodd Core (from http://jodd.org)
+- Jodd Util (from https://util.jodd.org)
 - LatencyUtils (from http://latencyutils.github.io/LatencyUtils/)
 - Lucene Common Analyzers (from <https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common>, https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common)
 - Lucene Queries (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-queries)
 - Lucene QueryParsers (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-queryparser)
 - Lucene Sandbox (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-sandbox)
+- MinLog (from https://github.com/EsotericSoftware/minlog)
 - Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils, https://codehaus-plexus.github.io/plexus-utils/, https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils)
+- ReflectASM (from https://github.com/EsotericSoftware/reflectasm)
 - Stax2 API (from http://github.com/FasterXML/stax2-api)
 
 ========================================================================
@@ -271,15 +270,18 @@ The following software have components provided under the terms of this license:
 - Jakarta Annotations API (from https://projects.eclipse.org/projects/ee4j.ca)
 - Jakarta Messaging API (from https://projects.eclipse.org/projects/ee4j.jms)
 - Jakarta XML Binding API (from https://repo1.maven.org/maven2/jakarta/xml/bind/jakarta.xml.bind-api, https://repo1.maven.org/maven2/org/jboss/spec/javax/xml/bind/jboss-jaxb-api_2.3_spec)
+- Kryo (from https://repo1.maven.org/maven2/com/esotericsoftware/kryo)
 - Lucene Common Analyzers (from <https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common>, https://repo1.maven.org/maven2/org/apache/lucene/lucene-analyzers-common)
 - Lucene Core (from https://repo1.maven.org/maven2/org/apache/lucene/lucene-core)
 - Lucene Queries (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-queries)
 - Lucene QueryParsers (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-queryparser)
 - Lucene Sandbox (from https://lucene.apache.org/, https://repo1.maven.org/maven2/org/apache/lucene/lucene-sandbox)
+- MinLog (from https://github.com/EsotericSoftware/minlog)
 - Netty/Codec/HTTP (from https://repo1.maven.org/maven2/io/netty/netty-codec-http)
 - Old JAXB Core (from <https://eclipse-ee4j.github.io/jaxb-ri/>, https://eclipse-ee4j.github.io/jaxb-ri/, https://repo1.maven.org/maven2/com/sun/xml/bind/jaxb-impl)
 - Plexus Common Utilities (from http://plexus.codehaus.org/plexus-utils, https://codehaus-plexus.github.io/plexus-utils/, https://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils)
 - Redisson (from http://redisson.org)
+- ReflectASM (from https://github.com/EsotericSoftware/reflectasm)
 - Spring Core (from http://www.springframework.org, https://github.com/spring-projects/spring-framework, https://repo1.maven.org/maven2/org/springframework/spring-core)
 
 ========================================================================
@@ -304,9 +306,10 @@ The following software have components provided under the terms of this license:
 
 - Guava: Google Core Libraries for Java (from http://code.google.com/p/guava-libraries, https://github.com/google/guava, https://repo1.maven.org/maven2/com/google/guava/guava)
 - HdrHistogram (from http://hdrhistogram.github.io/HdrHistogram/)
-- Hibernate Validator (from https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
+- Hibernate Validator (from http://hibernate.org/validator, https://repo1.maven.org/maven2/org/hibernate/hibernate-validator, https://repo1.maven.org/maven2/org/hibernate/validator/hibernate-validator)
 - LatencyUtils (from http://latencyutils.github.io/LatencyUtils/)
 - Netty/Common (from https://repo1.maven.org/maven2/io/netty/netty-common)
+- Redisson (from http://redisson.org)
 - reactive-streams (from http://www.reactive-streams.org/)
 
 ========================================================================
diff --git a/provider/unit-azure/unit-aks/pom.xml b/provider/unit-azure/unit-aks/pom.xml
index 4b4e8c5ee6a2bb39aa5ab92bf1ec8011b978f99e..228879a8f76ccfb21428b79791ad6042a689958f 100644
--- a/provider/unit-azure/unit-aks/pom.xml
+++ b/provider/unit-azure/unit-aks/pom.xml
@@ -26,7 +26,7 @@
         <maven.compiler.showDeprecation>true</maven.compiler.showDeprecation>	    
         <maven.compiler.source>17</maven.compiler.source>
         <maven.compiler.target>17</maven.compiler.target>
-        <core-lib-azure-spring6.version>0.27.0-rc4</core-lib-azure-spring6.version>
+        <core-lib-azure-spring6.version>0.27.0-rc7</core-lib-azure-spring6.version>
     </properties>
 
     <dependencies>
diff --git a/testing/unit_test_core/test_unit_service_v3.py b/testing/unit_test_core/test_unit_service_v3.py
index 35187d948f18c1951a65ea356cd3ae6b7bc23289..d020ad095d3b5756be7c28a6badccab6dd71cd6b 100644
--- a/testing/unit_test_core/test_unit_service_v3.py
+++ b/testing/unit_test_core/test_unit_service_v3.py
@@ -6,7 +6,7 @@ import json
 
 
 from unit_test_core.v3.swagger_client.rest import ApiException
-from unit_test_core.v3.swagger_client import Unitapiv3Api, Configuration, ApiClient, InfoapiApi
+from unit_test_core.v3.swagger_client import Unitapiv3Api, Configuration, ApiClient, InfoapiApi, InfoapiApiSlash
 from unit_test_core.v3.swagger_client.models import CatalogLastModified, Catalog, ConnectedOuterService, \
     QueryResult, SearchRequest, \
     UnitSystem, UnitSystemRequest, Unit, MeasurementRequest, MeasurementEssenceImpl, Measurement, \
diff --git a/testing/unit_test_core/v2/swagger_client/apis/info_api_api_slash.py b/testing/unit_test_core/v2/swagger_client/apis/info_api_api_slash.py
new file mode 100644
index 0000000000000000000000000000000000000000..6965ed4bddae97e5b4ed8e0f5608ed63f4b07675
--- /dev/null
+++ b/testing/unit_test_core/v2/swagger_client/apis/info_api_api_slash.py
@@ -0,0 +1,145 @@
+# coding: utf-8
+
+"""
+    Unit Service API
+
+    Unit and Measurement Service
+
+    OpenAPI spec version: 2.0.0
+    
+    Generated by: https://github.com/swagger-api/swagger-codegen.git
+"""
+
+
+from __future__ import absolute_import
+
+import sys
+import os
+import re
+
+# python 2 and python 3 compatibility library
+from six import iteritems
+
+from ..configuration import Configuration
+from ..api_client import ApiClient
+
+
+class InfoApiApiSlash(object):
+    """
+    NOTE: This class is auto generated by the swagger code generator program.
+    Do not edit the class manually.
+    Ref: https://github.com/swagger-api/swagger-codegen
+    """
+
+    def __init__(self, api_client=None):
+        config = Configuration()
+        if api_client:
+            self.api_client = api_client
+        else:
+            if not config.api_client:
+                config.api_client = ApiClient()
+            self.api_client = config.api_client
+
+    def info_using_get(self, data_partition_id, **kwargs):
+        """
+        info
+        This method makes a synchronous HTTP request by default. To make an
+        asynchronous HTTP request, please define a `callback` function
+        to be invoked when receiving the response.
+        >>> def callback_function(response):
+        >>>     pprint(response)
+        >>>
+        >>> thread = api.info_using_get(data_partition_id, callback=callback_function)
+
+        :param callback function: The callback function
+            for asynchronous request. (optional)
+        :param str data_partition_id: tenant (required)
+        :return: VersionInfo
+                 If the method is called asynchronously,
+                 returns the request thread.
+        """
+        kwargs['_return_http_data_only'] = True
+        if kwargs.get('callback'):
+            return self.info_using_get_with_http_info(data_partition_id, **kwargs)
+        else:
+            (data) = self.info_using_get_with_http_info(data_partition_id, **kwargs)
+            return data
+
+    def info_using_get_with_http_info(self, data_partition_id, **kwargs):
+        """
+        info
+        This method makes a synchronous HTTP request by default. To make an
+        asynchronous HTTP request, please define a `callback` function
+        to be invoked when receiving the response.
+        >>> def callback_function(response):
+        >>>     pprint(response)
+        >>>
+        >>> thread = api.info_using_get_with_http_info(data_partition_id, callback=callback_function)
+
+        :param callback function: The callback function
+            for asynchronous request. (optional)
+        :param str data_partition_id: tenant (required)
+        :return: VersionInfo
+                 If the method is called asynchronously,
+                 returns the request thread.
+        """
+
+        all_params = ['data_partition_id']
+        all_params.append('callback')
+        all_params.append('_return_http_data_only')
+        all_params.append('_preload_content')
+        all_params.append('_request_timeout')
+
+        params = locals()
+        for key, val in iteritems(params['kwargs']):
+            if key not in all_params:
+                raise TypeError(
+                    "Got an unexpected keyword argument '%s'"
+                    " to method info_using_get" % key
+                )
+            params[key] = val
+        del params['kwargs']
+        # verify the required parameter 'data_partition_id' is set
+        if ('data_partition_id' not in params) or (params['data_partition_id'] is None):
+            raise ValueError("Missing the required parameter `data_partition_id` when calling `info_using_get`")
+
+
+        collection_formats = {}
+
+        path_params = {}
+
+        query_params = []
+
+        header_params = {}
+        if 'data_partition_id' in params:
+            header_params['data-partition-id'] = params['data_partition_id']
+
+        form_params = []
+        local_var_files = {}
+
+        body_params = None
+        # HTTP header `Accept`
+        header_params['Accept'] = self.api_client.\
+            select_header_accept(['application/json'])
+
+        # HTTP header `Content-Type`
+        header_params['Content-Type'] = self.api_client.\
+            select_header_content_type(['application/json'])
+
+        # Authentication setting
+        auth_settings = ['Bearer', 'google_id_token']
+
+        return self.api_client.call_api('/info/', 'GET',
+                                        path_params,
+                                        query_params,
+                                        header_params,
+                                        body=body_params,
+                                        post_params=form_params,
+                                        files=local_var_files,
+                                        response_type='VersionInfo',
+                                        auth_settings=auth_settings,
+                                        callback=params.get('callback'),
+                                        _return_http_data_only=params.get('_return_http_data_only'),
+                                        _preload_content=params.get('_preload_content', True),
+                                        _request_timeout=params.get('_request_timeout'),
+                                        collection_formats=collection_formats)
diff --git a/testing/unit_test_core/v2/test/test_info_api_api_slash.py b/testing/unit_test_core/v2/test/test_info_api_api_slash.py
new file mode 100644
index 0000000000000000000000000000000000000000..ff43eda70ca338bb3ee079f67bfdf333d6aae7de
--- /dev/null
+++ b/testing/unit_test_core/v2/test/test_info_api_api_slash.py
@@ -0,0 +1,44 @@
+# coding: utf-8
+
+"""
+    Unit Service API
+
+    Unit and Measurement Service
+
+    OpenAPI spec version: 2.0.0
+    
+    Generated by: https://github.com/swagger-api/swagger-codegen.git
+"""
+
+
+from __future__ import absolute_import
+
+import os
+import sys
+import unittest
+
+import swagger_client
+from swagger_client.rest import ApiException
+from swagger_client.apis.info_api_api_slash import InfoApiApiSlash
+
+
+class TestInfoApiApiSlash(unittest.TestCase):
+    """ InfoApiApiSlash unit test stubs """
+
+    def setUp(self):
+        self.api = swagger_client.apis.info_api_api_slash.InfoApiApiSlash()
+
+    def tearDown(self):
+        pass
+
+    def test_info_using_get(self):
+        """
+        Test case for info_using_get
+
+        info
+        """
+        pass
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/testing/unit_test_core/v3/swagger_client/__init__.py b/testing/unit_test_core/v3/swagger_client/__init__.py
index ddbf5a3546dc172528d3f50a3eb79d1f8394e1bf..d6d6615dfa6a9fedfc50da88d79d7dba2d2b7069 100644
--- a/testing/unit_test_core/v3/swagger_client/__init__.py
+++ b/testing/unit_test_core/v3/swagger_client/__init__.py
@@ -53,6 +53,7 @@ from .models.version_info import VersionInfo
 # import apis into sdk package
 from .apis.healthcheck_api import HealthcheckApi
 from .apis.infoapi_api import InfoapiApi
+from .apis.infoapi_api_slash import InfoapiApiSlash
 from .apis.unitapiv3_api import Unitapiv3Api
 
 # import ApiClient
diff --git a/testing/unit_test_core/v3/swagger_client/apis/__init__.py b/testing/unit_test_core/v3/swagger_client/apis/__init__.py
index 91c62364695a00049256250139cc1af120bdb300..248f37a7a7dbecda824d8de8558f8d8dc219353f 100644
--- a/testing/unit_test_core/v3/swagger_client/apis/__init__.py
+++ b/testing/unit_test_core/v3/swagger_client/apis/__init__.py
@@ -3,4 +3,5 @@ from __future__ import absolute_import
 # import apis into api package
 from .healthcheck_api import HealthcheckApi
 from .infoapi_api import InfoapiApi
+from .infoapi_api_slash import InfoapiApiSlash
 from .unitapiv3_api import Unitapiv3Api
diff --git a/testing/unit_test_core/v3/swagger_client/apis/infoapi_api_slash.py b/testing/unit_test_core/v3/swagger_client/apis/infoapi_api_slash.py
new file mode 100644
index 0000000000000000000000000000000000000000..b2c83131fdca525ae695d6c1d844246ed7d6a2eb
--- /dev/null
+++ b/testing/unit_test_core/v3/swagger_client/apis/infoapi_api_slash.py
@@ -0,0 +1,145 @@
+# coding: utf-8
+
+"""
+    Unit API V3
+
+    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+
+    OpenAPI spec version: 3.0
+    
+    Generated by: https://github.com/swagger-api/swagger-codegen.git
+"""
+
+
+from __future__ import absolute_import
+
+import sys
+import os
+import re
+
+# python 2 and python 3 compatibility library
+from six import iteritems
+
+from ..configuration import Configuration
+from ..api_client import ApiClient
+
+
+class InfoapiApiSlash(object):
+    """
+    NOTE: This class is auto generated by the swagger code generator program.
+    Do not edit the class manually.
+    Ref: https://github.com/swagger-api/swagger-codegen
+    """
+
+    def __init__(self, api_client=None):
+        config = Configuration()
+        if api_client:
+            self.api_client = api_client
+        else:
+            if not config.api_client:
+                config.api_client = ApiClient()
+            self.api_client = config.api_client
+
+    def info_using_get(self, data_partition_id, **kwargs):
+        """
+        info
+        This method makes a synchronous HTTP request by default. To make an
+        asynchronous HTTP request, please define a `callback` function
+        to be invoked when receiving the response.
+        >>> def callback_function(response):
+        >>>     pprint(response)
+        >>>
+        >>> thread = api.info_using_get(data_partition_id, callback=callback_function)
+
+        :param callback function: The callback function
+            for asynchronous request. (optional)
+        :param str data_partition_id: tenant (required)
+        :return: VersionInfo
+                 If the method is called asynchronously,
+                 returns the request thread.
+        """
+        kwargs['_return_http_data_only'] = True
+        if kwargs.get('callback'):
+            return self.info_using_get_with_http_info(data_partition_id, **kwargs)
+        else:
+            (data) = self.info_using_get_with_http_info(data_partition_id, **kwargs)
+            return data
+
+    def info_using_get_with_http_info(self, data_partition_id, **kwargs):
+        """
+        info
+        This method makes a synchronous HTTP request by default. To make an
+        asynchronous HTTP request, please define a `callback` function
+        to be invoked when receiving the response.
+        >>> def callback_function(response):
+        >>>     pprint(response)
+        >>>
+        >>> thread = api.info_using_get_with_http_info(data_partition_id, callback=callback_function)
+
+        :param callback function: The callback function
+            for asynchronous request. (optional)
+        :param str data_partition_id: tenant (required)
+        :return: VersionInfo
+                 If the method is called asynchronously,
+                 returns the request thread.
+        """
+
+        all_params = ['data_partition_id']
+        all_params.append('callback')
+        all_params.append('_return_http_data_only')
+        all_params.append('_preload_content')
+        all_params.append('_request_timeout')
+
+        params = locals()
+        for key, val in iteritems(params['kwargs']):
+            if key not in all_params:
+                raise TypeError(
+                    "Got an unexpected keyword argument '%s'"
+                    " to method info_using_get" % key
+                )
+            params[key] = val
+        del params['kwargs']
+        # verify the required parameter 'data_partition_id' is set
+        if ('data_partition_id' not in params) or (params['data_partition_id'] is None):
+            raise ValueError("Missing the required parameter `data_partition_id` when calling `info_using_get`")
+
+
+        collection_formats = {}
+
+        path_params = {}
+
+        query_params = []
+
+        header_params = {}
+        if 'data_partition_id' in params:
+            header_params['data-partition-id'] = params['data_partition_id']
+
+        form_params = []
+        local_var_files = {}
+
+        body_params = None
+        # HTTP header `Accept`
+        header_params['Accept'] = self.api_client.\
+            select_header_accept(['application/json'])
+
+        # HTTP header `Content-Type`
+        header_params['Content-Type'] = self.api_client.\
+            select_header_content_type(['application/json'])
+
+        # Authentication setting
+        auth_settings = ['Bearer Authorization']
+
+        return self.api_client.call_api('/v3/info/', 'GET',
+                                        path_params,
+                                        query_params,
+                                        header_params,
+                                        body=body_params,
+                                        post_params=form_params,
+                                        files=local_var_files,
+                                        response_type='VersionInfo',
+                                        auth_settings=auth_settings,
+                                        callback=params.get('callback'),
+                                        _return_http_data_only=params.get('_return_http_data_only'),
+                                        _preload_content=params.get('_preload_content', True),
+                                        _request_timeout=params.get('_request_timeout'),
+                                        collection_formats=collection_formats)
diff --git a/testing/unit_test_core/v3/test/test_infoapi_api_slash.py b/testing/unit_test_core/v3/test/test_infoapi_api_slash.py
new file mode 100644
index 0000000000000000000000000000000000000000..cb55fc7ea0535cba0af020f1f98efa43536276ae
--- /dev/null
+++ b/testing/unit_test_core/v3/test/test_infoapi_api_slash.py
@@ -0,0 +1,44 @@
+# coding: utf-8
+
+"""
+    Unit API V3
+
+    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)
+
+    OpenAPI spec version: 3.0
+    
+    Generated by: https://github.com/swagger-api/swagger-codegen.git
+"""
+
+
+from __future__ import absolute_import
+
+import os
+import sys
+import unittest
+
+import swagger_client
+from swagger_client.rest import ApiException
+from swagger_client.apis.infoapi_api_slash import InfoapiApiSlash
+
+
+class TestInfoapiApiSlash(unittest.TestCase):
+    """ InfoapiApiSlash unit test stubs """
+
+    def setUp(self):
+        self.api = swagger_client.apis.infoapi_api_slash.InfoapiApiSlash()
+
+    def tearDown(self):
+        pass
+
+    def test_info_using_get(self):
+        """
+        Test case for info_using_get
+
+        info
+        """
+        pass
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/unit-core/src/main/java/org/opengroup/osdu/unitservice/configuration/SpringWebMvcConfiguration.java b/unit-core/src/main/java/org/opengroup/osdu/unitservice/configuration/SpringWebMvcConfiguration.java
index 8e99912a280e3710578d5a78ea22c46e3eacfb7a..1231db5371424731d761800d1a1e0987ec43038e 100644
--- a/unit-core/src/main/java/org/opengroup/osdu/unitservice/configuration/SpringWebMvcConfiguration.java
+++ b/unit-core/src/main/java/org/opengroup/osdu/unitservice/configuration/SpringWebMvcConfiguration.java
@@ -24,5 +24,6 @@ public class SpringWebMvcConfiguration implements WebMvcConfigurer {
         UrlPathHelper urlPathHelper = new UrlPathHelper();
         urlPathHelper.setUrlDecode(false);
         configurer.setUrlPathHelper(urlPathHelper);
+        configurer.setUseTrailingSlashMatch(true);
     }
 }