2025-10-18T21:47:03.186+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.security.web.FilterChainProxy        : Securing POST /api/admin/tenants/3a3de642-6da5-4bd0-8fb8-b933155dfd62/voip-configs
2025-10-18T21:47:03.247+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Creating new transaction with name [org.springframework.data.jpa.repository.support.SimpleJpaRepository.findById]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT,readOnly
2025-10-18T21:47:03.247+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Opened new EntityManager [SessionImpl(1280217684<open>)] for JPA transaction
2025-10-18T21:47:03.249+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.jdbc.datasource.DataSourceUtils      : Setting JDBC Connection [HikariProxyConnection@349210479 wrapping com.mysql.cj.jdbc.ConnectionImpl@73973e77] read-only
2025-10-18T21:47:03.250+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.e.t.internal.TransactionImpl         : On TransactionImpl creation, JpaCompliance#isJpaTransactionComplianceEnabled == false
2025-10-18T21:47:03.250+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.e.t.internal.TransactionImpl         : begin
2025-10-18T21:47:03.251+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Exposing JPA transaction as JDBC [org.springframework.orm.jpa.vendor.HibernateJpaDialect$HibernateConnectionHandle@55cb4647]
2025-10-18T21:47:03.261+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.exec               : Skipping reading Query result cache data: cache-enabled = false, cache-mode = IGNORE
2025-10-18T21:47:03.262+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.SQL                        : 
    select
        u1_0.id,
        u1_0.created_at,
        u1_0.email,
        u1_0.first_name,
        u1_0.last_name,
        u1_0.password,
        u1_0.role,
        u1_0.status,
        u1_0.tenant_id,
        u1_0.updated_at,
        u1_0.user_type 
    from
        users u1_0 
    where
        u1_0.id=?
Hibernate: 
    select
        u1_0.id,
        u1_0.created_at,
        u1_0.email,
        u1_0.first_name,
        u1_0.last_name,
        u1_0.password,
        u1_0.role,
        u1_0.status,
        u1_0.tenant_id,
        u1_0.updated_at,
        u1_0.user_type 
    from
        users u1_0 
    where
        u1_0.id=?
2025-10-18T21:47:03.269+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.results                : Initializer list:
	  com.saas.admin.entity.User -> EntityJoinedFetchInitializer(com.saas.admin.entity.User)@301882907 (SingleTableEntityPersister(com.saas.admin.entity.User))
	  com.saas.admin.entity.User.userRoles -> DelayedCollectionInitializer(com.saas.admin.entity.User.userRoles)@494475014 (PluralAttribute(com.saas.admin.entity.User.userRoles))

2025-10-18T21:47:03.276+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Initiating transaction commit
2025-10-18T21:47:03.276+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Committing JPA transaction on EntityManager [SessionImpl(1280217684<open>)]
2025-10-18T21:47:03.276+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.e.t.internal.TransactionImpl         : committing
2025-10-18T21:47:03.277+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.jdbc.datasource.DataSourceUtils      : Resetting read-only flag of JDBC Connection [HikariProxyConnection@349210479 wrapping com.mysql.cj.jdbc.ConnectionImpl@73973e77]
2025-10-18T21:47:03.277+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.orm.jpa.JpaTransactionManager        : Closing JPA EntityManager [SessionImpl(1280217684<open>)] after transaction
2025-10-18T21:47:03.281+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] tor$SharedEntityManagerInvocationHandler : Creating new EntityManager for shared EntityManager invocation
2025-10-18T21:47:03.304+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Created new SQL alias : ur1_0
2025-10-18T21:47:03.304+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [StandardTableGroup(com.saas.admin.entity.UserRole(ur))] with identifierForTableGroup [com.saas.admin.entity.UserRole] for NavigablePath [com.saas.admin.entity.UserRole] 
2025-10-18T21:47:03.304+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [org.hibernate.sql.ast.tree.from.LazyTableGroup@3812ed7d] with identifierForTableGroup [com.saas.admin.entity.UserRole(ur).role] for NavigablePath [com.saas.admin.entity.UserRole(ur).role] 
2025-10-18T21:47:03.305+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Created new SQL alias : rp1_0
2025-10-18T21:47:03.305+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Created new SQL alias : r1_0
2025-10-18T21:47:03.305+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [org.hibernate.sql.ast.tree.from.OneToManyTableGroup@3b0c712f] with identifierForTableGroup [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions] for NavigablePath [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions] 
2025-10-18T21:47:03.305+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [StandardTableGroup(com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element})] with identifierForTableGroup [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}] for NavigablePath [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}] 
2025-10-18T21:47:03.305+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [org.hibernate.sql.ast.tree.from.LazyTableGroup@20241011] with identifierForTableGroup [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}.permission] for NavigablePath [com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}.permission] 
2025-10-18T21:47:03.306+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Created new SQL alias : p1_0
2025-10-18T21:47:03.307+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.create         : Registration of TableGroup [org.hibernate.sql.ast.tree.from.LazyTableGroup@5edcf1d9] with identifierForTableGroup [com.saas.admin.entity.UserRole(ur).user] for NavigablePath [com.saas.admin.entity.UserRole(ur).user] 
2025-10-18T21:47:03.307+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.q.sqm.sql.BaseSqmToSqlAstConverter   : Determining mapping-model type for SqmParameter : SqmNamedParameter(userId)
2025-10-18T21:47:03.307+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.q.sqm.sql.BaseSqmToSqlAstConverter   : Determining mapping-model type for SqmPath : SqmBasicValuedSimplePath(com.saas.admin.entity.UserRole(ur).user.id) 
2025-10-18T21:47:03.308+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.q.sqm.sql.BaseSqmToSqlAstConverter   : Determining mapping-model type for SqmPath : SqmBasicValuedSimplePath(com.saas.admin.entity.UserRole(ur).role(r).isActive) 
2025-10-18T21:47:03.308+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.h.q.sqm.sql.BaseSqmToSqlAstConverter   : Determining mapping-model type for SqmPath : SqmBasicValuedSimplePath(com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}.permission(p).isActive) 
2025-10-18T21:47:03.308+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.results.graph.AST      : DomainResult Graph:
 \-BasicResult

2025-10-18T21:47:03.308+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.ast.tree           : SQL AST Tree:
    SelectStatement {
      FromClause {
        StandardTableGroup (ur1 : com.saas.admin.entity.UserRole(ur)) {
          primaryTableReference : user_roles as ur1_0
          TableGroupJoins {
             join LazyTableGroup (r1 : com.saas.admin.entity.UserRole(ur).role(r)) {
              primaryTableReference : roles as r1_0
              TableGroupJoins {
                 join OneToManyTableGroup (rp1 : com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp)) {
                  primaryTableReference : role_permissions as rp1_0
                  TableGroupJoins {
                     join LazyTableGroup (p1 : com.saas.admin.entity.UserRole(ur).role(r).rolePermissions(rp).{element}.permission(p)) {
                      primaryTableReference : permissions as p1_0
                    }
                  }
                }
              }
            }
             join LazyTableGroup (u1 : com.saas.admin.entity.UserRole(ur).user) {
            }
          }
        }
      }
    }

2025-10-18T21:47:03.311+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.sql.exec               : Skipping reading Query result cache data: cache-enabled = false, cache-mode = NORMAL
2025-10-18T21:47:03.311+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.SQL                        : 
    select
        distinct concat(p1_0.resource, ':', p1_0.action) 
    from
        user_roles ur1_0 
    join
        roles r1_0 
            on r1_0.id=ur1_0.role_id 
    join
        role_permissions rp1_0 
            on r1_0.id=rp1_0.role_id 
    join
        permissions p1_0 
            on p1_0.id=rp1_0.permission_id 
    where
        ur1_0.user_id=? 
        and r1_0.is_active=1 
        and p1_0.is_active=1
Hibernate: 
    select
        distinct concat(p1_0.resource, ':', p1_0.action) 
    from
        user_roles ur1_0 
    join
        roles r1_0 
            on r1_0.id=ur1_0.role_id 
    join
        role_permissions rp1_0 
            on r1_0.id=rp1_0.role_id 
    join
        permissions p1_0 
            on p1_0.id=rp1_0.permission_id 
    where
        ur1_0.user_id=? 
        and r1_0.is_active=1 
        and p1_0.is_active=1
2025-10-18T21:47:03.312+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] org.hibernate.orm.results                : Initializer list is empty
2025-10-18T21:47:03.313+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] c.s.s.security.CustomUserDetailsService  : 🔐 Loading user ID: 3 with 0 permissions
2025-10-18T21:47:03.318+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.security.web.FilterChainProxy        : Secured POST /api/admin/tenants/3a3de642-6da5-4bd0-8fb8-b933155dfd62/voip-configs
2025-10-18T21:47:03.319+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.web.servlet.DispatcherServlet        : POST "/api/admin/tenants/3a3de642-6da5-4bd0-8fb8-b933155dfd62/voip-configs", parameters={}
2025-10-18T21:47:03.320+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped to com.saas.admin.controller.AdminTenantVoipConfigController#createVoipConfig(String, CreateVoipConfigRequest)
2025-10-18T21:47:03.320+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.j.s.OpenEntityManagerInViewInterceptor : Opening JPA EntityManager in OpenEntityManagerInViewInterceptor
2025-10-18T21:47:03.341+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.web.method.HandlerMethod             : Could not resolve parameter [1] in public org.springframework.http.ResponseEntity<com.saas.admin.dto.response.VoipConfigResponse> com.saas.admin.controller.AdminTenantVoipConfigController.createVoipConfig(java.lang.String,com.saas.admin.dto.request.CreateVoipConfigRequest): JSON parse error: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
2025-10-18T21:47:03.342+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.saas.shared.exception.GlobalExceptionHandler#handleGeneric(Exception, HttpServletRequest)
2025-10-18T21:47:03.342+01:00 ERROR 89734 --- [saas-multitenant-api] [nio-7001-exec-1] c.s.s.exception.GlobalExceptionHandler   : Unhandled exception

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:408)
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:356)
	at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:204)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:176)
	at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:150)
	at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
	at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:227)
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:181)
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:991)
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:896)
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)
	at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)
	at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)
	at org.springframework.security.web.ObservationFilterChainDecorator$FilterObservation$SimpleFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:490)
	at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$1(ObservationFilterChainDecorator.java:351)
	at org.springframework.security.web.ObservationFilterChainDecorator.lambda$wrapSecured$0(ObservationFilterChainDecorator.java:83)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:129)
	at org.springframework.security.web.access.intercept.AuthorizationFilter.doFilter(AuthorizationFilter.java:101)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:125)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at com.saas.shared.security.JwtAuthenticationFilter.doFilterInternal(JwtAuthenticationFilter.java:56)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)
	at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241)
	at org.springframework.security.web.ObservationFilterChainDecorator$AroundFilterObservation$SimpleAroundFilterObservation.lambda$wrap$0(ObservationFilterChainDecorator.java:334)
	at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:225)
	at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138)
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.ServletRequestPathFilter.doFilter(ServletRequestPathFilter.java:52)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
	at org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebSecurityConfiguration.java:319)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$4(HandlerMappingIntrospector.java:267)
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)
	at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:240)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.ServerHttpObservationFilter.doFilterInternal(ServerHttpObservationFilter.java:110)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:116)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:398)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:903)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1776)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:975)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:493)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:1474)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)
 at [Source: REDACTED (`StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION` disabled); line: 8, column: 15] (through reference chain: com.saas.admin.dto.request.CreateVoipConfigRequest["metadata"])
	at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59)
	at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1794)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1568)
	at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1473)
	at com.fasterxml.jackson.databind.DeserializationContext.extractScalarFromObject(DeserializationContext.java:971)
	at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseString(StdDeserializer.java:1444)
	at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:48)
	at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11)
	at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392)
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:177)
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:342)
	at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2130)
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1500)
	at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:397)
	... 139 common frames omitted

2025-10-18T21:47:03.349+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Using 'application/json', given [*/*] and supported [application/json, application/*+json, application/yaml, application/xml;charset=UTF-8, text/xml;charset=UTF-8, application/*+xml;charset=UTF-8]
2025-10-18T21:47:03.350+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.w.s.m.m.a.HttpEntityMethodProcessor  : Writing [ApiResponse(success=false, message=An unexpected error occurred, data=ErrorResponse(errorCode=SYS_00 (truncated)...]
2025-10-18T21:47:03.354+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.lang.String` from Object value (token `JsonToken.START_OBJECT`)]
2025-10-18T21:47:03.354+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.j.s.OpenEntityManagerInViewInterceptor : Closing JPA EntityManager in OpenEntityManagerInViewInterceptor
2025-10-18T21:47:03.354+01:00 DEBUG 89734 --- [saas-multitenant-api] [nio-7001-exec-1] o.s.web.servlet.DispatcherServlet        : Completed 500 INTERNAL_SERVER_ERROR
2025-10-18T21:47:20.200+01:00 DEBUG 89734 --- [saas-multitenant-api] [l-1:housekeeper] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Pool stats (total=10/10, idle=10/10, active=0, waiting=0)
2025-10-18T21:47:20.200+01:00 DEBUG 89734 --- [saas-multitenant-api] [l-1:housekeeper] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Fill pool skipped, pool has sufficient level or currently being filled.
