From 1ff3f9c0c9d6b40cff6c1bea086f9ff486bb94c9 Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Tue, 23 Jun 2026 15:23:30 +0530 Subject: [PATCH 1/8] shares account link to new saving account --- fineract-provider/logs/fineract.log | 5411 +++++++++++++++++ .../src/main/resources/application.properties | 4 +- 2 files changed, 5413 insertions(+), 2 deletions(-) diff --git a/fineract-provider/logs/fineract.log b/fineract-provider/logs/fineract.log index e69de29bb..ff5ddd0a8 100644 --- a/fineract-provider/logs/fineract.log +++ b/fineract-provider/logs/fineract.log @@ -0,0 +1,5411 @@ +2026-06-23 13:08:44.479 INFO [main] o.apache.fineract.ServerApplication : Starting ServerApplication using Java 21.0.6 with PID 13720 (C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider\build\classes\java\main started by rajpu in C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider) +2026-06-23 13:08:44.484 INFO [main] o.apache.fineract.ServerApplication : No active profile set, falling back to 1 default profile: "default" +2026-06-23 13:09:10.565 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-23 13:09:10.566 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2026-06-23 13:09:16.694 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.DocumentRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:16.701 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.ImageRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:16.760 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixReportXBRLNamespaceRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:16.772 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyMappingRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:16.783 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:17.110 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.command.persistence.domain.CommandRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-23 13:09:25.621 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 15002 ms. Found 246 JPA repository interfaces. +2026-06-23 13:09:25.667 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'jpaAuditingHandler' with a different definition: replacing [Root bean: class=org.springframework.data.auditing.AuditingHandler; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] with [Root bean: class=org.apache.fineract.infrastructure.core.auditing.CustomAuditingHandler; scope=prototype; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null] +2026-06-23 13:09:26.047 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'transactionManager' with a different definition: replacing [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=JPAConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.class]] with [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=scheduledJobRunnerConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.class]] +2026-06-23 13:09:26.077 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRepository already defined in the application context, skipping the registration of a jobRepository +2026-06-23 13:09:26.079 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobExplorer already defined in the application context, skipping the registration of a jobExplorer +2026-06-23 13:09:26.080 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobLauncher already defined in the application context, skipping the registration of a jobLauncher +2026-06-23 13:09:26.095 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Finished Spring Batch infrastructure beans configuration in 22 ms. +2026-06-23 13:09:31.926 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-23 13:09:31.927 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode. +2026-06-23 13:09:34.122 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.provisioning.domain.ProvisioningEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.123 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.adhocquery.domain.AdHocRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.124 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.LoanAccountLockRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.127 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.128 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.bulkimport.domain.ImportDocumentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.129 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.130 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.131 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.132 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.133 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.ExternalServicesPropertiesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.134 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.135 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.135 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.136 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.137 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.137 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.TokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.143 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.143 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.144 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.145 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.146 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.146 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.147 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookTemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.148 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.imps.domain.ImpsTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.148 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.149 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.149 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.150 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.SchedulerDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.150 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntryAggregationTrackingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.151 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntrySummaryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.151 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.152 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.152 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.155 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.otp.domain.OtpLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.156 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.157 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.survey.domain.LikelihoodRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.159 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.interoperation.domain.InteropIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.160 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationMapperRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.162 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.163 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.holiday.domain.HolidayRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.164 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.166 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCategoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.166 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinitionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.167 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.170 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.staff.domain.StaffRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.170 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.171 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountAssociationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.174 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.174 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.175 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.StandingInstructionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.176 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.AddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.176 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.FieldConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.177 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.177 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.179 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.180 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.180 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.181 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.182 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.184 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.185 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.187 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.188 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.189 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.189 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.190 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.ckyc.domain.CkycBatchRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.190 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientAddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.191 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.192 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientFamilyMembersRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.192 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNonPersonRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.193 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.195 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransferDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.195 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomainRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateral.domain.LoanCollateralRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterAuditRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.197 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.197 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.SavingsTxnDenominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.198 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionApprovalStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.198 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCandidateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.199 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCeoPrecheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.199 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.200 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionEligibilityCheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.200 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionNominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.201 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionPostRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.201 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionResultRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.202 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionVoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.203 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.BankIfscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.203 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.CustomerTransferLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.204 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferEventRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.204 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.TransferLimitConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.VerificationTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fund.domain.FundRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.206 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupLevelRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.209 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.209 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.210 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMixRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.210 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.211 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.domain.MeetingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.211 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.note.domain.NoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.214 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.rate.domain.RateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.215 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.216 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.216 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.217 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.222 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.223 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.223 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.224 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.224 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.225 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.225 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.226 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPTRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.226 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.device.domain.DeviceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.227 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.227 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.228 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.229 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.230 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.230 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.231 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.232 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.LookupTableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.232 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.ScorecardRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.233 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.SurveyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.234 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.template.domain.TemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.234 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserPreviousPasswordRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.235 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.235 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.236 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PermissionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.236 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.RoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.237 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.237 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.239 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.239 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.240 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.240 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappingsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.241 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.241 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyRangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.242 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyActionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.242 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.243 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.243 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.GLIMAccountInfoRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.244 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAccrualActivityRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.244 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidByRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.246 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.247 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.247 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.248 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.248 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.249 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.249 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.250 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.251 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgingParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.251 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.252 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.253 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.254 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.255 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.256 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.256 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.257 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlabRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FacilityChargeMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.261 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.261 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.262 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.262 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.263 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.BatchBusinessStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.265 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.265 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.266 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.267 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.closure.domain.GLClosureRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.267 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.268 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.TrialBalanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.268 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.269 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.269 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.rule.domain.AccountingRuleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.270 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.floatingrates.domain.FloatingRateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.270 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.charge.domain.ChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.277 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxComponentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.277 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxGroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.278 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TFAccessTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.279 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TwoFactorConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.295 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.GLAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.298 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.commands.domain.CommandSourceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.299 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.businessdate.domain.BusinessDateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.300 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.cache.domain.PlatformCacheRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.306 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.306 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeValueRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.307 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.311 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.rbifeed.domain.RbiFeedItemRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.312 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.312 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.317 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.318 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.CfcfrmsSimulatorLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.318 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintAuditLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.319 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintTicketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.319 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientForm60Repository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.327 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.327 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.331 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNomineeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.331 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.332 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientEouRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.342 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientImportExportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.346 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMsmeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMudraBorrowerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientNonPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.353 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientStartupIndiaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.355 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.mobilelookup.domain.MobileLookupLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.356 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.356 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.358 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.360 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsScreeningLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.362 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.BankUserDscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.362 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.DscChallengeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:34.363 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.mfa.domain.UserMfaFactorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-23 13:09:35.575 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 3640 ms. Found 6 JDBC repository interfaces. +2026-06-23 13:09:42.932 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. +2026-06-23 13:09:42.955 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. +2026-06-23 13:09:47.409 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'fineract-org.apache.fineract.infrastructure.core.config.FineractProperties' of type [org.apache.fineract.infrastructure.core.config.FineractProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:47.452 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'cacheConfig' of type [org.apache.fineract.infrastructure.core.config.cache.CacheConfig$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.066 INFO [main] org.reflections.Reflections : Reflections took 25 ms to scan 1 urls, producing 0 keys and 0 values +2026-06-23 13:09:48.077 WARN [main] o.a.f.i.c.config.cache.CacheConfig : The following cache configurations are defined but cache does not exists: [userTFAccessToken] +2026-06-23 13:09:48.082 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'ehCacheManager' of type [org.springframework.cache.jcache.JCacheCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.112 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'defaultCacheManager' of type [org.apache.fineract.infrastructure.core.config.cache.TransactionBoundCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.136 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'runtimeDelegatingCacheManager' of type [org.apache.fineract.infrastructure.cache.service.RuntimeDelegatingCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.147 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'platformCacheConfiguration' of type [org.apache.fineract.infrastructure.cache.PlatformCacheConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.279 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingConfiguration' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:48.303 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingServiceFactory' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingServiceFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-23 13:09:51.035 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat initialized with port 8443 (https) +2026-06-23 13:09:51.114 INFO [main] o.a.catalina.core.StandardService : Starting service [Tomcat] +2026-06-23 13:09:51.115 INFO [main] o.a.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.49] +2026-06-23 13:09:51.332 INFO [main] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring embedded WebApplicationContext +2026-06-23 13:09:51.350 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 66803 ms +2026-06-23 13:09:52.549 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2026-06-23 13:09:53.381 INFO [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@41334af0 +2026-06-23 13:09:53.396 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading tenant store DB at localhost:5432 +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.username: postgres +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.password: **** +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.parameters: +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.timezone: Asia/Kolkata +2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.description: Default Demo Tenant +2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.identifier: default +2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.name: fineract_default +2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - liquibase.analytics.enabled: false +2026-06-23 13:10:25.862 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant store upgrade finished +2026-06-23 13:10:25.863 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading all tenants +2026-06-23 13:10:25.903 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has started +2026-06-23 13:10:27.549 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting... +2026-06-23 13:10:27.662 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@7fd78920 +2026-06-23 13:10:27.663 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed. +2026-06-23 13:10:59.855 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has finished +2026-06-23 13:10:59.856 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated... +2026-06-23 13:10:59.866 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed. +2026-06-23 13:10:59.867 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant upgrades have successfully finished +2026-06-23 13:11:05.125 INFO [main] o.s.o.j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'jpa-pu' +2026-06-23 13:11:08.586 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : EclipseLink is in classpath; If applicable, EQL parser will be used. +2026-06-23 13:11:08.587 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2026-06-23 13:11:11.047 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-blind +2026-06-23 13:11:11.049 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-entry-point +2026-06-23 13:11:11.049 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-timing +2026-06-23 13:11:11.050 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-backend +2026-06-23 13:11:11.050 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-column +2026-06-23 13:11:11.051 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-out-of-bands +2026-06-23 13:11:11.052 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-stacked-query +2026-06-23 13:11:11.052 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-comment +2026-06-23 13:11:11.053 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: main +2026-06-23 13:11:11.054 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: adhoc +2026-06-23 13:11:11.054 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: column +2026-06-23 13:11:13.451 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:13.451 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataById(java.lang.Long) +2026-06-23 13:11:13.461 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataByShortName(java.lang.String) +2026-06-23 13:11:13.505 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getAllData() +2026-06-23 13:11:17.149 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:17.150 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Optional org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findLoanDataForExternalTransferByLoanId(java.lang.Long) +2026-06-23 13:11:17.382 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findOldestCOBProcessedLoan(java.time.LocalDate,java.util.Collection) +2026-06-23 13:11:17.399 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllStayedLockedByCobBusinessDate(java.time.LocalDate) +2026-06-23 13:11:21.058 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOnDisbursementDate(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-23 13:11:21.062 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-23 13:11:21.072 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOrNullByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-23 13:11:21.612 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:21.613 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchTotalUnpaidChargesForLoan(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-23 13:11:21.956 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findTransactionDataForForeclosureIncome(org.apache.fineract.portfolio.loanaccount.domain.Loan,java.time.LocalDate) +2026-06-23 13:11:22.003 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncomePosting org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findCumulativeIncomeByLoanAndType(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-23 13:11:22.065 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchLoanTransactionsByTypeAndLessOrEqualDate(org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType,java.time.LocalDate) +2026-06-23 13:11:22.324 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:22.325 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsOldestCobProcessed() +2026-06-23 13:11:22.328 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDate(java.time.LocalDate,java.util.List) +2026-06-23 13:11:22.332 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDateOrNull(java.time.LocalDate,java.util.List) +2026-06-23 13:11:22.387 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAccrualData(java.time.LocalDate,java.lang.Long,java.lang.Integer,java.lang.Integer) +2026-06-23 13:11:25.453 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:25.454 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.event.external.repository.ExternalEventRepository.findByStatusOrderByBusinessDateAscIdAsc(org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventStatus,org.springframework.data.domain.Pageable) +2026-06-23 13:11:30.334 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:30.334 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.organisation.monetary.data.CurrencyData org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findCurrencyDataByCode(java.lang.String) +2026-06-23 13:11:30.336 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-23 13:11:31.249 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:31.250 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository.findInstallmentDelinquencyTags(java.lang.Long) +2026-06-23 13:11:32.434 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:32.434 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findRepaymentPeriodDataByLoanId(java.lang.Long) +2026-06-23 13:11:32.447 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-23 13:11:34.386 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:34.386 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanBuyDownFeeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-23 13:11:34.594 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:34.594 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean,java.util.List) +2026-06-23 13:11:34.601 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean) +2026-06-23 13:11:38.439 INFO [main] o.a.f.i.e.b.s.BusinessEventNotifierServiceImpl : External event posting is disabled +2026-06-23 13:11:39.460 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:39.461 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-23 13:11:42.245 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:11:42.247 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository.findAmortizationMappingsByBaseTransactionAndLoan(java.lang.Long,java.lang.Long) +2026-06-23 13:11:51.394 INFO [main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: POSTGRES +2026-06-23 13:11:51.428 INFO [main] o.s.b.c.l.s.TaskExecutorJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor. +2026-06-23 13:11:56.008 INFO [main] o.a.f.i.r.p.ReportingProcessServiceProvider : Registered report service 'org.apache.fineract.infrastructure.dataqueries.service.DatatableReportingProcessService@2b8ef5c7' for type/s '[Table, Chart, SMS]' +2026-06-23 13:11:56.419 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.cbs.private-key-path not set — CBS private key NOT loaded +2026-06-23 13:11:56.419 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.lincpay.public-key-path not set — LincPay public key NOT loaded +2026-06-23 13:12:12.349 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] lookup by external_id 'FUNDTRANSFER_SUSPENSE' failed: org.springframework.orm.jpa.JpaSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.2.v202306161219): org.eclipse.persistence.exceptions.DatabaseException +Internal Exception: org.postgresql.util.PSQLException: ERROR: relation "m_savings_account" does not exist + Position: 2248 +Error Code: 0 +Call: SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?) + bind => [1 parameter bound] +Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?)") +2026-06-23 13:12:12.350 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] suspense external_id 'FUNDTRANSFER_SUSPENSE' did not resolve — OFF_US debits will be no-ops until the suspense GL row is created (see Liquibase 0311) +2026-06-23 13:12:13.631 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:12:13.632 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanId(long) +2026-06-23 13:12:13.636 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanIdAndTermType(long,int) +2026-06-23 13:12:13.641 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByExternalLoanIdAndTermType(org.apache.fineract.infrastructure.core.domain.ExternalId,int) +2026-06-23 13:12:13.797 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-23 13:12:13.797 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository.findAllByLoanId(java.lang.Long,org.springframework.data.domain.Pageable) +2026-06-23 13:12:46.331 INFO [main] org.reflections.Reflections : Reflections took 128 ms to scan 1 urls, producing 56 keys and 185 values +2026-06-23 13:12:48.278 WARN [main] o.a.f.p.s.s.FacilityChargeSeederService : FacilityChargeSeeder: skipped — PreparedStatementCallback; bad SQL grammar [SELECT charge_id FROM m_facility_charge_mapping WHERE facility_type = ? AND charge_id IS NOT NULL] +2026-06-23 13:12:50.668 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Starting... +2026-06-23 13:12:50.759 INFO [main] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Added connection org.postgresql.jdbc.PgConnection@35db70d7 +2026-06-23 13:12:50.804 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Start completed. +2026-06-23 13:12:50.826 INFO [main] o.a.f.o.monetary.domain.MoneyHelper : Initialized rounding mode for tenant `default`: HALF_EVEN +2026-06-23 13:12:50.836 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : Starting MoneyHelper initialization for all tenants... +2026-06-23 13:12:50.838 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : MoneyHelper initialization completed +2026-06-23 13:12:50.980 INFO [main] o.a.f.i.e.e.s.message.MessageFactory : Message source set to 51000a79-930a-45e0-bbbe-d9789616b567 +2026-06-23 13:12:56.361 INFO [main] o.a.f.i.e.e.s.ExternalEventConfigurationValidationService : Validating external event configuration for default +2026-06-23 13:12:59.501 WARN [main] o.a.f.i.c.b.FineractWebApplicationConfiguration : Fineract is running in web application mode +2026-06-23 13:12:59.528 INFO [main] o.s.s.c.a.a.c.InitializeAuthenticationProviderBeanManagerConfigurer$InitializeAuthenticationProviderManagerConfigurer : Global AuthenticationManager configured with AuthenticationProvider bean with name customAuthenticationProvider +2026-06-23 13:12:59.532 WARN [main] o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used by Spring Security for automatically configuring username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider. If the current configuration is intentional, to turn off this warning, increase the logging level of 'org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer' to ERROR +2026-06-23 13:13:00.335 INFO [main] o.s.s.w.a.c.ChannelProcessingFilter : Validated configuration attributes +2026-06-23 13:13:04.750 INFO [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoints beneath base path '/actuator' +2026-06-23 13:13:10.418 INFO [main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-23 13:13:10.449 INFO [main] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-23 13:13:10.449 INFO [main] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-23 13:13:10.451 INFO [main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-23 13:13:10.452 INFO [main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-23 13:13:10.453 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. +2026-06-23 13:13:10.453 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-23 13:13:10.453 INFO [main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@40b465b8 +2026-06-23 13:13:14.577 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel +2026-06-23 13:13:14.578 INFO [main] o.s.i.c.PublishSubscribeChannel : Channel 'application.errorChannel' has 1 subscriber(s). +2026-06-23 13:13:14.578 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean '_org.springframework.integration.errorLogger' +2026-06-23 13:13:14.578 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {message-handler} as a subscriber to the 'outboundRequests' channel +2026-06-23 13:13:14.579 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.outboundRequests' has 1 subscriber(s). +2026-06-23 13:13:14.579 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'outboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventManagerConfig.outboundFlow()' +2026-06-23 13:13:14.579 INFO [main] o.s.i.e.i.ApplicationEventListeningMessageProducer : started bean 'eventListener'; defined in: 'class path resource [org/apache/fineract/infrastructure/springbatch/messagehandler/spring/SpringEventWorkerConfig.class]'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.eventListener()' +2026-06-23 13:13:14.580 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {bridge} as a subscriber to the 'inboundFlow.channel#0' channel +2026-06-23 13:13:14.580 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.inboundFlow.channel#0' has 1 subscriber(s). +2026-06-23 13:13:14.580 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'inboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.inboundFlow()' +2026-06-23 13:13:14.581 INFO [main] o.s.i.endpoint.PollingConsumer : started bean 'org.springframework.integration.dsl.StandardIntegrationFlow#0.org.springframework.integration.config.ConsumerEndpointFactoryBean#0' +2026-06-23 13:13:14.949 INFO [main] o.a.t.u.net.NioEndpoint.certificate : Connector [https-jsse-nio-8443], TLS virtual host [_default_], certificate type [UNDEFINED] configured from keystore [C:\Users\rajpu\.keystore] using alias [tomcat] with trust store [null] +2026-06-23 13:13:15.026 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat started on port 8443 (https) with context path '/fineract-provider' +2026-06-23 13:13:15.028 INFO [main] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-23 13:13:15.029 INFO [main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started. +2026-06-23 13:13:15.035 INFO [main] o.apache.fineract.ServerApplication : Started ServerApplication in 272.232 seconds (process running for 273.211) +2026-06-23 13:13:15.232 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-23 13:13:15.235 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 7 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1' initialized from an externally provided properties instance. +2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-23 13:13:15.238 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@65dd0f8c +2026-06-23 13:13:15.240 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-23 13:13:15.240 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1_$_NON_CLUSTERED started. +2026-06-23 13:13:15.243 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Checking status of job execution with id=12974 +2026-06-23 13:13:15.255 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-23 13:13:15.256 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-23 13:13:15.256 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-23 13:13:15.256 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group3' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group3' initialized from an externally provided properties instance. +2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@4b25a6f5 +2026-06-23 13:13:15.257 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group3_$_NON_CLUSTERED started. +2026-06-23 13:13:15.282 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-23 13:13:15.284 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group1' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group1' initialized from an externally provided properties instance. +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@37851ccf +2026-06-23 13:13:15.285 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-23 13:13:15.285 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group1_$_NON_CLUSTERED started. +2026-06-23 13:13:15.302 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-23 13:13:15.302 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group4' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group4' initialized from an externally provided properties instance. +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@6ba5bf35 +2026-06-23 13:13:15.303 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group4_$_NON_CLUSTERED started. +2026-06-23 13:13:15.355 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Attempting to resume job with name=FETCH_RBI_RSS_FEEDS and parameters={'run.id':'{value=47, type=class java.lang.Long, identifying=true}'} +2026-06-23 13:13:15.694 INFO [FineractEvent-15] o.a.f.i.j.s.JobSchedulerServiceImpl : Scheduling batch jobs has finished +2026-06-23 13:14:00.254 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21628, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:14:00.365 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:14:00.420 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 54ms +2026-06-23 13:14:00.439 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21628, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 138ms +2026-06-23 13:15:00.086 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:15:00.100 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 13:15:00.124 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1598, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:15:00.124 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21629, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:15:00.126 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 26ms +2026-06-23 13:15:00.136 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms +2026-06-23 13:15:00.138 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:15:00.140 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 13:15:00.148 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:15:00.160 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21629, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-23 13:15:00.163 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 23ms +2026-06-23 13:15:00.175 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1598, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms +2026-06-23 13:16:00.083 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21630, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:16:00.097 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:16:00.107 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-23 13:16:00.119 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21630, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-23 13:17:00.087 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21631, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:17:00.141 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:17:00.149 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 13:17:00.159 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21631, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 66ms +2026-06-23 13:18:00.070 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21632, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:18:00.081 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:18:00.087 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:18:00.094 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21632, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 13:19:00.073 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21633, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:19:00.088 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:19:00.098 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-23 13:19:00.112 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21633, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 35ms +2026-06-23 13:19:12.322 INFO [https-jsse-nio-8443-exec-5] o.a.tomcat.util.http.parser.Cookie : A cookie header was received [g_state={"i_l":0,"i_ll":1769423112115,"i_b":"xmh/CdrKs4bTH66oBkSJ4quW+RT3rA0eV9NBTGn/Hfs","i_e":{"enable_itp_optimization":0}};] that contained an invalid cookie. That cookie will be ignored. + Note: further occurrences of this error will be logged at DEBUG level. +2026-06-23 13:19:12.345 INFO [https-jsse-nio-8443-exec-5] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2026-06-23 13:19:12.346 INFO [https-jsse-nio-8443-exec-5] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2026-06-23 13:19:12.390 INFO [https-jsse-nio-8443-exec-5] o.s.web.servlet.DispatcherServlet : Completed initialization in 43 ms +2026-06-23 13:19:32.688 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource will be ignored. +2026-06-23 13:19:32.688 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.adhocquery.api.AdHocApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.adhocquery.api.AdHocApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanAccountLockApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanAccountLockApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.AuditsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.AuditsApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.MakercheckersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.MakercheckersApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource will be ignored. +2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodesApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource will be ignored. +2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.hooks.api.HookApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.hooks.api.HookApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource will be ignored. +2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.sms.api.SmsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.sms.api.SmsApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.interoperation.api.InteropApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.interoperation.api.InteropApiResource will be ignored. +2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.notification.api.NotificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.notification.api.NotificationApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficesApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.staff.api.StaffApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.staff.api.StaffApiResource will be ignored. +2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource will be ignored. +2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientKycApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientKycApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientsApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource will be ignored. +2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fund.api.FundsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fund.api.FundsApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.CentersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.CentersApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource will be ignored. +2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.note.api.NotesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.note.api.NotesApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.products.api.ProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.products.api.ProductsApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.rate.api.RateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.rate.api.RateApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource will be ignored. +2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource will be ignored. +2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource will be ignored. +2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource will be ignored. +2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource will be ignored. +2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.search.api.SearchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.search.api.SearchApiResource will be ignored. +2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.template.api.TemplatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.template.api.TemplatesApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PermissionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PermissionsApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.RolesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.RolesApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.UsersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.UsersApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.DscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.DscApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource will be ignored. +2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource will be ignored. +2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource will be ignored. +2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.CashierApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.CashierApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.charge.api.ChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.charge.api.ChargesApiResource will be ignored. +2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixReportApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.batch.api.BatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.batch.api.BatchApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.cache.api.CacheApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.cache.api.CacheApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource will be ignored. +2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource will be ignored. +2026-06-23 13:19:36.217 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:107) + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:150) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:20:00.035 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2316, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:20:00.037 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21634, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:20:00.044 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 13:20:00.046 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:20:00.054 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:20:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21634, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 13:20:00.101 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 56ms +2026-06-23 13:20:00.110 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2316, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 71ms +2026-06-23 13:20:03.375 WARN [https-jsse-nio-8443-exec-3] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:20:03.390 ERROR [https-jsse-nio-8443-exec-3] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:20:09.358 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:21:00.074 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21635, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:21:00.090 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:21:00.103 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-23 13:21:00.117 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21635, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms +2026-06-23 13:22:00.040 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21636, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:22:00.050 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:22:00.056 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:22:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21636, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 13:23:00.070 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21637, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:23:00.081 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:23:00.091 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:23:00.101 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21637, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 13:24:00.063 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21638, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:24:00.074 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:24:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:24:00.089 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21638, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 13:24:04.451 WARN [https-jsse-nio-8443-exec-5] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:24:04.460 ERROR [https-jsse-nio-8443-exec-5] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:24:10.031 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:25:00.034 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21639, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:25:00.042 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:25:00.051 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 13:25:00.061 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21639, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 13:26:00.080 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21640, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:26:00.091 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:26:00.102 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:26:00.114 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21640, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 13:27:00.061 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21641, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:27:00.069 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:27:00.078 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 13:27:00.086 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21641, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 13:28:00.085 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21642, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:28:00.096 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:28:00.107 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-23 13:28:00.118 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21642, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 13:29:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21643, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:29:00.082 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:29:00.091 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:29:00.100 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21643, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2317, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21644, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:30:00.074 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 13:30:00.076 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:30:00.076 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 13:30:00.082 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:30:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 8ms +2026-06-23 13:30:00.090 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2317, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 13:30:00.090 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms +2026-06-23 13:30:00.091 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21644, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 13:30:00.098 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-23 13:30:00.131 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1599, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:30:00.175 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 13:30:00.195 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 20ms +2026-06-23 13:30:00.206 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1599, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 71ms +2026-06-23 13:31:00.025 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21645, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:31:00.033 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:31:00.039 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:31:00.044 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21645, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 13:32:00.055 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21646, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:32:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:32:00.084 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-23 13:32:00.097 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21646, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms +2026-06-23 13:33:00.023 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21647, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:33:00.028 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:33:00.033 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 13:33:00.038 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21647, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 13ms +2026-06-23 13:33:34.825 WARN [https-jsse-nio-8443-exec-6] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:33:34.939 ERROR [https-jsse-nio-8443-exec-6] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:33:48.178 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:34:00.045 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21648, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:34:00.055 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:34:00.064 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:34:00.075 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21648, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 13:35:00.068 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21649, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:35:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:35:00.089 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:35:00.098 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21649, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 13:35:34.992 WARN [https-jsse-nio-8443-exec-3] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:36:00.054 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21650, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:36:00.063 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:36:00.068 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-23 13:36:00.074 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21650, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 13:37:00.025 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21651, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:37:00.030 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:37:00.034 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 3ms +2026-06-23 13:37:00.039 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21651, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 12ms +2026-06-23 13:38:00.027 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21652, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:38:00.033 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:38:00.038 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-23 13:38:00.043 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21652, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 12ms +2026-06-23 13:39:00.032 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21653, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:39:00.042 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:39:00.052 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:39:00.060 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21653, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-23 13:40:00.054 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2318, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:40:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21654, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:40:00.061 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 13:40:00.065 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:40:00.072 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:40:00.079 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 17ms +2026-06-23 13:40:00.081 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21654, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 13:40:00.084 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2318, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-23 13:41:00.056 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21655, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:41:00.067 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:41:00.076 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:41:00.085 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21655, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 13:42:00.221 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21656, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:42:00.289 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:42:00.299 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:42:00.306 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21656, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 81ms +2026-06-23 13:43:00.079 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21657, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:43:00.090 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:43:00.099 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:43:00.108 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21657, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 13:44:00.079 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21658, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:44:00.092 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:44:00.102 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-23 13:44:00.115 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21658, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-23 13:45:00.069 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:45:00.083 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 13:45:00.111 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 27ms +2026-06-23 13:45:00.122 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 48ms +2026-06-23 13:45:00.151 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:45:00.160 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21659, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:45:00.165 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 13:45:00.179 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:45:00.190 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-23 13:45:00.195 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 28ms +2026-06-23 13:45:00.203 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21659, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 38ms +2026-06-23 13:45:00.206 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 51ms +2026-06-23 13:46:00.055 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21660, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:46:00.070 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:46:00.079 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:46:00.094 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21660, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 32ms +2026-06-23 13:47:00.071 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21661, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:47:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:47:00.092 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-23 13:47:00.103 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21661, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 13:48:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21662, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:48:00.070 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:48:00.076 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 13:48:00.083 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21662, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-23 13:49:00.064 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21663, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:49:00.072 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:49:00.080 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:49:00.087 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21663, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 13:50:00.066 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2319, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:50:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21664, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:50:00.074 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 13:50:00.077 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:50:00.087 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:50:00.097 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21664, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 13:50:00.115 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 39ms +2026-06-23 13:50:00.125 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2319, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 56ms +2026-06-23 13:51:00.057 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21665, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:51:00.065 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:51:00.074 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:51:00.084 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21665, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 13:51:38.084 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:52:00.072 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21666, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:52:00.086 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:52:00.096 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:52:00.107 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21666, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 30ms +2026-06-23 13:53:00.065 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21667, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:53:00.073 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:53:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 13:53:00.092 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21667, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 13:54:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21668, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:54:00.074 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:54:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:54:00.092 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21668, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 13:55:00.068 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21669, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:55:00.080 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:55:00.094 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 12ms +2026-06-23 13:55:00.106 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21669, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-23 13:55:11.498 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:55:18.919 WARN [https-jsse-nio-8443-exec-1] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:55:18.945 ERROR [https-jsse-nio-8443-exec-1] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 13:56:00.059 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21670, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:56:00.074 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:56:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 13:56:00.091 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21670, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 13:57:00.070 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21671, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:57:00.078 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:57:00.088 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 13:57:00.096 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21671, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 13:58:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21672, type=class java.lang.Long, identifying=true}'}] +2026-06-23 13:58:00.076 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 13:58:00.087 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-23 13:58:00.098 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21672, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 30ms +2026-06-23 14:10:36.978 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=12m43s199ms207µs500ns). +2026-06-23 14:10:39.425 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=12m48s379ms548µs600ns). +2026-06-23 14:10:42.620 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Send Asynchronous EventsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 13:59:00 IST 2026 +2026-06-23 14:10:42.727 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute EmailTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 +2026-06-23 14:10:42.728 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute Report Mailing JobsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 +2026-06-23 14:10:42.728 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Update Email Outbound with campaign messageTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 +2026-06-23 14:10:42.864 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:10:42.864 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21673, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:10:42.865 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:10:42.865 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2320, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 14:10:42.921 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 14:10:42.932 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21673, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 62ms +2026-06-23 14:10:42.935 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 23ms +2026-06-23 14:10:42.941 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 29ms +2026-06-23 14:10:42.942 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 30ms +2026-06-23 14:10:42.944 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2320, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 74ms +2026-06-23 14:10:42.950 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 81ms +2026-06-23 14:10:42.952 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 83ms +2026-06-23 14:11:00.044 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21674, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:11:00.053 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:11:00.060 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:11:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21674, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:12:00.069 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21675, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:12:00.077 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:12:00.087 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 14:12:00.093 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21675, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 14:13:00.080 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21676, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:13:00.090 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:13:00.100 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:13:00.110 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21676, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 14:14:00.079 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21677, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:14:00.094 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:14:00.102 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:14:00.109 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21677, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21678, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:15:00.068 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 14:15:00.069 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 14:15:00.070 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:15:00.078 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:15:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms +2026-06-23 14:15:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 13ms +2026-06-23 14:15:00.085 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21678, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 14:15:00.088 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 14:15:00.089 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 14:16:00.073 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21679, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:16:00.085 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:16:00.094 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:16:00.105 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21679, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 14:17:00.039 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21680, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:17:00.048 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:17:00.053 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-23 14:17:00.061 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21680, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 14:18:00.064 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21681, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:18:00.072 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:18:00.078 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:18:00.085 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21681, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-23 14:19:00.088 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21682, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:19:00.099 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:19:00.106 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:19:00.115 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21682, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 14:20:00.069 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21683, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:20:00.073 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2321, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:20:00.075 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:20:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 14:20:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:20:00.089 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 9ms +2026-06-23 14:20:00.090 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21683, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 14:20:00.096 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2321, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 14:21:00.110 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21684, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:21:00.122 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:21:00.132 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 14:21:00.142 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21684, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 14:22:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21685, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:22:00.076 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:22:00.083 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:22:00.091 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21685, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:23:00.063 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21686, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:23:00.069 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:23:00.076 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:23:00.084 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21686, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-23 14:24:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21687, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:24:00.073 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:24:00.079 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:24:00.087 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21687, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:25:00.065 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21688, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:25:00.073 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:25:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:25:00.089 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21688, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 14:26:00.043 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21689, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:26:00.054 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:26:00.064 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:26:00.074 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21689, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-23 14:27:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21690, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:27:00.080 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:27:00.088 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:27:00.096 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21690, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:28:00.071 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21691, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:28:00.082 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:28:00.090 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:28:00.098 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21691, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 14:29:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21692, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:29:00.063 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:29:00.070 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:29:00.079 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21692, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 14:30:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:30:00.063 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21693, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:30:00.065 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:30:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2322, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:30:00.068 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 14:30:00.077 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:30:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 7ms +2026-06-23 14:30:00.081 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 8ms +2026-06-23 14:30:00.082 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 12ms +2026-06-23 14:30:00.083 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21693, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-23 14:30:00.085 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-23 14:30:00.086 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:30:00.087 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2322, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-23 14:31:00.066 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21694, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:31:00.077 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:31:00.086 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:31:00.095 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21694, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 14:32:00.068 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21695, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:32:00.079 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:32:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:32:00.095 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21695, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 14:33:00.064 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21696, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:33:00.073 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:33:00.080 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:33:00.088 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21696, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-23 14:33:31.240 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=54s210ms8µs900ns). +2026-06-23 14:33:33.688 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=54s208ms700µs299ns). +2026-06-23 14:34:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21697, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:34:00.118 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:34:00.127 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 14:34:00.135 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21697, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 59ms +2026-06-23 14:35:00.081 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21698, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:35:00.093 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:35:00.102 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 14:35:00.110 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21698, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-23 14:36:00.078 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21699, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:36:00.094 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:36:00.102 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:36:00.111 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21699, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 14:37:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21700, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:37:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:37:00.079 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:37:00.085 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21700, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-23 14:38:00.071 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21701, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:38:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:38:00.089 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 14:38:00.096 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21701, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 14:39:00.074 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21702, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:39:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:39:00.094 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:39:00.105 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21702, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-23 14:40:00.145 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21703, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:40:00.145 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2323, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:40:00.176 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:40:00.178 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 14:40:00.185 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:40:00.193 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 15ms +2026-06-23 14:40:00.194 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21703, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 46ms +2026-06-23 14:40:00.202 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2323, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 53ms +2026-06-23 14:41:00.067 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21704, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:41:00.076 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:41:00.085 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:41:00.092 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21704, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-23 14:42:00.067 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21705, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:42:00.078 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:42:00.087 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 14:42:00.095 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21705, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-23 14:43:00.070 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21706, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:43:00.081 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:43:00.089 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 14:43:00.099 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21706, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-23 14:44:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21707, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:44:00.078 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:44:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 3ms +2026-06-23 14:44:00.088 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21707, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-23 14:45:00.056 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1606, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:45:00.058 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21708, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:45:00.062 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 14:45:00.065 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 14:45:00.071 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 14:45:00.072 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 10ms +2026-06-23 14:45:00.077 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21708, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-23 14:45:00.077 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1606, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-23 14:45:00.144 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] +2026-06-23 14:45:00.178 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 14:45:00.196 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 18ms +2026-06-23 14:45:00.205 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 57ms +2026-06-23 15:04:52.640 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute EmailTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:50:00 IST 2026 +2026-06-23 15:04:52.641 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute Report Mailing JobsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 15:00:00 IST 2026 +2026-06-23 15:04:52.641 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Update Email Outbound with campaign messageTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 15:00:00 IST 2026 +2026-06-23 15:04:52.662 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21709, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:04:52.664 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:04:52.669 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:04:52.672 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-23 15:04:52.675 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 15:04:52.676 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2324, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:04:52.680 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 7ms +2026-06-23 15:04:52.681 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21709, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-23 15:04:52.683 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 15:04:52.687 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-23 15:04:52.693 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 10ms +2026-06-23 15:04:52.698 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Send Asynchronous EventsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:47:00 IST 2026 +2026-06-23 15:04:52.701 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2324, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 15:04:52.710 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1607, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:04:52.717 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21710, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:04:52.720 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-23 15:04:52.723 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:04:52.728 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-23 15:04:52.733 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms +2026-06-23 15:04:52.734 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21710, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 14ms +2026-06-23 15:04:52.740 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1607, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 15:04:53.904 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=19m22s639ms643µs200ns). +2026-06-23 15:04:56.352 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=19m22s639ms412µs500ns). +2026-06-23 15:05:00.045 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21711, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:05:00.056 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:05:00.063 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 15:05:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21711, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-23 15:05:14.324 WARN [https-jsse-nio-8443-exec-6] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 15:05:14.330 ERROR [https-jsse-nio-8443-exec-6] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause +java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null + at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) + at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) + at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) + at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 15:05:19.627 WARN [https-jsse-nio-8443-exec-8] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 15:05:58.297 WARN [https-jsse-nio-8443-exec-7] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 15:06:00.060 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21712, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:06:00.067 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:06:00.073 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 15:06:00.081 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21712, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-23 15:07:00.048 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21713, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:07:00.055 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:07:00.061 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 15:07:00.068 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21713, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-23 15:08:00.067 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21714, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:08:00.077 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:08:00.083 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 15:08:00.093 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21714, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-23 15:09:00.163 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21715, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:09:00.208 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:09:00.214 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-23 15:09:00.220 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21715, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 55ms +2026-06-23 15:10:00.065 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2325, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:10:00.071 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-23 15:10:00.080 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21716, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:10:00.089 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 17ms +2026-06-23 15:10:00.092 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:10:00.098 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2325, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-23 15:10:00.101 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-23 15:10:00.114 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21716, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-23 15:11:00.036 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21717, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:11:00.048 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:11:00.054 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-23 15:11:00.064 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21717, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-23 15:11:47.995 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg + at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) + at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) + at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) + at java.base/java.nio.file.Files.newByteChannel(Files.java:379) + at java.base/java.nio.file.Files.newByteChannel(Files.java:431) + at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) + at java.base/java.nio.file.Files.newInputStream(Files.java:159) + at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) + at java.base/java.util.Optional.map(Optional.java:260) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) + at java.base/java.util.Optional.flatMap(Optional.java:289) + at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) + at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-23 15:12:00.077 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21718, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:12:00.088 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:12:00.098 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-23 15:12:00.107 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21718, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-23 15:13:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21719, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:13:00.077 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:13:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-23 15:13:00.086 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21719, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-23 15:14:00.072 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21720, type=class java.lang.Long, identifying=true}'}] +2026-06-23 15:14:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-23 15:14:00.088 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-23 15:14:00.094 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21720, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms diff --git a/fineract-provider/src/main/resources/application.properties b/fineract-provider/src/main/resources/application.properties index 3432b0ff3..e0df305eb 100644 --- a/fineract-provider/src/main/resources/application.properties +++ b/fineract-provider/src/main/resources/application.properties @@ -46,7 +46,7 @@ fineract.security.oauth2.client.registrations.frontend-client.require-authorizat fineract.tenant.host=${FINERACT_DEFAULT_TENANTDB_HOSTNAME:localhost} fineract.tenant.port=${FINERACT_DEFAULT_TENANTDB_PORT:5432} fineract.tenant.username=${FINERACT_DEFAULT_TENANTDB_UID:postgres} -fineract.tenant.password=${FINERACT_DEFAULT_TENANTDB_PWD:root} +fineract.tenant.password=${FINERACT_DEFAULT_TENANTDB_PWD:Keshav@898966} fineract.tenant.parameters=${FINERACT_DEFAULT_TENANTDB_CONN_PARAMS:} fineract.tenant.timezone=${FINERACT_DEFAULT_TENANTDB_TIMEZONE:Asia/Kolkata} fineract.tenant.identifier=${FINERACT_DEFAULT_TENANTDB_IDENTIFIER:default} @@ -407,7 +407,7 @@ server.tomcat.mbeanregistry.enabled=${FINERACT_SERVER_TOMCAT_MBEANREGISTRY_ENABL spring.datasource.hikari.driverClassName=${FINERACT_HIKARI_DRIVER_SOURCE_CLASS_NAME:org.postgresql.Driver} spring.datasource.hikari.jdbcUrl=${FINERACT_HIKARI_JDBC_URL:jdbc:postgresql://localhost:5432/fineract_tenants} spring.datasource.hikari.username=${FINERACT_HIKARI_USERNAME:postgres} -spring.datasource.hikari.password=${FINERACT_HIKARI_PASSWORD:313863} +spring.datasource.hikari.password=${FINERACT_HIKARI_PASSWORD:Keshav@898966} spring.datasource.hikari.minimumIdle=${FINERACT_HIKARI_MINIMUM_IDLE:3} spring.datasource.hikari.maximumPoolSize=${FINERACT_HIKARI_MAXIMUM_POOL_SIZE:10} spring.datasource.hikari.idleTimeout=${FINERACT_HIKARI_IDLE_TIMEOUT:60000} From b5c9101fa45219246caa5736adfe7ed8633afbfa Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Wed, 24 Jun 2026 12:47:03 +0530 Subject: [PATCH 2/8] feat: implement teller creation limit and soft delete with cashier check bypass --- .../organisation/teller/domain/Teller.java | 11 +++++++ .../teller/domain/TellerRepository.java | 2 ++ .../domain/TellerRepositoryWrapper.java | 7 +++++ .../TellerAlreadyExistsException.java | 31 +++++++++++++++++++ ...llerManagementReadPlatformServiceImpl.java | 4 +-- .../TellerWritePlatformServiceJpaImpl.java | 19 +++++------- .../db/changelog/tenant/changelog-tenant.xml | 1 + .../parts/0338_add_soft_delete_to_tellers.xml | 31 +++++++++++++++++++ 8 files changed, 92 insertions(+), 14 deletions(-) create mode 100644 fineract-branch/src/main/java/org/apache/fineract/organisation/teller/exception/TellerAlreadyExistsException.java create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0338_add_soft_delete_to_tellers.xml diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java index 91e22d10e..e41e7bc27 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/Teller.java @@ -76,6 +76,9 @@ public class Teller extends AbstractPersistableCustom { @Column(name = "state", nullable = false) private Integer status; + @Column(name = "is_deleted", nullable = false) + private boolean deleted = false; + @OneToMany(mappedBy = "teller", fetch = FetchType.LAZY) private Set cashiers; @@ -161,4 +164,12 @@ public class Teller extends AbstractPersistableCustom { this.office.getId(); this.cashiers.size(); } + + public void delete() { + this.deleted = true; + } + + public boolean isDeleted() { + return this.deleted; + } } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepository.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepository.java index 2fdea2a68..6b4c43e63 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepository.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepository.java @@ -31,4 +31,6 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor; public interface TellerRepository extends JpaRepository, JpaSpecificationExecutor { Collection findTellerByOfficeId(Long officeId); + + long countByDeletedFalse(); } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java index f0b335d1e..494c4069c 100644 --- a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/domain/TellerRepositoryWrapper.java @@ -36,6 +36,9 @@ public class TellerRepositoryWrapper { @Transactional(readOnly = true) public Teller findOneWithNotFoundDetection(final Long id) { final Teller teller = this.repository.findById(id).orElseThrow(() -> new TellerNotFoundException(id)); + if (teller.isDeleted()) { + throw new TellerNotFoundException(id); + } teller.initializeLazyCollections(); return teller; } @@ -51,4 +54,8 @@ public class TellerRepositoryWrapper { public void delete(final Teller teller) { this.repository.delete(teller); } + + public boolean existsAny() { + return this.repository.countByDeletedFalse() > 0; + } } diff --git a/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/exception/TellerAlreadyExistsException.java b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/exception/TellerAlreadyExistsException.java new file mode 100644 index 000000000..a465aa44d --- /dev/null +++ b/fineract-branch/src/main/java/org/apache/fineract/organisation/teller/exception/TellerAlreadyExistsException.java @@ -0,0 +1,31 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.organisation.teller.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class TellerAlreadyExistsException extends AbstractPlatformDomainRuleException { + + private static final String ERROR_MESSAGE_CODE = "error.msg.teller.already.exists"; + private static final String DEFAULT_ERROR_MESSAGE = "Cannot create teller as a teller is already present."; + + public TellerAlreadyExistsException() { + super(ERROR_MESSAGE_CODE, DEFAULT_ERROR_MESSAGE); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java index aa694751a..2f05b3d4a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerManagementReadPlatformServiceImpl.java @@ -120,7 +120,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement try { final TellerMapper tm = new TellerMapper(); - final String sql = "select " + tm.schema() + " where t.id = ?"; + final String sql = "select " + tm.schema() + " where t.id = ? and t.is_deleted = false"; return this.jdbcTemplate.queryForObject(sql, tm, new Object[] { tellerId }); // NOSONAR } catch (final EmptyResultDataAccessException e) { @@ -198,7 +198,7 @@ public class TellerManagementReadPlatformServiceImpl implements TellerManagement hierarchySearchString = hierarchy + "%"; } final TellerMapper tm = new TellerMapper(); - final String sql = "select " + tm.schema() + "where o.hierarchy like ? order by o.hierarchy"; + final String sql = "select " + tm.schema() + "where o.hierarchy like ? and t.is_deleted = false order by o.hierarchy"; return this.jdbcTemplate.query(sql, tm, new Object[] { hierarchySearchString }); // NOSONAR } diff --git a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java index 0561cca45..a2475b4c2 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/organisation/teller/service/TellerWritePlatformServiceJpaImpl.java @@ -46,6 +46,7 @@ import org.apache.fineract.organisation.teller.domain.Teller; import org.apache.fineract.organisation.teller.domain.TellerRepositoryWrapper; import org.apache.fineract.organisation.teller.exception.CashierExistForTellerException; import org.apache.fineract.organisation.teller.exception.CashierNotFoundException; +import org.apache.fineract.organisation.teller.exception.TellerAlreadyExistsException; import org.apache.fineract.organisation.teller.serialization.TellerCommandFromApiJsonDeserializer; import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataIntegrityViolationException; @@ -71,6 +72,10 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer try { this.context.authenticatedUser(); + if (this.tellerRepositoryWrapper.existsAny()) { + throw new TellerAlreadyExistsException(); + } + final Long officeId = command.longValueOfParameterNamed("officeId"); this.fromApiJsonDeserializer.validateForCreateAndUpdateTeller(command.json()); @@ -152,22 +157,12 @@ public class TellerWritePlatformServiceJpaImpl implements TellerWritePlatformSer @Override @Transactional public CommandProcessingResult deleteTeller(Long tellerId) { - // TODO Auto-generated method stub - Teller teller = tellerRepositoryWrapper.findOneWithNotFoundDetection(tellerId); - Set isTellerIdPresentInCashier = teller.getCashiers(); - - for (final Cashier tellerIdInCashier : isTellerIdPresentInCashier) { - if (tellerIdInCashier.getTeller().getId().toString().equalsIgnoreCase(tellerId.toString())) { - throw new CashierExistForTellerException(tellerId); - } - - } - tellerRepositoryWrapper.delete(teller); + teller.delete(); + tellerRepositoryWrapper.saveAndFlush(teller); return new CommandProcessingResultBuilder() // .withEntityId(teller.getId()) // .build(); - } /* diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index 7500d4c10..b25b0f775 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -365,4 +365,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0338_add_soft_delete_to_tellers.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0338_add_soft_delete_to_tellers.xml new file mode 100644 index 000000000..f544cbb71 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0338_add_soft_delete_to_tellers.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + From 8e55b6747ca98b8a59064ca0fa2f0ec303b1fff2 Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Wed, 24 Jun 2026 12:50:35 +0530 Subject: [PATCH 3/8] Merge branch 'feature/minor-update' after resolving conflict in logs --- fineract-provider/logs/fineract.log | 12112 ++++++++++++++++++++------ 1 file changed, 9511 insertions(+), 2601 deletions(-) diff --git a/fineract-provider/logs/fineract.log b/fineract-provider/logs/fineract.log index ff5ddd0a8..99483988b 100644 --- a/fineract-provider/logs/fineract.log +++ b/fineract-provider/logs/fineract.log @@ -1,397 +1,397 @@ -2026-06-23 13:08:44.479 INFO [main] o.apache.fineract.ServerApplication : Starting ServerApplication using Java 21.0.6 with PID 13720 (C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider\build\classes\java\main started by rajpu in C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider) -2026-06-23 13:08:44.484 INFO [main] o.apache.fineract.ServerApplication : No active profile set, falling back to 1 default profile: "default" -2026-06-23 13:09:10.565 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode -2026-06-23 13:09:10.566 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. -2026-06-23 13:09:16.694 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.DocumentRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:16.701 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.ImageRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:16.760 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixReportXBRLNamespaceRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:16.772 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyMappingRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:16.783 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:17.110 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.command.persistence.domain.CommandRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository -2026-06-23 13:09:25.621 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 15002 ms. Found 246 JPA repository interfaces. -2026-06-23 13:09:25.667 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'jpaAuditingHandler' with a different definition: replacing [Root bean: class=org.springframework.data.auditing.AuditingHandler; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] with [Root bean: class=org.apache.fineract.infrastructure.core.auditing.CustomAuditingHandler; scope=prototype; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null] -2026-06-23 13:09:26.047 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'transactionManager' with a different definition: replacing [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=JPAConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.class]] with [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=scheduledJobRunnerConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.class]] -2026-06-23 13:09:26.077 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRepository already defined in the application context, skipping the registration of a jobRepository -2026-06-23 13:09:26.079 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobExplorer already defined in the application context, skipping the registration of a jobExplorer -2026-06-23 13:09:26.080 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobLauncher already defined in the application context, skipping the registration of a jobLauncher -2026-06-23 13:09:26.095 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Finished Spring Batch infrastructure beans configuration in 22 ms. -2026-06-23 13:09:31.926 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode -2026-06-23 13:09:31.927 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode. -2026-06-23 13:09:34.122 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.provisioning.domain.ProvisioningEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.123 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.adhocquery.domain.AdHocRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.124 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.LoanAccountLockRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.127 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.128 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.bulkimport.domain.ImportDocumentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.129 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.130 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.131 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.132 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.133 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.ExternalServicesPropertiesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.134 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.135 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.135 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.136 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.137 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.137 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.TokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.140 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.143 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.143 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.144 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.145 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.146 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.146 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.147 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookTemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.148 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.imps.domain.ImpsTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.148 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.149 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.149 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.150 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.SchedulerDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.150 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntryAggregationTrackingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.151 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntrySummaryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.151 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.152 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.152 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.155 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.otp.domain.OtpLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.156 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.157 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.survey.domain.LikelihoodRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.159 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.interoperation.domain.InteropIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.160 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationMapperRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.162 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.163 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.holiday.domain.HolidayRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.164 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.166 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCategoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.166 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinitionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.167 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.170 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.staff.domain.StaffRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.170 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.171 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountAssociationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.174 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.174 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.175 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.StandingInstructionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.176 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.AddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.176 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.FieldConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.177 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.177 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.179 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.180 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.180 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.181 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.182 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.184 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.185 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.187 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.188 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.189 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.189 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.190 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.ckyc.domain.CkycBatchRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.190 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientAddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.191 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.192 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientFamilyMembersRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.192 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNonPersonRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.193 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.195 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransferDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.195 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomainRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateral.domain.LoanCollateralRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.196 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterAuditRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.197 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.197 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.SavingsTxnDenominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.198 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionApprovalStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.198 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCandidateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.199 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCeoPrecheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.199 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.200 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionEligibilityCheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.200 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionNominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.201 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionPostRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.201 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionResultRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.202 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionVoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.203 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.BankIfscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.203 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.CustomerTransferLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.204 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferEventRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.204 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.TransferLimitConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.VerificationTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.205 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fund.domain.FundRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.206 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupLevelRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.207 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.209 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.209 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.210 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMixRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.210 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.211 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.domain.MeetingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.211 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.note.domain.NoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.214 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.rate.domain.RateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.215 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.216 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.216 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.217 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.222 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.223 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.223 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.224 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.224 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.225 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.225 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.226 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPTRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.226 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.device.domain.DeviceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.227 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.227 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.228 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.229 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.230 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.230 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.231 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.232 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.LookupTableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.232 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.ScorecardRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.233 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.SurveyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.234 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.template.domain.TemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.234 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserPreviousPasswordRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.235 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.235 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.236 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PermissionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.236 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.RoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.237 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.237 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.238 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.239 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.239 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.240 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.240 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappingsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.241 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.241 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyRangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.242 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyActionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.242 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.243 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.243 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.GLIMAccountInfoRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.244 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAccrualActivityRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.244 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidByRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.245 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.246 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.247 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.247 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.248 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.248 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.249 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.249 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.250 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.251 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgingParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.251 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.252 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.253 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.254 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.255 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.256 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.256 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.257 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.258 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlabRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FacilityChargeMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.259 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.260 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.261 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.261 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.262 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.262 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.263 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.BatchBusinessStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.264 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.265 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.265 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.266 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.267 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.closure.domain.GLClosureRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.267 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.268 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.TrialBalanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.268 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.269 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.269 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.rule.domain.AccountingRuleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.270 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.floatingrates.domain.FloatingRateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.270 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.charge.domain.ChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.277 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxComponentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.277 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxGroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.278 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TFAccessTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.279 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TwoFactorConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.295 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.GLAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.298 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.commands.domain.CommandSourceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.299 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.businessdate.domain.BusinessDateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.300 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.cache.domain.PlatformCacheRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.306 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.306 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeValueRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.307 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.311 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.rbifeed.domain.RbiFeedItemRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.312 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.312 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.317 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.318 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.CfcfrmsSimulatorLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.318 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintAuditLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.319 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintTicketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.319 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientForm60Repository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.327 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.327 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.331 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNomineeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.331 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.332 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientEouRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.342 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientImportExportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.346 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMsmeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMudraBorrowerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientNonPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.353 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientStartupIndiaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.355 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.mobilelookup.domain.MobileLookupLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.356 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.356 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.358 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.360 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsScreeningLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.362 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.BankUserDscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.362 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.DscChallengeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:34.363 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.mfa.domain.UserMfaFactorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. -2026-06-23 13:09:35.575 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 3640 ms. Found 6 JDBC repository interfaces. -2026-06-23 13:09:42.932 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. -2026-06-23 13:09:42.955 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. -2026-06-23 13:09:47.409 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'fineract-org.apache.fineract.infrastructure.core.config.FineractProperties' of type [org.apache.fineract.infrastructure.core.config.FineractProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:47.452 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'cacheConfig' of type [org.apache.fineract.infrastructure.core.config.cache.CacheConfig$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.066 INFO [main] org.reflections.Reflections : Reflections took 25 ms to scan 1 urls, producing 0 keys and 0 values -2026-06-23 13:09:48.077 WARN [main] o.a.f.i.c.config.cache.CacheConfig : The following cache configurations are defined but cache does not exists: [userTFAccessToken] -2026-06-23 13:09:48.082 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'ehCacheManager' of type [org.springframework.cache.jcache.JCacheCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.112 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'defaultCacheManager' of type [org.apache.fineract.infrastructure.core.config.cache.TransactionBoundCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.136 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'runtimeDelegatingCacheManager' of type [org.apache.fineract.infrastructure.cache.service.RuntimeDelegatingCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.147 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'platformCacheConfiguration' of type [org.apache.fineract.infrastructure.cache.PlatformCacheConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.279 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingConfiguration' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:48.303 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingServiceFactory' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingServiceFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. -2026-06-23 13:09:51.035 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat initialized with port 8443 (https) -2026-06-23 13:09:51.114 INFO [main] o.a.catalina.core.StandardService : Starting service [Tomcat] -2026-06-23 13:09:51.115 INFO [main] o.a.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.49] -2026-06-23 13:09:51.332 INFO [main] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring embedded WebApplicationContext -2026-06-23 13:09:51.350 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 66803 ms -2026-06-23 13:09:52.549 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... -2026-06-23 13:09:53.381 INFO [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@41334af0 -2026-06-23 13:09:53.396 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading tenant store DB at localhost:5432 -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.username: postgres -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.password: **** -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.parameters: -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.timezone: Asia/Kolkata -2026-06-23 13:09:54.796 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.description: Default Demo Tenant -2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.identifier: default -2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.name: fineract_default -2026-06-23 13:09:54.797 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - liquibase.analytics.enabled: false -2026-06-23 13:10:25.862 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant store upgrade finished -2026-06-23 13:10:25.863 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading all tenants -2026-06-23 13:10:25.903 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has started -2026-06-23 13:10:27.549 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting... -2026-06-23 13:10:27.662 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@7fd78920 -2026-06-23 13:10:27.663 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed. -2026-06-23 13:10:59.855 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has finished -2026-06-23 13:10:59.856 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated... -2026-06-23 13:10:59.866 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed. -2026-06-23 13:10:59.867 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant upgrades have successfully finished -2026-06-23 13:11:05.125 INFO [main] o.s.o.j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'jpa-pu' -2026-06-23 13:11:08.586 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : EclipseLink is in classpath; If applicable, EQL parser will be used. -2026-06-23 13:11:08.587 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. -2026-06-23 13:11:11.047 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-blind -2026-06-23 13:11:11.049 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-entry-point -2026-06-23 13:11:11.049 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-timing -2026-06-23 13:11:11.050 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-backend -2026-06-23 13:11:11.050 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-column -2026-06-23 13:11:11.051 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-out-of-bands -2026-06-23 13:11:11.052 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-stacked-query -2026-06-23 13:11:11.052 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-comment -2026-06-23 13:11:11.053 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: main -2026-06-23 13:11:11.054 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: adhoc -2026-06-23 13:11:11.054 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: column -2026-06-23 13:11:13.451 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:13.451 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataById(java.lang.Long) -2026-06-23 13:11:13.461 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataByShortName(java.lang.String) -2026-06-23 13:11:13.505 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getAllData() -2026-06-23 13:11:17.149 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:17.150 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Optional org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findLoanDataForExternalTransferByLoanId(java.lang.Long) -2026-06-23 13:11:17.382 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findOldestCOBProcessedLoan(java.time.LocalDate,java.util.Collection) -2026-06-23 13:11:17.399 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllStayedLockedByCobBusinessDate(java.time.LocalDate) -2026-06-23 13:11:21.058 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOnDisbursementDate(java.time.LocalDate,java.util.List,java.util.Collection) -2026-06-23 13:11:21.062 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) -2026-06-23 13:11:21.072 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOrNullByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) -2026-06-23 13:11:21.612 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:21.613 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchTotalUnpaidChargesForLoan(org.apache.fineract.portfolio.loanaccount.domain.Loan) -2026-06-23 13:11:21.956 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findTransactionDataForForeclosureIncome(org.apache.fineract.portfolio.loanaccount.domain.Loan,java.time.LocalDate) -2026-06-23 13:11:22.003 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncomePosting org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findCumulativeIncomeByLoanAndType(org.apache.fineract.portfolio.loanaccount.domain.Loan) -2026-06-23 13:11:22.065 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchLoanTransactionsByTypeAndLessOrEqualDate(org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType,java.time.LocalDate) -2026-06-23 13:11:22.324 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:22.325 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsOldestCobProcessed() -2026-06-23 13:11:22.328 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDate(java.time.LocalDate,java.util.List) -2026-06-23 13:11:22.332 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDateOrNull(java.time.LocalDate,java.util.List) -2026-06-23 13:11:22.387 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAccrualData(java.time.LocalDate,java.lang.Long,java.lang.Integer,java.lang.Integer) -2026-06-23 13:11:25.453 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:25.454 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.event.external.repository.ExternalEventRepository.findByStatusOrderByBusinessDateAscIdAsc(org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventStatus,org.springframework.data.domain.Pageable) -2026-06-23 13:11:30.334 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:30.334 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.organisation.monetary.data.CurrencyData org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findCurrencyDataByCode(java.lang.String) -2026-06-23 13:11:30.336 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) -2026-06-23 13:11:31.249 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:31.250 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository.findInstallmentDelinquencyTags(java.lang.Long) -2026-06-23 13:11:32.434 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:32.434 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findRepaymentPeriodDataByLoanId(java.lang.Long) -2026-06-23 13:11:32.447 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) -2026-06-23 13:11:34.386 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:34.386 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanBuyDownFeeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) -2026-06-23 13:11:34.594 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:34.594 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean,java.util.List) -2026-06-23 13:11:34.601 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean) -2026-06-23 13:11:38.439 INFO [main] o.a.f.i.e.b.s.BusinessEventNotifierServiceImpl : External event posting is disabled -2026-06-23 13:11:39.460 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:39.461 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) -2026-06-23 13:11:42.245 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:11:42.247 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository.findAmortizationMappingsByBaseTransactionAndLoan(java.lang.Long,java.lang.Long) -2026-06-23 13:11:51.394 INFO [main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: POSTGRES -2026-06-23 13:11:51.428 INFO [main] o.s.b.c.l.s.TaskExecutorJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor. -2026-06-23 13:11:56.008 INFO [main] o.a.f.i.r.p.ReportingProcessServiceProvider : Registered report service 'org.apache.fineract.infrastructure.dataqueries.service.DatatableReportingProcessService@2b8ef5c7' for type/s '[Table, Chart, SMS]' -2026-06-23 13:11:56.419 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.cbs.private-key-path not set — CBS private key NOT loaded -2026-06-23 13:11:56.419 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.lincpay.public-key-path not set — LincPay public key NOT loaded -2026-06-23 13:12:12.349 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] lookup by external_id 'FUNDTRANSFER_SUSPENSE' failed: org.springframework.orm.jpa.JpaSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.2.v202306161219): org.eclipse.persistence.exceptions.DatabaseException +2026-06-24 10:35:12.723 INFO [main] o.apache.fineract.ServerApplication : Starting ServerApplication using Java 21.0.6 with PID 9328 (C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider\build\classes\java\main started by rajpu in C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider) +2026-06-24 10:35:12.746 INFO [main] o.apache.fineract.ServerApplication : No active profile set, falling back to 1 default profile: "default" +2026-06-24 10:35:37.168 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-24 10:35:37.169 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2026-06-24 10:35:39.329 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.DocumentRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:39.332 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.ImageRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:39.353 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixReportXBRLNamespaceRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:39.356 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyMappingRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:39.360 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:39.507 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.command.persistence.domain.CommandRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 10:35:42.073 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 4881 ms. Found 246 JPA repository interfaces. +2026-06-24 10:35:42.097 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'jpaAuditingHandler' with a different definition: replacing [Root bean: class=org.springframework.data.auditing.AuditingHandler; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] with [Root bean: class=org.apache.fineract.infrastructure.core.auditing.CustomAuditingHandler; scope=prototype; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null] +2026-06-24 10:35:42.251 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'transactionManager' with a different definition: replacing [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=JPAConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.class]] with [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=scheduledJobRunnerConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.class]] +2026-06-24 10:35:42.256 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRepository already defined in the application context, skipping the registration of a jobRepository +2026-06-24 10:35:42.256 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobExplorer already defined in the application context, skipping the registration of a jobExplorer +2026-06-24 10:35:42.257 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobLauncher already defined in the application context, skipping the registration of a jobLauncher +2026-06-24 10:35:42.260 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Finished Spring Batch infrastructure beans configuration in 6 ms. +2026-06-24 10:35:44.029 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-24 10:35:44.030 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode. +2026-06-24 10:35:44.442 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.provisioning.domain.ProvisioningEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.443 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.adhocquery.domain.AdHocRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.444 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.LoanAccountLockRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.445 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.446 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.bulkimport.domain.ImportDocumentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.447 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.447 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.448 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.448 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.449 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.ExternalServicesPropertiesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.449 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.449 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.450 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.450 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.451 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.451 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.TokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.452 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.452 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.454 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.454 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.454 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.454 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.455 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.455 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.455 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.455 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.455 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookTemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.456 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.imps.domain.ImpsTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.457 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.457 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.458 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.458 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.SchedulerDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.458 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntryAggregationTrackingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.458 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntrySummaryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.459 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.459 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.459 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.460 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.otp.domain.OtpLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.461 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.461 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.survey.domain.LikelihoodRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.461 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.interoperation.domain.InteropIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.462 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationMapperRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.462 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.462 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.holiday.domain.HolidayRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCategoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinitionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.staff.domain.StaffRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountAssociationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.463 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.StandingInstructionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.AddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.FieldConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.467 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.469 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.469 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.469 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.469 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.470 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.470 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.471 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.472 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.472 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.ckyc.domain.CkycBatchRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.472 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientAddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.472 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.473 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientFamilyMembersRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.474 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNonPersonRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.474 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.475 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransferDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.475 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.476 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomainRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.476 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateral.domain.LoanCollateralRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.477 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterAuditRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.477 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.477 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.SavingsTxnDenominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.477 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionApprovalStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.478 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCandidateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.478 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCeoPrecheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.478 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.479 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionEligibilityCheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.479 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionNominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.479 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionPostRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.480 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionResultRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.480 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionVoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.481 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.BankIfscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.481 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.CustomerTransferLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.481 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferEventRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.482 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.482 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.TransferLimitConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.482 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.VerificationTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.483 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fund.domain.FundRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.483 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupLevelRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.484 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.484 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.484 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.485 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.485 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.485 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMixRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.486 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.486 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.domain.MeetingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.488 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.note.domain.NoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.490 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.rate.domain.RateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.491 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.491 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.492 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.492 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.495 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.496 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.496 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.496 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.497 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.497 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.497 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.499 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPTRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.500 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.device.domain.DeviceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.500 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.501 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.501 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.503 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.503 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.504 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.505 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.505 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.LookupTableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.506 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.ScorecardRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.506 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.SurveyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.507 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.template.domain.TemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.508 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserPreviousPasswordRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.509 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.509 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.509 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PermissionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.510 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.RoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.510 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.510 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.510 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.511 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappingsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.512 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.512 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyRangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.512 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyActionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.512 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.512 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.513 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.GLIMAccountInfoRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.514 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAccrualActivityRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.514 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.515 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.515 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidByRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.515 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.515 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.516 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.516 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.516 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.516 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.517 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgingParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.518 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.519 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.519 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.519 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.520 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.521 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.521 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.522 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.522 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.523 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlabRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.523 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FacilityChargeMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.523 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.524 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.524 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.525 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.525 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.525 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.526 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.526 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.526 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.526 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.526 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.BatchBusinessStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.closure.domain.GLClosureRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.527 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.TrialBalanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.528 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.528 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.528 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.rule.domain.AccountingRuleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.528 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.floatingrates.domain.FloatingRateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.528 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.charge.domain.ChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.530 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxComponentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.530 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxGroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.530 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TFAccessTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.531 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TwoFactorConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.534 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.GLAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.535 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.commands.domain.CommandSourceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.535 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.businessdate.domain.BusinessDateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.cache.domain.PlatformCacheRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeValueRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.rbifeed.domain.RbiFeedItemRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.536 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.537 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.537 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.CfcfrmsSimulatorLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.537 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintAuditLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.538 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintTicketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.538 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientForm60Repository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.543 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.544 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.545 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNomineeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.545 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.545 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientEouRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.545 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientImportExportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.545 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMsmeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.546 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMudraBorrowerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.547 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientNonPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.547 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.548 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientStartupIndiaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.548 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.mobilelookup.domain.MobileLookupLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.549 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.549 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.549 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.549 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsScreeningLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.550 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.BankUserDscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.551 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.DscChallengeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:44.551 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.mfa.domain.UserMfaFactorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 10:35:45.084 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 1052 ms. Found 6 JDBC repository interfaces. +2026-06-24 10:35:48.963 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. +2026-06-24 10:35:48.993 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. +2026-06-24 10:35:52.655 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'fineract-org.apache.fineract.infrastructure.core.config.FineractProperties' of type [org.apache.fineract.infrastructure.core.config.FineractProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:52.694 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'cacheConfig' of type [org.apache.fineract.infrastructure.core.config.cache.CacheConfig$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.380 INFO [main] org.reflections.Reflections : Reflections took 29 ms to scan 1 urls, producing 0 keys and 0 values +2026-06-24 10:35:53.394 WARN [main] o.a.f.i.c.config.cache.CacheConfig : The following cache configurations are defined but cache does not exists: [userTFAccessToken] +2026-06-24 10:35:53.400 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'ehCacheManager' of type [org.springframework.cache.jcache.JCacheCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.454 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'defaultCacheManager' of type [org.apache.fineract.infrastructure.core.config.cache.TransactionBoundCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.484 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'runtimeDelegatingCacheManager' of type [org.apache.fineract.infrastructure.cache.service.RuntimeDelegatingCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.502 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'platformCacheConfiguration' of type [org.apache.fineract.infrastructure.cache.PlatformCacheConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.660 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingConfiguration' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:53.685 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingServiceFactory' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingServiceFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 10:35:56.168 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat initialized with port 8443 (https) +2026-06-24 10:35:56.223 INFO [main] o.a.catalina.core.StandardService : Starting service [Tomcat] +2026-06-24 10:35:56.224 INFO [main] o.a.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.49] +2026-06-24 10:35:56.349 INFO [main] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring embedded WebApplicationContext +2026-06-24 10:35:56.351 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 43480 ms +2026-06-24 10:35:56.995 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2026-06-24 10:35:58.184 INFO [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@511966dc +2026-06-24 10:35:58.189 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading tenant store DB at localhost:5432 +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.username: postgres +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.password: **** +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.parameters: +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.timezone: Asia/Kolkata +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.description: Default Demo Tenant +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.identifier: default +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.name: fineract_default +2026-06-24 10:35:58.665 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - liquibase.analytics.enabled: false +2026-06-24 10:36:12.483 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant store upgrade finished +2026-06-24 10:36:12.483 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading all tenants +2026-06-24 10:36:12.521 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has started +2026-06-24 10:36:13.132 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting... +2026-06-24 10:36:13.404 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@5b335b31 +2026-06-24 10:36:13.404 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed. +2026-06-24 10:36:24.955 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has finished +2026-06-24 10:36:24.956 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated... +2026-06-24 10:36:24.960 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed. +2026-06-24 10:36:24.961 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant upgrades have successfully finished +2026-06-24 10:36:28.481 INFO [main] o.s.o.j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'jpa-pu' +2026-06-24 10:36:30.960 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : EclipseLink is in classpath; If applicable, EQL parser will be used. +2026-06-24 10:36:30.961 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2026-06-24 10:36:32.618 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-blind +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-entry-point +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-timing +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-backend +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-column +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-out-of-bands +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-stacked-query +2026-06-24 10:36:32.619 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-comment +2026-06-24 10:36:32.620 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: main +2026-06-24 10:36:32.620 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: adhoc +2026-06-24 10:36:32.621 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: column +2026-06-24 10:36:33.877 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:33.878 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getAllData() +2026-06-24 10:36:33.901 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataById(java.lang.Long) +2026-06-24 10:36:33.915 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataByShortName(java.lang.String) +2026-06-24 10:36:35.442 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:35.442 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 10:36:35.446 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOnDisbursementDate(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 10:36:35.450 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllStayedLockedByCobBusinessDate(java.time.LocalDate) +2026-06-24 10:36:37.596 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Optional org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findLoanDataForExternalTransferByLoanId(java.lang.Long) +2026-06-24 10:36:37.733 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOrNullByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 10:36:37.747 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findOldestCOBProcessedLoan(java.time.LocalDate,java.util.Collection) +2026-06-24 10:36:37.968 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:37.968 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchTotalUnpaidChargesForLoan(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-24 10:36:38.300 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncomePosting org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findCumulativeIncomeByLoanAndType(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-24 10:36:38.342 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findTransactionDataForForeclosureIncome(org.apache.fineract.portfolio.loanaccount.domain.Loan,java.time.LocalDate) +2026-06-24 10:36:38.358 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchLoanTransactionsByTypeAndLessOrEqualDate(org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType,java.time.LocalDate) +2026-06-24 10:36:38.474 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:38.474 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDate(java.time.LocalDate,java.util.List) +2026-06-24 10:36:38.476 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDateOrNull(java.time.LocalDate,java.util.List) +2026-06-24 10:36:38.478 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsOldestCobProcessed() +2026-06-24 10:36:38.504 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAccrualData(java.time.LocalDate,java.lang.Long,java.lang.Integer,java.lang.Integer) +2026-06-24 10:36:40.175 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:40.175 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.event.external.repository.ExternalEventRepository.findByStatusOrderByBusinessDateAscIdAsc(org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventStatus,org.springframework.data.domain.Pageable) +2026-06-24 10:36:43.148 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:43.148 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-24 10:36:43.150 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.organisation.monetary.data.CurrencyData org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findCurrencyDataByCode(java.lang.String) +2026-06-24 10:36:43.722 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:43.722 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository.findInstallmentDelinquencyTags(java.lang.Long) +2026-06-24 10:36:44.535 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:44.537 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findRepaymentPeriodDataByLoanId(java.lang.Long) +2026-06-24 10:36:44.549 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-24 10:36:45.536 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:45.536 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanBuyDownFeeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-24 10:36:45.633 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:45.634 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean,java.util.List) +2026-06-24 10:36:45.637 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean) +2026-06-24 10:36:47.485 INFO [main] o.a.f.i.e.b.s.BusinessEventNotifierServiceImpl : External event posting is disabled +2026-06-24 10:36:48.033 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:48.033 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-24 10:36:49.311 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:36:49.311 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository.findAmortizationMappingsByBaseTransactionAndLoan(java.lang.Long,java.lang.Long) +2026-06-24 10:36:54.088 INFO [main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: POSTGRES +2026-06-24 10:36:54.116 INFO [main] o.s.b.c.l.s.TaskExecutorJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor. +2026-06-24 10:36:56.504 INFO [main] o.a.f.i.r.p.ReportingProcessServiceProvider : Registered report service 'org.apache.fineract.infrastructure.dataqueries.service.DatatableReportingProcessService@684c6b59' for type/s '[Table, Chart, SMS]' +2026-06-24 10:36:56.787 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.cbs.private-key-path not set — CBS private key NOT loaded +2026-06-24 10:36:56.787 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.lincpay.public-key-path not set — LincPay public key NOT loaded +2026-06-24 10:37:03.690 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] lookup by external_id 'FUNDTRANSFER_SUSPENSE' failed: org.springframework.orm.jpa.JpaSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.2.v202306161219): org.eclipse.persistence.exceptions.DatabaseException Internal Exception: org.postgresql.util.PSQLException: ERROR: relation "m_savings_account" does not exist Position: 2248 Error Code: 0 Call: SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?) bind => [1 parameter bound] Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?)") -2026-06-23 13:12:12.350 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] suspense external_id 'FUNDTRANSFER_SUSPENSE' did not resolve — OFF_US debits will be no-ops until the suspense GL row is created (see Liquibase 0311) -2026-06-23 13:12:13.631 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:12:13.632 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanId(long) -2026-06-23 13:12:13.636 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanIdAndTermType(long,int) -2026-06-23 13:12:13.641 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByExternalLoanIdAndTermType(org.apache.fineract.infrastructure.core.domain.ExternalId,int) -2026-06-23 13:12:13.797 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: -2026-06-23 13:12:13.797 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository.findAllByLoanId(java.lang.Long,org.springframework.data.domain.Pageable) -2026-06-23 13:12:46.331 INFO [main] org.reflections.Reflections : Reflections took 128 ms to scan 1 urls, producing 56 keys and 185 values -2026-06-23 13:12:48.278 WARN [main] o.a.f.p.s.s.FacilityChargeSeederService : FacilityChargeSeeder: skipped — PreparedStatementCallback; bad SQL grammar [SELECT charge_id FROM m_facility_charge_mapping WHERE facility_type = ? AND charge_id IS NOT NULL] -2026-06-23 13:12:50.668 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Starting... -2026-06-23 13:12:50.759 INFO [main] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Added connection org.postgresql.jdbc.PgConnection@35db70d7 -2026-06-23 13:12:50.804 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Start completed. -2026-06-23 13:12:50.826 INFO [main] o.a.f.o.monetary.domain.MoneyHelper : Initialized rounding mode for tenant `default`: HALF_EVEN -2026-06-23 13:12:50.836 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : Starting MoneyHelper initialization for all tenants... -2026-06-23 13:12:50.838 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : MoneyHelper initialization completed -2026-06-23 13:12:50.980 INFO [main] o.a.f.i.e.e.s.message.MessageFactory : Message source set to 51000a79-930a-45e0-bbbe-d9789616b567 -2026-06-23 13:12:56.361 INFO [main] o.a.f.i.e.e.s.ExternalEventConfigurationValidationService : Validating external event configuration for default -2026-06-23 13:12:59.501 WARN [main] o.a.f.i.c.b.FineractWebApplicationConfiguration : Fineract is running in web application mode -2026-06-23 13:12:59.528 INFO [main] o.s.s.c.a.a.c.InitializeAuthenticationProviderBeanManagerConfigurer$InitializeAuthenticationProviderManagerConfigurer : Global AuthenticationManager configured with AuthenticationProvider bean with name customAuthenticationProvider -2026-06-23 13:12:59.532 WARN [main] o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used by Spring Security for automatically configuring username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider. If the current configuration is intentional, to turn off this warning, increase the logging level of 'org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer' to ERROR -2026-06-23 13:13:00.335 INFO [main] o.s.s.w.a.c.ChannelProcessingFilter : Validated configuration attributes -2026-06-23 13:13:04.750 INFO [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoints beneath base path '/actuator' -2026-06-23 13:13:10.418 INFO [main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor -2026-06-23 13:13:10.449 INFO [main] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl -2026-06-23 13:13:10.449 INFO [main] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. -2026-06-23 13:13:10.451 INFO [main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. -2026-06-23 13:13:10.452 INFO [main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' +2026-06-24 10:37:03.690 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] suspense external_id 'FUNDTRANSFER_SUSPENSE' did not resolve — OFF_US debits will be no-ops until the suspense GL row is created (see Liquibase 0311) +2026-06-24 10:37:04.215 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:37:04.215 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanId(long) +2026-06-24 10:37:04.217 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanIdAndTermType(long,int) +2026-06-24 10:37:04.221 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByExternalLoanIdAndTermType(org.apache.fineract.infrastructure.core.domain.ExternalId,int) +2026-06-24 10:37:04.270 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 10:37:04.270 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository.findAllByLoanId(java.lang.Long,org.springframework.data.domain.Pageable) +2026-06-24 10:37:19.445 INFO [main] org.reflections.Reflections : Reflections took 103 ms to scan 1 urls, producing 56 keys and 185 values +2026-06-24 10:37:20.203 WARN [main] o.a.f.p.s.s.FacilityChargeSeederService : FacilityChargeSeeder: skipped — PreparedStatementCallback; bad SQL grammar [SELECT charge_id FROM m_facility_charge_mapping WHERE facility_type = ? AND charge_id IS NOT NULL] +2026-06-24 10:37:21.136 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Starting... +2026-06-24 10:37:21.235 INFO [main] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Added connection org.postgresql.jdbc.PgConnection@d2a762b +2026-06-24 10:37:21.264 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Start completed. +2026-06-24 10:37:21.299 INFO [main] o.a.f.o.monetary.domain.MoneyHelper : Initialized rounding mode for tenant `default`: HALF_EVEN +2026-06-24 10:37:21.311 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : Starting MoneyHelper initialization for all tenants... +2026-06-24 10:37:21.313 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : MoneyHelper initialization completed +2026-06-24 10:37:21.353 INFO [main] o.a.f.i.e.e.s.message.MessageFactory : Message source set to afd7e53e-eab7-49a4-b66a-665b5918df8d +2026-06-24 10:37:24.337 INFO [main] o.a.f.i.e.e.s.ExternalEventConfigurationValidationService : Validating external event configuration for default +2026-06-24 10:37:26.831 WARN [main] o.a.f.i.c.b.FineractWebApplicationConfiguration : Fineract is running in web application mode +2026-06-24 10:37:26.854 INFO [main] o.s.s.c.a.a.c.InitializeAuthenticationProviderBeanManagerConfigurer$InitializeAuthenticationProviderManagerConfigurer : Global AuthenticationManager configured with AuthenticationProvider bean with name customAuthenticationProvider +2026-06-24 10:37:26.858 WARN [main] o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used by Spring Security for automatically configuring username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider. If the current configuration is intentional, to turn off this warning, increase the logging level of 'org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer' to ERROR +2026-06-24 10:37:27.420 INFO [main] o.s.s.w.a.c.ChannelProcessingFilter : Validated configuration attributes +2026-06-24 10:37:29.919 INFO [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoints beneath base path '/actuator' +2026-06-24 10:37:32.669 INFO [main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 10:37:32.692 INFO [main] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 10:37:32.692 INFO [main] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 10:37:32.694 INFO [main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 10:37:32.694 INFO [main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. @@ -399,30 +399,30 @@ Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_typ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. -2026-06-23 13:13:10.453 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. -2026-06-23 13:13:10.453 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 -2026-06-23 13:13:10.453 INFO [main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@40b465b8 -2026-06-23 13:13:14.577 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel -2026-06-23 13:13:14.578 INFO [main] o.s.i.c.PublishSubscribeChannel : Channel 'application.errorChannel' has 1 subscriber(s). -2026-06-23 13:13:14.578 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean '_org.springframework.integration.errorLogger' -2026-06-23 13:13:14.578 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {message-handler} as a subscriber to the 'outboundRequests' channel -2026-06-23 13:13:14.579 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.outboundRequests' has 1 subscriber(s). -2026-06-23 13:13:14.579 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'outboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventManagerConfig.outboundFlow()' -2026-06-23 13:13:14.579 INFO [main] o.s.i.e.i.ApplicationEventListeningMessageProducer : started bean 'eventListener'; defined in: 'class path resource [org/apache/fineract/infrastructure/springbatch/messagehandler/spring/SpringEventWorkerConfig.class]'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.eventListener()' -2026-06-23 13:13:14.580 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {bridge} as a subscriber to the 'inboundFlow.channel#0' channel -2026-06-23 13:13:14.580 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.inboundFlow.channel#0' has 1 subscriber(s). -2026-06-23 13:13:14.580 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'inboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.inboundFlow()' -2026-06-23 13:13:14.581 INFO [main] o.s.i.endpoint.PollingConsumer : started bean 'org.springframework.integration.dsl.StandardIntegrationFlow#0.org.springframework.integration.config.ConsumerEndpointFactoryBean#0' -2026-06-23 13:13:14.949 INFO [main] o.a.t.u.net.NioEndpoint.certificate : Connector [https-jsse-nio-8443], TLS virtual host [_default_], certificate type [UNDEFINED] configured from keystore [C:\Users\rajpu\.keystore] using alias [tomcat] with trust store [null] -2026-06-23 13:13:15.026 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat started on port 8443 (https) with context path '/fineract-provider' -2026-06-23 13:13:15.028 INFO [main] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now -2026-06-23 13:13:15.029 INFO [main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started. -2026-06-23 13:13:15.035 INFO [main] o.apache.fineract.ServerApplication : Started ServerApplication in 272.232 seconds (process running for 273.211) -2026-06-23 13:13:15.232 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor -2026-06-23 13:13:15.235 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl -2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. -2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. -2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1' with instanceId 'NON_CLUSTERED' +2026-06-24 10:37:32.695 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. +2026-06-24 10:37:32.695 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 10:37:32.695 INFO [main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@51f2d1ad +2026-06-24 10:37:35.432 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel +2026-06-24 10:37:35.433 INFO [main] o.s.i.c.PublishSubscribeChannel : Channel 'application.errorChannel' has 1 subscriber(s). +2026-06-24 10:37:35.434 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean '_org.springframework.integration.errorLogger' +2026-06-24 10:37:35.434 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {message-handler} as a subscriber to the 'outboundRequests' channel +2026-06-24 10:37:35.435 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.outboundRequests' has 1 subscriber(s). +2026-06-24 10:37:35.435 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'outboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventManagerConfig.outboundFlow()' +2026-06-24 10:37:35.435 INFO [main] o.s.i.e.i.ApplicationEventListeningMessageProducer : started bean 'eventListener'; defined in: 'class path resource [org/apache/fineract/infrastructure/springbatch/messagehandler/spring/SpringEventWorkerConfig.class]'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.eventListener()' +2026-06-24 10:37:35.435 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {bridge} as a subscriber to the 'inboundFlow.channel#0' channel +2026-06-24 10:37:35.435 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.inboundFlow.channel#0' has 1 subscriber(s). +2026-06-24 10:37:35.435 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'inboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.inboundFlow()' +2026-06-24 10:37:35.441 INFO [main] o.s.i.endpoint.PollingConsumer : started bean 'org.springframework.integration.dsl.StandardIntegrationFlow#0.org.springframework.integration.config.ConsumerEndpointFactoryBean#0' +2026-06-24 10:37:35.729 INFO [main] o.a.t.u.net.NioEndpoint.certificate : Connector [https-jsse-nio-8443], TLS virtual host [_default_], certificate type [UNDEFINED] configured from keystore [C:\Users\rajpu\.keystore] using alias [tomcat] with trust store [null] +2026-06-24 10:37:35.759 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat started on port 8443 (https) with context path '/fineract-provider' +2026-06-24 10:37:35.761 INFO [main] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 10:37:35.761 INFO [main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started. +2026-06-24 10:37:35.764 INFO [main] o.apache.fineract.ServerApplication : Started ServerApplication in 146.447 seconds (process running for 148.542) +2026-06-24 10:37:35.866 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 10:37:35.867 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 10:37:35.867 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 10:37:35.867 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 10:37:35.867 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. @@ -430,17 +430,16 @@ Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_typ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 7 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. -2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1' initialized from an externally provided properties instance. -2026-06-23 13:13:15.235 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 -2026-06-23 13:13:15.238 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@65dd0f8c -2026-06-23 13:13:15.240 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now -2026-06-23 13:13:15.240 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1_$_NON_CLUSTERED started. -2026-06-23 13:13:15.243 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Checking status of job execution with id=12974 -2026-06-23 13:13:15.255 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor -2026-06-23 13:13:15.256 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl -2026-06-23 13:13:15.256 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. -2026-06-23 13:13:15.256 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. -2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group3' with instanceId 'NON_CLUSTERED' +2026-06-24 10:37:35.867 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1' initialized from an externally provided properties instance. +2026-06-24 10:37:35.867 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 10:37:35.869 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@1605bf30 +2026-06-24 10:37:35.869 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 10:37:35.869 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1_$_NON_CLUSTERED started. +2026-06-24 10:37:36.020 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 10:37:36.021 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group3' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. @@ -448,16 +447,16 @@ Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_typ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. -2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group3' initialized from an externally provided properties instance. -2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 -2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@4b25a6f5 -2026-06-23 13:13:15.257 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now -2026-06-23 13:13:15.257 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group3_$_NON_CLUSTERED started. -2026-06-23 13:13:15.282 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor -2026-06-23 13:13:15.284 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group1' with instanceId 'NON_CLUSTERED' +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group3' initialized from an externally provided properties instance. +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@25fe0413 +2026-06-24 10:37:36.021 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 10:37:36.021 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group3_$_NON_CLUSTERED started. +2026-06-24 10:37:36.054 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 10:37:36.055 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group1' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. @@ -465,16 +464,16 @@ Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_typ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group1' initialized from an externally provided properties instance. -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 -2026-06-23 13:13:15.284 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@37851ccf -2026-06-23 13:13:15.285 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now -2026-06-23 13:13:15.285 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group1_$_NON_CLUSTERED started. -2026-06-23 13:13:15.302 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor -2026-06-23 13:13:15.302 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group4' with instanceId 'NON_CLUSTERED' +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group1' initialized from an externally provided properties instance. +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@24734df0 +2026-06-24 10:37:36.055 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 10:37:36.055 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group1_$_NON_CLUSTERED started. +2026-06-24 10:37:36.071 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 10:37:36.072 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group4' with instanceId 'NON_CLUSTERED' Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. NOT STARTED. Currently in standby mode. @@ -482,241 +481,257 @@ Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_typ Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group4' initialized from an externally provided properties instance. -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@6ba5bf35 -2026-06-23 13:13:15.303 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now -2026-06-23 13:13:15.303 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group4_$_NON_CLUSTERED started. -2026-06-23 13:13:15.355 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Attempting to resume job with name=FETCH_RBI_RSS_FEEDS and parameters={'run.id':'{value=47, type=class java.lang.Long, identifying=true}'} -2026-06-23 13:13:15.694 INFO [FineractEvent-15] o.a.f.i.j.s.JobSchedulerServiceImpl : Scheduling batch jobs has finished -2026-06-23 13:14:00.254 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21628, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:14:00.365 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:14:00.420 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 54ms -2026-06-23 13:14:00.439 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21628, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 138ms -2026-06-23 13:15:00.086 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:15:00.100 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 13:15:00.124 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1598, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:15:00.124 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21629, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:15:00.126 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 26ms -2026-06-23 13:15:00.136 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms -2026-06-23 13:15:00.138 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:15:00.140 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 13:15:00.148 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:15:00.160 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21629, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms -2026-06-23 13:15:00.163 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 23ms -2026-06-23 13:15:00.175 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1598, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms -2026-06-23 13:16:00.083 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21630, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:16:00.097 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:16:00.107 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms -2026-06-23 13:16:00.119 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21630, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms -2026-06-23 13:17:00.087 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21631, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:17:00.141 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:17:00.149 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 13:17:00.159 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21631, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 66ms -2026-06-23 13:18:00.070 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21632, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:18:00.081 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:18:00.087 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:18:00.094 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21632, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 13:19:00.073 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21633, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:19:00.088 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:19:00.098 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms -2026-06-23 13:19:00.112 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21633, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 35ms -2026-06-23 13:19:12.322 INFO [https-jsse-nio-8443-exec-5] o.a.tomcat.util.http.parser.Cookie : A cookie header was received [g_state={"i_l":0,"i_ll":1769423112115,"i_b":"xmh/CdrKs4bTH66oBkSJ4quW+RT3rA0eV9NBTGn/Hfs","i_e":{"enable_itp_optimization":0}};] that contained an invalid cookie. That cookie will be ignored. +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group4' initialized from an externally provided properties instance. +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@6fbaff3d +2026-06-24 10:37:36.072 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 10:37:36.072 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group4_$_NON_CLUSTERED started. +2026-06-24 10:37:36.106 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Checking status of job execution with id=12974 +2026-06-24 10:37:36.180 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Attempting to resume job with name=FETCH_RBI_RSS_FEEDS and parameters={'run.id':'{value=47, type=class java.lang.Long, identifying=true}'} +2026-06-24 10:37:36.220 INFO [FineractEvent-15] o.a.f.i.j.s.JobSchedulerServiceImpl : Scheduling batch jobs has finished +2026-06-24 10:38:00.229 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21788, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:38:00.311 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:38:00.339 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 26ms +2026-06-24 10:38:00.347 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21788, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 88ms +2026-06-24 10:38:36.530 INFO [https-jsse-nio-8443-exec-3] o.a.tomcat.util.http.parser.Cookie : A cookie header was received [g_state={"i_l":0,"i_ll":1769423112115,"i_b":"xmh/CdrKs4bTH66oBkSJ4quW+RT3rA0eV9NBTGn/Hfs","i_e":{"enable_itp_optimization":0}};] that contained an invalid cookie. That cookie will be ignored. Note: further occurrences of this error will be logged at DEBUG level. -2026-06-23 13:19:12.345 INFO [https-jsse-nio-8443-exec-5] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring DispatcherServlet 'dispatcherServlet' -2026-06-23 13:19:12.346 INFO [https-jsse-nio-8443-exec-5] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' -2026-06-23 13:19:12.390 INFO [https-jsse-nio-8443-exec-5] o.s.web.servlet.DispatcherServlet : Completed initialization in 43 ms -2026-06-23 13:19:32.688 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource will be ignored. -2026-06-23 13:19:32.688 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.adhocquery.api.AdHocApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.adhocquery.api.AdHocApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanAccountLockApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanAccountLockApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.AuditsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.AuditsApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.MakercheckersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.MakercheckersApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource will be ignored. -2026-06-23 13:19:32.689 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodesApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource will be ignored. -2026-06-23 13:19:32.690 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.hooks.api.HookApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.hooks.api.HookApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource will be ignored. -2026-06-23 13:19:32.691 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.sms.api.SmsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.sms.api.SmsApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.interoperation.api.InteropApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.interoperation.api.InteropApiResource will be ignored. -2026-06-23 13:19:32.692 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.notification.api.NotificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.notification.api.NotificationApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficesApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.staff.api.StaffApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.staff.api.StaffApiResource will be ignored. -2026-06-23 13:19:32.693 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.694 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.695 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource will be ignored. -2026-06-23 13:19:32.696 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientKycApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientKycApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientsApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource will be ignored. -2026-06-23 13:19:32.697 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fund.api.FundsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fund.api.FundsApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.CentersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.CentersApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource will be ignored. -2026-06-23 13:19:32.698 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.note.api.NotesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.note.api.NotesApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.products.api.ProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.products.api.ProductsApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.rate.api.RateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.rate.api.RateApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource will be ignored. -2026-06-23 13:19:32.699 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource will be ignored. -2026-06-23 13:19:32.700 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource will be ignored. -2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource will be ignored. -2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource will be ignored. -2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource will be ignored. -2026-06-23 13:19:32.701 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.search.api.SearchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.search.api.SearchApiResource will be ignored. -2026-06-23 13:19:32.702 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.template.api.TemplatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.template.api.TemplatesApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PermissionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PermissionsApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.RolesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.RolesApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.UsersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.UsersApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.DscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.DscApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource will be ignored. -2026-06-23 13:19:32.703 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource will be ignored. -2026-06-23 13:19:32.704 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource will be ignored. -2026-06-23 13:19:32.705 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.CashierApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.CashierApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.charge.api.ChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.charge.api.ChargesApiResource will be ignored. -2026-06-23 13:19:32.706 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixReportApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.batch.api.BatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.batch.api.BatchApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.cache.api.CacheApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.cache.api.CacheApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource will be ignored. -2026-06-23 13:19:32.707 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource will be ignored. -2026-06-23 13:19:36.217 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +2026-06-24 10:38:36.550 INFO [https-jsse-nio-8443-exec-3] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2026-06-24 10:38:36.551 INFO [https-jsse-nio-8443-exec-3] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2026-06-24 10:38:36.564 INFO [https-jsse-nio-8443-exec-3] o.s.web.servlet.DispatcherServlet : Completed initialization in 13 ms +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.adhocquery.api.AdHocApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.adhocquery.api.AdHocApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanAccountLockApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanAccountLockApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.AuditsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.AuditsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.MakercheckersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.MakercheckersApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodesApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.hooks.api.HookApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.hooks.api.HookApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.sms.api.SmsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.sms.api.SmsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.interoperation.api.InteropApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.interoperation.api.InteropApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.notification.api.NotificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.notification.api.NotificationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficesApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.staff.api.StaffApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.staff.api.StaffApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.016 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.030 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientKycApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientKycApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource will be ignored. +2026-06-24 10:38:57.031 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fund.api.FundsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fund.api.FundsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.CentersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.CentersApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.note.api.NotesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.note.api.NotesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.products.api.ProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.products.api.ProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.rate.api.RateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.rate.api.RateApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.search.api.SearchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.search.api.SearchApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.template.api.TemplatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.template.api.TemplatesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PermissionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PermissionsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.RolesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.RolesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.UsersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.UsersApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.DscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.DscApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.CashierApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.CashierApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource will be ignored. +2026-06-24 10:38:57.033 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.charge.api.ChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.charge.api.ChargesApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixReportApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.batch.api.BatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.batch.api.BatchApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.cache.api.CacheApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.cache.api.CacheApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource will be ignored. +2026-06-24 10:38:57.042 WARN [https-jsse-nio-8443-exec-10] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource will be ignored. +2026-06-24 10:39:00.090 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21789, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:39:00.113 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:39:00.131 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 18ms +2026-06-24 10:39:00.147 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21789, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 51ms +2026-06-24 10:40:00.053 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2332, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:40:00.063 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 10:40:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21790, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:40:00.076 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:40:00.082 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 10:40:00.088 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 24ms +2026-06-24 10:40:00.089 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21790, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 10:40:00.094 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2332, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms +2026-06-24 10:41:00.036 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21791, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:41:00.046 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:41:00.054 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 10:41:00.062 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21791, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 10:42:00.041 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21792, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:42:00.047 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:42:00.053 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 10:42:00.061 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21792, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-24 10:43:00.037 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21793, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:43:00.044 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:43:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 38ms +2026-06-24 10:43:00.091 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21793, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 51ms +2026-06-24 10:44:00.038 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21794, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:44:00.044 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:44:00.051 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 10:44:00.055 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21794, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 10:45:00.086 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21795, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:45:00.088 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1610, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:45:00.105 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:45:00.109 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 10:45:00.120 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 15ms +2026-06-24 10:45:00.136 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21795, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 44ms +2026-06-24 10:45:00.178 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 68ms +2026-06-24 10:45:00.200 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1610, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 104ms +2026-06-24 10:45:00.363 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1608, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:45:00.436 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 10:45:00.504 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 68ms +2026-06-24 10:45:00.525 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1608, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 153ms +2026-06-24 10:46:00.098 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21796, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:46:00.119 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:46:00.140 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 19ms +2026-06-24 10:46:00.162 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21796, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 51ms +2026-06-24 10:46:45.211 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred org.springframework.security.authentication.BadCredentialsException: Bad credentials - at org.springframework.security.authentication.dao.DaoAuthenticationProvider.additionalAuthenticationChecks(DaoAuthenticationProvider.java:107) - at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:150) + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) @@ -918,22 +933,14 @@ org.springframework.security.authentication.BadCredentialsException: Bad credent at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:20:00.035 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2316, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:20:00.037 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21634, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:20:00.044 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 13:20:00.046 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:20:00.054 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:20:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21634, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 13:20:00.101 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 56ms -2026-06-23 13:20:00.110 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2316, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 71ms -2026-06-23 13:20:03.375 WARN [https-jsse-nio-8443-exec-3] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 10:47:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21797, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:47:00.071 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:47:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 10:47:00.097 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21797, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 36ms +2026-06-24 10:47:17.774 WARN [https-jsse-nio-8443-exec-3] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -1003,7 +1010,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -1040,7 +1047,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -1066,7 +1073,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -1134,14 +1141,14 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:20:03.390 ERROR [https-jsse-nio-8443-exec-3] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 10:48:00.049 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21798, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:48:00.060 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:48:00.071 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 10:48:00.082 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21798, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 10:48:56.737 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -1211,7 +1218,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -1248,7 +1255,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -1274,7 +1281,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -1342,247 +1349,254 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:20:09.358 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:21:00.074 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21635, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:21:00.090 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:21:00.103 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms -2026-06-23 13:21:00.117 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21635, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms -2026-06-23 13:22:00.040 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21636, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:22:00.050 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:22:00.056 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:22:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21636, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 13:23:00.070 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21637, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:23:00.081 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:23:00.091 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:23:00.101 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21637, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 13:24:00.063 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21638, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:24:00.074 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:24:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:24:00.089 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21638, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 13:24:04.451 WARN [https-jsse-nio-8443-exec-5] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 10:49:00.048 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21799, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:49:00.060 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:49:00.073 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 12ms +2026-06-24 10:49:00.086 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21799, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 10:50:00.050 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2333, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:50:00.054 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21800, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:50:00.062 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 10:50:00.068 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:50:00.081 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 10:50:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 19ms +2026-06-24 10:50:00.092 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21800, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 34ms +2026-06-24 10:50:00.095 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2333, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 40ms +2026-06-24 10:51:00.029 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21801, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:51:00.035 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:51:00.039 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-24 10:51:00.046 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21801, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 10:52:00.054 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21802, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:52:00.065 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:52:00.075 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 10:52:00.085 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21802, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-24 10:53:00.114 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21803, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:53:00.118 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:53:00.133 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 14ms +2026-06-24 10:53:00.142 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21803, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 10:54:00.043 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21804, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:54:00.054 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:54:00.065 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 10:54:00.082 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21804, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 35ms +2026-06-24 10:55:00.030 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21805, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:55:00.039 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:55:00.048 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 10:55:00.057 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21805, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 10:56:00.074 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21806, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:56:00.093 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:56:00.108 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-24 10:56:00.125 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21806, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 46ms +2026-06-24 10:57:00.085 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21807, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:57:00.100 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:57:00.111 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 10:57:00.123 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21807, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 10:58:00.144 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21808, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:58:00.167 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:58:00.185 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in +2026-06-24 10:58:00.204 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21808, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 41ms +2026-06-24 10:59:00.073 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21809, type=class java.lang.Long, identifying=true}'}] +2026-06-24 10:59:00.088 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 10:59:00.102 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-24 10:59:00.117 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21809, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 38ms +2026-06-24 11:00:00.070 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2334, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:00:00.075 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21810, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:00:00.076 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1609, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:00:00.079 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:00:00.086 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:00:00.089 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 11:00:00.092 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 12ms +2026-06-24 11:00:00.096 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 11:00:00.103 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2334, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 11:00:00.107 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21810, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 11:00:00.116 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 26ms +2026-06-24 11:00:00.125 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1609, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms +2026-06-24 11:00:00.248 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1611, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:00:00.311 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 11:00:00.334 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 22ms +2026-06-24 11:00:00.342 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1611, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 92ms +2026-06-24 11:01:00.026 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21811, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:01:00.034 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:01:00.040 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-24 11:01:00.053 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21811, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 11:02:00.045 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21812, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:02:00.055 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:02:00.063 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:02:00.073 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21812, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 11:03:00.036 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21813, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:03:00.044 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:03:00.052 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:03:00.060 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21813, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:04:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21814, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:04:00.065 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:04:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 16ms +2026-06-24 11:04:00.082 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21814, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-24 11:05:00.077 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21815, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:05:00.079 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:05:00.091 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 12ms +2026-06-24 11:05:00.098 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21815, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:06:00.076 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21816, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:06:00.087 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:06:00.093 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:06:00.102 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21816, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 11:07:00.172 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21817, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:07:00.222 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:07:00.234 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 12ms +2026-06-24 11:07:00.244 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21817, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 68ms +2026-06-24 11:08:00.066 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21818, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:08:00.076 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:08:00.082 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:08:00.090 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21818, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-24 11:09:00.078 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21819, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:09:00.092 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:09:00.101 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 11:09:00.111 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21819, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 11:10:00.081 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21820, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:10:00.090 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:10:00.098 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:10:00.106 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21820, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-24 11:10:00.127 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2335, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:10:00.140 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:10:00.158 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 18ms +2026-06-24 11:10:00.167 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2335, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 36ms +2026-06-24 11:11:00.076 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21821, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:11:00.089 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:11:00.098 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:11:00.106 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21821, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms +2026-06-24 11:12:00.075 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21822, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:12:00.087 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:12:00.099 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 11:12:00.109 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21822, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-24 11:13:00.072 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21823, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:13:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:13:00.091 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:13:00.101 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21823, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 11:14:00.062 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21824, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:14:00.067 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:14:00.072 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-24 11:14:00.080 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21824, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 11:15:00.062 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1612, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:15:00.071 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 11:15:00.071 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21825, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:15:00.079 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:15:00.083 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 12ms +2026-06-24 11:15:00.087 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:15:00.089 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1612, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 11:15:00.094 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21825, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 11:15:00.160 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1610, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:15:00.244 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 11:15:00.266 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 22ms +2026-06-24 11:15:00.277 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1610, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 114ms +2026-06-24 11:16:00.079 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21826, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:16:00.090 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:16:00.097 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:16:00.107 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21826, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 11:17:00.063 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21827, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:17:00.070 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:17:00.076 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:17:00.084 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21827, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:18:00.061 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21828, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:18:00.068 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:18:00.074 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:18:00.081 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21828, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 11:19:00.065 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21829, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:19:00.075 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:19:00.083 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:19:00.092 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21829, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:20:00.061 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2336, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:20:00.069 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:20:00.072 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21830, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:20:00.081 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:20:00.087 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 16ms +2026-06-24 11:20:00.090 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 11:20:00.095 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2336, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 30ms +2026-06-24 11:20:00.100 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21830, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:21:00.078 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21831, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:21:00.090 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:21:00.101 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 11:21:00.112 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21831, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-24 11:22:00.065 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21832, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:22:00.073 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:22:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:22:00.087 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21832, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 11:23:00.069 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21833, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:23:00.079 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:23:00.087 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:23:00.096 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21833, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:24:00.066 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21834, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:24:00.076 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:24:00.084 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:24:00.094 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21834, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 11:25:00.066 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21835, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:25:00.074 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:25:00.081 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:25:00.089 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21835, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 11:26:00.048 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21836, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:26:00.056 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:26:00.063 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:26:00.069 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21836, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-24 11:27:00.076 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21837, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:27:00.092 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:27:00.100 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:27:00.109 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21837, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 11:28:00.074 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21838, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:28:00.083 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:28:00.089 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:28:00.096 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21838, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:29:00.067 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21839, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:29:00.077 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:29:00.083 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:29:00.089 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21839, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:30:00.116 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2337, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:30:00.116 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21840, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:30:00.116 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1613, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:30:00.117 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1611, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:30:00.164 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 11:30:00.164 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:30:00.164 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:30:00.164 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 11:30:00.180 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 14ms +2026-06-24 11:30:00.193 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 28ms +2026-06-24 11:30:00.195 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 29ms +2026-06-24 11:30:00.198 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21840, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 77ms +2026-06-24 11:30:00.198 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 33ms +2026-06-24 11:30:00.209 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1611, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 87ms +2026-06-24 11:30:00.213 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1613, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 92ms +2026-06-24 11:30:00.216 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2337, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 95ms +2026-06-24 11:31:00.077 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21841, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:31:00.087 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:31:00.095 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:31:00.101 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21841, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 11:32:00.062 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21842, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:32:00.069 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:32:00.075 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:32:00.082 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21842, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 11:33:00.073 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21843, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:33:00.084 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:33:00.092 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:33:00.100 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21843, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:34:00.091 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21844, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:34:00.103 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:34:00.113 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:34:00.123 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21844, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-24 11:35:00.060 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21845, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:35:00.074 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:35:00.084 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 11:35:00.094 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21845, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-24 11:36:00.074 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21846, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:36:00.083 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:36:00.090 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:36:00.097 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21846, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 11:37:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21847, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:37:00.085 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:37:00.094 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:37:00.103 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21847, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 11:38:00.094 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21848, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:38:00.118 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:38:00.133 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 11:38:00.141 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21848, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 46ms +2026-06-24 11:38:36.043 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -1652,7 +1666,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -1689,7 +1703,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -1715,7 +1729,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -1783,14 +1797,14 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:24:04.460 ERROR [https-jsse-nio-8443-exec-5] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:39:00.080 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21849, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:39:00.094 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:39:00.103 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:39:00.113 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21849, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-24 11:39:30.970 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -1860,7 +1874,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -1897,7 +1911,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -1923,7 +1937,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -1991,279 +2005,18 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:24:10.031 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:25:00.034 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21639, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:25:00.042 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:25:00.051 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 13:25:00.061 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21639, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 13:26:00.080 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21640, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:26:00.091 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:26:00.102 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:26:00.114 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21640, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 13:27:00.061 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21641, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:27:00.069 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:27:00.078 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 13:27:00.086 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21641, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 13:28:00.085 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21642, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:28:00.096 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:28:00.107 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms -2026-06-23 13:28:00.118 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21642, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 13:29:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21643, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:29:00.082 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:29:00.091 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:29:00.100 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21643, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms -2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2317, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:30:00.068 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21644, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:30:00.074 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 13:30:00.076 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:30:00.076 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 13:30:00.082 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:30:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 8ms -2026-06-23 13:30:00.090 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2317, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 13:30:00.090 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms -2026-06-23 13:30:00.091 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21644, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 13:30:00.098 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms -2026-06-23 13:30:00.131 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1599, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:30:00.175 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 13:30:00.195 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 20ms -2026-06-23 13:30:00.206 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1599, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 71ms -2026-06-23 13:31:00.025 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21645, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:31:00.033 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:31:00.039 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:31:00.044 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21645, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 13:32:00.055 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21646, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:32:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:32:00.084 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms -2026-06-23 13:32:00.097 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21646, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms -2026-06-23 13:33:00.023 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21647, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:33:00.028 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:33:00.033 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 13:33:00.038 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21647, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 13ms -2026-06-23 13:33:34.825 WARN [https-jsse-nio-8443-exec-6] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:40:00.031 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2338, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:40:00.034 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21850, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:40:00.039 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:40:00.040 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:40:00.046 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:40:00.051 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 12ms +2026-06-24 11:40:00.053 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21850, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-24 11:40:00.055 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2338, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 11:40:43.369 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -2333,7 +2086,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -2370,7 +2123,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -2396,7 +2149,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -2464,14 +2217,14 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:33:34.939 ERROR [https-jsse-nio-8443-exec-6] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:41:00.062 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21851, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:41:00.071 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:41:00.079 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:41:00.091 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21851, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 11:41:45.098 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -2541,7 +2294,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -2578,7 +2331,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -2604,7 +2357,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -2672,986 +2425,14 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:33:48.178 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:34:00.045 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21648, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:34:00.055 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:34:00.064 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:34:00.075 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21648, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 13:35:00.068 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21649, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:35:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:35:00.089 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:35:00.098 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21649, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 13:35:34.992 WARN [https-jsse-nio-8443-exec-3] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:36:00.054 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21650, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:36:00.063 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:36:00.068 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms -2026-06-23 13:36:00.074 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21650, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 13:37:00.025 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21651, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:37:00.030 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:37:00.034 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 3ms -2026-06-23 13:37:00.039 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21651, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 12ms -2026-06-23 13:38:00.027 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21652, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:38:00.033 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:38:00.038 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms -2026-06-23 13:38:00.043 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21652, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 12ms -2026-06-23 13:39:00.032 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21653, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:39:00.042 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:39:00.052 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:39:00.060 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21653, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms -2026-06-23 13:40:00.054 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2318, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:40:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21654, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:40:00.061 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 13:40:00.065 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:40:00.072 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:40:00.079 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 17ms -2026-06-23 13:40:00.081 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21654, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 13:40:00.084 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2318, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms -2026-06-23 13:41:00.056 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21655, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:41:00.067 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:41:00.076 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:41:00.085 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21655, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 13:42:00.221 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21656, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:42:00.289 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:42:00.299 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:42:00.306 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21656, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 81ms -2026-06-23 13:43:00.079 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21657, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:43:00.090 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:43:00.099 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:43:00.108 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21657, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 13:44:00.079 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21658, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:44:00.092 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:44:00.102 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms -2026-06-23 13:44:00.115 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21658, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms -2026-06-23 13:45:00.069 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:45:00.083 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 13:45:00.111 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 27ms -2026-06-23 13:45:00.122 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 48ms -2026-06-23 13:45:00.151 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:45:00.160 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21659, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:45:00.165 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 13:45:00.179 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:45:00.190 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms -2026-06-23 13:45:00.195 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 28ms -2026-06-23 13:45:00.203 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21659, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 38ms -2026-06-23 13:45:00.206 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1600, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 51ms -2026-06-23 13:46:00.055 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21660, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:46:00.070 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:46:00.079 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:46:00.094 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21660, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 32ms -2026-06-23 13:47:00.071 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21661, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:47:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:47:00.092 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms -2026-06-23 13:47:00.103 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21661, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 13:48:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21662, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:48:00.070 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:48:00.076 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 13:48:00.083 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21662, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms -2026-06-23 13:49:00.064 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21663, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:49:00.072 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:49:00.080 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:49:00.087 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21663, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 13:50:00.066 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2319, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:50:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21664, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:50:00.074 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 13:50:00.077 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:50:00.087 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:50:00.097 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21664, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 13:50:00.115 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 39ms -2026-06-23 13:50:00.125 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2319, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 56ms -2026-06-23 13:51:00.057 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21665, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:51:00.065 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:51:00.074 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:51:00.084 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21665, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 13:51:38.084 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:52:00.072 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21666, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:52:00.086 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:52:00.096 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:52:00.107 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21666, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 30ms -2026-06-23 13:53:00.065 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21667, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:53:00.073 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:53:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 13:53:00.092 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21667, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 13:54:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21668, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:54:00.074 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:54:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:54:00.092 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21668, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 13:55:00.068 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21669, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:55:00.080 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:55:00.094 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 12ms -2026-06-23 13:55:00.106 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21669, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms -2026-06-23 13:55:11.498 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) - at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) - at java.base/java.lang.reflect.Method.invoke(Method.java:580) - at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) - at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) - at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) - at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) - at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) - at org.glassfish.jersey.internal.Errors.process(Errors.java:292) - at org.glassfish.jersey.internal.Errors.process(Errors.java:274) - at org.glassfish.jersey.internal.Errors.process(Errors.java:244) - at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) - at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) - at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) - at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) - at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) - at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) - 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) - at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) - 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) - 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) - at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) - 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) - 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) - 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) - 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) - 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) - at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) - 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - 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:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) - at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) - at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) - at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) - at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) - at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) - at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) - at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) - at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) - at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) - at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) - 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:1774) - at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) - at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) - at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) - at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) - at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:55:18.919 WARN [https-jsse-nio-8443-exec-1] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:42:00.072 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21852, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:42:00.088 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:42:00.103 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-24 11:42:00.115 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21852, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 36ms +2026-06-24 11:42:50.222 WARN [https-jsse-nio-8443-exec-10] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -3721,7 +2502,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -3758,7 +2539,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -3784,7 +2565,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -3852,14 +2633,18 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:55:18.945 ERROR [https-jsse-nio-8443-exec-1] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:43:00.032 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21853, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:43:00.040 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:43:00.047 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:43:00.057 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21853, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms +2026-06-24 11:44:00.061 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21854, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:44:00.068 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:44:00.075 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-24 11:44:00.080 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21854, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 11:44:32.506 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -3929,7 +2714,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -3966,7 +2751,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -3992,7 +2777,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -4060,256 +2845,10 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 13:56:00.059 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21670, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:56:00.074 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:56:00.082 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 13:56:00.091 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21670, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 13:57:00.070 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21671, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:57:00.078 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:57:00.088 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 13:57:00.096 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21671, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 13:58:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21672, type=class java.lang.Long, identifying=true}'}] -2026-06-23 13:58:00.076 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 13:58:00.087 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms -2026-06-23 13:58:00.098 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21672, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 30ms -2026-06-23 14:10:36.978 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=12m43s199ms207µs500ns). -2026-06-23 14:10:39.425 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=12m48s379ms548µs600ns). -2026-06-23 14:10:42.620 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Send Asynchronous EventsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 13:59:00 IST 2026 -2026-06-23 14:10:42.727 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute EmailTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 -2026-06-23 14:10:42.728 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute Report Mailing JobsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 -2026-06-23 14:10:42.728 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Update Email Outbound with campaign messageTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:00:00 IST 2026 -2026-06-23 14:10:42.864 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:10:42.864 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21673, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:10:42.865 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:10:42.865 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2320, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:10:42.912 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 14:10:42.921 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 14:10:42.932 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21673, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 62ms -2026-06-23 14:10:42.935 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 23ms -2026-06-23 14:10:42.941 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 29ms -2026-06-23 14:10:42.942 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 30ms -2026-06-23 14:10:42.944 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2320, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 74ms -2026-06-23 14:10:42.950 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1601, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 81ms -2026-06-23 14:10:42.952 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 83ms -2026-06-23 14:11:00.044 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21674, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:11:00.053 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:11:00.060 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:11:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21674, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:12:00.069 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21675, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:12:00.077 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:12:00.087 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 14:12:00.093 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21675, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 14:13:00.080 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21676, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:13:00.090 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:13:00.100 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:13:00.110 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21676, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 14:14:00.079 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21677, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:14:00.094 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:14:00.102 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:14:00.109 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21677, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21678, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:15:00.060 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:15:00.068 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 14:15:00.069 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 14:15:00.070 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:15:00.078 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:15:00.082 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms -2026-06-23 14:15:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 13ms -2026-06-23 14:15:00.085 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21678, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 14:15:00.088 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 14:15:00.089 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1602, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 14:16:00.073 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21679, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:16:00.085 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:16:00.094 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:16:00.105 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21679, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 14:17:00.039 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21680, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:17:00.048 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:17:00.053 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms -2026-06-23 14:17:00.061 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21680, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 14:18:00.064 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21681, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:18:00.072 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:18:00.078 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:18:00.085 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21681, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms -2026-06-23 14:19:00.088 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21682, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:19:00.099 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:19:00.106 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:19:00.115 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21682, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 14:20:00.069 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21683, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:20:00.073 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2321, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:20:00.075 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:20:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 14:20:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:20:00.089 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 9ms -2026-06-23 14:20:00.090 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21683, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 14:20:00.096 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2321, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 14:21:00.110 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21684, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:21:00.122 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:21:00.132 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 14:21:00.142 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21684, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 14:22:00.067 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21685, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:22:00.076 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:22:00.083 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:22:00.091 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21685, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:23:00.063 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21686, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:23:00.069 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:23:00.076 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:23:00.084 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21686, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms -2026-06-23 14:24:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21687, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:24:00.073 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:24:00.079 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:24:00.087 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21687, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:25:00.065 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21688, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:25:00.073 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:25:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:25:00.089 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21688, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 14:26:00.043 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21689, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:26:00.054 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:26:00.064 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:26:00.074 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21689, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms -2026-06-23 14:27:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21690, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:27:00.080 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:27:00.088 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:27:00.096 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21690, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:28:00.071 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21691, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:28:00.082 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:28:00.090 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:28:00.098 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21691, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 14:29:00.056 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21692, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:29:00.063 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:29:00.070 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:29:00.079 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21692, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 14:30:00.063 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:30:00.063 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21693, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:30:00.065 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:30:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2322, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:30:00.068 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 14:30:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 14:30:00.077 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:30:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 7ms -2026-06-23 14:30:00.081 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 8ms -2026-06-23 14:30:00.082 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 12ms -2026-06-23 14:30:00.083 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21693, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms -2026-06-23 14:30:00.085 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1603, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms -2026-06-23 14:30:00.086 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:30:00.087 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2322, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms -2026-06-23 14:31:00.066 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21694, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:31:00.077 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:31:00.086 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:31:00.095 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21694, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 14:32:00.068 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21695, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:32:00.079 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:32:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:32:00.095 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21695, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 14:33:00.064 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21696, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:33:00.073 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:33:00.080 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:33:00.088 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21696, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms -2026-06-23 14:33:31.240 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=54s210ms8µs900ns). -2026-06-23 14:33:33.688 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=54s208ms700µs299ns). -2026-06-23 14:34:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21697, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:34:00.118 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:34:00.127 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 14:34:00.135 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21697, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 59ms -2026-06-23 14:35:00.081 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21698, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:35:00.093 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:35:00.102 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 14:35:00.110 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21698, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms -2026-06-23 14:36:00.078 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21699, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:36:00.094 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:36:00.102 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:36:00.111 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21699, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 14:37:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21700, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:37:00.072 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:37:00.079 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:37:00.085 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21700, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms -2026-06-23 14:38:00.071 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21701, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:38:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:38:00.089 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 14:38:00.096 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21701, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 14:39:00.074 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21702, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:39:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:39:00.094 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:39:00.105 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21702, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms -2026-06-23 14:40:00.145 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21703, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:40:00.145 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2323, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:40:00.176 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:40:00.178 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 14:40:00.185 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:40:00.193 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 15ms -2026-06-23 14:40:00.194 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21703, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 46ms -2026-06-23 14:40:00.202 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2323, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 53ms -2026-06-23 14:41:00.067 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21704, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:41:00.076 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:41:00.085 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:41:00.092 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21704, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 21ms -2026-06-23 14:42:00.067 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21705, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:42:00.078 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:42:00.087 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 14:42:00.095 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21705, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms -2026-06-23 14:43:00.070 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21706, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:43:00.081 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:43:00.089 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 14:43:00.099 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21706, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms -2026-06-23 14:44:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21707, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:44:00.078 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:44:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 3ms -2026-06-23 14:44:00.088 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21707, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms -2026-06-23 14:45:00.056 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1606, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:45:00.058 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21708, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:45:00.062 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 14:45:00.065 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 14:45:00.071 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 14:45:00.072 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 10ms -2026-06-23 14:45:00.077 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21708, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms -2026-06-23 14:45:00.077 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1606, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms -2026-06-23 14:45:00.144 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] -2026-06-23 14:45:00.178 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 14:45:00.196 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 18ms -2026-06-23 14:45:00.205 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1604, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 57ms -2026-06-23 15:04:52.640 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute EmailTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:50:00 IST 2026 -2026-06-23 15:04:52.641 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Execute Report Mailing JobsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 15:00:00 IST 2026 -2026-06-23 15:04:52.641 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Update Email Outbound with campaign messageTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 15:00:00 IST 2026 -2026-06-23 15:04:52.662 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21709, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:04:52.664 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:04:52.669 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:04:52.672 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] -2026-06-23 15:04:52.675 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 15:04:52.676 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2324, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:04:52.680 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 7ms -2026-06-23 15:04:52.681 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21709, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms -2026-06-23 15:04:52.683 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 15:04:52.687 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1605, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms -2026-06-23 15:04:52.693 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 10ms -2026-06-23 15:04:52.698 ERROR [Scheduler1_QuartzSchedulerThread] o.a.f.i.j.s.SchedulerTriggerListener : triggerMisfired() trigger=Trigger 'DEFAULT.Send Asynchronous EventsTrigger1': triggerClass: 'org.quartz.impl.triggers.CronTriggerImpl calendar: 'null' misfireInstruction: 0 nextFireTime: Tue Jun 23 14:47:00 IST 2026 -2026-06-23 15:04:52.701 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2324, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 15:04:52.710 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1607, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:04:52.717 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21710, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:04:52.720 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] -2026-06-23 15:04:52.723 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:04:52.728 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms -2026-06-23 15:04:52.733 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 13ms -2026-06-23 15:04:52.734 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21710, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 14ms -2026-06-23 15:04:52.740 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1607, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 15:04:53.904 WARN [HikariPool-1:housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Thread starvation or clock leap detected (housekeeper delta=19m22s639ms643µs200ns). -2026-06-23 15:04:56.352 WARN [fineract_default_pool:housekeeper] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Thread starvation or clock leap detected (housekeeper delta=19m22s639ms412µs500ns). -2026-06-23 15:05:00.045 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21711, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:05:00.056 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:05:00.063 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 15:05:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21711, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms -2026-06-23 15:05:14.324 WARN [https-jsse-nio-8443-exec-6] o.g.j.server.ServerRuntime$Responder : An exception mapping did not successfully produce and processed a response. Logging the exception propagated to the default exception mapper. -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:44:59.099 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.BadCredentialsExceptionMapper : Exception occurred +org.springframework.security.authentication.BadCredentialsException: Bad credentials + at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvider.authenticate(AbstractUserDetailsAuthenticationProvider.java:144) + at org.apache.fineract.infrastructure.security.api.AuthenticationApiResource.authenticate(AuthenticationApiResource.java:112) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -4379,7 +2918,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -4416,7 +2955,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) 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) @@ -4442,7 +2981,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr 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.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:181) at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.wrapFilter(ObservationFilterChainDecorator.java:241) @@ -4510,14 +3049,88 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 15:05:14.330 ERROR [https-jsse-nio-8443-exec-6] o.a.c.c.C.[.[.[.[.a.f.i.c.j.JerseyConfig] : Servlet.service() for servlet [org.apache.fineract.infrastructure.core.jersey.JerseyConfig] in context with path [/fineract-provider] threw exception [java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null] with root cause -java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministration.domain.AppUser.getUsername()" because the return value of "org.apache.fineract.portfolio.client.domain.Client.getActivatedBy()" is null - at org.apache.fineract.portfolio.client.mapper.ClientMapper.clientTimelineData(ClientMapper.java:243) - at org.apache.fineract.portfolio.client.mapper.ClientMapperImpl.map(ClientMapperImpl.java:39) - at org.apache.fineract.portfolio.client.service.ClientReadPlatformServiceImpl.retrieveOne(ClientReadPlatformServiceImpl.java:217) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClientData(ClientsApiResource.java:455) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveClient(ClientsApiResource.java:530) - at org.apache.fineract.portfolio.client.api.ClientsApiResource.retrieveOne(ClientsApiResource.java:176) +2026-06-24 11:45:00.021 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1614, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:45:00.024 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21855, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:45:00.028 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 11:45:00.033 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:45:00.033 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 5ms +2026-06-24 11:45:00.037 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 3ms +2026-06-24 11:45:00.039 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1614, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 14ms +2026-06-24 11:45:00.045 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21855, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-24 11:45:00.174 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1612, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:45:00.232 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 11:45:00.258 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 26ms +2026-06-24 11:45:00.271 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1612, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 92ms +2026-06-24 11:46:00.066 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21856, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:46:00.076 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:46:00.083 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 11:46:00.092 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21856, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:47:00.065 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21857, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:47:00.073 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:47:00.079 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 11:47:00.085 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21857, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 11:48:00.121 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21858, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:48:00.127 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:48:00.146 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 19ms +2026-06-24 11:48:00.153 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21858, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-24 11:49:00.052 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21859, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:49:00.058 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:49:00.061 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 2ms +2026-06-24 11:49:00.066 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21859, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 12ms +2026-06-24 11:50:00.058 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2339, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:50:00.059 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21860, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:50:00.063 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 11:50:00.065 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:50:00.069 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms +2026-06-24 11:50:00.071 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 7ms +2026-06-24 11:50:00.075 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21860, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 11:50:00.078 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2339, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 11:51:00.075 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21861, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:51:00.087 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:51:00.097 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:51:00.107 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21861, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-24 11:52:00.072 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21862, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:52:00.081 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:52:00.089 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:52:00.097 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21862, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 11:52:56.923 WARN [https-jsse-nio-8443-exec-7] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) @@ -4587,7 +3200,7 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -4718,29 +3331,50 @@ java.lang.NullPointerException: Cannot invoke "org.apache.fineract.useradministr at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 15:05:19.627 WARN [https-jsse-nio-8443-exec-8] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) +2026-06-24 11:52:57.422 WARN [https-jsse-nio-8443-exec-7] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) @@ -4804,7 +3438,7 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -4935,29 +3569,54 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 15:05:58.297 WARN [https-jsse-nio-8443-exec-7] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) +2026-06-24 11:53:00.084 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21863, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:53:00.089 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:53:00.106 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 16ms +2026-06-24 11:53:00.114 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21863, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 11:53:45.349 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) @@ -5021,7 +3680,7 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -5152,57 +3811,50 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 15:06:00.060 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21712, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:06:00.067 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:06:00.073 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 15:06:00.081 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21712, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms -2026-06-23 15:07:00.048 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21713, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:07:00.055 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:07:00.061 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 15:07:00.068 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21713, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms -2026-06-23 15:08:00.067 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21714, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:08:00.077 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:08:00.083 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 15:08:00.093 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21714, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms -2026-06-23 15:09:00.163 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21715, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:09:00.208 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:09:00.214 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms -2026-06-23 15:09:00.220 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21715, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 55ms -2026-06-23 15:10:00.065 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2325, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:10:00.071 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] -2026-06-23 15:10:00.080 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21716, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:10:00.089 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 17ms -2026-06-23 15:10:00.092 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:10:00.098 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2325, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms -2026-06-23 15:10:00.101 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms -2026-06-23 15:10:00.114 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21716, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms -2026-06-23 15:11:00.036 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21717, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:11:00.048 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:11:00.054 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms -2026-06-23 15:11:00.064 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21717, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms -2026-06-23 15:11:47.995 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred -java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\images\clients\66\YIhZgIjhCxOnYHZx\profile.jpg - at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:85) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103) - at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:108) - at java.base/sun.nio.fs.WindowsFileSystemProvider.newByteChannel(WindowsFileSystemProvider.java:234) - at java.base/java.nio.file.Files.newByteChannel(Files.java:379) - at java.base/java.nio.file.Files.newByteChannel(Files.java:431) - at java.base/java.nio.file.spi.FileSystemProvider.newInputStream(FileSystemProvider.java:420) - at java.base/java.nio.file.Files.newInputStream(Files.java:159) - at org.apache.fineract.infrastructure.contentstore.service.FileContentStoreService.download(FileContentStoreService.java:76) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$2(ImageReadPlatformServiceImpl.java:64) - at java.base/java.util.Optional.map(Optional.java:260) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.lambda$retrieveImage$3(ImageReadPlatformServiceImpl.java:54) - at java.base/java.util.Optional.flatMap(Optional.java:289) - at org.apache.fineract.infrastructure.documentmanagement.service.ImageReadPlatformServiceImpl.retrieveImage(ImageReadPlatformServiceImpl.java:52) - at org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource.retrieveImage(ImagesApiResource.java:111) +2026-06-24 11:53:45.737 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) - at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) @@ -5266,7 +3918,7 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.springframework.security.web.ObservationFilterChainDecorator$ObservationFilter.doFilter(ObservationFilterChainDecorator.java:228) at org.springframework.security.web.ObservationFilterChainDecorator$VirtualFilterChain.doFilter(ObservationFilterChainDecorator.java:138) at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) - at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:65) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) 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) @@ -5397,15 +4049,8273 @@ java.nio.file.NoSuchFileException: C:\Users\rajpu\.fineract\DefaultDemoTenant\im at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) at java.base/java.lang.Thread.run(Thread.java:1583) -2026-06-23 15:12:00.077 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21718, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:12:00.088 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:12:00.098 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms -2026-06-23 15:12:00.107 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21718, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 26ms -2026-06-23 15:13:00.065 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21719, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:13:00.077 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:13:00.082 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 4ms -2026-06-23 15:13:00.086 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21719, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms -2026-06-23 15:14:00.072 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21720, type=class java.lang.Long, identifying=true}'}] -2026-06-23 15:14:00.080 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] -2026-06-23 15:14:00.088 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms -2026-06-23 15:14:00.094 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21720, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-24 11:53:54.212 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:53:54.364 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:00.102 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21864, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:54:00.127 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:54:00.135 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 11:54:00.152 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21864, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-24 11:54:09.359 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:09.420 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:15.835 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:15.963 WARN [https-jsse-nio-8443-exec-1] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:36.936 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:54:37.020 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:55:00.060 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21865, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:55:00.079 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:55:00.090 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 11:55:00.101 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21865, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 11:56:00.124 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21866, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:56:00.179 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:56:00.189 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 11:56:00.198 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21866, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 71ms +2026-06-24 11:56:22.794 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:56:22.839 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:56:57.518 WARN [https-jsse-nio-8443-exec-8] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:56:57.559 WARN [https-jsse-nio-8443-exec-8] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 11:57:00.083 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21867, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:57:00.092 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:57:00.107 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 15ms +2026-06-24 11:57:00.107 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21867, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 11:58:00.064 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21868, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:58:00.075 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:58:00.083 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:58:00.094 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21868, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 11:59:00.083 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21869, type=class java.lang.Long, identifying=true}'}] +2026-06-24 11:59:00.094 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 11:59:00.101 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 11:59:00.111 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21869, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 12:00:00.063 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2340, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.063 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=APPLY_HOLIDAYS_TO_LOANS]] launched with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.068 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=GENERATE_ADHOC_CLIENT_SCHEDULE]] launched with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.068 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=PAY_DUE_SAVINGS_CHARGES]] launched with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.069 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=FETCH_RBI_RSS_FEEDS]] launched with the following parameters: [{'run.id':'{value=111, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.069 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1615, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.069 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21870, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.083 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 12:00:00.083 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [APPLY_HOLIDAYS_TO_LOANS] +2026-06-24 12:00:00.085 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 12:00:00.086 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [GENERATE_ADHOC_CLIENT_SCHEDULE] +2026-06-24 12:00:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:00:00.087 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [PAY_DUE_SAVINGS_CHARGES] +2026-06-24 12:00:00.087 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [FETCH_RBI_RSS_FEEDS] +2026-06-24 12:00:00.096 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [APPLY_HOLIDAYS_TO_LOANS] executed in 12ms +2026-06-24 12:00:00.097 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 12:00:00.097 INFO [Scheduler1_Worker-5] o.a.f.i.r.j.f.FetchRbiFeedsTasklet : Starting RBI RSS feed fetch job... +2026-06-24 12:00:00.099 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Starting fetch for all 5 feed categories +2026-06-24 12:00:00.099 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Fetching RSS from URL: https://rbi.org.in/pressreleases_rss.xml +2026-06-24 12:00:00.106 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 22ms +2026-06-24 12:00:00.108 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 22ms +2026-06-24 12:00:00.120 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=APPLY_HOLIDAYS_TO_LOANS]] completed with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 52ms +2026-06-24 12:00:00.121 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21870, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 45ms +2026-06-24 12:00:00.122 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1615, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 48ms +2026-06-24 12:00:00.123 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2340, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 54ms +2026-06-24 12:00:00.137 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [GENERATE_ADHOC_CLIENT_SCHEDULE] executed in 51ms +2026-06-24 12:00:00.164 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=GENERATE_ADHOC_CLIENT_SCHEDULE]] completed with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 90ms +2026-06-24 12:00:00.180 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1613, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:00:00.189 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 12:00:00.210 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 20ms +2026-06-24 12:00:00.222 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1613, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 37ms +2026-06-24 12:00:00.498 ERROR [Scheduler1_Worker-4] o.a.f.p.s.j.p.PayDueSavingsChargesTasklet : Apply Charges due for savings failed for account: 002002000100008 +java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.635 ERROR [Scheduler1_Worker-4] o.a.f.p.s.j.p.PayDueSavingsChargesTasklet : Apply Charges due for savings failed for account: 002002000100011 +java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.677 ERROR [Scheduler1_Worker-4] o.a.f.p.s.j.p.PayDueSavingsChargesTasklet : Apply Charges due for savings failed for account: 002002000100019 +java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.735 ERROR [Scheduler1_Worker-4] o.a.f.p.s.j.p.PayDueSavingsChargesTasklet : Apply Charges due for savings failed for account: 002002000100023 +java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.746 ERROR [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Encountered an error executing step PAY_DUE_SAVINGS_CHARGES in job PAY_DUE_SAVINGS_CHARGES +org.apache.fineract.infrastructure.jobs.exception.JobExecutionException: MultiException with 4 contained causes (details available) + 1. java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) + + 2. java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) + + 3. java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) + + 4. java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) + + which was itself thrown.. + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:67) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.751 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [PAY_DUE_SAVINGS_CHARGES] executed in 664ms +2026-06-24 12:00:00.765 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=PAY_DUE_SAVINGS_CHARGES]] completed with the following parameters: [{'run.id':'{value=44, type=class java.lang.Long, identifying=true}'}] and the following status: [FAILED] in 690ms +2026-06-24 12:00:00.766 INFO [Scheduler1_Worker-4] org.quartz.core.JobRunShell : Job DEFAULT.Pay Due Savings ChargesJobDetail1 threw a JobExecutionException: +org.quartz.JobExecutionException: exitCode=FAILED;exitDescription=MultiException with 4 contained causes (details available) +1.java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2.java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +3.java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +4.java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge._persistence_get_feeInterval()" is null + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.calculateNextDueDate(SavingsAccountCharge.java:824) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.updateNextDueDateForRecurringFees(SavingsAccountCharge.java:849) + at org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge.pay(SavingsAccountCharge.java:380) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3198) + at org.apache.fineract.portfolio.savings.domain.SavingsAccount.payCharge(SavingsAccount.java:3193) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.payCharge(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1464) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl.applyChargeDue(SavingsAccountWritePlatformServiceJpaRepositoryImpl.java:1433) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformServiceJpaRepositoryImpl$$SpringCGLIB$$0.applyChargeDue() + at org.apache.fineract.portfolio.savings.jobs.payduesavingscharges.PayDueSavingsChargesTasklet.execute(PayDueSavingsChargesTasklet.java:51) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:383) + at org.springframework.batch.core.step.tasklet.TaskletStep$ChunkTransactionCallback.doInTransaction(TaskletStep.java:307) + at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep$2.doInChunkContext(TaskletStep.java:250) + at org.springframework.batch.core.scope.context.StepContextRepeatCallback.doInIteration(StepContextRepeatCallback.java:82) + at org.springframework.batch.repeat.support.RepeatTemplate.getNextResult(RepeatTemplate.java:369) + at org.springframework.batch.repeat.support.RepeatTemplate.executeInternal(RepeatTemplate.java:206) + at org.springframework.batch.repeat.support.RepeatTemplate.iterate(RepeatTemplate.java:140) + at org.springframework.batch.core.step.tasklet.TaskletStep.doExecute(TaskletStep.java:235) + at org.springframework.batch.core.step.AbstractStep.execute(AbstractStep.java:230) + at org.springframework.batch.core.job.SimpleStepHandler.handleStep(SimpleStepHandler.java:153) + at org.springframework.batch.core.job.AbstractJob.handleStep(AbstractJob.java:408) + at org.springframework.batch.core.job.SimpleJob.doExecute(SimpleJob.java:127) + at org.springframework.batch.core.job.AbstractJob.execute(AbstractJob.java:307) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher$1.run(TaskExecutorJobLauncher.java:155) + at org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:50) + at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:146) + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:106) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) + + at org.apache.fineract.infrastructure.jobs.service.JobStarter.run(JobStarter.java:108) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:286) + at org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean$MethodInvokingJob.executeInternal(MethodInvokingJobDetailFactoryBean.java:269) + at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:75) + at org.quartz.core.JobRunShell.run(JobRunShell.java:203) + at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:566) +2026-06-24 12:00:00.830 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - HTTP response status: 200 for https://rbi.org.in/pressreleases_rss.xml +2026-06-24 12:00:00.928 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Parsed 10 items from RSS for category: PRESS_RELEASE +2026-06-24 12:00:00.959 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Underwriting Auction for sale of Government Securities for ₹28,000 crore on June 25, 2026 +2026-06-24 12:00:00.962 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Money Market Operations as on June 23, 2026 +2026-06-24 12:00:00.963 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: RBI Governor Inaugurates the Campus of the Centre for Advanced Financial Research and Learning +2026-06-24 12:00:00.964 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Buyback of Government of India Dated Securities +2026-06-24 12:00:00.968 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: State Government Securities - Full Auction Result +2026-06-24 12:00:00.970 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Result of Yield/ Price Based Auction of State Government Securities +2026-06-24 12:00:00.971 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: RBI issues Final directions on Trade Receivables Discounting System (TReDS) +2026-06-24 12:00:00.999 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Stored 7 new items for category: PRESS_RELEASE +2026-06-24 12:00:00.999 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Category PRESS_RELEASE completed: 7 new items +2026-06-24 12:00:00.999 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Fetching RSS from URL: https://rbi.org.in/notifications_rss.xml +2026-06-24 12:00:01.206 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - HTTP response status: 200 for https://rbi.org.in/notifications_rss.xml +2026-06-24 12:00:01.397 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Parsed 10 items from RSS for category: NOTIFICATION +2026-06-24 12:00:01.461 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Open positions of Authorised Dealer Category-I banks +2026-06-24 12:00:01.462 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Reserve Bank of India (Commercial Banks – Credit Facilities) Fourth Amendment Directions, 2026 +2026-06-24 12:00:01.464 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Reserve Bank of India (Small Finance Banks – Credit Facilities) Third Amendment Directions, 2026 +2026-06-24 12:00:01.466 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Reserve Bank of India (Trade Receivables Discounting System) Directions, 2026 +2026-06-24 12:00:01.486 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Stored 4 new items for category: NOTIFICATION +2026-06-24 12:00:01.486 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Creating 4 OpenProject work packages for NOTIFICATION items +2026-06-24 12:00:02.176 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Created OpenProject WP #538225 for feed item: Open positions of Authorised Dealer Category-I banks +2026-06-24 12:00:02.433 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Created OpenProject WP #538226 for feed item: Reserve Bank of India (Commercial Banks – Credit Facilities) Fourth Amendment Directions, 2026 +2026-06-24 12:00:02.664 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Created OpenProject WP #538227 for feed item: Reserve Bank of India (Small Finance Banks – Credit Facilities) Third Amendment Directions, 2026 +2026-06-24 12:00:02.990 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Created OpenProject WP #538228 for feed item: Reserve Bank of India (Trade Receivables Discounting System) Directions, 2026 +2026-06-24 12:00:02.990 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Category NOTIFICATION completed: 4 new items +2026-06-24 12:00:02.991 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Fetching RSS from URL: https://rbi.org.in/speeches_rss.xml +2026-06-24 12:00:03.255 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - HTTP response status: 200 for https://rbi.org.in/speeches_rss.xml +2026-06-24 12:00:03.418 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Parsed 10 items from RSS for category: SPEECH +2026-06-24 12:00:03.443 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - No new items for category: SPEECH +2026-06-24 12:00:03.443 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Category SPEECH completed: 0 new items +2026-06-24 12:00:03.443 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Fetching RSS from URL: https://rbi.org.in/tenders_rss.xml +2026-06-24 12:00:03.836 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - HTTP response status: 200 for https://rbi.org.in/tenders_rss.xml +2026-06-24 12:00:03.857 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Parsed 10 items from RSS for category: TENDER +2026-06-24 12:00:03.860 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Deployment of Fire Staff (Fire Supervisors and Fire Fighters) at Bank’s Main Office Premises, Reserve Bank of India, Guwahati +2026-06-24 12:00:03.862 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Minutes of the pre-bid meeting - Deployment of Private Security Guards at Bank’s Main Office Premises, Residential Quarters at RBI Officers Colony, Christian Basti and Zoo Road at Guwahati +2026-06-24 12:00:03.864 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Minutes of Pre-bid meeting - Car hiring agencies / companies for providing Cars / vehicles to the RBI, Ranchi as and when required / need basis +2026-06-24 12:00:03.867 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Minutes of Pre-Bid Meeting - Construction of Compound Wall behind A to D block of Bank’s Staff Quarters at Osborne Road, Bengaluru +2026-06-24 12:00:03.868 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Addendum - Supply of Medicines and Non-Medical Items to Bank Dispensaries at Lucknow +2026-06-24 12:00:03.871 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Corrigendum - Supply of Medicines and Non-Medical Items to Bank Dispensaries at Lucknow +2026-06-24 12:00:03.873 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Extension of Last Date of Submission - Internal Repairs, Re-painting and allied Civil works in 11 Nos. of vacant Class-III flats at Reserve Bank Staff Quarters, Byculla, Mumbai +2026-06-24 12:00:03.875 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Surface Cleaning of IT assets at Reserve Bank of India, Chennai +2026-06-24 12:00:03.876 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Minutes of Pre-Bid Meeting - Renovation, alteration and modification of washroom (Ladies & Gents) at 1st floor, MOB RBI, Guwahati +2026-06-24 12:00:03.878 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - New item queued: Minutes of Pre-Bid Meeting - Renovation, alteration and modification of washroom CRPF Rest Room, at 2nd floor, MOB RBI, Guwahati +2026-06-24 12:00:03.894 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Stored 10 new items for category: TENDER +2026-06-24 12:00:03.894 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Category TENDER completed: 10 new items +2026-06-24 12:00:03.894 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Fetching RSS from URL: https://rbi.org.in/Publication_rss.xml +2026-06-24 12:00:04.145 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - HTTP response status: 200 for https://rbi.org.in/Publication_rss.xml +2026-06-24 12:00:04.599 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Parsed 10 items from RSS for category: PUBLICATION +2026-06-24 12:00:04.634 DEBUG [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - No new items for category: PUBLICATION +2026-06-24 12:00:04.634 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - Category PUBLICATION completed: 0 new items +2026-06-24 12:00:04.634 INFO [Scheduler1_Worker-5] o.a.f.i.r.s.RbiFeedFetchService : RBI FeedFetchService - All feeds fetched. Total new items: 21 +2026-06-24 12:00:04.648 INFO [Scheduler1_Worker-5] o.a.f.i.r.j.f.FetchRbiFeedsTasklet : RBI RSS feed fetch job completed. 21 new items stored. +2026-06-24 12:00:04.651 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [FETCH_RBI_RSS_FEEDS] executed in 4s564ms +2026-06-24 12:00:04.657 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=FETCH_RBI_RSS_FEEDS]] completed with the following parameters: [{'run.id':'{value=111, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 4s583ms +2026-06-24 12:01:00.034 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21871, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:01:00.049 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:01:00.059 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 12:01:00.072 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21871, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 12:01:29.222 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:01:29.269 WARN [https-jsse-nio-8443-exec-4] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:01:49.143 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:01:49.181 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:02:00.072 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21872, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:02:00.084 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:02:00.091 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:02:00.101 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21872, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 12:02:29.416 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:02:29.444 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:03:00.087 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21873, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:03:00.096 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:03:00.104 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:03:00.113 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21873, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 12:04:00.070 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21874, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:04:00.082 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:04:00.090 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:04:00.098 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21874, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 12:04:49.297 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:04:49.346 WARN [https-jsse-nio-8443-exec-5] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:05:00.083 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21875, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:05:00.083 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:05:00.094 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 12:05:00.108 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21875, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 12:06:00.065 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21876, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:06:00.079 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:06:00.080 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in +2026-06-24 12:06:00.096 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21876, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 12:06:22.438 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:06:22.502 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:07:00.067 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21877, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:07:00.078 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:07:00.086 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:07:00.096 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21877, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 12:08:00.084 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21878, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:08:00.100 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:08:00.109 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:08:00.116 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21878, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-24 12:08:42.339 WARN [https-jsse-nio-8443-exec-3] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:08:42.375 WARN [https-jsse-nio-8443-exec-3] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:09:00.063 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21879, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:09:00.071 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:09:00.077 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 12:09:00.081 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21879, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 17ms +2026-06-24 12:10:00.033 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2341, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:10:00.033 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21880, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:10:00.040 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:10:00.040 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 12:10:00.046 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 12:10:00.049 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 7ms +2026-06-24 12:10:00.051 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21880, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 16ms +2026-06-24 12:10:00.055 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2341, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 12:11:00.032 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21881, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:11:00.042 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:11:00.050 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:11:00.059 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21881, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 12:12:00.031 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21882, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:12:00.040 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:12:00.046 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:12:00.054 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21882, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 12:13:00.036 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21883, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:13:00.048 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:13:00.057 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 12:13:00.065 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21883, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 12:13:30.623 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:13:30.714 WARN [https-jsse-nio-8443-exec-2] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:13:38.527 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:13:38.596 WARN [https-jsse-nio-8443-exec-6] o.a.f.i.c.e.PlatformDomainRuleExceptionMapper : Exception occurred +org.apache.fineract.organisation.teller.exception.CashierExistForTellerException: Cannot delete teller, Cashier is associated for this teller + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl.deleteTeller(TellerWritePlatformServiceJpaImpl.java:162) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.organisation.teller.service.TellerWritePlatformServiceJpaImpl$$SpringCGLIB$$0.deleteTeller() + at org.apache.fineract.organisation.teller.handler.DeleteTellerCommandHandler.processCommand(DeleteTellerCommandHandler.java:45) + at org.apache.fineract.commands.service.CommandSourceService.processCommand(CommandSourceService.java:135) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) + at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380) + at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) + at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:728) + at org.apache.fineract.commands.service.CommandSourceService$$SpringCGLIB$$0.processCommand() + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:147) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.lambda$executeCommand$0(SynchronousCommandProcessingService.java:138) + at io.github.resilience4j.retry.Retry.lambda$decorateSupplier$4(Retry.java:211) + at io.github.resilience4j.retry.Retry.executeSupplier(Retry.java:361) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.retryWrapper(SynchronousCommandProcessingService.java:91) + at org.apache.fineract.commands.service.SynchronousCommandProcessingService.executeCommand(SynchronousCommandProcessingService.java:102) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl.logCommandSource(PortfolioCommandSourceWritePlatformServiceImpl.java:78) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:360) + at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:724) + at org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformServiceImpl$$SpringCGLIB$$0.logCommandSource() + at org.apache.fineract.organisation.teller.api.TellerApiResource.deleteTeller(TellerApiResource.java:131) + at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103) + at java.base/java.lang.reflect.Method.invoke(Method.java:580) + at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189) + at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:219) + at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400) + at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81) + at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248) + at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244) + at org.glassfish.jersey.internal.Errors.process(Errors.java:292) + at org.glassfish.jersey.internal.Errors.process(Errors.java:274) + at org.glassfish.jersey.internal.Errors.process(Errors.java:244) + at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266) + at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253) + at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696) + at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:398) + at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:350) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:358) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:312) + at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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.apache.fineract.infrastructure.core.filters.IdempotencyStoreFilter.doFilterInternal(IdempotencyStoreFilter.java:57) + 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.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.proceed(LoanCOBApiFilter.java:95) + at org.apache.fineract.infrastructure.jobs.filter.LoanCOBApiFilter.doFilterInternal(LoanCOBApiFilter.java:70) + 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.apache.fineract.infrastructure.security.filter.TwoFactorAuthenticationFilter.doFilter(TwoFactorAuthenticationFilter.java:128) + 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.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.proceed(ProgressiveLoanModelCheckerFilter.java:77) + at org.apache.fineract.infrastructure.jobs.filter.ProgressiveLoanModelCheckerFilter.doFilterInternal(ProgressiveLoanModelCheckerFilter.java:49) + 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.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.proceed(FineractInstanceModeApiFilter.java:84) + at org.apache.fineract.infrastructure.instancemode.filter.FineractInstanceModeApiFilter.doFilterInternal(FineractInstanceModeApiFilter.java:67) + 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.apache.fineract.infrastructure.core.filters.CorrelationHeaderFilter.doFilterInternal(CorrelationHeaderFilter.java:51) + 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.apache.fineract.infrastructure.core.filters.RequestResponseFilter.doFilterInternal(RequestResponseFilter.java:39) + 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.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 org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + 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.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91) + 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.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.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213) + at org.apache.fineract.infrastructure.security.filter.TenantAwareBasicAuthenticationFilter.doFilterInternal(TenantAwareBasicAuthenticationFilter.java:193) + 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.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.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:135) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + 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:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) + at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:162) + at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:138) + at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:165) + at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:88) + at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) + at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:113) + at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:83) + at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:72) + at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) + at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399) + 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:1774) + at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) + at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:973) + at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:491) + at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63) + at java.base/java.lang.Thread.run(Thread.java:1583) +2026-06-24 12:14:00.029 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21884, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:14:00.035 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:14:00.041 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:14:00.046 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21884, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 12:15:00.066 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1614, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:15:00.066 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21885, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:15:00.067 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1616, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:15:00.072 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:15:00.074 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 12:15:00.075 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 12:15:00.077 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 12:15:00.083 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21885, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 13ms +2026-06-24 12:15:00.086 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 11ms +2026-06-24 12:15:00.088 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 12ms +2026-06-24 12:15:00.093 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1616, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 12:15:00.094 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1614, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 12:16:00.028 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21886, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:16:00.034 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:16:00.042 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:16:00.045 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21886, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 15ms +2026-06-24 12:17:00.064 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21887, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:17:00.076 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:17:00.082 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:17:00.091 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21887, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 12:18:17.107 INFO [main] o.apache.fineract.ServerApplication : Starting ServerApplication using Java 21.0.6 with PID 2640 (C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider\build\classes\java\main started by rajpu in C:\Users\rajpu\OneDrive\Desktop\New folder (2)\JAVA-Backend-CBS-MAIN\fineract-provider) +2026-06-24 12:18:17.111 INFO [main] o.apache.fineract.ServerApplication : No active profile set, falling back to 1 default profile: "default" +2026-06-24 12:18:25.904 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-24 12:18:25.904 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JPA repositories in DEFAULT mode. +2026-06-24 12:18:27.352 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.DocumentRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:27.355 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.documentmanagement.domain.ImageRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:27.375 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixReportXBRLNamespaceRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:27.378 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyMappingRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:27.381 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.mix.domain.MixTaxonomyRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:27.520 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface org.apache.fineract.command.persistence.domain.CommandRepository; If you want this repository to be a JPA repository, consider annotating your entities with one of these annotations: jakarta.persistence.Entity, jakarta.persistence.MappedSuperclass (preferred), or consider extending one of the following types with your repository: org.springframework.data.jpa.repository.JpaRepository +2026-06-24 12:18:29.480 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 3529 ms. Found 246 JPA repository interfaces. +2026-06-24 12:18:29.498 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'jpaAuditingHandler' with a different definition: replacing [Root bean: class=org.springframework.data.auditing.AuditingHandler; scope=; abstract=false; lazyInit=null; autowireMode=2; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=from; initMethodNames=null; destroyMethodNames=null] with [Root bean: class=org.apache.fineract.infrastructure.core.auditing.CustomAuditingHandler; scope=prototype; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=null; factoryMethodName=null; initMethodNames=null; destroyMethodNames=null] +2026-06-24 12:18:29.648 INFO [main] o.s.b.f.s.DefaultListableBeanFactory : Overriding bean definition for bean 'transactionManager' with a different definition: replacing [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=JPAConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/core/config/jpa/JPAConfig.class]] with [Root bean: class=null; scope=; abstract=false; lazyInit=null; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; fallback=false; factoryBeanName=scheduledJobRunnerConfig; factoryMethodName=transactionManager; initMethodNames=null; destroyMethodNames=[(inferred)]; defined in class path resource [org/apache/fineract/infrastructure/jobs/ScheduledJobRunnerConfig.class]] +2026-06-24 12:18:29.652 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobRepository already defined in the application context, skipping the registration of a jobRepository +2026-06-24 12:18:29.654 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobExplorer already defined in the application context, skipping the registration of a jobExplorer +2026-06-24 12:18:29.654 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Bean jobLauncher already defined in the application context, skipping the registration of a jobLauncher +2026-06-24 12:18:29.659 INFO [main] o.s.b.c.c.annotation.BatchRegistrar : Finished Spring Batch infrastructure beans configuration in 8 ms. +2026-06-24 12:18:31.174 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode +2026-06-24 12:18:31.176 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data JDBC repositories in DEFAULT mode. +2026-06-24 12:18:31.608 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.provisioning.domain.ProvisioningEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.609 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.adhocquery.domain.AdHocRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.610 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.LoanAccountLockRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.612 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormatRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.613 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.bulkimport.domain.ImportDocumentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.613 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.613 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.614 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.614 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaignRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.615 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.ExternalServicesPropertiesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.615 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.615 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.616 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.CreditReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureauRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.creditbureau.domain.TokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.618 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.dataqueries.domain.ReportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.619 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccessRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.619 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.619 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.619 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.619 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.620 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.hooks.domain.HookTemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.620 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.imps.domain.ImpsTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.621 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.JobParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.621 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.622 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.ScheduledJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.domain.SchedulerDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntryAggregationTrackingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.jobs.service.aggregationjob.domain.JournalEntrySummaryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.623 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.626 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.otp.domain.OtpLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.627 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.sms.domain.SmsMessageRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.627 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.survey.domain.LikelihoodRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.628 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.interoperation.domain.InteropIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.628 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationMapperRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.628 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.notification.domain.NotificationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.629 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.holiday.domain.HolidayRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.629 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.630 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCategoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.630 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinitionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.631 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.631 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.staff.domain.StaffRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.631 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.workingdays.domain.WorkingDaysRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.631 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountAssociationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.632 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.632 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.AccountTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.632 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.account.domain.StandingInstructionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.633 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.AddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.633 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.address.domain.FieldConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.633 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.634 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarInstanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.634 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.calendar.domain.CalendarRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.634 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.634 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashexchange.domain.CashExchangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.635 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.635 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashintercashier.domain.CashInterCashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.635 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.635 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashreconciliation.domain.CashReconciliationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.636 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.636 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashsettlement.domain.CashSettlementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.636 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.636 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cashtransfer.domain.CashTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.638 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.ckyc.domain.CkycBatchRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.639 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientAddressRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.639 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.639 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientFamilyMembersRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.640 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNonPersonRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.640 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.640 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientTransferDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.640 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.641 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomainRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.641 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.collateral.domain.LoanCollateralRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.641 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterAuditRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.641 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.DenominationMasterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.641 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.denominationmaster.domain.SavingsTxnDenominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.642 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionApprovalStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.642 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCandidateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.642 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionCeoPrecheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.642 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionEligibilityCheckRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionNominationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionPostRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionResultRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.election.domain.ElectionVoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.BankIfscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.CustomerTransferLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferEventRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.643 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.FundTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.644 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.TransferLimitConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.644 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fundtransfer.domain.VerificationTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.644 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.fund.domain.FundRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.644 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupLevelRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.644 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.645 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.group.domain.GroupRoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.645 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.645 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.645 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.646 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMixRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.646 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.646 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.meeting.domain.MeetingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.647 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.note.domain.NoteRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.650 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.rate.domain.RateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.652 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecksRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.653 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.653 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.653 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.658 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.658 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.659 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.659 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdBaseInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.659 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateEffectiveRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.660 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RdInterestRateSlabHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.660 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.660 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPTRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.661 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.device.domain.DeviceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.662 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.662 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.pockets.domain.PocketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.662 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistrationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.663 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.664 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.665 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.665 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.665 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.LookupTableRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.ScorecardRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.spm.domain.SurveyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.template.domain.TemplateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserPreviousPasswordRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.AppUserRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PasswordValidationPolicyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.PermissionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.666 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.domain.RoleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributesRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.investor.domain.ExternalAssetOwnerTransferRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanorigination.domain.LoanOriginatorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappingsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.DelinquencyRangeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyActionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.GLIMAccountInfoRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAccrualActivityRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidByRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.667 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagementRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetailsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgingParameterRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistoryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequestRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.loanproduct.domain.LoanProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.669 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentaccount.domain.CurrentAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.671 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.671 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.672 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.672 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.currentproduct.domain.CurrentProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.672 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.672 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlabRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.674 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.FacilityChargeMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.674 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.GSIMRepositoy; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.674 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.674 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.cob.domain.BatchBusinessStepRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.CashierTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.675 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.teller.domain.TellerTransactionRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.closure.domain.GLClosureRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.TrialBalanceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.journalentry.domain.JournalEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMappingRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.rule.domain.AccountingRuleRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.floatingrates.domain.FloatingRateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.677 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.charge.domain.ChargeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.679 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxComponentRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.679 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.tax.domain.TaxGroupRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.679 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TFAccessTokenRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.679 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.security.domain.TwoFactorConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.accounting.glaccount.domain.GLAccountRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.commands.domain.CommandSourceRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.businessdate.domain.BusinessDateRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.cache.domain.PlatformCacheRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.codes.domain.CodeValueRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.681 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.infrastructure.rbifeed.domain.RbiFeedItemRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.organisation.office.domain.OfficeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.CfcfrmsSimulatorLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintAuditLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.cfcfrms.domain.ComplaintTicketRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.683 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientForm60Repository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.685 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientIdentifierRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.685 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientKycRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.686 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientNomineeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.686 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.domain.ClientRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.687 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientEouRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.687 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientImportExportRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.687 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMsmeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientMudraBorrowerRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientNonPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientPrioritySectorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.client.entityclassification.domain.ClientStartupIndiaRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.mobilelookup.domain.MobileLookupLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.688 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetailRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.689 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.paymenttype.domain.PaymentTypeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.690 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsEntryRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.690 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.portfolio.sanctions.domain.SanctionsScreeningLogRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.691 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.BankUserDscRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.691 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.dsc.domain.DscChallengeRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:31.691 INFO [main] o.s.d.r.c.RepositoryConfigurationExtensionSupport : Spring Data JDBC - Could not safely identify store assignment for repository candidate interface org.apache.fineract.useradministration.mfa.domain.UserMfaFactorRepository; If you want this repository to be a JDBC repository, consider annotating your entities with one of these annotations: org.springframework.data.relational.core.mapping.Table. +2026-06-24 12:18:32.001 INFO [main] o.s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 808 ms. Found 6 JDBC repository interfaces. +2026-06-24 12:18:35.337 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'errorChannel' has been explicitly defined. Therefore, a default PublishSubscribeChannel will be created. +2026-06-24 12:18:35.372 INFO [main] o.s.i.c.DefaultConfiguringBeanFactoryPostProcessor : No bean named 'integrationHeaderChannelRegistry' has been explicitly defined. Therefore, a default DefaultHeaderChannelRegistry will be created. +2026-06-24 12:18:37.468 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'fineract-org.apache.fineract.infrastructure.core.config.FineractProperties' of type [org.apache.fineract.infrastructure.core.config.FineractProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:37.496 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'cacheConfig' of type [org.apache.fineract.infrastructure.core.config.cache.CacheConfig$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:37.911 INFO [main] org.reflections.Reflections : Reflections took 10 ms to scan 1 urls, producing 0 keys and 0 values +2026-06-24 12:18:37.916 WARN [main] o.a.f.i.c.config.cache.CacheConfig : The following cache configurations are defined but cache does not exists: [userTFAccessToken] +2026-06-24 12:18:37.918 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'ehCacheManager' of type [org.springframework.cache.jcache.JCacheCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:37.932 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'defaultCacheManager' of type [org.apache.fineract.infrastructure.core.config.cache.TransactionBoundCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:37.943 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'runtimeDelegatingCacheManager' of type [org.apache.fineract.infrastructure.cache.service.RuntimeDelegatingCacheManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:37.948 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'platformCacheConfiguration' of type [org.apache.fineract.infrastructure.cache.PlatformCacheConfiguration$$SpringCGLIB$$0] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:38.002 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingConfiguration' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:38.013 WARN [main] o.s.c.s.PostProcessorRegistrationDelegate$BeanPostProcessorChecker : Bean 'samplingServiceFactory' of type [org.apache.fineract.infrastructure.core.diagnostics.performance.sampling.core.SamplingServiceFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying). Is this bean getting eagerly injected/applied to a currently created BeanPostProcessor [samplingBeanPostProcessor]? Check the corresponding BeanPostProcessor declaration and its dependencies/advisors. If this bean does not have to be post-processed, declare it with ROLE_INFRASTRUCTURE. +2026-06-24 12:18:39.393 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat initialized with port 8443 (https) +2026-06-24 12:18:39.432 INFO [main] o.a.catalina.core.StandardService : Starting service [Tomcat] +2026-06-24 12:18:39.432 INFO [main] o.a.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/10.1.49] +2026-06-24 12:18:39.511 INFO [main] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring embedded WebApplicationContext +2026-06-24 12:18:39.513 INFO [main] o.s.b.w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 22360 ms +2026-06-24 12:18:39.990 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... +2026-06-24 12:18:40.325 INFO [main] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@66efaca +2026-06-24 12:18:40.328 INFO [main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed. +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading tenant store DB at localhost:5432 +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.username: postgres +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.password: **** +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.parameters: +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.timezone: Asia/Kolkata +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.description: Default Demo Tenant +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.identifier: default +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - fineract.tenant.name: fineract_default +2026-06-24 12:18:40.635 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : - liquibase.analytics.enabled: false +2026-06-24 12:18:52.056 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant store upgrade finished +2026-06-24 12:18:52.056 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrading all tenants +2026-06-24 12:18:52.067 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has started +2026-06-24 12:18:52.540 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting... +2026-06-24 12:18:52.634 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection org.postgresql.jdbc.PgConnection@7a68ab8f +2026-06-24 12:18:52.635 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed. +2026-06-24 12:19:00.952 INFO [ThreadPoolTaskExecutor-1] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Upgrade for tenant default has finished +2026-06-24 12:19:00.953 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown initiated... +2026-06-24 12:19:00.958 INFO [ThreadPoolTaskExecutor-1] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Shutdown completed. +2026-06-24 12:19:00.958 INFO [main] o.a.f.i.c.s.m.TenantDatabaseUpgradeService : Tenant upgrades have successfully finished +2026-06-24 12:19:03.883 INFO [main] o.s.o.j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'jpa-pu' +2026-06-24 12:19:05.978 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : EclipseLink is in classpath; If applicable, EQL parser will be used. +2026-06-24 12:19:05.978 INFO [main] o.s.d.j.r.query.QueryEnhancerFactory : Hibernate is in classpath; If applicable, HQL parser will be used. +2026-06-24 12:19:07.579 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-blind +2026-06-24 12:19:07.580 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-entry-point +2026-06-24 12:19:07.580 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-timing +2026-06-24 12:19:07.580 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-backend +2026-06-24 12:19:07.580 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-column +2026-06-24 12:19:07.581 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: detect-out-of-bands +2026-06-24 12:19:07.581 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-stacked-query +2026-06-24 12:19:07.581 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation pattern: inject-comment +2026-06-24 12:19:07.581 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: main +2026-06-24 12:19:07.582 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: adhoc +2026-06-24 12:19:07.582 INFO [main] o.a.f.i.s.utils.DefaultSqlValidator : Setup SQL validation profile: column +2026-06-24 12:19:09.081 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:09.081 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataByShortName(java.lang.String) +2026-06-24 12:19:09.088 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.infrastructure.jobs.data.JobDetailData org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getDataById(java.lang.Long) +2026-06-24 12:19:09.105 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.jobs.domain.ScheduledJobDetailRepository.getAllData() +2026-06-24 12:19:13.134 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:13.134 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllStayedLockedByCobBusinessDate(java.time.LocalDate) +2026-06-24 12:19:13.265 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Optional org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findLoanDataForExternalTransferByLoanId(java.lang.Long) +2026-06-24 12:19:13.320 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOrNullByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 12:19:13.325 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindByLoanIdsAndStatuses(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 12:19:13.328 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findAllLoansBehindOnDisbursementDate(java.time.LocalDate,java.util.List,java.util.Collection) +2026-06-24 12:19:13.338 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanRepository.findOldestCOBProcessedLoan(java.time.LocalDate,java.util.Collection) +2026-06-24 12:19:13.795 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:13.795 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.CumulativeIncomeFromIncomePosting org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findCumulativeIncomeByLoanAndType(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-24 12:19:13.833 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchTotalUnpaidChargesForLoan(org.apache.fineract.portfolio.loanaccount.domain.Loan) +2026-06-24 12:19:13.868 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.findTransactionDataForForeclosureIncome(org.apache.fineract.portfolio.loanaccount.domain.Loan,java.time.LocalDate) +2026-06-24 12:19:13.886 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRepository.fetchLoanTransactionsByTypeAndLessOrEqualDate(org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionType,java.time.LocalDate) +2026-06-24 12:19:14.024 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:14.024 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsOldestCobProcessed() +2026-06-24 12:19:14.026 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDateOrNull(java.time.LocalDate,java.util.List) +2026-06-24 12:19:14.027 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAllSavingsIdsBehindDate(java.time.LocalDate,java.util.List) +2026-06-24 12:19:14.059 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.savings.domain.SavingsAccountRepository.findAccrualData(java.time.LocalDate,java.lang.Long,java.lang.Integer,java.lang.Integer) +2026-06-24 12:19:16.068 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:16.068 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.infrastructure.event.external.repository.ExternalEventRepository.findByStatusOrderByBusinessDateAscIdAsc(org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventStatus,org.springframework.data.domain.Pageable) +2026-06-24 12:19:18.921 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:18.922 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.organisation.monetary.data.CurrencyData org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findCurrencyDataByCode(java.lang.String) +2026-06-24 12:19:18.925 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.ApplicationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-24 12:19:19.388 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:19.388 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTagRepository.findInstallmentDelinquencyTags(java.lang.Long) +2026-06-24 12:19:20.114 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:20.114 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findRepaymentPeriodDataByLoanId(java.lang.Long) +2026-06-24 12:19:20.127 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanCapitalizedIncomeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-24 12:19:21.140 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:21.140 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract org.apache.fineract.portfolio.loanaccount.data.AmortizationAllocationBaseTransactionDTO org.apache.fineract.portfolio.loanaccount.repository.LoanBuyDownFeeBalanceRepository.findBaseTransactionInfo(java.lang.Long,java.lang.Long) +2026-06-24 12:19:21.243 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:21.243 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean,java.util.List) +2026-06-24 12:19:21.247 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.Collection org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallmentRepository.fetchLoanScheduleDataByDueDateAndObligationsMet(org.apache.fineract.portfolio.loanaccount.domain.LoanStatus,java.time.LocalDate,boolean) +2026-06-24 12:19:23.234 INFO [main] o.a.f.i.e.b.s.BusinessEventNotifierServiceImpl : External event posting is disabled +2026-06-24 12:19:23.821 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:23.821 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.organisation.monetary.domain.OrganisationCurrencyRepository.findAllSorted(org.springframework.data.domain.Sort) +2026-06-24 12:19:25.332 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:25.332 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanAmortizationAllocationMappingRepository.findAmortizationMappingsByBaseTransactionAndLoan(java.lang.Long,java.lang.Long) +2026-06-24 12:19:30.809 INFO [main] o.s.b.c.r.s.JobRepositoryFactoryBean : No database type set, using meta data indicating: POSTGRES +2026-06-24 12:19:30.840 INFO [main] o.s.b.c.l.s.TaskExecutorJobLauncher : No TaskExecutor has been set, defaulting to synchronous executor. +2026-06-24 12:19:33.630 INFO [main] o.a.f.i.r.p.ReportingProcessServiceProvider : Registered report service 'org.apache.fineract.infrastructure.dataqueries.service.DatatableReportingProcessService@2c0649fb' for type/s '[Table, Chart, SMS]' +2026-06-24 12:19:33.899 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.cbs.private-key-path not set — CBS private key NOT loaded +2026-06-24 12:19:33.899 INFO [main] o.a.f.i.imps.crypto.ImpsCryptoUtil : [ImpsCryptoUtil] fineract.imps.lincpay.public-key-path not set — LincPay public key NOT loaded +2026-06-24 12:19:42.332 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] lookup by external_id 'FUNDTRANSFER_SUSPENSE' failed: org.springframework.orm.jpa.JpaSystemException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 4.0.2.v202306161219): org.eclipse.persistence.exceptions.DatabaseException +Internal Exception: org.postgresql.util.PSQLException: ERROR: relation "m_savings_account" does not exist + Position: 2248 +Error Code: 0 +Call: SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?) + bind => [1 parameter bound] +Query: ReadAllQuery(referenceClass=SavingsAccount sql="SELECT "id", "deposit_type_enum", "account_no", "account_status", "account_type_enum", "accrued_till_date", "activatedon_date", "allow_overdraft", "approvedon_date", "auto_debit_facility", "cbs_account_type", "closedon_date", "created_by", "created_on_utc", "customer_segment", "enforce_min_required_balance", "external_id", "guardian_cif_number", "guardian_client_id", "guardian_name", "guardian_relationship", "interest_calculation_days_in_year_type_enum", "interest_calculation_type_enum", "interest_compounding_period_enum", "interest_posting_period_enum", "introducer_cif_number", "introducer_client_id", "introducer_name", "is_senior_citizen", "last_closed_business_date", "last_modified_by", "last_modified_on_utc", "is_lien_allowed", "linked_account_id", "linked_account_no", "linked_account_type", "lockedin_until_date_derived", "lockin_period_frequency", "lockin_period_frequency_enum", "max_allowed_lien_limit", "min_balance_for_interest_calculation", "min_overdraft_for_interest_calculation", "min_required_balance", "min_required_opening_balance", "minor_date_of_birth", "mode_of_operation", "nominal_annual_interest_rate", "nominal_annual_interest_rate_overdraft", "nomination_facility", "nominee_data", "on_hold_funds_derived", "overdraft_limit", "reason_for_block", "rejectedon_date", "total_savings_amount_on_hold", "senior_citizen_interest_rate", "special_category", "start_interest_calculation_date", "status_enum", "sub_status_enum", "submittedon_date", "version", "weaker_section", "withhold_tax", "withdrawal_fee_for_transfer", "withdrawnon_date", "currency_code", "currency_digits", "currency_multiplesof", "account_balance_derived", "interest_posted_till_date", "last_interest_calculation_date", "total_annual_fees_derived", "total_deposits_derived", "total_fees_charge_derived", "total_interest_earned_derived", "total_interest_posted_derived", "total_overdraft_interest_derived", "total_penalty_charge_derived", "total_withdrawal_fees_derived", "total_withdrawals_derived", "total_withhold_tax_derived", "activatedon_userid", "approvedon_userid", "client_id", "closedon_userid", "group_id", "gsim_id", "product_id", "rejectedon_userid", "field_officer_id", "submittedon_userid", "tax_group_id", "withdrawnon_userid" FROM "m_savings_account" WHERE ("external_id" = ?)") +2026-06-24 12:19:42.333 WARN [main] o.a.f.p.f.service.SuspenseGlService : [SuspenseGl] suspense external_id 'FUNDTRANSFER_SUSPENSE' did not resolve — OFF_US debits will be no-ops until the suspense GL row is created (see Liquibase 0311) +2026-06-24 12:19:43.091 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:43.091 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanId(long) +2026-06-24 12:19:43.093 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByLoanIdAndTermType(long,int) +2026-06-24 12:19:43.094 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanTermVariationsRepository.findLoanTermVariationsByExternalLoanIdAndTermType(org.apache.fineract.infrastructure.core.domain.ExternalId,int) +2026-06-24 12:19:43.161 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : Usage of Spring Data projections detected on persistence provider EclipseLink; Make sure the following query methods declare result columns in exactly the order the accessors are declared in the projecting interface or the order of parameters for DTOs: +2026-06-24 12:19:43.161 INFO [main] o.s.d.j.r.s.JpaRepositoryFactory$EclipseLinkProjectionQueryCreationListener : - public abstract java.util.List org.apache.fineract.portfolio.loanaccount.domain.LoanApprovedAmountHistoryRepository.findAllByLoanId(java.lang.Long,org.springframework.data.domain.Pageable) +2026-06-24 12:20:03.244 INFO [main] org.reflections.Reflections : Reflections took 98 ms to scan 1 urls, producing 56 keys and 185 values +2026-06-24 12:20:04.390 WARN [main] o.a.f.p.s.s.FacilityChargeSeederService : FacilityChargeSeeder: skipped — PreparedStatementCallback; bad SQL grammar [SELECT charge_id FROM m_facility_charge_mapping WHERE facility_type = ? AND charge_id IS NOT NULL] +2026-06-24 12:20:05.746 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Starting... +2026-06-24 12:20:05.822 INFO [main] com.zaxxer.hikari.pool.HikariPool : fineract_default_pool - Added connection org.postgresql.jdbc.PgConnection@47f7234c +2026-06-24 12:20:05.862 INFO [main] com.zaxxer.hikari.HikariDataSource : fineract_default_pool - Start completed. +2026-06-24 12:20:05.875 INFO [main] o.a.f.o.monetary.domain.MoneyHelper : Initialized rounding mode for tenant `default`: HALF_EVEN +2026-06-24 12:20:05.882 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : Starting MoneyHelper initialization for all tenants... +2026-06-24 12:20:05.884 INFO [main] o.a.f.i.c.s.MoneyHelperStartupInitializationService : MoneyHelper initialization completed +2026-06-24 12:20:05.943 INFO [main] o.a.f.i.e.e.s.message.MessageFactory : Message source set to 90282ba6-f542-488e-a821-12bdbdefd548 +2026-06-24 12:20:08.078 INFO [main] o.a.f.i.e.e.s.ExternalEventConfigurationValidationService : Validating external event configuration for default +2026-06-24 12:20:10.219 WARN [main] o.a.f.i.c.b.FineractWebApplicationConfiguration : Fineract is running in web application mode +2026-06-24 12:20:10.234 INFO [main] o.s.s.c.a.a.c.InitializeAuthenticationProviderBeanManagerConfigurer$InitializeAuthenticationProviderManagerConfigurer : Global AuthenticationManager configured with AuthenticationProvider bean with name customAuthenticationProvider +2026-06-24 12:20:10.238 WARN [main] o.s.s.c.a.a.c.InitializeUserDetailsBeanManagerConfigurer$InitializeUserDetailsManagerConfigurer : Global AuthenticationManager configured with an AuthenticationProvider bean. UserDetailsService beans will not be used by Spring Security for automatically configuring username/password login. Consider removing the AuthenticationProvider bean. Alternatively, consider using the UserDetailsService in a manually instantiated DaoAuthenticationProvider. If the current configuration is intentional, to turn off this warning, increase the logging level of 'org.springframework.security.config.annotation.authentication.configuration.InitializeUserDetailsBeanManagerConfigurer' to ERROR +2026-06-24 12:20:10.700 INFO [main] o.s.s.w.a.c.ChannelProcessingFilter : Validated configuration attributes +2026-06-24 12:20:13.003 INFO [main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 2 endpoints beneath base path '/actuator' +2026-06-24 12:20:16.575 INFO [main] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 12:20:16.596 INFO [main] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 12:20:16.597 INFO [main] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 12:20:16.599 INFO [main] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 12:20:16.600 INFO [main] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'quartzScheduler' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-24 12:20:16.600 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. +2026-06-24 12:20:16.600 INFO [main] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 12:20:16.600 INFO [main] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@19592baa +2026-06-24 12:20:18.843 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {logging-channel-adapter:_org.springframework.integration.errorLogger} as a subscriber to the 'errorChannel' channel +2026-06-24 12:20:18.843 INFO [main] o.s.i.c.PublishSubscribeChannel : Channel 'application.errorChannel' has 1 subscriber(s). +2026-06-24 12:20:18.844 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean '_org.springframework.integration.errorLogger' +2026-06-24 12:20:18.844 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {message-handler} as a subscriber to the 'outboundRequests' channel +2026-06-24 12:20:18.844 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.outboundRequests' has 1 subscriber(s). +2026-06-24 12:20:18.844 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'outboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventManagerConfig.outboundFlow()' +2026-06-24 12:20:18.845 INFO [main] o.s.i.e.i.ApplicationEventListeningMessageProducer : started bean 'eventListener'; defined in: 'class path resource [org/apache/fineract/infrastructure/springbatch/messagehandler/spring/SpringEventWorkerConfig.class]'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.eventListener()' +2026-06-24 12:20:18.845 INFO [main] o.s.i.endpoint.EventDrivenConsumer : Adding {bridge} as a subscriber to the 'inboundFlow.channel#0' channel +2026-06-24 12:20:18.845 INFO [main] o.s.i.channel.DirectChannel : Channel 'application.inboundFlow.channel#0' has 1 subscriber(s). +2026-06-24 12:20:18.845 INFO [main] o.s.i.endpoint.EventDrivenConsumer : started bean 'inboundFlow.org.springframework.integration.config.ConsumerEndpointFactoryBean#0'; from source: 'org.apache.fineract.infrastructure.springbatch.messagehandler.spring.SpringEventWorkerConfig.inboundFlow()' +2026-06-24 12:20:18.852 INFO [main] o.s.i.endpoint.PollingConsumer : started bean 'org.springframework.integration.dsl.StandardIntegrationFlow#0.org.springframework.integration.config.ConsumerEndpointFactoryBean#0' +2026-06-24 12:20:19.101 INFO [main] o.a.t.u.net.NioEndpoint.certificate : Connector [https-jsse-nio-8443], TLS virtual host [_default_], certificate type [UNDEFINED] configured from keystore [C:\Users\rajpu\.keystore] using alias [tomcat] with trust store [null] +2026-06-24 12:20:19.126 INFO [main] o.s.b.w.e.tomcat.TomcatWebServer : Tomcat started on port 8443 (https) with context path '/fineract-provider' +2026-06-24 12:20:19.127 INFO [main] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 12:20:19.128 INFO [main] org.quartz.core.QuartzScheduler : Scheduler quartzScheduler_$_NON_CLUSTERED started. +2026-06-24 12:20:19.132 INFO [main] o.apache.fineract.ServerApplication : Started ServerApplication in 123.907 seconds (process running for 124.949) +2026-06-24 12:20:19.264 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 12:20:19.264 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 12:20:19.265 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 12:20:19.265 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 12:20:19.265 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 7 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-24 12:20:19.265 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1' initialized from an externally provided properties instance. +2026-06-24 12:20:19.265 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 12:20:19.267 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@4fffb3ab +2026-06-24 12:20:19.269 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 12:20:19.269 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1_$_NON_CLUSTERED started. +2026-06-24 12:20:19.330 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Checking status of job execution with id=12974 +2026-06-24 12:20:19.385 INFO [FineractEvent-16] o.s.b.c.l.support.SimpleJobOperator : Attempting to resume job with name=FETCH_RBI_RSS_FEEDS and parameters={'run.id':'{value=47, type=class java.lang.Long, identifying=true}'} +2026-06-24 12:20:19.408 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 12:20:19.409 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group1' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group1' initialized from an externally provided properties instance. +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@6d8e9b13 +2026-06-24 12:20:19.409 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 12:20:19.409 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group1_$_NON_CLUSTERED started. +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 12:20:19.412 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group3' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group3' initialized from an externally provided properties instance. +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@1c92ca8b +2026-06-24 12:20:19.412 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 12:20:19.412 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group3_$_NON_CLUSTERED started. +2026-06-24 12:20:19.421 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Using default implementation for ThreadExecutor +2026-06-24 12:20:19.422 INFO [FineractEvent-15] o.quartz.core.SchedulerSignalerImpl : Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Quartz Scheduler v2.5.0 created. +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.simpl.RAMJobStore : RAMJobStore initialized. +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler meta-data: Quartz Scheduler (v2.5.0) 'Scheduler1group4' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 1 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler 'Scheduler1group4' initialized from an externally provided properties instance. +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.impl.StdSchedulerFactory : Quartz scheduler version: 2.5.0 +2026-06-24 12:20:19.422 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : JobFactory set to: org.springframework.scheduling.quartz.AdaptableJobFactory@13d694a5 +2026-06-24 12:20:19.422 INFO [FineractEvent-15] o.s.s.quartz.SchedulerFactoryBean : Starting Quartz Scheduler now +2026-06-24 12:20:19.423 INFO [FineractEvent-15] org.quartz.core.QuartzScheduler : Scheduler Scheduler1group4_$_NON_CLUSTERED started. +2026-06-24 12:20:19.492 INFO [FineractEvent-15] o.a.f.i.j.s.JobSchedulerServiceImpl : Scheduling batch jobs has finished +2026-06-24 12:20:42.043 INFO [https-jsse-nio-8443-exec-5] o.a.tomcat.util.http.parser.Cookie : A cookie header was received [g_state={"i_l":0,"i_ll":1769423112115,"i_b":"xmh/CdrKs4bTH66oBkSJ4quW+RT3rA0eV9NBTGn/Hfs","i_e":{"enable_itp_optimization":0}};] that contained an invalid cookie. That cookie will be ignored. + Note: further occurrences of this error will be logged at DEBUG level. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.journalentry.api.JournalEntriesApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.adhocquery.api.AdHocApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.adhocquery.api.AdHocApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.ConfigureBusinessStepApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanAccountLockApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanAccountLockApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.cob.api.LoanCOBCatchUpApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.AuditsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.AuditsApiResource will be ignored. +2026-06-24 12:20:43.241 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.commands.api.MakercheckersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.commands.api.MakercheckersApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.accountnumberformat.api.AccountNumberFormatsApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.bulkimport.api.BulkImportApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailCampaignApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.email.api.EmailConfigurationApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.campaigns.sms.api.SmsCampaignApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodesApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.codes.api.CodeValuesApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.ExternalServicesConfigurationApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.configuration.api.GlobalConfigurationApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.core.debug.EchoHeadersApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauConfigurationApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.creditbureau.api.CreditBureauIntegrationApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.DatatablesApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.EntityDatatableChecksApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.ReportsApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.dataqueries.api.RunreportsApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.entityaccess.api.FineractEntityApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.hooks.api.HookApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.hooks.api.HookApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.imps.api.ImpsCbsApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.InlineJobApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.jobs.api.SchedulerJobApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.openproject.api.OpenProjectApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.rbifeed.api.RbiFeedApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobApiResource will be ignored. +2026-06-24 12:20:43.242 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.reportmailingjob.api.ReportMailingJobRunHistoryApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.AdminOtpLogApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.EmailLoginOtpApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.otp.api.LoginOtpApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.sms.api.SmsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.sms.api.SmsApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.LikelihoodApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.PovertyLineApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.survey.api.SurveyApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.interoperation.api.InteropApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.interoperation.api.InteropApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.notification.api.NotificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.notification.api.NotificationApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.holiday.api.HolidaysApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficesApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.office.api.OfficeTransactionsApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCategoryApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.provisioning.api.ProvisioningCriteriaApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.staff.api.StaffApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.staff.api.StaffApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.workingdays.api.WorkingDaysApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.accounts.api.AccountsApiResource will be ignored. +2026-06-24 12:20:43.243 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.AccountTransfersApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.account.api.StandingInstructionHistoryApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.address.api.EntityFieldConfigurationApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.calendar.api.CalendarsApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashexchange.api.CashExchangeApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashierdeposit.api.CashierDepositRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashintercashier.api.CashInterCashierApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreconciliation.api.CashReconciliationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashreport.api.CashReportApiResource will be ignored. +2026-06-24 12:20:43.244 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashsettlement.api.CashSettlementApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashierGlDenominationApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.CashTransferApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cashtransfer.api.ShareCollectionApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsComplaintApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.cfcfrms.api.CfcfrmsSimulatorApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkdisbursement.api.ClerkDisbursementRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.clerkwithdrawal.api.ClerkWithdrawalRequestApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientAddressApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientChargesApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMemberDocumentApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientFamilyMembersApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientForm60ApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientIdentifiersApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientKycApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientKycApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientNomineeApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientsApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.ClientTransactionsApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.KycProofTypesApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.NonCkycClientApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.api.v2.search.ClientSearchV2ApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycBatchApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.ckyc.api.CkycReportsApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.client.entityclassification.api.EntityClassificationApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.ClientCollateralManagementApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.CollateralManagementApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateralmanagement.api.LoanCollateralManagementApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collateral.api.CollateralsApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.collectionsheet.api.CollectionSheetApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.denominationmaster.api.DenominationMasterApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionCandidateApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionConfigApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionNominationApiResource will be ignored. +2026-06-24 12:20:43.245 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.election.api.ElectionVotingApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fundtransfer.api.FundTransferApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.fund.api.FundsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.fund.api.FundsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.CentersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.CentersApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.group.api.GroupsLevelApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestratechart.api.InterestRateChartSlabsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.BulkLoansApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanChargesApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanDisbursementDetailApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoansApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanTransactionsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.pointintime.LoansPointInTimeApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.guarantor.api.GuarantorsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.api.LoanProductsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanproduct.productmix.api.ProductMixApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.meeting.api.MeetingsApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.mobilelookup.api.MobileLookupApiResource will be ignored. +2026-06-24 12:20:43.246 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.note.api.NotesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.note.api.NotesApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.products.api.ProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.products.api.ProductsApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.rate.api.RateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.rate.api.RateApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.repaymentwithpostdatedchecks.api.RepaymentWithPostDatedChecksApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.sanctions.api.SanctionsScreeningApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountChargesApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountsApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentAccountTransactionsApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.CurrentProductsApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.DepositAccountOnHoldFundTransactionsApiResource will be ignored. +2026-06-24 12:20:43.247 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositAccountTransactionsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.FixedDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositAccountTransactionsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.RecurringDepositProductsBaseInterestRatesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountChargesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsAccountTransactionsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.savings.api.SavingsProductsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.search.api.SearchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.search.api.SearchApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.shareproducts.api.ShareDividendApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.LookupTableApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.ScorecardApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.spm.api.SpmApiResource$$SpringCGLIB$$0 will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.template.api.TemplatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.template.api.TemplatesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PasswordPreferencesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.PermissionsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.PermissionsApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.RolesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.RolesApiResource will be ignored. +2026-06-24 12:20:43.248 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.api.UsersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.api.UsersApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.DscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.DscApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.dsc.api.LoginDscApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.api.MfaFactorApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.log.api.MfaLogApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.useradministration.mfa.totp.api.TotpEnrollmentApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnerLoanProductAttributesApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.investor.api.ExternalAssetOwnersApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanBuyDownFeeApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanCapitalizedIncomeApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanorigination.api.LoanOriginatorsApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.delinquency.api.DelinquencyApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.interestpauses.api.LoanInterestPauseApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.api.LoanScheduleApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.loanaccount.rescheduleloan.api.RescheduleLoansApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.CashierApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.CashierApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.teller.api.TellerJournalApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.accrual.api.AccrualAccountingApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.closure.api.GLClosuresApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.financialactivityaccount.api.FinancialActivityAccountsApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.glaccount.api.GLAccountsApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.provisioning.api.ProvisioningEntriesApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.accounting.rule.api.AccountingRuleApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.floatingrates.api.FloatingRatesApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.charge.api.ChargesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.charge.api.ChargesApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.DocumentApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.documentmanagement.api.ImagesApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxComponentApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.tax.api.TaxGroupApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.AuthenticationApiResource will be ignored. +2026-06-24 12:20:43.249 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.security.api.TwoFactorConfigurationApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixReportApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixReportApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.mix.api.MixTaxonomyMappingApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.batch.api.BatchApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.batch.api.BatchApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.businessdate.api.BusinessDateApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.cache.api.CacheApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.cache.api.CacheApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.infrastructure.event.external.api.ExternalEventConfigurationApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.organisation.monetary.api.CurrenciesApiResource will be ignored. +2026-06-24 12:20:43.250 WARN [https-jsse-nio-8443-exec-5] o.g.jersey.internal.inject.Providers : A provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.apache.fineract.portfolio.paymenttype.api.PaymentTypeApiResource will be ignored. +2026-06-24 12:20:59.743 INFO [https-jsse-nio-8443-exec-4] o.a.c.c.C.[.[.[/fineract-provider] : Initializing Spring DispatcherServlet 'dispatcherServlet' +2026-06-24 12:20:59.743 INFO [https-jsse-nio-8443-exec-4] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet' +2026-06-24 12:20:59.775 INFO [https-jsse-nio-8443-exec-4] o.s.web.servlet.DispatcherServlet : Completed initialization in 32 ms +2026-06-24 12:21:00.205 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21888, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:21:00.319 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:21:00.389 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 66ms +2026-06-24 12:21:00.405 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21888, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 147ms +2026-06-24 12:22:00.102 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21889, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:22:00.111 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:22:00.135 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 24ms +2026-06-24 12:22:00.152 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21889, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 43ms +2026-06-24 12:23:00.087 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21890, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:23:00.102 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:23:00.116 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-24 12:23:00.129 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21890, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 36ms +2026-06-24 12:24:00.053 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21891, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:24:00.067 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:24:00.077 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 12:24:00.088 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21891, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 31ms +2026-06-24 12:25:00.071 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21892, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:25:00.084 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:25:00.096 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 12:25:00.108 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21892, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 32ms +2026-06-24 12:26:00.062 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21893, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:26:00.075 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:26:00.087 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 12:26:00.099 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21893, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 32ms +2026-06-24 12:27:00.051 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21894, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:27:00.061 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:27:00.069 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:27:00.077 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21894, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 23ms +2026-06-24 12:28:00.067 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21895, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:28:00.080 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:28:00.092 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 12:28:00.106 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21895, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 12:29:00.058 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21896, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:29:00.067 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:29:00.075 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:29:00.086 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21896, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms +2026-06-24 12:30:00.044 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21897, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:30:00.044 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2342, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:30:00.051 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:30:00.053 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 12:30:00.058 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 5ms +2026-06-24 12:30:00.068 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21897, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 12:30:00.117 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 63ms +2026-06-24 12:30:00.134 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2342, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 85ms +2026-06-24 12:30:00.141 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1617, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:30:00.143 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1615, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:30:00.200 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 12:30:00.200 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 12:30:00.218 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 17ms +2026-06-24 12:30:00.230 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 29ms +2026-06-24 12:30:00.230 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1617, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 84ms +2026-06-24 12:30:00.241 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1615, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 95ms +2026-06-24 12:31:00.087 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21898, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:31:00.100 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:31:00.110 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:31:00.120 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21898, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 12:32:00.030 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21899, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:32:00.039 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:32:00.047 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:32:00.056 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21899, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 12:33:00.050 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21900, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:33:00.060 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:33:00.069 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:33:00.077 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21900, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 24ms +2026-06-24 12:34:00.075 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21901, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:34:00.084 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:34:00.092 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:34:00.099 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21901, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 12:35:00.080 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21902, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:35:00.092 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:35:00.100 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:35:00.108 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21902, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 19ms +2026-06-24 12:36:00.078 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21903, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:36:00.092 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:36:00.106 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 13ms +2026-06-24 12:36:00.117 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21903, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 33ms +2026-06-24 12:37:00.166 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21904, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:37:00.177 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:37:00.185 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 8ms +2026-06-24 12:37:00.197 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21904, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 29ms +2026-06-24 12:38:00.077 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21905, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:38:00.085 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:38:00.095 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 12:38:00.101 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21905, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-24 12:39:00.080 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21906, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:39:00.093 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:39:00.102 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 12:39:00.112 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21906, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 12:40:00.062 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21907, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:40:00.062 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] launched with the following parameters: [{'run.id':'{value=2343, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:40:00.070 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:40:00.070 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_EMAIL] +2026-06-24 12:40:00.077 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:40:00.084 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_EMAIL] executed in 14ms +2026-06-24 12:40:00.084 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21907, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 22ms +2026-06-24 12:40:00.093 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_EMAIL]] completed with the following parameters: [{'run.id':'{value=2343, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-24 12:41:00.070 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21908, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:41:00.079 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:41:00.085 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:41:00.093 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21908, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 12:42:00.089 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21909, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:42:00.100 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:42:00.111 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 11ms +2026-06-24 12:42:00.121 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21909, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 27ms +2026-06-24 12:43:00.127 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21910, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:43:00.141 INFO [Scheduler1_Worker-6] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:43:00.149 INFO [Scheduler1_Worker-6] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:43:00.160 INFO [Scheduler1_Worker-6] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21910, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 12:44:00.078 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21911, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:44:00.088 INFO [Scheduler1_Worker-7] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:44:00.098 INFO [Scheduler1_Worker-7] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 10ms +2026-06-24 12:44:00.109 INFO [Scheduler1_Worker-7] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21911, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 28ms +2026-06-24 12:45:00.076 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21912, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:45:00.076 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] launched with the following parameters: [{'run.id':'{value=1616, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:45:00.084 INFO [Scheduler1_Worker-5] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:45:00.084 INFO [Scheduler1_Worker-2] o.s.batch.core.job.SimpleStepHandler : Executing step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] +2026-06-24 12:45:00.090 INFO [Scheduler1_Worker-5] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 6ms +2026-06-24 12:45:00.092 INFO [Scheduler1_Worker-2] o.s.batch.core.step.AbstractStep : Step: [UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE] executed in 8ms +2026-06-24 12:45:00.097 INFO [Scheduler1_Worker-5] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21912, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 18ms +2026-06-24 12:45:00.099 INFO [Scheduler1_Worker-2] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=UPDATE_EMAIL_OUTBOUND_WITH_CAMPAIGN_MESSAGE]] completed with the following parameters: [{'run.id':'{value=1616, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 20ms +2026-06-24 12:45:00.152 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] launched with the following parameters: [{'run.id':'{value=1618, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:45:00.197 INFO [Scheduler1_Worker-1] o.s.batch.core.job.SimpleStepHandler : Executing step: [EXECUTE_REPORT_MAILING_JOBS] +2026-06-24 12:45:00.213 INFO [Scheduler1_Worker-1] o.s.batch.core.step.AbstractStep : Step: [EXECUTE_REPORT_MAILING_JOBS] executed in 15ms +2026-06-24 12:45:00.221 INFO [Scheduler1_Worker-1] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=EXECUTE_REPORT_MAILING_JOBS]] completed with the following parameters: [{'run.id':'{value=1618, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 65ms +2026-06-24 12:46:00.080 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21913, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:46:00.094 INFO [Scheduler1_Worker-3] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:46:00.104 INFO [Scheduler1_Worker-3] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 9ms +2026-06-24 12:46:00.116 INFO [Scheduler1_Worker-3] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21913, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 32ms +2026-06-24 12:47:00.078 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] launched with the following parameters: [{'run.id':'{value=21914, type=class java.lang.Long, identifying=true}'}] +2026-06-24 12:47:00.090 INFO [Scheduler1_Worker-4] o.s.batch.core.job.SimpleStepHandler : Executing step: [SEND_ASYNCHRONOUS_EVENTS_STEP] +2026-06-24 12:47:00.098 INFO [Scheduler1_Worker-4] o.s.batch.core.step.AbstractStep : Step: [SEND_ASYNCHRONOUS_EVENTS_STEP] executed in 7ms +2026-06-24 12:47:00.105 INFO [Scheduler1_Worker-4] o.s.b.c.l.s.TaskExecutorJobLauncher : Job: [SimpleJob: [name=SEND_ASYNCHRONOUS_EVENTS]] completed with the following parameters: [{'run.id':'{value=21914, type=class java.lang.Long, identifying=true}'}] and the following status: [COMPLETED] in 25ms From db41c2b606ff7a0d2dae0faf0a8f0cbe0320362f Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Fri, 26 Jun 2026 11:12:00 +0530 Subject: [PATCH 4/8] feat: add share linking enabled to current and savings accounts --- .../currentaccount/domain/CurrentAccount.java | 6 ++++ .../domain/SavingsAccountAssembler.java | 12 +++++++ ...CurrentAccountReadPlatformServiceImpl.java | 1 + ...urrentAccountWritePlatformServiceImpl.java | 6 ++++ ...SavingsAccountReadPlatformServiceImpl.java | 4 +++ .../db/changelog/tenant/changelog-tenant.xml | 1 + ...are_linking_enabled_to_current_account.xml | 36 +++++++++++++++++++ .../savings/data/SavingsAccountConstant.java | 2 +- .../savings/domain/SavingsAccount.java | 26 ++++++++++++++ .../savings/parts/module-changelog-master.xml | 1 + ...are_linking_enabled_to_savings_account.xml | 27 ++++++++++++++ 11 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0339_add_share_linking_enabled_to_current_account.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2016_add_share_linking_enabled_to_savings_account.xml diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java index 9ec8a520c..1a013ee43 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java @@ -304,6 +304,9 @@ public class CurrentAccount extends AbstractAuditableCustom { @Column(name = "od_account_closed_zero_balance_in_day_closing") private boolean odAccountClosedZeroBalanceInDayClosing = false; + @Column(name = "is_linking_enable", nullable = false) + private boolean shareLinkingEnabled = false; + // Relationships @OneToMany(mappedBy = "currentAccount", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) @@ -406,4 +409,7 @@ public class CurrentAccount extends AbstractAuditableCustom { public void setNominalAnnualInterestRateOverdraft(java.math.BigDecimal val) { this.nominalAnnualInterestRateOverdraft = val; } public void setWithdrawalFeeForTransfer(boolean val) { this.withdrawalFeeForTransfer = val; } public void setMinOverdraftForInterestCalculation(java.math.BigDecimal val) { this.minOverdraftForInterestCalculation = val; } + + public boolean isShareLinkingEnabled() { return shareLinkingEnabled; } + public void setShareLinkingEnabled(boolean shareLinkingEnabled) { this.shareLinkingEnabled = shareLinkingEnabled; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java index 3199914b7..571ad5d98 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountAssembler.java @@ -42,6 +42,8 @@ import static org.apache.fineract.portfolio.savings.SavingsApiConstants.specialC import static org.apache.fineract.portfolio.savings.SavingsApiConstants.weakerSectionParamName; import static org.apache.fineract.portfolio.savings.SavingsApiConstants.nominationFacilityParamName; import static org.apache.fineract.portfolio.savings.SavingsApiConstants.autoDebitFacilityParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.introducerRequiredParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.shareLinkingEnabledParamName; import static org.apache.fineract.portfolio.savings.DepositsApiConstants.isSeniorCitizenParamName; import static org.apache.fineract.portfolio.savings.DepositsApiConstants.seniorCitizenInterestRateParamName; import static org.apache.fineract.portfolio.savings.SavingsApiConstants.allowOverdraftParamName; @@ -395,6 +397,16 @@ public class SavingsAccountAssembler { if (command.parameterExists(autoDebitFacilityParamName)) { account.setAutoDebitFacility(this.fromApiJsonHelper.extractBooleanNamed(autoDebitFacilityParamName, element)); } + if (command.parameterExists(introducerRequiredParamName)) { + account.setIntroducerRequired(this.fromApiJsonHelper.extractBooleanNamed(introducerRequiredParamName, element)); + } else if (account.savingsProduct() != null) { + account.setIntroducerRequired(account.savingsProduct().isIntroducerRequired()); + } + if (command.parameterExists(shareLinkingEnabledParamName)) { + account.setShareLinkingEnabled(this.fromApiJsonHelper.extractBooleanNamed(shareLinkingEnabledParamName, element)); + } else if (account.savingsProduct() != null) { + account.setShareLinkingEnabled(account.savingsProduct().isShareLinkingEnabled()); + } // Senior citizen rate — runs after validateDomainRules so it is the final persisted value if (command.parameterExists(isSeniorCitizenParamName)) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java index 64dc5ec48..37d489877 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java @@ -443,6 +443,7 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead out.put("msme", row.get("msme")); out.put("autoDebitFacility", row.get("auto_debit_facility")); out.put("balanceSwapOption", row.get("balance_swap_option")); + out.put("shareLinkingEnabled", row.get("is_linking_enable")); out.put("establishmentDate", row.get("establishment_date")); out.put("startOperationDate", row.get("start_operation_date")); out.put("nonIndividualClient", row.get("is_non_individual_client")); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java index 3f87c8cf1..fe636ce74 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java @@ -140,6 +140,10 @@ public class CurrentAccountWritePlatformServiceImpl implements CurrentAccountWri product.getInterestCalculateSelector(), product.getAveragePeriod(), product.getAvgBalanceCalcPeriod()); + boolean shareLinkingEnabled = json.has("shareLinkingEnabled") && !json.get("shareLinkingEnabled").isJsonNull() + ? json.get("shareLinkingEnabled").getAsBoolean() : product.isShareLinkingEnabled(); + account.setShareLinkingEnabled(shareLinkingEnabled); + // Save CBS account type (descriptive name: "Standard Account", "Basic Account", etc.) if (cbsAccountType != null) account.setCbsAccountType(cbsAccountType); @@ -422,6 +426,8 @@ public class CurrentAccountWritePlatformServiceImpl implements CurrentAccountWri account.setBalanceSwapOption(json.get("balanceSwapOption").getAsBoolean()); if (json.has("autoDebitFacility") && !json.get("autoDebitFacility").isJsonNull()) account.setAutoDebitFacility(json.get("autoDebitFacility").getAsBoolean()); + if (json.has("shareLinkingEnabled") && !json.get("shareLinkingEnabled").isJsonNull()) + account.setShareLinkingEnabled(json.get("shareLinkingEnabled").getAsBoolean()); if (json.has("introducerClientId") && !json.get("introducerClientId").isJsonNull()) account.setIntroducerClientId(json.get("introducerClientId").getAsLong()); if (json.has("introducerName") && !json.get("introducerName").isJsonNull()) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index 886b7b959..50ca2d653 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -863,6 +863,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead sqlBuilder.append("sp.msme as msme, "); sqlBuilder.append("COALESCE(sa.nomination_facility, sp.nomination_facility) as nominationFacility, "); sqlBuilder.append("COALESCE(sa.auto_debit_facility, sp.auto_debit_facility) as autoDebitFacility, "); + sqlBuilder.append("COALESCE(sa.introducer_required, sp.introducer_required) as introducerRequired, "); + sqlBuilder.append("COALESCE(sa.share_linking_enabled, sp.share_linking_enabled) as shareLinkingEnabled, "); // Facility config fields sqlBuilder.append("safc.atm_facility as atmFacility, "); sqlBuilder.append("safc.atm_withdrawal_facility as atmWithdrawalFacility, "); @@ -1118,6 +1120,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead accountData.setMsme(rs.getObject("msme") != null ? rs.getBoolean("msme") : null); accountData.setNominationFacility(rs.getObject("nominationFacility") != null ? rs.getBoolean("nominationFacility") : null); accountData.setAutoDebitFacility(rs.getObject("autoDebitFacility") != null ? rs.getBoolean("autoDebitFacility") : null); + accountData.setIntroducerRequired(rs.getObject("introducerRequired") != null ? rs.getBoolean("introducerRequired") : null); + accountData.setShareLinkingEnabled(rs.getObject("shareLinkingEnabled") != null ? rs.getBoolean("shareLinkingEnabled") : null); // Nominee as parsed map final String nomineeDataStr = rs.getString("nomineeData"); diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index b25b0f775..14d4ccb1f 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -366,4 +366,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0339_add_share_linking_enabled_to_current_account.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0339_add_share_linking_enabled_to_current_account.xml new file mode 100644 index 000000000..0f70ede28 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0339_add_share_linking_enabled_to_current_account.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java index 85b32925e..599ac65c7 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountConstant.java @@ -48,7 +48,7 @@ public class SavingsAccountConstant extends SavingsApiConstants { introducerIdParamName, introducerNameParamName, introducerCifNumberParamName, nomineeParamName, "nominees", linkedAccountIdParamName, linkedAccountTypeParamName, linkedAccountNoParamName, accountFacilityConfigParamName, jointHoldersParamName, - balanceSwapOptionParamName, msmeParamName, autoDebitFacilityParamName)); + balanceSwapOptionParamName, msmeParamName, autoDebitFacilityParamName, introducerRequiredParamName, shareLinkingEnabledParamName)); /** * These parameters will match the class level parameters of {@link SavingsAccountData}. Where possible, we try to diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java index aa728ff7f..3e9f3d31d 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java @@ -34,6 +34,8 @@ import static org.apache.fineract.portfolio.savings.SavingsApiConstants.nominalA import static org.apache.fineract.portfolio.savings.SavingsApiConstants.overdraftLimitParamName; import static org.apache.fineract.portfolio.savings.SavingsApiConstants.withHoldTaxParamName; import static org.apache.fineract.portfolio.savings.SavingsApiConstants.withdrawalFeeForTransfersParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.introducerRequiredParamName; +import static org.apache.fineract.portfolio.savings.SavingsApiConstants.shareLinkingEnabledParamName; import com.google.gson.JsonArray; import jakarta.persistence.CascadeType; @@ -1852,6 +1854,18 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom baseDataValidator.reset().parameter(withHoldTaxParamName).failWithCode("not.supported.for.this.account"); } } + + if (command.isChangeInBooleanParameterNamed(introducerRequiredParamName, this.introducerRequired)) { + final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(introducerRequiredParamName); + actualChanges.put(introducerRequiredParamName, newValue); + this.introducerRequired = newValue; + } + + if (command.isChangeInBooleanParameterNamed(shareLinkingEnabledParamName, this.shareLinkingEnabled)) { + final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(shareLinkingEnabledParamName); + actualChanges.put(shareLinkingEnabledParamName, newValue); + this.shareLinkingEnabled = newValue; + } validateLockinDetails(baseDataValidator); esnureOverdraftLimitsSetForOverdraftAccounts(); } @@ -3972,6 +3986,12 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom @Column(name = "linked_account_no", length = 50) private String linkedAccountNo; + @Column(name = "introducer_required", nullable = false, columnDefinition = "boolean default false") + private Boolean introducerRequired = false; + + @Column(name = "share_linking_enabled", nullable = false, columnDefinition = "boolean default false") + private Boolean shareLinkingEnabled = false; + @Column(name = "nomination_facility", nullable = false, columnDefinition = "boolean default false") private Boolean nominationFacility = false; @@ -4057,6 +4077,12 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom public Boolean getAutoDebitFacility() { return autoDebitFacility; } public void setAutoDebitFacility(Boolean v) { this.autoDebitFacility = v; } + public Boolean getIntroducerRequired() { return introducerRequired; } + public void setIntroducerRequired(Boolean v) { this.introducerRequired = v; } + + public Boolean getShareLinkingEnabled() { return shareLinkingEnabled; } + public void setShareLinkingEnabled(Boolean v) { this.shareLinkingEnabled = v; } + public boolean isSeniorCitizen() { return isSeniorCitizen; } public void setSeniorCitizen(boolean v) { this.isSeniorCitizen = v; } diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml index f8c193c0b..2a50be19e 100644 --- a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml @@ -38,4 +38,5 @@ + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2016_add_share_linking_enabled_to_savings_account.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2016_add_share_linking_enabled_to_savings_account.xml new file mode 100644 index 000000000..54f7cdbb2 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2016_add_share_linking_enabled_to_savings_account.xml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + From 1bd41cff43bbd524e010671fbbcad76fd1bdbd43 Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Tue, 30 Jun 2026 10:06:59 +0530 Subject: [PATCH 5/8] saving, currun, fd and rd account working and tested --- .../currentaccount/domain/CurrentAccount.java | 40 +++- .../CurrentAccountNumberGenerator.java | 41 +++- .../domain/DepositAccountRecurringDetail.java | 11 + ...ccountTemplateReadPlatformServiceImpl.java | 10 +- ...urrentAccountWritePlatformServiceImpl.java | 42 +++- .../savings/starter/SavingsConfiguration.java | 5 +- .../DepositAccountTermAndPreClosure.java | 17 ++ .../savings/domain/SavingsAccount.java | 212 ++++++++++++++++++ .../savings/domain/SavingsAccountCharge.java | 12 +- 9 files changed, 353 insertions(+), 37 deletions(-) diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java index 1a013ee43..4e44db25d 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java @@ -39,6 +39,7 @@ import org.apache.fineract.infrastructure.core.domain.AbstractAuditableCustom; import org.apache.fineract.organisation.office.domain.Office; import org.apache.fineract.organisation.staff.domain.Staff; import org.apache.fineract.portfolio.client.domain.Client; +import org.apache.fineract.useradministration.domain.AppUser; @Entity @Table(name = "m_current_account", uniqueConstraints = { @@ -102,6 +103,30 @@ public class CurrentAccount extends AbstractAuditableCustom { @Column(name = "closedon_date") private LocalDate closedOnDate; + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "submittedon_userid") + private AppUser submittedOnByUser; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "approvedon_userid") + private AppUser approvedOnByUser; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "activatedon_userid") + private AppUser activatedOnByUser; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "rejectedon_userid") + private AppUser rejectedOnByUser; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "withdrawnon_userid") + private AppUser withdrawnOnByUser; + + @ManyToOne(fetch = FetchType.LAZY) + @JoinColumn(name = "closedon_userid") + private AppUser closedOnByUser; + // Currency (copied from product at account creation) @Column(name = "currency_code", nullable = false, length = 3) private String currencyCode; @@ -376,29 +401,34 @@ public class CurrentAccount extends AbstractAuditableCustom { public void updateAccountNo(String accountNo) { this.accountNo = accountNo; } - public void approve(LocalDate approvedOnDate) { + public void approve(LocalDate approvedOnDate, AppUser approvedOnByUser) { this.statusEnum = 200; this.approvedOnDate = approvedOnDate; + this.approvedOnByUser = approvedOnByUser; } - public void activate(LocalDate activatedOnDate) { + public void activate(LocalDate activatedOnDate, AppUser activatedOnByUser) { this.statusEnum = 300; this.activatedOnDate = activatedOnDate; + this.activatedOnByUser = activatedOnByUser; } - public void reject(LocalDate rejectedOnDate) { + public void reject(LocalDate rejectedOnDate, AppUser rejectedOnByUser) { this.statusEnum = 500; this.rejectedOnDate = rejectedOnDate; + this.rejectedOnByUser = rejectedOnByUser; } - public void withdraw(LocalDate withdrawnOnDate) { + public void withdraw(LocalDate withdrawnOnDate, AppUser withdrawnOnByUser) { this.statusEnum = 400; this.withdrawnOnDate = withdrawnOnDate; + this.withdrawnOnByUser = withdrawnOnByUser; } - public void close(LocalDate closedOnDate) { + public void close(LocalDate closedOnDate, AppUser closedOnByUser) { this.statusEnum = 600; this.closedOnDate = closedOnDate; + this.closedOnByUser = closedOnByUser; } public void setMinRequiredOpeningBalance(java.math.BigDecimal val) { this.minRequiredOpeningBalance = val; } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountNumberGenerator.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountNumberGenerator.java index 5b34709bf..ca585310b 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountNumberGenerator.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountNumberGenerator.java @@ -37,6 +37,31 @@ public class CurrentAccountNumberGenerator { private final JdbcTemplate jdbcTemplate; + private String getNextSequence() { + final java.util.List accountNos = this.jdbcTemplate.query( + "SELECT account_no FROM m_current_account WHERE account_no IS NOT NULL", + (rs, rowNum) -> rs.getString(1)); + + long maxVal = 0; + for (String accNo : accountNos) { + if (accNo != null && accNo.length() >= 5) { + String suffix = accNo.substring(accNo.length() - 5); + try { + long val = Long.parseLong(suffix); + if (val > maxVal) { + maxVal = val; + } + } catch (NumberFormatException ignored) {} + } + } + + String nextSeq = StringUtils.leftPad(String.valueOf(maxVal + 1), 5, '0'); + if (nextSeq.length() > 5) { + nextSeq = nextSeq.substring(nextSeq.length() - 5); + } + return nextSeq; + } + public String generate(CurrentAccount account) { Long productId = account.getProductId(); @@ -59,11 +84,10 @@ public class CurrentAccountNumberGenerator { String officeId = StringUtils.leftPad(account.getOffice().getId().toString(), 2, '0'); if (officeId.length() > 2) officeId = officeId.substring(officeId.length() - 2); - // Account ID — 5 digits - String accountId = StringUtils.leftPad(account.getId().toString(), 5, '0'); - if (accountId.length() > 5) accountId = accountId.substring(accountId.length() - 5); + // Next sequence from existing account numbers + String nextSeq = getNextSequence(); - return CBS_PREFIX + glCode + officeId + accountId; + return CBS_PREFIX + glCode + officeId + nextSeq; } public String preview(Long productId, Long officeId) { @@ -80,13 +104,10 @@ public class CurrentAccountNumberGenerator { String officeStr = StringUtils.leftPad(officeId != null ? officeId.toString() : "0", 2, '0'); if (officeStr.length() > 2) officeStr = officeStr.substring(officeStr.length() - 2); - // Next account ID estimate from m_current_account - Long maxId = jdbcTemplate.query( - "SELECT MAX(id) FROM m_current_account", - rs -> rs.next() ? rs.getLong(1) : 0L); - String nextSeq = StringUtils.leftPad(String.valueOf((maxId != null ? maxId : 0L) + 1), 5, '0'); - if (nextSeq.length() > 5) nextSeq = nextSeq.substring(nextSeq.length() - 5); + // Next sequence from existing account numbers + String nextSeq = getNextSequence(); return CBS_PREFIX + glCode + officeStr + nextSeq; } + } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java index 6f659759d..3c209996b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositAccountRecurringDetail.java @@ -25,6 +25,7 @@ import jakarta.persistence.Embedded; import jakarta.persistence.Entity; import jakarta.persistence.JoinColumn; import jakarta.persistence.OneToOne; +import jakarta.persistence.PostLoad; import jakarta.persistence.Table; import java.math.BigDecimal; import java.math.MathContext; @@ -135,7 +136,17 @@ public class DepositAccountRecurringDetail extends AbstractPersistableCustom actualChanges.put(shareLinkingEnabledParamName, newValue); this.shareLinkingEnabled = newValue; } + + // CBS extended fields mapping during modify application + final String accountTypeParam = "accountType"; + if (command.isChangeInStringParameterNamed(accountTypeParam, this.cbsAccountType)) { + final String newValue = command.stringValueOfParameterNamed(accountTypeParam); + actualChanges.put(accountTypeParam, newValue); + this.cbsAccountType = newValue; + } + + final String customerSegmentParam = "customerSegment"; + if (command.isChangeInStringParameterNamed(customerSegmentParam, this.customerSegment)) { + final String newValue = command.stringValueOfParameterNamed(customerSegmentParam); + actualChanges.put(customerSegmentParam, newValue); + this.customerSegment = newValue; + } + + final String accountStatusParam = "accountStatus"; + if (command.isChangeInStringParameterNamed(accountStatusParam, this.accountStatus)) { + final String newValue = command.stringValueOfParameterNamed(accountStatusParam); + actualChanges.put(accountStatusParam, newValue); + this.accountStatus = newValue; + } + + final String modeOfOperationParam = "modeOfOperation"; + if (command.isChangeInStringParameterNamed(modeOfOperationParam, this.modeOfOperation)) { + final String newValue = command.stringValueOfParameterNamed(modeOfOperationParam); + actualChanges.put(modeOfOperationParam, newValue); + this.modeOfOperation = newValue; + } + + final String specialCategoryParam = "specialCategory"; + if (command.isChangeInStringParameterNamed(specialCategoryParam, this.specialCategory)) { + final String newValue = command.stringValueOfParameterNamed(specialCategoryParam); + actualChanges.put(specialCategoryParam, newValue); + this.specialCategory = newValue; + } + + final String weakerSectionParam = "weakerSection"; + if (command.isChangeInStringParameterNamed(weakerSectionParam, this.weakerSection)) { + final String newValue = command.stringValueOfParameterNamed(weakerSectionParam); + actualChanges.put(weakerSectionParam, newValue); + this.weakerSection = newValue; + } + + final String nominationFacilityParam = "nominationFacility"; + if (command.isChangeInBooleanParameterNamed(nominationFacilityParam, this.nominationFacility)) { + final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(nominationFacilityParam); + actualChanges.put(nominationFacilityParam, newValue); + this.nominationFacility = newValue; + } + + final String autoDebitFacilityParam = "autoDebitFacility"; + if (command.isChangeInBooleanParameterNamed(autoDebitFacilityParam, this.autoDebitFacility)) { + final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(autoDebitFacilityParam); + actualChanges.put(autoDebitFacilityParam, newValue); + this.autoDebitFacility = newValue; + } + + final String isSeniorCitizenParam = "isSeniorCitizen"; + if (command.isChangeInBooleanParameterNamed(isSeniorCitizenParam, this.isSeniorCitizen)) { + final boolean newValue = command.booleanPrimitiveValueOfParameterNamed(isSeniorCitizenParam); + actualChanges.put(isSeniorCitizenParam, newValue); + this.isSeniorCitizen = newValue; + } + + final String seniorCitizenInterestRateParam = "seniorCitizenInterestRate"; + if (command.isChangeInBigDecimalParameterNamed(seniorCitizenInterestRateParam, this.seniorCitizenInterestRate)) { + final BigDecimal newValue = command.bigDecimalValueOfParameterNamed(seniorCitizenInterestRateParam); + actualChanges.put(seniorCitizenInterestRateParam, newValue); + this.seniorCitizenInterestRate = newValue; + if (newValue != null && newValue.compareTo(BigDecimal.ZERO) > 0) { + updateNominalAnnualInterestRate(newValue); + } + } + + final String guardianNameParam = "guardianName"; + if (command.isChangeInStringParameterNamed(guardianNameParam, this.guardianName)) { + final String newValue = command.stringValueOfParameterNamed(guardianNameParam); + actualChanges.put(guardianNameParam, newValue); + this.guardianName = newValue; + } + + final String guardianCifNumberParam = "guardianCifNumber"; + if (command.isChangeInStringParameterNamed(guardianCifNumberParam, this.guardianCifNumber)) { + final String newValue = command.stringValueOfParameterNamed(guardianCifNumberParam); + actualChanges.put(guardianCifNumberParam, newValue); + this.guardianCifNumber = newValue; + } + + final String guardianRelationshipParam = "guardianRelationship"; + if (command.isChangeInStringParameterNamed(guardianRelationshipParam, this.guardianRelationship)) { + final String newValue = command.stringValueOfParameterNamed(guardianRelationshipParam); + actualChanges.put(guardianRelationshipParam, newValue); + this.guardianRelationship = newValue; + } + + final String minorDateOfBirthParam = "minorDateOfBirth"; + if (command.isChangeInLocalDateParameterNamed(minorDateOfBirthParam, this.minorDateOfBirth)) { + final LocalDate newValue = command.localDateValueOfParameterNamed(minorDateOfBirthParam); + actualChanges.put(minorDateOfBirthParam, newValue); + this.minorDateOfBirth = newValue; + } + + final String guardianClientIdParam = "guardianClientId"; + if (command.isChangeInLongParameterNamed(guardianClientIdParam, this.guardianClientId)) { + final Long newValue = command.longValueOfParameterNamed(guardianClientIdParam); + actualChanges.put(guardianClientIdParam, newValue); + this.guardianClientId = newValue; + } + + final String introducerIdParam = "introducerId"; + if (command.isChangeInLongParameterNamed(introducerIdParam, this.introducerClientId)) { + final Long newValue = command.longValueOfParameterNamed(introducerIdParam); + actualChanges.put(introducerIdParam, newValue); + this.introducerClientId = newValue; + } + + final String introducerNameParam = "introducerName"; + if (command.isChangeInStringParameterNamed(introducerNameParam, this.introducerName)) { + final String newValue = command.stringValueOfParameterNamed(introducerNameParam); + actualChanges.put(introducerNameParam, newValue); + this.introducerName = newValue; + } + + final String introducerCifNumberParam = "introducerCifNumber"; + if (command.isChangeInStringParameterNamed(introducerCifNumberParam, this.introducerCifNumber)) { + final String newValue = command.stringValueOfParameterNamed(introducerCifNumberParam); + actualChanges.put(introducerCifNumberParam, newValue); + this.introducerCifNumber = newValue; + } + + final String linkedAccountIdParam = "linkedAccountId"; + if (command.isChangeInLongParameterNamed(linkedAccountIdParam, this.linkedAccountId)) { + final Long newValue = command.longValueOfParameterNamed(linkedAccountIdParam); + actualChanges.put(linkedAccountIdParam, newValue); + this.linkedAccountId = newValue; + } + + final String linkedAccountTypeParam = "linkedAccountType"; + if (command.isChangeInStringParameterNamed(linkedAccountTypeParam, this.linkedAccountType)) { + final String newValue = command.stringValueOfParameterNamed(linkedAccountTypeParam); + actualChanges.put(linkedAccountTypeParam, newValue); + this.linkedAccountType = newValue; + } + + final String linkedAccountNoParam = "linkedAccountNo"; + if (command.isChangeInStringParameterNamed(linkedAccountNoParam, this.linkedAccountNo)) { + final String newValue = command.stringValueOfParameterNamed(linkedAccountNoParam); + actualChanges.put(linkedAccountNoParam, newValue); + this.linkedAccountNo = newValue; + } + + final String accountFacilityConfigParam = "accountFacilityConfig"; + if (command.hasParameter(accountFacilityConfigParam)) { + final com.google.gson.JsonElement parsedJson = command.parsedJson(); + if (parsedJson != null && parsedJson.isJsonObject()) { + final com.google.gson.JsonObject jsonObj = parsedJson.getAsJsonObject(); + if (jsonObj.has(accountFacilityConfigParam) && !jsonObj.get(accountFacilityConfigParam).isJsonNull() + && jsonObj.get(accountFacilityConfigParam).isJsonObject()) { + final com.google.gson.JsonObject configObj = jsonObj.get(accountFacilityConfigParam).getAsJsonObject(); + if (this.facilityConfig == null) { + this.facilityConfig = new SavingsAccountFacilityConfig(this); + } + this.facilityConfig.updateFrom(configObj); + actualChanges.put(accountFacilityConfigParam, configObj.toString()); + } + } + } + + final String jointHoldersParam = "jointHolders"; + if (command.hasParameter(jointHoldersParam)) { + final com.google.gson.JsonElement parsedJson = command.parsedJson(); + if (parsedJson != null && parsedJson.isJsonObject()) { + final com.google.gson.JsonObject jsonObj = parsedJson.getAsJsonObject(); + if (jsonObj.has(jointHoldersParam) && !jsonObj.get(jointHoldersParam).isJsonNull() + && jsonObj.get(jointHoldersParam).isJsonArray()) { + final com.google.gson.JsonArray holdersArray = jsonObj.get(jointHoldersParam).getAsJsonArray(); + final List holders = new ArrayList<>(); + for (int i = 0; i < holdersArray.size(); i++) { + final com.google.gson.JsonObject h = holdersArray.get(i).getAsJsonObject(); + final Long clientId = h.has("clientId") && !h.get("clientId").isJsonNull() + ? h.get("clientId").getAsLong() : null; + final String cifNumber = h.has("cifNumber") && !h.get("cifNumber").isJsonNull() + ? h.get("cifNumber").getAsString() : null; + final String displayName = h.has("displayName") && !h.get("displayName").isJsonNull() + ? h.get("displayName").getAsString() : null; + final BigDecimal sharePercentage = h.has("sharePercentage") && !h.get("sharePercentage").isJsonNull() + ? h.get("sharePercentage").getAsBigDecimal() : null; + final boolean isPrimary = h.has("isPrimary") && h.get("isPrimary").getAsBoolean(); + String signingAuthority = h.has("signingAuthority") && !h.get("signingAuthority").isJsonNull() + ? h.get("signingAuthority").getAsString() : null; + String role = h.has("role") && !h.get("role").isJsonNull() + ? h.get("role").getAsString() : null; + + if (signingAuthority == null || signingAuthority.trim().isEmpty()) { + signingAuthority = isPrimary ? "Mandatory" : "Optional"; + } + if (role == null || role.trim().isEmpty()) { + role = isPrimary ? "Primary Account Holder" : "Co-Holder"; + } + + final boolean isMandatory = h.has("isMandatory") && h.get("isMandatory").getAsBoolean(); + holders.add(new SavingsAccountJointHolder(this, clientId, cifNumber, displayName, + sharePercentage, signingAuthority, role, isPrimary, isMandatory)); + } + this.jointHolders.clear(); + this.jointHolders.addAll(holders); + actualChanges.put(jointHoldersParam, holdersArray.toString()); + } + } + } + validateLockinDetails(baseDataValidator); esnureOverdraftLimitsSetForOverdraftAccounts(); } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java index 93127dfed..3e5b80748 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountCharge.java @@ -815,16 +815,20 @@ public class SavingsAccountCharge extends AbstractAuditableWithUTCDateTimeCustom return nextDueLocalDate; } + public Integer getFeeInterval() { + return this.feeInterval == null ? 1 : this.feeInterval; + } + private LocalDate calculateNextDueDate(final LocalDate date) { LocalDate nextDueLocalDate = null; if (isAnnualFee()) { nextDueLocalDate = date.withMonth(this.feeOnMonth).plusYears(1); nextDueLocalDate = setDayOfMonth(nextDueLocalDate); } else if (isMonthlyFee()) { - nextDueLocalDate = date.plusMonths(this.feeInterval); + nextDueLocalDate = date.plusMonths(getFeeInterval()); nextDueLocalDate = setDayOfMonth(nextDueLocalDate); } else if (isWeeklyFee()) { - nextDueLocalDate = date.plusWeeks(this.feeInterval); + nextDueLocalDate = date.plusWeeks(getFeeInterval()); nextDueLocalDate = setDayOfWeek(nextDueLocalDate); } return nextDueLocalDate; @@ -857,10 +861,10 @@ public class SavingsAccountCharge extends AbstractAuditableWithUTCDateTimeCustom nextDueLocalDate = nextDueLocalDate.withMonth(this.feeOnMonth).minusYears(1); nextDueLocalDate = setDayOfMonth(nextDueLocalDate); } else if (isMonthlyFee()) { - nextDueLocalDate = nextDueLocalDate.minusMonths(this.feeInterval); + nextDueLocalDate = nextDueLocalDate.minusMonths(getFeeInterval()); nextDueLocalDate = setDayOfMonth(nextDueLocalDate); } else if (isWeeklyFee()) { - nextDueLocalDate = nextDueLocalDate.minusDays(7 * this.feeInterval); + nextDueLocalDate = nextDueLocalDate.minusDays(7 * getFeeInterval()); nextDueLocalDate = setDayOfWeek(nextDueLocalDate); } From 99c153830c4c366072f8ceeea716bee7a9d3385f Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Wed, 1 Jul 2026 17:25:04 +0530 Subject: [PATCH 6/8] pending account terminate feature develop --- .../domain/CommandProcessingResultType.java | 7 +- .../service/CommandWrapperBuilder.java | 8 ++ .../SynchronousCommandProcessingService.java | 3 +- .../savings/data/SavingsAccountData.java | 1 + .../domain/SavingsAccountStatusType.java | 8 +- .../savings/service/SavingsEnumerations.java | 5 ++ .../currentaccount/domain/CurrentAccount.java | 11 +++ .../CurrentAccountWritePlatformService.java | 2 + .../api/AccountTerminateApiResource.java | 80 +++++++++++++++++++ .../AccountTerminateCommandHandler.java | 46 +++++++++++ .../AccountTerminateWritePlatformService.java | 27 +++++++ ...ountTerminateWritePlatformServiceImpl.java | 66 +++++++++++++++ .../api/CurrentAccountsApiResource.java | 49 +++++++----- ...CurrentAccountTerminateCommandHandler.java | 46 +++++++++++ ...DepositAccountTerminateCommandHandler.java | 46 +++++++++++ ...DepositAccountTerminateCommandHandler.java | 46 +++++++++++ ...SavingsAccountTerminateCommandHandler.java | 46 +++++++++++ .../ActivateCurrentAccountCommandHandler.java | 8 +- ...seSavingsCurrentAccountCommandHandler.java | 8 +- ...ountApplicationApprovalCommandHandler.java | 10 +-- ...ApplicationApprovalUndoCommandHandler.java | 10 +-- ...ountApplicationDeletionCommandHandler.java | 10 +-- ...ApplicationModificationCommandHandler.java | 10 +-- ...ountApplicationRejectedCommandHandler.java | 10 +-- ...untApplicationSubmittalCommandHandler.java | 10 +-- ...untApplicationWithdrawnCommandHandler.java | 10 +-- ...CurrentAccountReadPlatformServiceImpl.java | 34 +++++++- ...urrentAccountWritePlatformServiceImpl.java | 27 +++++++ ...SavingsAccountReadPlatformServiceImpl.java | 20 +++-- ...WritePlatformServiceJpaRepositoryImpl.java | 13 +++ .../db/changelog/tenant/changelog-tenant.xml | 1 + ...te_true_to_savings_and_current_account.xml | 22 +++++ .../savings/domain/SavingsAccount.java | 15 ++++ .../SavingsAccountWritePlatformService.java | 2 + 34 files changed, 641 insertions(+), 76 deletions(-) create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTerminateApiResource.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/AccountTerminateCommandHandler.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformService.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformServiceImpl.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CurrentAccountTerminateCommandHandler.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/FixedDepositAccountTerminateCommandHandler.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/RecurringDepositAccountTerminateCommandHandler.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/SavingsAccountTerminateCommandHandler.java create mode 100644 fineract-provider/src/main/resources/db/changelog/tenant/parts/0340_add_terminate_true_to_savings_and_current_account.xml diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandProcessingResultType.java b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandProcessingResultType.java index 17f70dfe4..224490cc7 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandProcessingResultType.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/domain/CommandProcessingResultType.java @@ -34,7 +34,8 @@ public enum CommandProcessingResultType { AWAITING_APPROVAL(2, "commandProcessingResultType.awaiting.approval"), // REJECTED(3, "commandProcessingResultType.rejected"), // UNDER_PROCESSING(4, "commandProcessingResultType.underProcessing"), // - ERROR(5, "commandProcessingResultType.error"); + ERROR(5, "commandProcessingResultType.error"), // + TERMINATE(6, "commandProcessingResultType.terminate"); private static final Map BY_ID = Arrays.stream(values()) .collect(Collectors.toMap(CommandProcessingResultType::getValue, v -> v)); @@ -59,4 +60,8 @@ public enum CommandProcessingResultType { public boolean isRejected() { return this == REJECTED; } + + public boolean isTerminate() { + return this == TERMINATE; + } } diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java index b16b574c1..2f9cf0685 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java @@ -1611,6 +1611,14 @@ public class CommandWrapperBuilder { return this; } + public CommandWrapperBuilder terminateAccount(final Long accountId) { + this.actionName = "TERMINATE"; + this.entityName = "ACCOUNT"; + this.entityId = accountId; + this.href = "/accounts/" + accountId + "/terminate"; + return this; + } + public CommandWrapperBuilder approveGSIMAccountApplication(final Long accountId) { this.actionName = "APPROVE"; this.entityName = "GSIMACCOUNT"; diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java b/fineract-core/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java index a13835b62..ea09a0776 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/service/SynchronousCommandProcessingService.java @@ -20,6 +20,7 @@ package org.apache.fineract.commands.service; import static org.apache.fineract.commands.domain.CommandProcessingResultType.ERROR; import static org.apache.fineract.commands.domain.CommandProcessingResultType.PROCESSED; +import static org.apache.fineract.commands.domain.CommandProcessingResultType.TERMINATE; import static org.apache.http.HttpStatus.SC_OK; import com.google.gson.Gson; @@ -181,7 +182,7 @@ public class SynchronousCommandProcessingService implements CommandProcessingSer currentSource.setResultStatusCode(SC_OK); currentSource.updateForAudit(result); currentSource.setResult(toApiResultJsonSerializer.serializeResult(result)); - currentSource.setStatus(PROCESSED); + currentSource.setStatus("TERMINATE".equals(wrapper.getActionName()) ? TERMINATE : PROCESSED); // Return saved command source return commandSourceService.saveResultSameTransaction(currentSource); diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java index 544d0f35f..def3e27f7 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsAccountData.java @@ -170,6 +170,7 @@ public final class SavingsAccountData implements Serializable { private Boolean balanceSwapOption; private Boolean msme; private Boolean autoDebitFacility; + private Boolean terminateTrue; private String avgBalanceCalcPeriod; private String validForPeriod; private Boolean odAccountClosedZeroBalanceInDayClosing; diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java index ffe2fefaf..ef61b14de 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccountStatusType.java @@ -36,7 +36,8 @@ public enum SavingsAccountStatusType { REJECTED(500, "savingsAccountStatusType.rejected"), // CLOSED(600, "savingsAccountStatusType.closed"), // PRE_MATURE_CLOSURE(700, "savingsAccountStatusType.pre.mature.closure"), // - MATURED(800, "savingsAccountStatusType.matured"); // + MATURED(800, "savingsAccountStatusType.matured"), // + TERMINATED(900, "savingsAccountStatusType.terminated"); // private final Integer value; private final String code; @@ -53,6 +54,7 @@ public enum SavingsAccountStatusType { case 600 -> SavingsAccountStatusType.CLOSED; case 700 -> SavingsAccountStatusType.PRE_MATURE_CLOSURE; case 800 -> SavingsAccountStatusType.MATURED; + case 900 -> SavingsAccountStatusType.TERMINATED; default -> SavingsAccountStatusType.INVALID; }; } @@ -113,4 +115,8 @@ public enum SavingsAccountStatusType { public boolean isPreMatureClosure() { return this.value.equals(SavingsAccountStatusType.PRE_MATURE_CLOSURE.getValue()); } + + public boolean isTerminated() { + return this.value.equals(SavingsAccountStatusType.TERMINATED.getValue()); + } } diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java index 7f4cab97b..57e025a06 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsEnumerations.java @@ -285,6 +285,11 @@ public final class SavingsEnumerations { SavingsAccountStatusType.MATURED.getCode(), "Matured", submittedAndPendingApproval, isApproved, isRejected, isWithdrawnByApplicant, isActive, isClosed, isPrematureClosed, isTransferInProgress, isTransferOnHold, matured); break; + case TERMINATED: + optionData = new SavingsAccountStatusEnumData(SavingsAccountStatusType.TERMINATED.getValue().longValue(), + SavingsAccountStatusType.TERMINATED.getCode(), "Terminated", submittedAndPendingApproval, isApproved, isRejected, + isWithdrawnByApplicant, isActive, isClosed, isPrematureClosed, isTransferInProgress, isTransferOnHold, matured); + break; } return optionData; } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java index 4e44db25d..38bf40627 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/domain/CurrentAccount.java @@ -332,6 +332,9 @@ public class CurrentAccount extends AbstractAuditableCustom { @Column(name = "is_linking_enable", nullable = false) private boolean shareLinkingEnabled = false; + @Column(name = "terminate_true", nullable = false, columnDefinition = "boolean default false") + private boolean terminateTrue = false; + // Relationships @OneToMany(mappedBy = "currentAccount", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) @@ -442,4 +445,12 @@ public class CurrentAccount extends AbstractAuditableCustom { public boolean isShareLinkingEnabled() { return shareLinkingEnabled; } public void setShareLinkingEnabled(boolean shareLinkingEnabled) { this.shareLinkingEnabled = shareLinkingEnabled; } + + public boolean isTerminateTrue() { return terminateTrue; } + public void setTerminateTrue(boolean terminateTrue) { this.terminateTrue = terminateTrue; } + + public void terminate() { + this.terminateTrue = true; + this.statusEnum = 900; + } } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountWritePlatformService.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountWritePlatformService.java index c3c1a85f9..2556aaf46 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountWritePlatformService.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentaccount/service/CurrentAccountWritePlatformService.java @@ -40,4 +40,6 @@ public interface CurrentAccountWritePlatformService { CommandProcessingResult modifyApplication(Long accountId, JsonCommand command); CommandProcessingResult deleteApplication(Long accountId); + + CommandProcessingResult terminateAccount(Long accountId, JsonCommand command); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTerminateApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTerminateApiResource.java new file mode 100644 index 000000000..3128afbef --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/api/AccountTerminateApiResource.java @@ -0,0 +1,80 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.account.api; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.PathParam; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.apache.fineract.commands.domain.CommandWrapper; +import org.apache.fineract.commands.service.CommandWrapperBuilder; +import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import com.google.gson.JsonElement; +import org.springframework.stereotype.Component; + +@Path("/v1/accounts/{accountId}/terminate") +@Component +@Tag(name = "Account Terminate", description = "Unified terminate endpoint for Savings, Current, FD and RD accounts.") +@RequiredArgsConstructor +public class AccountTerminateApiResource { + + private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; + private final DefaultToApiJsonSerializer toApiJsonSerializer; + private final FromJsonHelper fromJsonHelper; + + @POST + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Terminate an account", description = "Terminates a Savings, Current, Fixed Deposit or Recurring Deposit account. Pass accountType in the request body: SAVINGS | CURRENT | FD | RD.") + @ApiResponse(responseCode = "200", description = "OK") + public String terminate(@PathParam("accountId") final Long accountId, + final String apiRequestBodyAsJson) { + + final String jsonBody = StringUtils.isBlank(apiRequestBodyAsJson) ? "{}" : apiRequestBodyAsJson; + + final JsonElement root = this.fromJsonHelper.parse(jsonBody); + final String accountType = this.fromJsonHelper.extractStringNamed("accountType", root); + String entityName = "SAVINGSACCOUNT"; + if ("CURRENT".equalsIgnoreCase(accountType)) { + entityName = "CURRENTACCOUNT"; + } else if ("FD".equalsIgnoreCase(accountType)) { + entityName = "FIXEDDEPOSITACCOUNT"; + } else if ("RD".equalsIgnoreCase(accountType)) { + entityName = "RECURRINGDEPOSITACCOUNT"; + } + + final CommandWrapper commandRequest = new CommandWrapperBuilder() + .withJson(jsonBody) + .terminateAccount(accountId) + .withEntityName(entityName) + .build(); + final CommandProcessingResult result = commandsSourceWritePlatformService.logCommandSource(commandRequest); + return toApiJsonSerializer.serialize(result); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/AccountTerminateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/AccountTerminateCommandHandler.java new file mode 100644 index 000000000..9f6a2553c --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/handler/AccountTerminateCommandHandler.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.account.handler; + +import org.apache.fineract.commands.annotation.CommandType; +import org.apache.fineract.commands.handler.NewCommandSourceHandler; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.portfolio.account.service.AccountTerminateWritePlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@CommandType(entity = "ACCOUNT", action = "TERMINATE") +public class AccountTerminateCommandHandler implements NewCommandSourceHandler { + + private final AccountTerminateWritePlatformService writePlatformService; + + @Autowired + public AccountTerminateCommandHandler(final AccountTerminateWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; + } + + @Transactional + @Override + public CommandProcessingResult processCommand(final JsonCommand command) { + return this.writePlatformService.terminate(command.entityId(), command); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformService.java new file mode 100644 index 000000000..b75bc4787 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformService.java @@ -0,0 +1,27 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.account.service; + +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; + +public interface AccountTerminateWritePlatformService { + + CommandProcessingResult terminate(Long accountId, JsonCommand command); +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformServiceImpl.java new file mode 100644 index 000000000..045d24ced --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/account/service/AccountTerminateWritePlatformServiceImpl.java @@ -0,0 +1,66 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.account.service; + +import lombok.RequiredArgsConstructor; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +/** + * Routes terminate to the correct account service based on the + * "accountType" field in the JSON body: + * SAVINGS → m_savings_account (depositType = savings) + * FD → m_savings_account (depositType = 200) + * RD → m_savings_account (depositType = 300) + * CURRENT → m_current_account + */ +@Service +@RequiredArgsConstructor +public class AccountTerminateWritePlatformServiceImpl implements AccountTerminateWritePlatformService { + + private static final String PARAM_ACCOUNT_TYPE = "accountType"; + + private final SavingsAccountWritePlatformService savingsAccountWritePlatformService; + private final CurrentAccountWritePlatformService currentAccountWritePlatformService; + + @Override + @Transactional + public CommandProcessingResult terminate(final Long accountId, final JsonCommand command) { + final String accountType = command.stringValueOfParameterNamed(PARAM_ACCOUNT_TYPE); + + if (accountType == null || accountType.isBlank()) { + throw new PlatformDataIntegrityException( + "error.msg.account.terminate.accountType.required", + "accountType is required: SAVINGS, CURRENT, FD or RD"); + } + + return switch (accountType.toUpperCase()) { + case "CURRENT" -> currentAccountWritePlatformService.terminateAccount(accountId, command); + case "SAVINGS", "FD", "RD" -> savingsAccountWritePlatformService.terminate(accountId, command); + default -> throw new PlatformDataIntegrityException( + "error.msg.account.terminate.accountType.invalid", + "Unknown accountType '" + accountType + "'. Expected SAVINGS, CURRENT, FD or RD."); + }; + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentAccountsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentAccountsApiResource.java index ccaf3ff11..a0310f85a 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentAccountsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentAccountsApiResource.java @@ -53,6 +53,9 @@ import org.apache.fineract.infrastructure.security.service.SqlValidator; import org.apache.fineract.portfolio.savings.DepositsApiConstants; import org.apache.fineract.portfolio.savings.data.SavingsAccountData; import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountReadPlatformService; +import org.apache.fineract.commands.domain.CommandWrapper; +import org.apache.fineract.commands.service.CommandWrapperBuilder; +import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.apache.fineract.portfolio.savings.service.CurrentAccountTemplateReadPlatformService; import org.springframework.stereotype.Component; @@ -72,6 +75,7 @@ public class CurrentAccountsApiResource { private final SqlValidator sqlValidator; private final CurrentAccountWritePlatformService currentAccountWritePlatformService; private final CurrentAccountReadPlatformService currentAccountReadPlatformService; + private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; @GET @Path("template") @@ -125,10 +129,11 @@ public class CurrentAccountsApiResource { @Operation(summary = "Submit new current account application") @ApiResponse(responseCode = "200", description = "OK") public String submitApplication(@Parameter(hidden = true) final String apiRequestBodyAsJson) { - final org.apache.fineract.infrastructure.core.api.JsonCommand command = - org.apache.fineract.infrastructure.core.api.JsonCommand.fromJsonElement(null, - JsonParser.parseString(apiRequestBodyAsJson != null ? apiRequestBodyAsJson : "{}")); - final CommandProcessingResult result = currentAccountWritePlatformService.submitApplication(command); + final CommandWrapper commandRequest = new CommandWrapperBuilder() // + .createCurrentAccount() // + .withJson(apiRequestBodyAsJson) // + .build(); + final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return toApiJsonSerializer.serialize(result); } @@ -157,11 +162,11 @@ public class CurrentAccountsApiResource { public String update(@PathParam("accountId") final Long accountId, @Parameter(hidden = true) final String apiRequestBodyAsJson, @QueryParam("command") final String commandParam) { - - final org.apache.fineract.infrastructure.core.api.JsonCommand command = - org.apache.fineract.infrastructure.core.api.JsonCommand.fromJsonElement(null, - JsonParser.parseString(apiRequestBodyAsJson != null ? apiRequestBodyAsJson : "{}")); - final CommandProcessingResult result = currentAccountWritePlatformService.modifyApplication(accountId, command); + final CommandWrapper commandRequest = new CommandWrapperBuilder() // + .updateCurrentAccount(accountId) // + .withJson(apiRequestBodyAsJson) // + .build(); + final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return toApiJsonSerializer.serialize(result); } @@ -180,30 +185,29 @@ public class CurrentAccountsApiResource { jsonApiRequest = "{}"; } - final org.apache.fineract.infrastructure.core.api.JsonCommand command = - org.apache.fineract.infrastructure.core.api.JsonCommand.fromJsonElement(null, - JsonParser.parseString(jsonApiRequest)); + final CommandWrapperBuilder builder = new CommandWrapperBuilder().withJson(jsonApiRequest); - CommandProcessingResult result = null; + CommandWrapper commandRequest = null; if (is(commandParam, "reject")) { - result = currentAccountWritePlatformService.rejectApplication(accountId, command); + commandRequest = builder.rejectCurrentAccountApplication(accountId).build(); } else if (is(commandParam, "withdrawnByApplicant")) { - result = currentAccountWritePlatformService.withdrawApplication(accountId, command); + commandRequest = builder.withdrawCurrentAccountApplication(accountId).build(); } else if (is(commandParam, "approve")) { - result = currentAccountWritePlatformService.approveApplication(accountId, command); + commandRequest = builder.approveCurrentAccountApplication(accountId).build(); } else if (is(commandParam, "undoapproval")) { - result = currentAccountWritePlatformService.undoApproval(accountId, command); + commandRequest = builder.undoCurrentAccountApplication(accountId).build(); } else if (is(commandParam, "activate")) { - result = currentAccountWritePlatformService.activate(accountId, command); + commandRequest = builder.currentAccountActivation(accountId).build(); } else if (is(commandParam, "close")) { - result = currentAccountWritePlatformService.closeAccount(accountId, command); + commandRequest = builder.closeCurrentAccountApplication(accountId).build(); } - if (result == null) { + if (commandRequest == null) { throw new UnrecognizedQueryParamException("command", commandParam, new Object[] { "reject", "withdrawnByApplicant", "approve", "undoapproval", "activate", "close" }); } + final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return toApiJsonSerializer.serialize(result); } @@ -214,7 +218,10 @@ public class CurrentAccountsApiResource { @Operation(summary = "Delete a current account application") @ApiResponse(responseCode = "200", description = "OK") public String delete(@PathParam("accountId") final Long accountId) { - final CommandProcessingResult result = currentAccountWritePlatformService.deleteApplication(accountId); + final CommandWrapper commandRequest = new CommandWrapperBuilder() // + .deleteCurrentAccount(accountId) // + .build(); + final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return toApiJsonSerializer.serialize(result); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CurrentAccountTerminateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CurrentAccountTerminateCommandHandler.java new file mode 100644 index 000000000..db55dbe87 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/CurrentAccountTerminateCommandHandler.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.handler; + +import org.apache.fineract.commands.annotation.CommandType; +import org.apache.fineract.commands.handler.NewCommandSourceHandler; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@CommandType(entity = "CURRENTACCOUNT", action = "TERMINATE") +public class CurrentAccountTerminateCommandHandler implements NewCommandSourceHandler { + + private final CurrentAccountWritePlatformService writePlatformService; + + @Autowired + public CurrentAccountTerminateCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; + } + + @Transactional + @Override + public CommandProcessingResult processCommand(final JsonCommand command) { + return this.writePlatformService.terminateAccount(command.entityId(), command); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/FixedDepositAccountTerminateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/FixedDepositAccountTerminateCommandHandler.java new file mode 100644 index 000000000..f6cbd0a1d --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/FixedDepositAccountTerminateCommandHandler.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.handler; + +import org.apache.fineract.commands.annotation.CommandType; +import org.apache.fineract.commands.handler.NewCommandSourceHandler; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@CommandType(entity = "FIXEDDEPOSITACCOUNT", action = "TERMINATE") +public class FixedDepositAccountTerminateCommandHandler implements NewCommandSourceHandler { + + private final SavingsAccountWritePlatformService writePlatformService; + + @Autowired + public FixedDepositAccountTerminateCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; + } + + @Transactional + @Override + public CommandProcessingResult processCommand(final JsonCommand command) { + return this.writePlatformService.terminate(command.entityId(), command); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/RecurringDepositAccountTerminateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/RecurringDepositAccountTerminateCommandHandler.java new file mode 100644 index 000000000..1290af244 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/RecurringDepositAccountTerminateCommandHandler.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.handler; + +import org.apache.fineract.commands.annotation.CommandType; +import org.apache.fineract.commands.handler.NewCommandSourceHandler; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@CommandType(entity = "RECURRINGDEPOSITACCOUNT", action = "TERMINATE") +public class RecurringDepositAccountTerminateCommandHandler implements NewCommandSourceHandler { + + private final SavingsAccountWritePlatformService writePlatformService; + + @Autowired + public RecurringDepositAccountTerminateCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; + } + + @Transactional + @Override + public CommandProcessingResult processCommand(final JsonCommand command) { + return this.writePlatformService.terminate(command.entityId(), command); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/SavingsAccountTerminateCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/SavingsAccountTerminateCommandHandler.java new file mode 100644 index 000000000..723f496c3 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/SavingsAccountTerminateCommandHandler.java @@ -0,0 +1,46 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.handler; + +import org.apache.fineract.commands.annotation.CommandType; +import org.apache.fineract.commands.handler.NewCommandSourceHandler; +import org.apache.fineract.infrastructure.core.api.JsonCommand; +import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; +import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Service +@CommandType(entity = "SAVINGSACCOUNT", action = "TERMINATE") +public class SavingsAccountTerminateCommandHandler implements NewCommandSourceHandler { + + private final SavingsAccountWritePlatformService writePlatformService; + + @Autowired + public SavingsAccountTerminateCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; + } + + @Transactional + @Override + public CommandProcessingResult processCommand(final JsonCommand command) { + return this.writePlatformService.terminate(command.entityId(), command); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/ActivateCurrentAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/ActivateCurrentAccountCommandHandler.java index f8b6c5e02..5a3968a35 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/ActivateCurrentAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/ActivateCurrentAccountCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "ACTIVATE") public class ActivateCurrentAccountCommandHandler implements NewCommandSourceHandler { - private final SavingsAccountWritePlatformService writePlatformService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public ActivateCurrentAccountCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { + public ActivateCurrentAccountCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.writePlatformService.activate(command.getSavingsId(), command); + return this.writePlatformService.activate(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CloseSavingsCurrentAccountCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CloseSavingsCurrentAccountCommandHandler.java index e35ab2855..b67fc318f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CloseSavingsCurrentAccountCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CloseSavingsCurrentAccountCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsAccountWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "CLOSE") public class CloseSavingsCurrentAccountCommandHandler implements NewCommandSourceHandler { - private final SavingsAccountWritePlatformService writePlatformService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CloseSavingsCurrentAccountCommandHandler(final SavingsAccountWritePlatformService writePlatformService) { + public CloseSavingsCurrentAccountCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.writePlatformService.close(command.getSavingsId(), command); + return this.writePlatformService.closeAccount(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalCommandHandler.java index 8b06c11c5..179b7d658 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "APPROVE") public class CurrentAccountApplicationApprovalCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationApprovalCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationApprovalCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.approveApplication(command.getSavingsId(), command); + return this.writePlatformService.approveApplication(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalUndoCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalUndoCommandHandler.java index 0ed4e8466..b5606d47b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalUndoCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationApprovalUndoCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "APPROVALUNDO") public class CurrentAccountApplicationApprovalUndoCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationApprovalUndoCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationApprovalUndoCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.undoApplicationApproval(command.getSavingsId(), command); + return this.writePlatformService.undoApproval(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationDeletionCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationDeletionCommandHandler.java index 135c146c6..05d732076 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationDeletionCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationDeletionCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "DELETE") public class CurrentAccountApplicationDeletionCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationDeletionCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationDeletionCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.deleteApplication(command.getSavingsId()); + return this.writePlatformService.deleteApplication(command.entityId()); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationModificationCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationModificationCommandHandler.java index ce731650b..a23f47d71 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationModificationCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationModificationCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "UPDATE") public class CurrentAccountApplicationModificationCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationModificationCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationModificationCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.modifyApplication(command.getSavingsId(), command); + return this.writePlatformService.modifyApplication(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationRejectedCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationRejectedCommandHandler.java index a3219d2ed..07984f1c7 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationRejectedCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationRejectedCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "REJECT") public class CurrentAccountApplicationRejectedCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationRejectedCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationRejectedCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.rejectApplication(command.getSavingsId(), command); + return this.writePlatformService.rejectApplication(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationSubmittalCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationSubmittalCommandHandler.java index fc0a4e455..a98804672 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationSubmittalCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationSubmittalCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "CREATE") public class CurrentAccountApplicationSubmittalCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationSubmittalCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationSubmittalCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.submitApplication(command); + return this.writePlatformService.submitApplication(command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationWithdrawnCommandHandler.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationWithdrawnCommandHandler.java index 52d761c43..5c9c70f6b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationWithdrawnCommandHandler.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/handler/current/CurrentAccountApplicationWithdrawnCommandHandler.java @@ -22,7 +22,7 @@ import org.apache.fineract.commands.annotation.CommandType; import org.apache.fineract.commands.handler.NewCommandSourceHandler; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; -import org.apache.fineract.portfolio.savings.service.SavingsApplicationProcessWritePlatformService; +import org.apache.fineract.portfolio.currentaccount.service.CurrentAccountWritePlatformService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -31,16 +31,16 @@ import org.springframework.transaction.annotation.Transactional; @CommandType(entity = "CURRENTACCOUNT", action = "WITHDRAW") public class CurrentAccountApplicationWithdrawnCommandHandler implements NewCommandSourceHandler { - private final SavingsApplicationProcessWritePlatformService applicationProcessService; + private final CurrentAccountWritePlatformService writePlatformService; @Autowired - public CurrentAccountApplicationWithdrawnCommandHandler(final SavingsApplicationProcessWritePlatformService applicationProcessService) { - this.applicationProcessService = applicationProcessService; + public CurrentAccountApplicationWithdrawnCommandHandler(final CurrentAccountWritePlatformService writePlatformService) { + this.writePlatformService = writePlatformService; } @Transactional @Override public CommandProcessingResult processCommand(final JsonCommand command) { - return this.applicationProcessService.applicantWithdrawsFromApplication(command.getSavingsId(), command); + return this.writePlatformService.withdrawApplication(command.entityId(), command); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java index 37d489877..42752b631 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountReadPlatformServiceImpl.java @@ -297,12 +297,21 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead hasWhere = true; } if (StringUtils.isNotBlank(status)) { - final Integer statusEnum = resolveStatusEnum(status); - if (statusEnum != null) { + if ("terminated".equalsIgnoreCase(status)) { sqlBuilder.append(hasWhere ? " AND " : " WHERE "); - sqlBuilder.append("ca.status_enum = ?"); - params.add(statusEnum); + sqlBuilder.append("ca.terminate_true = true"); hasWhere = true; + } else { + final Integer statusEnum = resolveStatusEnum(status); + if (statusEnum != null) { + sqlBuilder.append(hasWhere ? " AND " : " WHERE "); + sqlBuilder.append("ca.status_enum = ?"); + params.add(statusEnum); + hasWhere = true; + if (statusEnum == 100) { + sqlBuilder.append(" AND (ca.terminate_true = false OR ca.terminate_true IS NULL)"); + } + } } } if (fromDate != null) { @@ -356,6 +365,7 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead case "withdrawn" -> 400; case "rejected" -> 500; case "closed" -> 600; + case "terminated" -> 900; default -> { try { yield Integer.parseInt(status); @@ -389,6 +399,7 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead // status int statusEnum = toInt(row.get("status_enum"), 100); out.put("status", buildStatus(statusEnum)); + out.put("terminateTrue", toBoolean(row.get("terminate_true"))); // subStatus int subStatusEnum = toInt(row.get("sub_status_enum"), 0); @@ -502,6 +513,13 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead s.put("approved", false); s.put("active", false); s.put("rejected", false); s.put("withdrawnByApplicant", false); s.put("closed", true); } + case 900 -> { + s.put("code", "savingsAccountStatusType.terminated"); + s.put("value", "Terminated"); + s.put("submittedAndPendingApproval", false); + s.put("approved", false); s.put("active", false); + s.put("rejected", false); s.put("withdrawnByApplicant", false); s.put("closed", false); + } default -> { s.put("code", "savingsAccountStatusType.invalid"); s.put("value", "Invalid"); @@ -659,6 +677,14 @@ public class CurrentAccountReadPlatformServiceImpl implements CurrentAccountRead try { return new BigDecimal(val.toString().trim()); } catch (Exception e) { return null; } } + private boolean toBoolean(Object val) { + if (val == null) return false; + if (val instanceof Boolean) return (Boolean) val; + if (val instanceof Number) return ((Number) val).intValue() == 1; + String s = val.toString().trim(); + return "true".equalsIgnoreCase(s) || "1".equals(s); + } + private static class FlatRowMapper implements RowMapper> { @Override public Map mapRow(ResultSet rs, int rowNum) throws SQLException { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java index 17c70f8fd..cf9f24db0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/CurrentAccountWritePlatformServiceImpl.java @@ -251,6 +251,9 @@ public class CurrentAccountWritePlatformServiceImpl implements CurrentAccountWri throw e; } + log.info("Current Account created successfully: [id={}, accountNo={}, clientId={}, officeId={}, submittedOnDate={}]", + account.getId(), account.getAccountNo(), clientId, office.getId(), submittedOnDate); + return new CommandProcessingResultBuilder() .withEntityId(account.getId()) .withClientId(clientId) @@ -507,6 +510,30 @@ public class CurrentAccountWritePlatformServiceImpl implements CurrentAccountWri return new CommandProcessingResultBuilder().withEntityId(accountId).build(); } + @Override + @Transactional + public CommandProcessingResult terminateAccount(final Long accountId, final JsonCommand command) { + context.authenticatedUser(); + final CurrentAccount account = findAccount(accountId); + account.terminate(); + currentAccountRepository.saveAndFlush(account); + + final java.util.Map changes = new java.util.LinkedHashMap<>(); + changes.put("terminateTrue", true); + changes.put("status", 900); + + final Long officeId = account.getOffice() != null ? account.getOffice().getId() : null; + final Long clientId = account.getClient() != null ? account.getClient().getId() : null; + + return new CommandProcessingResultBuilder() + .withEntityId(accountId) + .withOfficeId(officeId) + .withClientId(clientId) + .withSavingsId(accountId) + .with(changes) + .build(); + } + // ─── helpers ────────────────────────────────────────────────────────────── private CurrentAccount findAccount(Long accountId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java index 50ca2d653..471e82962 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountReadPlatformServiceImpl.java @@ -172,10 +172,17 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead if (searchParameters != null) { if (StringUtils.isNotBlank(searchParameters.getStatus())) { - final Integer statusEnum = resolveStatusEnum(searchParameters.getStatus()); - if (statusEnum != null) { - sqlBuilder.append(" and sa.status_enum = ?"); - objectArray[arrayPos++] = statusEnum; + if ("terminated".equalsIgnoreCase(searchParameters.getStatus())) { + sqlBuilder.append(" and sa.terminate_true = true"); + } else { + final Integer statusEnum = resolveStatusEnum(searchParameters.getStatus()); + if (statusEnum != null) { + sqlBuilder.append(" and sa.status_enum = ?"); + objectArray[arrayPos++] = statusEnum; + if (statusEnum == 100) { + sqlBuilder.append(" and (sa.terminate_true = false or sa.terminate_true is null)"); + } + } } } @@ -248,6 +255,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead case "withdrawn" -> 400; case "rejected" -> 500; case "closed" -> 600; + case "terminated" -> 900; default -> { try { yield Integer.parseInt(status); @@ -881,7 +889,8 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead sqlBuilder.append("safc.inter_bank_total_cap_facility as interBankTotalCapFacility, "); sqlBuilder.append("safc.withdrawal_facility as withdrawalFacility, "); sqlBuilder.append("safc.deposit_facility_kyc as depositFacilityKyc, "); - sqlBuilder.append("safc.virtual_debit_card as virtualDebitCard "); + sqlBuilder.append("safc.virtual_debit_card as virtualDebitCard, "); + sqlBuilder.append("sa.terminate_true as terminateTrue "); sqlBuilder.append("from m_savings_account sa "); sqlBuilder.append("join m_savings_product sp ON sa.product_id = sp.id "); sqlBuilder.append("join m_currency curr on curr.code = sa.currency_code "); @@ -1122,6 +1131,7 @@ public class SavingsAccountReadPlatformServiceImpl implements SavingsAccountRead accountData.setAutoDebitFacility(rs.getObject("autoDebitFacility") != null ? rs.getBoolean("autoDebitFacility") : null); accountData.setIntroducerRequired(rs.getObject("introducerRequired") != null ? rs.getBoolean("introducerRequired") : null); accountData.setShareLinkingEnabled(rs.getObject("shareLinkingEnabled") != null ? rs.getBoolean("shareLinkingEnabled") : null); + accountData.setTerminateTrue(rs.getObject("terminateTrue") != null ? rs.getBoolean("terminateTrue") : null); // Nominee as parsed map final String nomineeDataStr = rs.getString("nomineeData"); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java index 74bed6cfd..6ec884712 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java @@ -1770,6 +1770,19 @@ public class SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi .withClientId(account.clientId()).withGroupId(account.groupId()).withSavingsId(savingsId).with(changes).build(); } + @Override + @Transactional + public CommandProcessingResult terminate(final Long savingsId, final JsonCommand command) { + this.context.authenticatedUser(); + final SavingsAccount account = this.savingAccountAssembler.assembleFrom(savingsId, false); + final Map changes = account.terminate(); + if (!changes.isEmpty()) { + this.savingAccountRepositoryWrapper.save(account); + } + return new CommandProcessingResultBuilder().withEntityId(savingsId).withOfficeId(account.officeId()) + .withClientId(account.clientId()).withGroupId(account.groupId()).withSavingsId(savingsId).with(changes).build(); + } + @Override public CommandProcessingResult unblockAccount(final Long savingsId) { this.context.authenticatedUser(); diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml index 14d4ccb1f..9d1ccba1a 100644 --- a/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml +++ b/fineract-provider/src/main/resources/db/changelog/tenant/changelog-tenant.xml @@ -367,4 +367,5 @@ + diff --git a/fineract-provider/src/main/resources/db/changelog/tenant/parts/0340_add_terminate_true_to_savings_and_current_account.xml b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0340_add_terminate_true_to_savings_and_current_account.xml new file mode 100644 index 000000000..677356c90 --- /dev/null +++ b/fineract-provider/src/main/resources/db/changelog/tenant/parts/0340_add_terminate_true_to_savings_and_current_account.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java index e3dc2e17e..a3d54240d 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsAccount.java @@ -4216,6 +4216,21 @@ public class SavingsAccount extends AbstractAuditableWithUTCDateTimeCustom @Column(name = "senior_citizen_interest_rate", scale = 6, precision = 19, nullable = true) private BigDecimal seniorCitizenInterestRate; + @Column(name = "terminate_true", nullable = false, columnDefinition = "boolean default false") + private boolean terminateTrue = false; + + public boolean isTerminateTrue() { return terminateTrue; } + public void setTerminateTrue(boolean terminateTrue) { this.terminateTrue = terminateTrue; } + + public Map terminate() { + final Map actualChanges = new LinkedHashMap<>(); + this.terminateTrue = true; + this.status = SavingsAccountStatusType.TERMINATED.getValue(); + actualChanges.put("terminateTrue", true); + actualChanges.put("status", SavingsAccountStatusType.TERMINATED.getValue()); + return actualChanges; + } + @jakarta.persistence.OneToOne(cascade = jakarta.persistence.CascadeType.ALL, mappedBy = "savingsAccount", orphanRemoval = true, fetch = FetchType.LAZY) private SavingsAccountFacilityConfig facilityConfig; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java index 8b2979591..e6daf5577 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformService.java @@ -118,4 +118,6 @@ public interface SavingsAccountWritePlatformService { CommandProcessingResult gsimDeposit(Long gsimId, JsonCommand command); CommandProcessingResult bulkGSIMClose(Long gsimId, JsonCommand command); + + CommandProcessingResult terminate(Long savingsId, JsonCommand command); } From b0bfa386ceee47d7c6d95eb677f73d0613351ba6 Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Fri, 3 Jul 2026 15:15:09 +0530 Subject: [PATCH 7/8] implemented a Maker-Checker workflow for Products, with approval-based updates and product locking to prevent concurrent edits --- .../savings/data/SavingsProductData.java | 3 + .../savings/data/SavingsProductTempData.java | 49 ++ ...ntProductEditPendingApprovalException.java | 29 + .../CurrentProductNoPendingEditException.java | 29 + ...roductSelfApprovalNotAllowedException.java | 29 + .../CurrentProductReadPlatformService.java | 5 + ...CurrentProductReadPlatformServiceImpl.java | 56 +- .../CurrentProductWritePlatformService.java | 17 + ...WritePlatformServiceJpaRepositoryImpl.java | 132 ++++ .../starter/CurrentProductConfiguration.java | 11 +- .../products/api/ProductsApiResource.java | 112 +++ .../ShareProductReadPlatformService.java | 5 + .../api/CurrentProductsApiResource.java | 77 +- .../api/FixedDepositProductsApiResource.java | 80 +- .../RecurringDepositProductsApiResource.java | 81 +- .../api/SavingsProductsApiResource.java | 91 ++- ...DepositProductReadPlatformServiceImpl.java | 69 +- ...WritePlatformServiceJpaRepositoryImpl.java | 132 ++++ ...WritePlatformServiceJpaRepositoryImpl.java | 132 ++++ ...SavingsProductReadPlatformServiceImpl.java | 58 +- ...WritePlatformServiceJpaRepositoryImpl.java | 236 ++++++ .../savings/starter/SavingsConfiguration.java | 29 +- ...reProductEditPendingApprovalException.java | 29 + .../ShareProductNoPendingEditException.java | 29 + ...roductSelfApprovalNotAllowedException.java | 29 + .../ShareProductReadPlatformServiceImpl.java | 53 ++ .../ShareProductWritePlatformService.java | 17 + ...WritePlatformServiceJpaRepositoryImpl.java | 130 ++++ .../starter/ShareProductsConfiguration.java | 10 +- .../savings/data/FixedDepositProductData.java | 2 + .../data/RecurringDepositProductData.java | 2 + .../savings/domain/CurrentOnlyEditFields.java | 39 + .../domain/DepositLimitKycEditFields.java | 54 ++ .../domain/FacilityConfigEditFields.java | 79 ++ .../domain/FixedDepositEditFields.java | 71 ++ .../domain/GlAccountMappingEditFields.java | 78 ++ .../savings/domain/ProductPendingEdit.java | 209 ++++++ .../domain/ProductPendingEditCharge.java | 50 ++ .../ProductPendingEditChargeRepository.java | 29 + .../ProductPendingEditFacilityLimit.java | 63 ++ ...uctPendingEditFacilityLimitRepository.java | 29 + .../domain/ProductPendingEditFieldMapper.java | 696 ++++++++++++++++++ .../domain/ProductPendingEditGlMapping.java | 70 ++ ...ProductPendingEditGlMappingRepository.java | 29 + .../domain/ProductPendingEditMarketPrice.java | 66 ++ ...oductPendingEditMarketPriceRepository.java | 29 + .../domain/ProductPendingEditRepository.java | 32 + .../ProductPendingEditSubmittedField.java | 56 ++ ...ctPendingEditSubmittedFieldRepository.java | 34 + .../domain/RecurringDepositEditFields.java | 39 + .../savings/domain/SavingsCoreEditFields.java | 234 ++++++ .../savings/domain/ShareOnlyEditFields.java | 64 ++ ...gsProductEditPendingApprovalException.java | 29 + .../SavingsProductNoPendingEditException.java | 29 + ...roductSelfApprovalNotAllowedException.java | 29 + .../DepositProductReadPlatformService.java | 5 + ...xedDepositProductWritePlatformService.java | 6 + ...ingDepositProductWritePlatformService.java | 6 + .../SavingsProductReadPlatformService.java | 5 + .../SavingsProductWritePlatformService.java | 17 + .../savings/parts/module-changelog-master.xml | 10 + .../2017_add_saving_product_temp_table.xml | 85 +++ ...ix_saving_product_temp_lock_constraint.xml | 54 ++ ...and_source_link_to_saving_product_temp.xml | 44 ++ .../2020_generalize_product_temp_table.xml | 107 +++ .../2021_add_fd_rd_approval_permissions.xml | 61 ++ .../2022_add_product_checker_permissions.xml | 103 +++ .../2023_fix_product_approval_permissions.xml | 165 +++++ ...25_recreate_savings_product_temp_table.xml | 78 ++ .../2026_add_pending_edit_typed_columns.xml | 261 +++++++ ...2027_add_pending_edit_satellite_tables.xml | 150 ++++ 71 files changed, 5031 insertions(+), 26 deletions(-) create mode 100644 fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductTempData.java create mode 100644 fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductEditPendingApprovalException.java create mode 100644 fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductNoPendingEditException.java create mode 100644 fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductSelfApprovalNotAllowedException.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductEditPendingApprovalException.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductNoPendingEditException.java create mode 100644 fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductSelfApprovalNotAllowedException.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/CurrentOnlyEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositLimitKycEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FacilityConfigEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GlAccountMappingEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditCharge.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditChargeRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimit.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimitRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMapping.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMappingRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPrice.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPriceRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedField.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedFieldRepository.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductEditPendingApprovalException.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNoPendingEditException.java create mode 100644 fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductSelfApprovalNotAllowedException.java create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2017_add_saving_product_temp_table.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2018_fix_saving_product_temp_lock_constraint.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2019_add_command_source_link_to_saving_product_temp.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2020_generalize_product_temp_table.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2021_add_fd_rd_approval_permissions.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2022_add_product_checker_permissions.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2023_fix_product_approval_permissions.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2025_recreate_savings_product_temp_table.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2026_add_pending_edit_typed_columns.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2027_add_pending_edit_satellite_tables.xml diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java index 72380a6d8..0c74cde3c 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductData.java @@ -159,6 +159,9 @@ public final class SavingsProductData implements Serializable { @Getter @Setter private Map depositLimitKyc; @Getter @Setter private Map>> otherGlMappingsMap; + // True when a row exists in m_saving_product_temp with status = PENDING for this product - that row is the lock. + @Getter @Setter private Boolean isPendingApproval; + public static SavingsProductData template(final CurrencyData currency, final EnumOptionData interestCompoundingPeriodType, final EnumOptionData interestPostingPeriodType, final EnumOptionData interestCalculationType, final EnumOptionData interestCalculationDaysInYearType, final EnumOptionData accountingRule, diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductTempData.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductTempData.java new file mode 100644 index 000000000..563388c89 --- /dev/null +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/data/SavingsProductTempData.java @@ -0,0 +1,49 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.data; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.Map; +import lombok.Getter; +import lombok.Setter; + +/** + * Read-side view of a single pending Savings Product edit row (m_savings_product_temp), for the Approvals -> + * Pending Savings Product Edits screen. + */ +@Getter +@Setter +public class SavingsProductTempData implements Serializable { + + private Long id; + private Long savingsProductId; + private String savingsProductName; + private Long makerId; + private String makerUsername; + private Long checkerId; + private String checkerUsername; + private LocalDateTime createdOn; + private LocalDateTime checkedOn; + private String status; + private String rejectReason; + private Map proposedChanges; + + public SavingsProductTempData() {} +} diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductEditPendingApprovalException.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductEditPendingApprovalException.java new file mode 100644 index 000000000..a8862e301 --- /dev/null +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductEditPendingApprovalException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.currentproduct.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class CurrentProductEditPendingApprovalException extends AbstractPlatformDomainRuleException { + + public CurrentProductEditPendingApprovalException(final Long productId) { + super("error.msg.currentproduct.edit.pending.approval", + "Current product with identifier " + productId + " already has an edit pending approval", productId); + } +} diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductNoPendingEditException.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductNoPendingEditException.java new file mode 100644 index 000000000..a24e442f8 --- /dev/null +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductNoPendingEditException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.currentproduct.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class CurrentProductNoPendingEditException extends AbstractPlatformDomainRuleException { + + public CurrentProductNoPendingEditException(final Long productId) { + super("error.msg.currentproduct.no.pending.edit", + "Current product with identifier " + productId + " has no edit pending approval", productId); + } +} diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductSelfApprovalNotAllowedException.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductSelfApprovalNotAllowedException.java new file mode 100644 index 000000000..4a5c72a86 --- /dev/null +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/exception/CurrentProductSelfApprovalNotAllowedException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.currentproduct.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class CurrentProductSelfApprovalNotAllowedException extends AbstractPlatformDomainRuleException { + + public CurrentProductSelfApprovalNotAllowedException(final Long productId) { + super("error.msg.currentproduct.self.approval.not.allowed", + "The maker of the pending edit for current product " + productId + " cannot also approve or reject it", productId); + } +} diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformService.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformService.java index 83e9bbd3a..929d2e12f 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformService.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformService.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.currentproduct.service; import java.util.Collection; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; public interface CurrentProductReadPlatformService { @@ -28,4 +29,8 @@ public interface CurrentProductReadPlatformService { Collection retrieveAllForLookup(); SavingsProductData retrieveOne(Long productId); + + Collection retrieveAllPendingEdits(); + + SavingsProductTempData retrievePendingEdit(Long productId); } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java index 0075a381a..90b2d3299 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java @@ -42,7 +42,9 @@ import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilit import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityConfigRepository; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimit; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; +import org.apache.fineract.portfolio.currentproduct.exception.CurrentProductNoPendingEditException; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.tax.data.TaxGroupData; @@ -147,6 +149,55 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead } } + private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " + + "cp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " + + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " + + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " + + "spt.proposed_payload_json as proposedPayloadJson " + + "from m_savings_product_temp spt " + + "join m_current_product cp on cp.id = spt.product_id " + + "join m_appuser maker on maker.id = spt.maker_id " + + "left join m_appuser checker on checker.id = spt.checker_id " + + "where spt.product_type = 'CURRENT' "; + + private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + final String proposedPayloadJson = rs.getString("proposedPayloadJson"); + if (proposedPayloadJson != null) { + data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); + } + return data; + }; + + @Override + public Collection retrieveAllPendingEdits() { + this.context.authenticatedUser(); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; + return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + } + + @Override + public SavingsProductTempData retrievePendingEdit(final Long productId) { + this.context.authenticatedUser(); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; + try { + return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + } catch (final EmptyResultDataAccessException e) { + throw new CurrentProductNoPendingEditException(productId); + } + } + private static final class CurrentProductMapper implements RowMapper { private final String schemaSql; @@ -197,7 +248,9 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead sqlBuilder.append("cp.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing, "); sqlBuilder.append("cp.balance_swap_option as balanceSwapOption, cp.msme as msme, cp.auto_debit_facility as autoDebitFacility, "); sqlBuilder.append("cp.avg_balance_calc_period as avgBalanceCalcPeriod, cp.valid_for_period as validForPeriod, "); - sqlBuilder.append("cp.od_account_closed_zero_balance_in_day_closing as odAccountClosedZeroBalanceInDayClosing "); + sqlBuilder.append("cp.od_account_closed_zero_balance_in_day_closing as odAccountClosedZeroBalanceInDayClosing, "); + sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = cp.id " + + "and spt.product_type = 'CURRENT' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_current_product cp "); sqlBuilder.append("join m_currency curr on curr.code = cp.currency_code "); @@ -321,6 +374,7 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead productData.setAvgBalanceCalcPeriod(rs.getString("avgBalanceCalcPeriod")); productData.setValidForPeriod(rs.getString("validForPeriod")); productData.setOdAccountClosedZeroBalanceInDayClosing(rs.getBoolean("odAccountClosedZeroBalanceInDayClosing")); + productData.setIsPendingApproval(rs.getBoolean("isPendingApproval")); return productData; } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformService.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformService.java index ba2f63af1..9c3accc66 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformService.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformService.java @@ -28,4 +28,21 @@ public interface CurrentProductWritePlatformService { CommandProcessingResult update(Long productId, JsonCommand command); CommandProcessingResult delete(Long productId); + + /** + * Submits an edit for approval instead of applying it directly. Fails if a pending edit already exists for this + * product (that pending row is itself the lock). + */ + CommandProcessingResult submitEditForApproval(Long productId, JsonCommand command); + + /** + * Replays the stored pending edit through the normal update path and marks it approved. Fails if the approving + * user is the same user who submitted the edit. + */ + CommandProcessingResult approveEdit(Long productId); + + /** + * Discards the pending edit. Fails if the rejecting user is the same user who submitted the edit. + */ + CommandProcessingResult rejectEdit(Long productId, String rejectReason); } diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java index eed0dfb31..dbdc417cf 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java @@ -31,6 +31,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.commands.domain.CommandProcessingResultType; +import org.apache.fineract.commands.domain.CommandSource; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.ApiParameterError; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; @@ -38,6 +41,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuild import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.ErrorHandler; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.currentproduct.data.CurrentProductDataValidator; @@ -50,10 +55,16 @@ import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilit import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimit; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductFacilityLimitRepository; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductRepository; +import org.apache.fineract.portfolio.currentproduct.exception.CurrentProductEditPendingApprovalException; +import org.apache.fineract.portfolio.currentproduct.exception.CurrentProductNoPendingEditException; +import org.apache.fineract.portfolio.currentproduct.exception.CurrentProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.savings.DepositsApiConstants; import org.apache.fineract.portfolio.savings.DepositAccountType; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; +import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; @@ -69,6 +80,9 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr private final CurrentProductFacilityConfigRepository facilityConfigRepository; private final CurrentProductFacilityLimitRepository facilityLimitRepository; private final CurrentProductDepositLimitKycRepository depositLimitKycRepository; + private final ProductPendingEditRepository productPendingEditRepository; + private final FromJsonHelper fromApiJsonHelper; + private final CommandSourceRepository commandSourceRepository; private void handleDataIntegrityIssues(final JsonCommand command, final Throwable realCause, final Exception dae) { String msgCode = "error.msg." + DepositsApiConstants.CURRENT_PRODUCT_RESOURCE_NAME; @@ -251,6 +265,124 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr } } + @Transactional + @Override + public CommandProcessingResult submitEditForApproval(final Long productId, final JsonCommand command) { + + final AppUser maker = this.context.authenticatedUser(); + final CurrentProduct product = this.currentProductRepository.findById(productId) + .orElseThrow(() -> new SavingsProductNotFoundException(productId)); + + if (this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_CURRENT, productId, ProductPendingEdit.STATUS_PENDING) + .isPresent()) { + throw new CurrentProductEditPendingApprovalException(productId); + } + + this.fromApiJsonDataValidator.validateForUpdate(command.json(), product); + + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_CURRENT, productId, maker, command.json()); + + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("CURRENTPRODUCT") // + .resourceGetUrl("/currentproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(command.json()) // + .maker(maker) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + return new CommandProcessingResultBuilder() // + .withEntityId(product.getId()) // + .build(); + } + + @Transactional + @Override + public CommandProcessingResult approveEdit(final Long productId) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_CURRENT, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new CurrentProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new CurrentProductSelfApprovalNotAllowedException(productId); + } + + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, + this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final CommandProcessingResult result = update(productId, replayedCommand); + + pendingEdit.markApproved(checker); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsChecked(checker); + auditEntry.updateForAudit(result); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return result; + } + + private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { + if (pendingEdit.getCommandSourceId() != null) { + final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); + if (existing.isPresent()) { + return existing.get(); + } + } + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("CURRENTPRODUCT") // + .resourceGetUrl("/currentproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .maker(pendingEdit.getMaker()) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + return auditEntry; + } + + @Transactional + @Override + public CommandProcessingResult rejectEdit(final Long productId, final String rejectReason) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_CURRENT, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new CurrentProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new CurrentProductSelfApprovalNotAllowedException(productId); + } + + pendingEdit.markRejected(checker, rejectReason); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsRejected(checker); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return new CommandProcessingResultBuilder() // + .withEntityId(productId) // + .build(); + } + @Transactional @Override public CommandProcessingResult delete(final Long productId) { diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java index 27afeccfe..503d63186 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java @@ -19,7 +19,10 @@ package org.apache.fineract.portfolio.currentproduct.starter; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.commands.domain.CommandSourceRepository; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.currentproduct.data.CurrentProductDataValidator; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductAssembler; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; @@ -56,9 +59,13 @@ public class CurrentProductConfiguration { ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, CurrentProductFacilityConfigRepository currentFacilityConfigRepository, CurrentProductFacilityLimitRepository currentFacilityLimitRepository, - CurrentProductDepositLimitKycRepository currentDepositLimitKycRepository) { + CurrentProductDepositLimitKycRepository currentDepositLimitKycRepository, + ProductPendingEditRepository productPendingEditRepository, + FromJsonHelper fromApiJsonHelper, + CommandSourceRepository commandSourceRepository) { return new CurrentProductWritePlatformServiceJpaRepositoryImpl(context, currentProductRepository, currentProductDataValidator, currentProductAssembler, accountMappingWritePlatformService, currentFacilityConfigRepository, - currentFacilityLimitRepository, currentDepositLimitKycRepository); + currentFacilityLimitRepository, currentDepositLimitKycRepository, productPendingEditRepository, fromApiJsonHelper, + commandSourceRepository); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java index 17708a967..fb62d7a65 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/api/ProductsApiResource.java @@ -37,20 +37,26 @@ import jakarta.ws.rs.QueryParam; import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.MediaType; import jakarta.ws.rs.core.UriInfo; +import java.util.Collection; import lombok.RequiredArgsConstructor; import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; +import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.exception.ResourceNotFoundException; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.core.service.Page; +import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.products.constants.ProductsApiConstants; import org.apache.fineract.portfolio.products.data.ProductData; import org.apache.fineract.portfolio.products.service.ShareProductReadPlatformService; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; +import org.apache.fineract.portfolio.shareproducts.service.ShareProductWritePlatformService; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; @@ -61,11 +67,26 @@ import org.springframework.stereotype.Component; @RequiredArgsConstructor public class ProductsApiResource { + private static final String SHARE_PRODUCT_TYPE = "share"; + /** + * These product types have their own dedicated endpoints (/savingsproducts/{id}, /currentproducts/{id}, + * /fixeddepositproducts/{id}, /recurringdepositproducts/{id}) which correctly route edits through + * submitEditForApproval - the pending-edit row is the lock. This generic /v1/products/{type}/{productId} PUT + * falls through to the native command-processing pipeline for any type not special-cased above, which would + * bypass that lock entirely for these types. The Angular frontend never calls this generic path for them (only + * for "share"), so blocking them here closes the bypass without removing any real functionality. + */ + private static final java.util.Set PRODUCT_TYPES_WITH_DEDICATED_LOCKED_ENDPOINT = java.util.Set.of("savings", "current", + "fixeddeposit", "recurringdeposit"); + private final ApplicationContext applicationContext; private final ApiRequestParameterHelper apiRequestParameterHelper; private final DefaultToApiJsonSerializer toApiJsonSerializer; private final PlatformSecurityContext platformSecurityContext; private final PortfolioCommandSourceWritePlatformService commandsSourceWritePlatformService; + private final ShareProductWritePlatformService shareProductWritePlatformService; + private final FromJsonHelper fromApiJsonHelper; + private final DefaultToApiJsonSerializer tempDataApiJsonSerializer; @GET @Path("template") @@ -171,9 +192,100 @@ public class ProductsApiResource { @PathParam("productId") @Parameter(description = "productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { this.platformSecurityContext.authenticatedUser(); + + if (SHARE_PRODUCT_TYPE.equalsIgnoreCase(productType)) { + // Bypasses the native command-source/maker-checker pipeline by design, same as Savings/Current + // Products: edits are held in m_savings_product_temp (a pending row there is itself the lock) and + // only applied to m_share_product on approval - see the pending/approve/reject endpoints below. + final JsonCommand command = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(apiRequestBodyAsJson), + this.fromApiJsonHelper); + final CommandProcessingResult result = this.shareProductWritePlatformService.submitEditForApproval(productId, command); + return this.toApiJsonSerializer.serialize(result); + } + + if (PRODUCT_TYPES_WITH_DEDICATED_LOCKED_ENDPOINT.contains(productType.toLowerCase(java.util.Locale.ROOT))) { + throw new ResourceNotFoundException("error.msg.product.generic.update.not.supported", + "Updating a " + productType + " product through this generic endpoint is not supported - use its dedicated endpoint", + new Object[] { productType }); + } + final CommandWrapper commandRequest = new CommandWrapperBuilder().updateProduct(productType, productId) .withJson(apiRequestBodyAsJson).build(); final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); return this.toApiJsonSerializer.serialize(result); } + + @GET + @Path("pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Share Products pending edit approval") + public String retrieveAllPending(@PathParam("type") @Parameter(description = "type") final String productType, + @Context final UriInfo uriInfo) { + this.platformSecurityContext.authenticatedUser(); + try { + String serviceName = productType + ProductsApiConstants.READPLATFORM_NAME; + ShareProductReadPlatformService service = (ShareProductReadPlatformService) this.applicationContext.getBean(serviceName); + final Collection pendingEdits = service.retrieveAllPendingEdits(); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdits); + } catch (BeansException e) { + throw new ResourceNotFoundException(e); + } + } + + @GET + @Path("{productId}/pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Retrieve the pending edit for a Share Product") + public String retrievePending(@PathParam("type") @Parameter(description = "type") final String productType, + @PathParam("productId") @Parameter(description = "productId") final Long productId, @Context final UriInfo uriInfo) { + this.platformSecurityContext.authenticatedUser(); + try { + String serviceName = productType + ProductsApiConstants.READPLATFORM_NAME; + ShareProductReadPlatformService service = (ShareProductReadPlatformService) this.applicationContext.getBean(serviceName); + final SavingsProductTempData pendingEdit = service.retrievePendingEdit(productId); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdit); + } catch (BeansException e) { + throw new ResourceNotFoundException(e); + } + } + + @POST + @Path("{productId}/approve") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Approve a pending Share Product edit") + public String approvePending(@PathParam("type") @Parameter(description = "type") final String productType, + @PathParam("productId") @Parameter(description = "productId") final Long productId) { + if (this.platformSecurityContext.authenticatedUser().hasNotPermissionForAnyOf("APPROVE_SHAREPRODUCT")) { + throw new NoAuthorizationException("User has no authority to approve share products"); + } + final CommandProcessingResult result = this.shareProductWritePlatformService.approveEdit(productId); + return this.toApiJsonSerializer.serialize(result); + } + + @POST + @Path("{productId}/reject") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Reject a pending Share Product edit") + public String rejectPending(@PathParam("type") @Parameter(description = "type") final String productType, + @PathParam("productId") @Parameter(description = "productId") final Long productId, + @Parameter(hidden = true) final String apiRequestBodyAsJson) { + if (this.platformSecurityContext.authenticatedUser().hasNotPermissionForAnyOf("REJECT_SHAREPRODUCT")) { + throw new NoAuthorizationException("User has no authority to reject share products"); + } + String rejectReason = null; + if (apiRequestBodyAsJson != null && !apiRequestBodyAsJson.isBlank()) { + final var parsed = this.fromApiJsonHelper.parse(apiRequestBodyAsJson); + if (parsed != null && parsed.isJsonObject() && parsed.getAsJsonObject().has("rejectReason")) { + rejectReason = parsed.getAsJsonObject().get("rejectReason").getAsString(); + } + } + final CommandProcessingResult result = this.shareProductWritePlatformService.rejectEdit(productId, rejectReason); + return this.toApiJsonSerializer.serialize(result); + } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ShareProductReadPlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ShareProductReadPlatformService.java index 9c9d15ee2..84d9b6289 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ShareProductReadPlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/products/service/ShareProductReadPlatformService.java @@ -22,6 +22,7 @@ import java.util.Collection; import java.util.Set; import org.apache.fineract.infrastructure.core.service.Page; import org.apache.fineract.portfolio.products.data.ProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; public interface ShareProductReadPlatformService { @@ -34,4 +35,8 @@ public interface ShareProductReadPlatformService { Set getResponseDataParams(); Collection retrieveAllForLookup(); + + Collection retrieveAllPendingEdits(); + + SavingsProductTempData retrievePendingEdit(Long productId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentProductsApiResource.java index 06082b591..9cbe38744 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/CurrentProductsApiResource.java @@ -53,10 +53,13 @@ import org.apache.fineract.infrastructure.configuration.domain.ConfigurationDoma import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; +import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService; @@ -71,7 +74,9 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYea import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.currentproduct.service.CurrentProductReadPlatformService; +import org.apache.fineract.portfolio.currentproduct.service.CurrentProductWritePlatformService; import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.tax.data.TaxGroupData; @@ -101,6 +106,9 @@ public class CurrentProductsApiResource { private final ConfigurationDomainService configurationDomainService; private final CodeValueReadPlatformService codeValueReadPlatformService; private final JdbcTemplate jdbcTemplate; + private final CurrentProductWritePlatformService currentProductWritePlatformService; + private final FromJsonHelper fromApiJsonHelper; + private final DefaultToApiJsonSerializer tempDataApiJsonSerializer; @POST @@ -122,9 +130,72 @@ public class CurrentProductsApiResource { @ApiResponse(responseCode = "200", description = "OK") public String update(@PathParam("productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().updateCurrentProduct(productId).withJson(apiRequestBodyAsJson) - .build(); - final CommandProcessingResult result = commandsSourceWritePlatformService.logCommandSource(commandRequest); + // Bypasses the native command-source/maker-checker pipeline by design: edits are held in + // m_savings_product_temp (a pending row there is itself the lock) and only applied to m_current_product on + // approval - see /currentproducts/{productId}/approve and /reject below. + this.context.authenticatedUser().validateHasUpdatePermission(DepositsApiConstants.CURRENT_PRODUCT_RESOURCE_NAME); + + final JsonCommand command = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(apiRequestBodyAsJson), + this.fromApiJsonHelper); + + final CommandProcessingResult result = this.currentProductWritePlatformService.submitEditForApproval(productId, command); + return toApiJsonSerializer.serialize(result); + } + + @GET + @Path("pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Current Products pending edit approval") + public String retrieveAllPending(@Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.CURRENT_PRODUCT_RESOURCE_NAME); + final Collection pendingEdits = this.savingProductReadPlatformService.retrieveAllPendingEdits(); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdits); + } + + @GET + @Path("{productId}/pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Retrieve the pending edit for a Current Product") + public String retrievePending(@PathParam("productId") final Long productId, @Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.CURRENT_PRODUCT_RESOURCE_NAME); + final SavingsProductTempData pendingEdit = this.savingProductReadPlatformService.retrievePendingEdit(productId); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdit); + } + + @POST + @Path("{productId}/approve") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Approve a pending Current Product edit") + public String approvePending(@PathParam("productId") final Long productId) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("APPROVE_CURRENTPRODUCT")) { + throw new NoAuthorizationException("User has no authority to approve current products"); + } + final CommandProcessingResult result = this.currentProductWritePlatformService.approveEdit(productId); + return toApiJsonSerializer.serialize(result); + } + + @POST + @Path("{productId}/reject") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Reject a pending Current Product edit") + public String rejectPending(@PathParam("productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("REJECT_CURRENTPRODUCT")) { + throw new NoAuthorizationException("User has no authority to reject current products"); + } + String rejectReason = null; + if (apiRequestBodyAsJson != null && !apiRequestBodyAsJson.isBlank()) { + final var parsed = this.fromApiJsonHelper.parse(apiRequestBodyAsJson); + if (parsed != null && parsed.isJsonObject() && parsed.getAsJsonObject().has("rejectReason")) { + rejectReason = parsed.getAsJsonObject().get("rejectReason").getAsString(); + } + } + final CommandProcessingResult result = this.currentProductWritePlatformService.rejectEdit(productId, rejectReason); return toApiJsonSerializer.serialize(result); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositProductsApiResource.java index 9347d544b..a2ed17e02 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/FixedDepositProductsApiResource.java @@ -53,14 +53,17 @@ import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; +import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import java.util.Locale; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.portfolio.savings.SavingsApiConstants; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; +import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService; @@ -78,8 +81,10 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYea import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.data.FixedDepositProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.service.DepositProductReadPlatformService; import org.apache.fineract.portfolio.savings.service.DepositsDropdownReadPlatformService; +import org.apache.fineract.portfolio.savings.service.FixedDepositProductWritePlatformService; import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.tax.data.TaxGroupData; @@ -116,6 +121,9 @@ public class FixedDepositProductsApiResource { private final TaxReadPlatformService taxReadPlatformService; private final CodeValueReadPlatformService codeValueReadPlatformService; private final org.springframework.jdbc.core.JdbcTemplate jdbcTemplate; + private final FixedDepositProductWritePlatformService fixedDepositProductWritePlatformService; + private final FromJsonHelper fromApiJsonHelper; + private final DefaultToApiJsonSerializer tempDataApiJsonSerializer; @POST @Consumes({ MediaType.APPLICATION_JSON }) @@ -151,15 +159,81 @@ public class FixedDepositProductsApiResource { public String update(@PathParam("productId") @Parameter(description = "productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().updateFixedDepositProduct(productId) - .withJson(apiRequestBodyAsJson).build(); + // Bypasses the native command-source/maker-checker pipeline by design: edits are held in + // m_savings_product_temp (a pending row there is itself the lock) and only applied to m_savings_product on + // approval - see /fixeddepositproducts/{productId}/approve and /reject below. + this.context.authenticatedUser().validateHasUpdatePermission(DepositsApiConstants.FIXED_DEPOSIT_PRODUCT_RESOURCE_NAME); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); + final JsonCommand command = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(apiRequestBodyAsJson), + this.fromApiJsonHelper); + + final CommandProcessingResult result = this.fixedDepositProductWritePlatformService.submitEditForApproval(productId, command); return this.toApiJsonSerializer.serialize(result); } + @GET + @Path("pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Fixed Deposit Products pending edit approval") + public String retrieveAllPending(@Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.FIXED_DEPOSIT_PRODUCT_RESOURCE_NAME); + final Collection pendingEdits = this.depositProductReadPlatformService + .retrieveAllPendingEdits(DepositAccountType.FIXED_DEPOSIT); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdits); + } + + @GET + @Path("{productId}/pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Retrieve the pending edit for a Fixed Deposit Product") + public String retrievePending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.FIXED_DEPOSIT_PRODUCT_RESOURCE_NAME); + final SavingsProductTempData pendingEdit = this.depositProductReadPlatformService + .retrievePendingEdit(DepositAccountType.FIXED_DEPOSIT, productId); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdit); + } + + @POST + @Path("{productId}/approve") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Approve a pending Fixed Deposit Product edit") + public String approvePending(@PathParam("productId") @Parameter(description = "productId") final Long productId) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("APPROVE_FIXEDDEPOSITPRODUCT")) { + throw new NoAuthorizationException("User has no authority to approve fixed deposit products"); + } + final CommandProcessingResult result = this.fixedDepositProductWritePlatformService.approveEdit(productId); + return this.toApiJsonSerializer.serialize(result); + } + + @POST + @Path("{productId}/reject") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Reject a pending Fixed Deposit Product edit") + public String rejectPending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Parameter(hidden = true) final String apiRequestBodyAsJson) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("REJECT_FIXEDDEPOSITPRODUCT")) { + throw new NoAuthorizationException("User has no authority to reject fixed deposit products"); + } + String rejectReason = null; + if (apiRequestBodyAsJson != null && !apiRequestBodyAsJson.isBlank()) { + final var parsed = this.fromApiJsonHelper.parse(apiRequestBodyAsJson); + if (parsed != null && parsed.isJsonObject() && parsed.getAsJsonObject().has("rejectReason")) { + rejectReason = parsed.getAsJsonObject().get("rejectReason").getAsString(); + } + } + final CommandProcessingResult result = this.fixedDepositProductWritePlatformService.rejectEdit(productId, rejectReason); + return this.toApiJsonSerializer.serialize(result); + } + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java index 4b0e6d305..28eb2581e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/RecurringDepositProductsApiResource.java @@ -55,10 +55,13 @@ import org.apache.fineract.commands.domain.CommandWrapper; import org.apache.fineract.commands.service.CommandWrapperBuilder; import org.apache.fineract.commands.service.PortfolioCommandSourceWritePlatformService; import org.apache.fineract.infrastructure.core.api.ApiRequestParameterHelper; +import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService; @@ -85,8 +88,10 @@ import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializer; import java.time.LocalDate; import org.apache.fineract.portfolio.savings.data.RecurringDepositProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.service.DepositProductReadPlatformService; import org.apache.fineract.portfolio.savings.service.DepositsDropdownReadPlatformService; +import org.apache.fineract.portfolio.savings.service.RecurringDepositProductWritePlatformService; import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.tax.data.TaxGroupData; @@ -126,6 +131,9 @@ public class RecurringDepositProductsApiResource { .registerTypeAdapter(LocalDate.class, (JsonSerializer) (src, typeOfSrc, ctx) -> new JsonPrimitive(src.toString())) .create(); + private final RecurringDepositProductWritePlatformService recurringDepositProductWritePlatformService; + private final FromJsonHelper fromApiJsonHelper; + private final DefaultToApiJsonSerializer tempDataApiJsonSerializer; @POST @Consumes({ MediaType.APPLICATION_JSON }) @@ -158,15 +166,82 @@ public class RecurringDepositProductsApiResource { public String update(@PathParam("productId") @Parameter(description = "productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().updateRecurringDepositProduct(productId) - .withJson(apiRequestBodyAsJson).build(); + // Bypasses the native command-source/maker-checker pipeline by design: edits are held in + // m_savings_product_temp (a pending row there is itself the lock) and only applied to m_savings_product on + // approval - see /recurringdepositproducts/{productId}/approve and /reject below. + this.context.authenticatedUser().validateHasUpdatePermission(DepositsApiConstants.RECURRING_DEPOSIT_PRODUCT_RESOURCE_NAME); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); + final JsonCommand command = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(apiRequestBodyAsJson), + this.fromApiJsonHelper); + + final CommandProcessingResult result = this.recurringDepositProductWritePlatformService.submitEditForApproval(productId, + command); return this.toApiJsonSerializer.serialize(result); } + @GET + @Path("pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Recurring Deposit Products pending edit approval") + public String retrieveAllPending(@Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.RECURRING_DEPOSIT_PRODUCT_RESOURCE_NAME); + final Collection pendingEdits = this.depositProductReadPlatformService + .retrieveAllPendingEdits(DepositAccountType.RECURRING_DEPOSIT); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdits); + } + + @GET + @Path("{productId}/pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Retrieve the pending edit for a Recurring Deposit Product") + public String retrievePending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Context final UriInfo uriInfo) { + this.context.authenticatedUser().validateHasReadPermission(DepositsApiConstants.RECURRING_DEPOSIT_PRODUCT_RESOURCE_NAME); + final SavingsProductTempData pendingEdit = this.depositProductReadPlatformService + .retrievePendingEdit(DepositAccountType.RECURRING_DEPOSIT, productId); + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdit); + } + + @POST + @Path("{productId}/approve") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Approve a pending Recurring Deposit Product edit") + public String approvePending(@PathParam("productId") @Parameter(description = "productId") final Long productId) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("APPROVE_RECURRINGDEPOSITPRODUCT")) { + throw new NoAuthorizationException("User has no authority to approve recurring deposit products"); + } + final CommandProcessingResult result = this.recurringDepositProductWritePlatformService.approveEdit(productId); + return this.toApiJsonSerializer.serialize(result); + } + + @POST + @Path("{productId}/reject") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Reject a pending Recurring Deposit Product edit") + public String rejectPending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Parameter(hidden = true) final String apiRequestBodyAsJson) { + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("REJECT_RECURRINGDEPOSITPRODUCT")) { + throw new NoAuthorizationException("User has no authority to reject recurring deposit products"); + } + String rejectReason = null; + if (apiRequestBodyAsJson != null && !apiRequestBodyAsJson.isBlank()) { + final var parsed = this.fromApiJsonHelper.parse(apiRequestBodyAsJson); + if (parsed != null && parsed.isJsonObject() && parsed.getAsJsonObject().has("rejectReason")) { + rejectReason = parsed.getAsJsonObject().get("rejectReason").getAsString(); + } + } + final CommandProcessingResult result = this.recurringDepositProductWritePlatformService.rejectEdit(productId, rejectReason); + return this.toApiJsonSerializer.serialize(result); + } + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsProductsApiResource.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsProductsApiResource.java index 90b49c5f1..06362799b 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsProductsApiResource.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/api/SavingsProductsApiResource.java @@ -59,8 +59,11 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.EnumOptionData; import org.apache.fineract.infrastructure.codes.data.CodeValueData; import org.apache.fineract.infrastructure.codes.service.CodeValueReadPlatformService; +import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.serialization.ApiRequestJsonSerializationSettings; import org.apache.fineract.infrastructure.core.serialization.DefaultToApiJsonSerializer; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.security.exception.NoAuthorizationException; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService; @@ -74,9 +77,11 @@ import org.apache.fineract.portfolio.savings.SavingsInterestCalculationDaysInYea import org.apache.fineract.portfolio.savings.SavingsInterestCalculationType; import org.apache.fineract.portfolio.savings.SavingsPostingInterestPeriodType; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.service.SavingsDropdownReadPlatformService; import org.apache.fineract.portfolio.savings.service.SavingsEnumerations; import org.apache.fineract.portfolio.savings.service.SavingsProductReadPlatformService; +import org.apache.fineract.portfolio.savings.service.SavingsProductWritePlatformService; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.apache.fineract.portfolio.tax.service.TaxReadPlatformService; import org.springframework.jdbc.core.JdbcTemplate; @@ -105,6 +110,9 @@ public class SavingsProductsApiResource { private final TaxReadPlatformService taxReadPlatformService; private final ConfigurationDomainService configurationDomainService; private final JdbcTemplate jdbcTemplate; + private final SavingsProductWritePlatformService savingsProductWritePlatformService; + private final FromJsonHelper fromApiJsonHelper; + private final DefaultToApiJsonSerializer tempDataApiJsonSerializer; @POST @@ -135,15 +143,92 @@ public class SavingsProductsApiResource { public String update(@PathParam("productId") @Parameter(description = "productId") final Long productId, @Parameter(hidden = true) final String apiRequestBodyAsJson) { - final CommandWrapper commandRequest = new CommandWrapperBuilder().updateSavingProduct(productId).withJson(apiRequestBodyAsJson) - .build(); + // Bypasses the native command-source/maker-checker pipeline by design: edits are held in + // m_savings_product_temp (a pending row there is itself the lock) and only applied to m_savings_product on + // approval - see /savingsproducts/{productId}/approve and /reject below. + this.context.authenticatedUser().validateHasUpdatePermission(SavingsApiConstants.SAVINGS_PRODUCT_RESOURCE_NAME); - final CommandProcessingResult result = this.commandsSourceWritePlatformService.logCommandSource(commandRequest); + final JsonCommand command = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(apiRequestBodyAsJson), + this.fromApiJsonHelper); + + final CommandProcessingResult result = this.savingsProductWritePlatformService.submitEditForApproval(productId, command); return this.toApiJsonSerializer.serialize(result); } + @GET + @Path("pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "List Savings Products pending edit approval", description = "Lists all savings product edits currently awaiting checker approval") + public String retrieveAllPending(@Context final UriInfo uriInfo) { + + this.context.authenticatedUser().validateHasReadPermission(SavingsApiConstants.SAVINGS_PRODUCT_RESOURCE_NAME); + + final Collection pendingEdits = this.savingProductReadPlatformService.retrieveAllPendingEdits(); + + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdits); + } + + @GET + @Path("{productId}/pending") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Retrieve the pending edit for a Savings Product", description = "Retrieves the draft awaiting checker approval for this product, if any") + public String retrievePending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Context final UriInfo uriInfo) { + + this.context.authenticatedUser().validateHasReadPermission(SavingsApiConstants.SAVINGS_PRODUCT_RESOURCE_NAME); + + final SavingsProductTempData pendingEdit = this.savingProductReadPlatformService.retrievePendingEdit(productId); + + final ApiRequestJsonSerializationSettings settings = this.apiRequestParameterHelper.process(uriInfo.getQueryParameters()); + return this.tempDataApiJsonSerializer.serialize(settings, pendingEdit); + } + + @POST + @Path("{productId}/approve") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Approve a pending Savings Product edit", description = "Replays the pending edit and applies it to the Savings Product. The maker of the edit cannot also approve it.") + public String approvePending(@PathParam("productId") @Parameter(description = "productId") final Long productId) { + + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("APPROVE_SAVINGSPRODUCT")) { + throw new NoAuthorizationException("User has no authority to approve savings products"); + } + + final CommandProcessingResult result = this.savingsProductWritePlatformService.approveEdit(productId); + + return this.toApiJsonSerializer.serialize(result); + } + + @POST + @Path("{productId}/reject") + @Consumes({ MediaType.APPLICATION_JSON }) + @Produces({ MediaType.APPLICATION_JSON }) + @Operation(summary = "Reject a pending Savings Product edit", description = "Discards the pending edit without applying it. The maker of the edit cannot also reject it.") + public String rejectPending(@PathParam("productId") @Parameter(description = "productId") final Long productId, + @Parameter(hidden = true) final String apiRequestBodyAsJson) { + + if (this.context.authenticatedUser().hasNotPermissionForAnyOf("REJECT_SAVINGSPRODUCT")) { + throw new NoAuthorizationException("User has no authority to reject savings products"); + } + + String rejectReason = null; + if (apiRequestBodyAsJson != null && !apiRequestBodyAsJson.isBlank()) { + final var parsed = this.fromApiJsonHelper.parse(apiRequestBodyAsJson); + if (parsed != null && parsed.isJsonObject() && parsed.getAsJsonObject().has("rejectReason")) { + rejectReason = parsed.getAsJsonObject().get("rejectReason").getAsString(); + } + } + + final CommandProcessingResult result = this.savingsProductWritePlatformService.rejectEdit(productId, rejectReason); + + return this.toApiJsonSerializer.serialize(result); + } + @GET @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java index 9a2cc2852..2eb1e82c8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java @@ -18,10 +18,13 @@ */ package org.apache.fineract.portfolio.savings.service; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import java.math.BigDecimal; import java.sql.ResultSet; import java.sql.SQLException; import java.util.Collection; +import java.util.Map; import lombok.RequiredArgsConstructor; import org.apache.fineract.accounting.common.AccountingEnumerations; import org.apache.fineract.infrastructure.core.data.EnumOptionData; @@ -34,7 +37,9 @@ import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.data.DepositProductData; import org.apache.fineract.portfolio.savings.data.FixedDepositProductData; import org.apache.fineract.portfolio.savings.data.RecurringDepositProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.exception.FixedDepositProductNotFoundException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; @@ -124,6 +129,60 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead return null; } + private static final Gson GSON = new Gson(); + + private static String productPendingType(final DepositAccountType depositAccountType) { + return depositAccountType.isFixedDeposit() ? "FD" : "RD"; + } + + private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + final String proposedPayloadJson = rs.getString("proposedPayloadJson"); + if (proposedPayloadJson != null) { + data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); + } + return data; + }; + + private static String pendingEditSchema(final String productType) { + return "spt.id as tempId, spt.product_id as savingsProductId, " + "sp.name as savingsProductName, spt.maker_id as makerId, " + + "maker.username as makerUsername, spt.checker_id as checkerId, checker.username as checkerUsername, " + + "spt.created_on as createdOn, spt.checked_on as checkedOn, spt.status as status, " + + "spt.reject_reason as rejectReason, spt.proposed_payload_json as proposedPayloadJson " + + "from m_savings_product_temp spt " + "join m_savings_product sp on sp.id = spt.product_id " + + "join m_appuser maker on maker.id = spt.maker_id " + "left join m_appuser checker on checker.id = spt.checker_id " + + "where spt.product_type = '" + productType + "' "; + } + + @Override + public Collection retrieveAllPendingEdits(final DepositAccountType depositAccountType) { + final String sql = "select " + pendingEditSchema(productPendingType(depositAccountType)) + + "and spt.status = 'PENDING' order by spt.created_on desc"; + return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + } + + @Override + public SavingsProductTempData retrievePendingEdit(final DepositAccountType depositAccountType, final Long productId) { + final String sql = "select " + pendingEditSchema(productPendingType(depositAccountType)) + + "and spt.status = 'PENDING' and spt.product_id = ?"; + try { + return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + } catch (final EmptyResultDataAccessException e) { + throw new SavingsProductNoPendingEditException(productId); + } + } + private abstract static class DepositProductMapper implements RowMapper { private final String schemaSql; @@ -255,7 +314,9 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead sqlBuilder.append("sp.no_penalty_nominee_heir_closure as noPenaltyNomineeHeirClosure, "); sqlBuilder.append("sp.deceased_settlement as deceasedSettlement, "); sqlBuilder.append("sp.allow_debit_txn_after_due_date as allowDebitTxnAfterDueDate, "); - sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers "); + sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers, "); + sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + + "and spt.product_type = 'FD' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); sqlBuilder.append("left join m_deposit_product_term_and_preclosure dptp on sp.id=dptp.savings_product_id "); sqlBuilder.append("join m_currency curr on curr.code = sp.currency_code "); @@ -345,6 +406,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead result.setDeceasedSettlement(rs.getBoolean("deceasedSettlement")); result.setAllowDebitTxnAfterDueDate(rs.getBoolean("allowDebitTxnAfterDueDate")); result.setWithdrawalFeeForTransfers(rs.getBoolean("withdrawalFeeForTransfers")); + result.setIsPendingApproval(rs.getBoolean("isPendingApproval")); return result; } } @@ -392,7 +454,9 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead sqlBuilder.append("sp.no_penalty_nominee_heir_closure as noPenaltyNomineeHeirClosure, "); sqlBuilder.append("sp.deceased_settlement as deceasedSettlement, "); sqlBuilder.append("sp.allow_debit_txn_after_due_date as allowDebitTxnAfterDueDate, "); - sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers "); + sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers, "); + sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + + "and spt.product_type = 'RD' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); sqlBuilder.append("left join m_deposit_product_term_and_preclosure dptp on sp.id=dptp.savings_product_id "); sqlBuilder.append("left join m_deposit_product_recurring_detail dprd on sp.id=dprd.savings_product_id "); @@ -513,6 +577,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead result.setDeceasedSettlement(deceasedSettlement); result.setAllowDebitTxnAfterDueDate(allowDebitTxnAfterDueDate); result.setWithdrawalFeeForTransfers(withdrawalFeeForTransfers); + result.setIsPendingApproval(rs.getBoolean("isPendingApproval")); return result; } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java index a05c538ab..23166a11d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -32,6 +32,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.commands.domain.CommandProcessingResultType; +import org.apache.fineract.commands.domain.CommandSource; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.ApiParameterError; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; @@ -39,6 +42,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuild import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.ErrorHandler; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartAssembler; @@ -48,8 +53,14 @@ import org.apache.fineract.portfolio.savings.data.DepositProductDataValidator; import org.apache.fineract.portfolio.savings.domain.DepositProductAssembler; import org.apache.fineract.portfolio.savings.domain.FixedDepositProduct; import org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.savings.exception.FixedDepositProductNotFoundException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductEditPendingApprovalException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; +import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; @@ -63,6 +74,9 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements private final DepositProductAssembler depositProductAssembler; private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; + private final ProductPendingEditRepository productPendingEditRepository; + private final FromJsonHelper fromApiJsonHelper; + private final CommandSourceRepository commandSourceRepository; @Transactional @Override @@ -150,6 +164,124 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements } } + @Transactional + @Override + public CommandProcessingResult submitEditForApproval(final Long productId, final JsonCommand command) { + + final AppUser maker = this.context.authenticatedUser(); + final FixedDepositProduct product = this.fixedDepositProductRepository.findById(productId) + .orElseThrow(() -> new FixedDepositProductNotFoundException(productId)); + + if (this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_FD, productId, ProductPendingEdit.STATUS_PENDING) + .isPresent()) { + throw new SavingsProductEditPendingApprovalException(productId); + } + + this.fromApiJsonDataValidator.validateForFixedDepositUpdate(command.json()); + + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_FD, productId, maker, command.json()); + + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("FIXEDDEPOSITPRODUCT") // + .resourceGetUrl("/fixeddepositproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(command.json()) // + .maker(maker) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + return new CommandProcessingResultBuilder() // + .withEntityId(product.getId()) // + .build(); + } + + @Transactional + @Override + public CommandProcessingResult approveEdit(final Long productId) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_FD, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, + this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final CommandProcessingResult result = update(productId, replayedCommand); + + pendingEdit.markApproved(checker); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsChecked(checker); + auditEntry.updateForAudit(result); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return result; + } + + private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { + if (pendingEdit.getCommandSourceId() != null) { + final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); + if (existing.isPresent()) { + return existing.get(); + } + } + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("FIXEDDEPOSITPRODUCT") // + .resourceGetUrl("/fixeddepositproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .maker(pendingEdit.getMaker()) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + return auditEntry; + } + + @Transactional + @Override + public CommandProcessingResult rejectEdit(final Long productId, final String rejectReason) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_FD, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + pendingEdit.markRejected(checker, rejectReason); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsRejected(checker); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return new CommandProcessingResultBuilder() // + .withEntityId(productId) // + .build(); + } + @Transactional @Override public CommandProcessingResult delete(final Long productId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java index 354c92cdf..363d6e4ed 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -32,6 +32,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.commands.domain.CommandProcessingResultType; +import org.apache.fineract.commands.domain.CommandSource; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.ApiParameterError; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; @@ -39,6 +42,8 @@ import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuild import org.apache.fineract.infrastructure.core.data.DataValidatorBuilder; import org.apache.fineract.infrastructure.core.exception.ErrorHandler; import org.apache.fineract.infrastructure.core.exception.PlatformApiDataValidationException; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.interestratechart.service.InterestRateChartAssembler; @@ -46,10 +51,16 @@ import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.SavingsApiConstants; import org.apache.fineract.portfolio.savings.data.DepositProductDataValidator; import org.apache.fineract.portfolio.savings.domain.DepositProductAssembler; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct; import org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; import org.apache.fineract.portfolio.savings.exception.RecurringDepositProductNotFoundException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductEditPendingApprovalException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; +import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; @@ -63,6 +74,9 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem private final DepositProductAssembler depositProductAssembler; private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; + private final ProductPendingEditRepository productPendingEditRepository; + private final FromJsonHelper fromApiJsonHelper; + private final CommandSourceRepository commandSourceRepository; @Transactional @Override @@ -150,6 +164,124 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem } } + @Transactional + @Override + public CommandProcessingResult submitEditForApproval(final Long productId, final JsonCommand command) { + + final AppUser maker = this.context.authenticatedUser(); + final RecurringDepositProduct product = this.recurringDepositProductRepository.findById(productId) + .orElseThrow(() -> new RecurringDepositProductNotFoundException(productId)); + + if (this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_RD, productId, ProductPendingEdit.STATUS_PENDING) + .isPresent()) { + throw new SavingsProductEditPendingApprovalException(productId); + } + + this.fromApiJsonDataValidator.validateForRecurringDepositUpdate(command.json()); + + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_RD, productId, maker, command.json()); + + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("RECURRINGDEPOSITPRODUCT") // + .resourceGetUrl("/recurringdepositproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(command.json()) // + .maker(maker) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + return new CommandProcessingResultBuilder() // + .withEntityId(product.getId()) // + .build(); + } + + @Transactional + @Override + public CommandProcessingResult approveEdit(final Long productId) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_RD, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, + this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final CommandProcessingResult result = update(productId, replayedCommand); + + pendingEdit.markApproved(checker); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsChecked(checker); + auditEntry.updateForAudit(result); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return result; + } + + private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { + if (pendingEdit.getCommandSourceId() != null) { + final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); + if (existing.isPresent()) { + return existing.get(); + } + } + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("RECURRINGDEPOSITPRODUCT") // + .resourceGetUrl("/recurringdepositproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .maker(pendingEdit.getMaker()) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + return auditEntry; + } + + @Transactional + @Override + public CommandProcessingResult rejectEdit(final Long productId, final String rejectReason) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_RD, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + pendingEdit.markRejected(checker, rejectReason); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsRejected(checker); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return new CommandProcessingResultBuilder() // + .withEntityId(productId) // + .build(); + } + @Transactional @Override public CommandProcessingResult delete(final Long productId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java index c1a702c84..7c1b9f3a0 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java @@ -38,12 +38,14 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityConte import org.apache.fineract.organisation.monetary.data.CurrencyData; import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfig; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimit; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKyc; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; +import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; @@ -170,6 +172,57 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead } } + private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " + + "sp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " + + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " + + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " + + "spt.proposed_payload_json as proposedPayloadJson " + + "from m_savings_product_temp spt " + + "join m_savings_product sp on sp.id = spt.product_id " + + "join m_appuser maker on maker.id = spt.maker_id " + + "left join m_appuser checker on checker.id = spt.checker_id " + + "where spt.product_type = 'SAVINGS' "; + + private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + final String proposedPayloadJson = rs.getString("proposedPayloadJson"); + if (proposedPayloadJson != null) { + final Map proposedChanges = GSON.fromJson(proposedPayloadJson, + new TypeToken>() {}.getType()); + data.setProposedChanges(proposedChanges); + } + return data; + }; + + @Override + public Collection retrieveAllPendingEdits() { + this.context.authenticatedUser(); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; + return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + } + + @Override + public SavingsProductTempData retrievePendingEdit(final Long productId) { + this.context.authenticatedUser(); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; + try { + return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + } catch (final EmptyResultDataAccessException e) { + throw new SavingsProductNoPendingEditException(productId); + } + } + private static final class SavingProductMapper implements RowMapper { private final String schemaSql; @@ -217,7 +270,9 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead sqlBuilder.append("sp.auto_post as autoPost, sp.frequency_fix_day as frequencyFixDay, sp.last_interest_date as lastInterestDate, "); sqlBuilder.append("sp.enable_lockin_period as enableLockinPeriod, "); sqlBuilder.append("sp.balance_frequency as balanceFrequency, "); - sqlBuilder.append("sp.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing "); + sqlBuilder.append("sp.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing, "); + sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + + "and spt.product_type = 'SAVINGS' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); sqlBuilder.append("join m_currency curr on curr.code = sp.currency_code "); @@ -340,6 +395,7 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead productData.setEnableLockinPeriod(rs.getBoolean("enableLockinPeriod")); productData.setBalanceFrequency(rs.getString("balanceFrequency")); productData.setAccountClosedZeroBalanceInDayClosing(rs.getBoolean("accountClosedZeroBalanceInDayClosing")); + productData.setIsPendingApproval(rs.getBoolean("isPendingApproval")); return productData; } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java index b2aa0832a..a65a1e1c3 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java @@ -46,6 +46,11 @@ import org.apache.fineract.infrastructure.security.service.PlatformSecurityConte import org.apache.fineract.portfolio.charge.domain.Charge; import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.SavingsApiConstants; +import org.apache.fineract.commands.domain.CommandProcessingResultType; +import org.apache.fineract.commands.domain.CommandSource; +import org.apache.fineract.commands.domain.CommandSourceRepository; +import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.portfolio.savings.data.SavingsProductDataValidator; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKyc; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; @@ -56,8 +61,24 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitR import org.apache.fineract.portfolio.savings.domain.SavingsProduct; import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductAssembler; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditCharge; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimitRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMapping; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedField; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import com.google.gson.JsonObject; +import org.apache.fineract.portfolio.savings.exception.SavingsProductEditPendingApprovalException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; +import org.apache.fineract.portfolio.savings.exception.SavingsProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.tax.domain.TaxGroup; +import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.DataAccessException; import org.springframework.transaction.annotation.Transactional; @@ -75,6 +96,13 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi private final SavingsProductFacilityConfigRepository facilityConfigRepository; private final SavingsProductFacilityLimitRepository facilityLimitRepository; private final SavingsProductDepositLimitKycRepository depositLimitKycRepository; + private final ProductPendingEditRepository productPendingEditRepository; + private final FromJsonHelper fromApiJsonHelper; + private final CommandSourceRepository commandSourceRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; /* * Guaranteed to throw an exception no matter what the data integrity issue is. @@ -279,6 +307,214 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi } } + @Transactional + @Override + public CommandProcessingResult submitEditForApproval(final Long productId, final JsonCommand command) { + + final AppUser maker = this.context.authenticatedUser(); + final SavingsProduct product = this.savingProductRepository.findById(productId) + .orElseThrow(() -> new SavingsProductNotFoundException(productId)); + + if (this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SAVINGS, productId, ProductPendingEdit.STATUS_PENDING) + .isPresent()) { + throw new SavingsProductEditPendingApprovalException(productId); + } + + // Reuses the same validator the direct-update path uses, so bad data can't sit "pending" undetected. + this.fromApiJsonDataValidator.validateForUpdate(command.json(), product); + + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SAVINGS, productId, maker, command.json()); + + // Typed-column storage: extract every recognised field into the pending edit's own columns + // (plus satellite rows for the 1:many pieces) instead of relying solely on the JSON blob + // above. proposedPayloadJson is still populated for now (safe deprecation window) but is no + // longer what approveEdit replays from - see approveEdit(). + final java.util.Set submitted = ProductPendingEditFieldMapper.populateCoreFields(command, pendingEdit.getCoreFields()); + final boolean facilityConfigSubmitted = ProductPendingEditFieldMapper.populateFacilityConfig(command, + pendingEdit.getFacilityConfigFields()); + final boolean depositLimitKycSubmitted = ProductPendingEditFieldMapper.populateDepositLimitKyc(command, + pendingEdit.getDepositLimitKycFields()); + final boolean glMappingSubmitted = ProductPendingEditFieldMapper.populateGlAccountMapping(command, + pendingEdit.getGlAccountMappingFields()); + if (facilityConfigSubmitted) { + submitted.add("accountFacilityConfig"); + } + if (depositLimitKycSubmitted) { + submitted.add("depositLimitKyc"); + } + if (glMappingSubmitted) { + submitted.add("glAccountMapping"); + } + + // Audit-only entry so this submission is visible in System -> Audit Trails even though it bypasses the + // native command-processing/maker-checker pipeline (the real gate is m_savings_product_temp itself). + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("SAVINGSPRODUCT") // + .resourceGetUrl("/savingsproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(command.json()) // + .maker(maker) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + for (final String fieldName : submitted) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, fieldName)); + } + + final List chargeIds = ProductPendingEditFieldMapper.extractChargeIds(command); + if (chargeIds != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "charges")); + for (final Long chargeId : chargeIds) { + this.pendingEditChargeRepository.save(new ProductPendingEditCharge(pendingEdit, chargeId)); + } + } + + final List facilityLimits = ProductPendingEditFieldMapper.extractFacilityLimits(command, + pendingEdit); + if (facilityLimits != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "accountFacilityLimits")); + this.pendingEditFacilityLimitRepository.saveAll(facilityLimits); + } + + final List glMappings = ProductPendingEditFieldMapper.extractGlArrayMappings(command, pendingEdit); + if (glMappings != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "glArrayMappings")); + this.pendingEditGlMappingRepository.saveAll(glMappings); + } + + return new CommandProcessingResultBuilder() // + .withEntityId(product.getId()) // + .build(); + } + + @Transactional + @Override + public CommandProcessingResult approveEdit(final Long productId) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SAVINGS, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + // Replay through the real update path so charges, GL/accounting mappings and other related + // tables are applied exactly as a direct edit would apply them - not hand-copied field by + // field. The replay JSON is rebuilt from this row's typed columns/satellite tables (the + // manifest records exactly which top-level parameters the maker actually submitted); pending + // edits created before this cutover have no manifest rows, so they fall back to replaying the + // legacy JSON blob directly. + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonCommand replayedCommand; + if (submittedFields.isEmpty()) { + replayedCommand = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), + this.fromApiJsonHelper); + } else { + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), + submittedFields.contains("accountFacilityConfig")); + ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), + submittedFields.contains("depositLimitKyc")); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("accountFacilityLimits")) { + ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, + this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); + } + final CommandProcessingResult result = update(productId, replayedCommand); + + pendingEdit.markApproved(checker); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsChecked(checker); + auditEntry.updateForAudit(result); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return result; + } + + /** + * Every edit submitted through submitEditForApproval() links a CommandSource audit row. This fallback only + * matters for pending edits that were created before that linking existed - it backfills one now so approve + * and reject always leave an entry in m_portfolio_command_source, with no silent no-op case. + */ + private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { + if (pendingEdit.getCommandSourceId() != null) { + final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); + if (existing.isPresent()) { + return existing.get(); + } + } + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("SAVINGSPRODUCT") // + .resourceGetUrl("/savingsproducts/" + productId) // + .resourceId(productId) // + .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .maker(pendingEdit.getMaker()) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + return auditEntry; + } + + @Transactional + @Override + public CommandProcessingResult rejectEdit(final Long productId, final String rejectReason) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SAVINGS, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new SavingsProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new SavingsProductSelfApprovalNotAllowedException(productId); + } + + pendingEdit.markRejected(checker, rejectReason); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsRejected(checker); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return new CommandProcessingResultBuilder() // + .withEntityId(productId) // + .build(); + } + @Transactional @Override public CommandProcessingResult delete(final Long productId) { diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java index fd0ebe860..d9537ad2f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java @@ -96,6 +96,8 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductAssembler; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfig; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimit; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductRepository; @@ -324,9 +326,12 @@ public class SavingsConfiguration { public FixedDepositProductWritePlatformService fixedDepositProductWritePlatformService(PlatformSecurityContext context, FixedDepositProductRepository fixedDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, DepositProductAssembler depositProductAssembler, - ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler) { + ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler, + ProductPendingEditRepository productPendingEditRepository, FromJsonHelper fromApiJsonHelper, + CommandSourceRepository commandSourceRepository) { return new FixedDepositProductWritePlatformServiceJpaRepositoryImpl(context, fixedDepositProductRepository, - fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler); + fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler, + productPendingEditRepository, fromApiJsonHelper, commandSourceRepository); } @Bean @@ -348,9 +353,12 @@ public class SavingsConfiguration { public RecurringDepositProductWritePlatformService recurringDepositProductWritePlatformService(PlatformSecurityContext context, RecurringDepositProductRepository recurringDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, DepositProductAssembler depositProductAssembler, - ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler) { + ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler, + ProductPendingEditRepository productPendingEditRepository, FromJsonHelper fromApiJsonHelper, + CommandSourceRepository commandSourceRepository) { return new RecurringDepositProductWritePlatformServiceJpaRepositoryImpl(context, recurringDepositProductRepository, - fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler); + fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler, + productPendingEditRepository, fromApiJsonHelper, commandSourceRepository); } @Bean @@ -489,10 +497,19 @@ public class SavingsConfiguration { FineractEntityAccessUtil fineractEntityAccessUtil, SavingsProductFacilityConfigRepository facilityConfigRepository, SavingsProductFacilityLimitRepository facilityLimitRepository, - SavingsProductDepositLimitKycRepository depositLimitKycRepository) { + SavingsProductDepositLimitKycRepository depositLimitKycRepository, + ProductPendingEditRepository productPendingEditRepository, + FromJsonHelper fromApiJsonHelper, + CommandSourceRepository commandSourceRepository, + org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository pendingEditChargeRepository, + org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository, + org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, + org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository) { return new SavingsProductWritePlatformServiceJpaRepositoryImpl(context, savingProductRepository, fromApiJsonDataValidator, savingsProductAssembler, accountMappingWritePlatformService, fineractEntityAccessUtil, facilityConfigRepository, - facilityLimitRepository, depositLimitKycRepository); + facilityLimitRepository, depositLimitKycRepository, productPendingEditRepository, fromApiJsonHelper, + commandSourceRepository, pendingEditChargeRepository, pendingEditFacilityLimitRepository, pendingEditGlMappingRepository, + pendingEditSubmittedFieldRepository); } @Bean diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductEditPendingApprovalException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductEditPendingApprovalException.java new file mode 100644 index 000000000..a607901b7 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductEditPendingApprovalException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.shareproducts.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class ShareProductEditPendingApprovalException extends AbstractPlatformDomainRuleException { + + public ShareProductEditPendingApprovalException(final Long productId) { + super("error.msg.shareproduct.edit.pending.approval", + "Share product with identifier " + productId + " already has an edit pending approval", productId); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductNoPendingEditException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductNoPendingEditException.java new file mode 100644 index 000000000..9b25a9dc6 --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductNoPendingEditException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.shareproducts.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class ShareProductNoPendingEditException extends AbstractPlatformDomainRuleException { + + public ShareProductNoPendingEditException(final Long productId) { + super("error.msg.shareproduct.no.pending.edit", "Share product with identifier " + productId + " has no edit pending approval", + productId); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductSelfApprovalNotAllowedException.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductSelfApprovalNotAllowedException.java new file mode 100644 index 000000000..1f727cf8c --- /dev/null +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/exception/ShareProductSelfApprovalNotAllowedException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.shareproducts.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class ShareProductSelfApprovalNotAllowedException extends AbstractPlatformDomainRuleException { + + public ShareProductSelfApprovalNotAllowedException(final Long productId) { + super("error.msg.shareproduct.self.approval.not.allowed", + "The maker of the pending edit for share product " + productId + " cannot also approve or reject it", productId); + } +} diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java index 7b3ac1274..425f6b2e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java @@ -18,6 +18,8 @@ */ package org.apache.fineract.portfolio.shareproducts.service; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import java.math.BigDecimal; import java.sql.Date; import java.sql.ResultSet; @@ -46,9 +48,11 @@ import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; import org.apache.fineract.portfolio.products.data.ProductData; import org.apache.fineract.portfolio.products.exception.ProductNotFoundException; import org.apache.fineract.portfolio.products.service.ShareProductReadPlatformService; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; import org.apache.fineract.portfolio.shareaccounts.service.SharesEnumerations; import org.apache.fineract.portfolio.shareproducts.data.ShareProductData; import org.apache.fineract.portfolio.shareproducts.data.ShareProductMarketPriceData; +import org.apache.fineract.portfolio.shareproducts.exception.ShareProductNoPendingEditException; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; @@ -152,6 +156,55 @@ public class ShareProductReadPlatformServiceImpl implements ShareProductReadPlat return null; } + private static final Gson GSON = new Gson(); + + private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " + + "sp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " + + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " + + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " + + "spt.proposed_payload_json as proposedPayloadJson " + + "from m_savings_product_temp spt " + + "join m_share_product sp on sp.id = spt.product_id " + + "join m_appuser maker on maker.id = spt.maker_id " + + "left join m_appuser checker on checker.id = spt.checker_id " + + "where spt.product_type = 'SHARE' "; + + private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + final String proposedPayloadJson = rs.getString("proposedPayloadJson"); + if (proposedPayloadJson != null) { + data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); + } + return data; + }; + + @Override + public Collection retrieveAllPendingEdits() { + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; + return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + } + + @Override + public SavingsProductTempData retrievePendingEdit(final Long productId) { + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; + try { + return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + } catch (final EmptyResultDataAccessException e) { + throw new ShareProductNoPendingEditException(productId); + } + } + private static final class AllShareProductRowMapper implements RowMapper { @SuppressWarnings("unused") diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformService.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformService.java index 7bb811165..17ecd2b93 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformService.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformService.java @@ -32,4 +32,21 @@ public interface ShareProductWritePlatformService { CommandProcessingResult approveShareProductDividend(Long PayOutDetailId); CommandProcessingResult deleteShareProductDividend(Long PayOutDetailId); + + /** + * Submits an edit for approval instead of applying it directly. Fails if a pending edit already exists for this + * product (that pending row is itself the lock). + */ + CommandProcessingResult submitEditForApproval(Long productId, JsonCommand command); + + /** + * Replays the stored pending edit through the normal update path and marks it approved. Fails if the approving + * user is the same user who submitted the edit. + */ + CommandProcessingResult approveEdit(Long productId); + + /** + * Discards the pending edit. Fails if the rejecting user is the same user who submitted the edit. + */ + CommandProcessingResult rejectEdit(Long productId, String rejectReason); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java index 229106864..a0020f108 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java @@ -27,23 +27,35 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToGLAccountMappingWritePlatformService; +import org.apache.fineract.commands.domain.CommandProcessingResultType; +import org.apache.fineract.commands.domain.CommandSource; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.core.api.JsonCommand; import org.apache.fineract.infrastructure.core.data.CommandProcessingResult; import org.apache.fineract.infrastructure.core.data.CommandProcessingResultBuilder; import org.apache.fineract.infrastructure.core.exception.ErrorHandler; import org.apache.fineract.infrastructure.core.exception.PlatformDataIntegrityException; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; +import org.apache.fineract.infrastructure.core.service.DateUtils; import org.apache.fineract.infrastructure.event.business.domain.share.ShareProductDividentsCreateBusinessEvent; import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.shareproducts.constants.ShareProductApiConstants; import org.apache.fineract.portfolio.shareproducts.domain.ShareProduct; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividendPayOutDetails; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepositoryWrapper; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepositoryWrapper; import org.apache.fineract.portfolio.shareproducts.exception.DividentProcessingException; +import org.apache.fineract.portfolio.shareproducts.exception.ShareProductEditPendingApprovalException; +import org.apache.fineract.portfolio.shareproducts.exception.ShareProductNoPendingEditException; +import org.apache.fineract.portfolio.shareproducts.exception.ShareProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.shareproducts.serialization.ShareProductDataSerializer; +import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; +import org.springframework.transaction.annotation.Transactional; @Slf4j @RequiredArgsConstructor @@ -56,6 +68,9 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP private final ShareProductDividendAssembler shareProductDividendAssembler; private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final BusinessEventNotifierService businessEventNotifierService; + private final PlatformSecurityContext context; + private final ProductPendingEditRepository productPendingEditRepository; + private final CommandSourceRepository commandSourceRepository; @Override public CommandProcessingResult createShareProduct(JsonCommand jsonCommand) { @@ -180,6 +195,121 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP } } + @Transactional + @Override + public CommandProcessingResult submitEditForApproval(final Long productId, final JsonCommand command) { + + final AppUser maker = this.context.authenticatedUser(); + final ShareProduct product = this.repository.findOneWithNotFoundDetection(productId); + + if (this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SHARE, productId, ProductPendingEdit.STATUS_PENDING) + .isPresent()) { + throw new ShareProductEditPendingApprovalException(productId); + } + + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SHARE, productId, maker, command.json()); + + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("SHAREPRODUCT") // + .resourceGetUrl("/products/share/" + productId) // + .resourceId(productId) // + .commandAsJson(command.json()) // + .maker(maker) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + return new CommandProcessingResultBuilder() // + .withEntityId(product.getId()) // + .build(); + } + + @Transactional + @Override + public CommandProcessingResult approveEdit(final Long productId) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SHARE, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new ShareProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new ShareProductSelfApprovalNotAllowedException(productId); + } + + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, + this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final CommandProcessingResult result = updateProduct(productId, replayedCommand); + + pendingEdit.markApproved(checker); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsChecked(checker); + auditEntry.updateForAudit(result); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return result; + } + + private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { + if (pendingEdit.getCommandSourceId() != null) { + final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); + if (existing.isPresent()) { + return existing.get(); + } + } + final CommandSource auditEntry = CommandSource.builder() // + .actionName("UPDATE") // + .entityName("SHAREPRODUCT") // + .resourceGetUrl("/products/share/" + productId) // + .resourceId(productId) // + .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .maker(pendingEdit.getMaker()) // + .madeOnDate(DateUtils.getAuditOffsetDateTime()) // + .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // + .idempotencyKey(java.util.UUID.randomUUID().toString()) // + .sanitized(false) // + .build(); + this.commandSourceRepository.saveAndFlush(auditEntry); + pendingEdit.setCommandSourceId(auditEntry.getId()); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + return auditEntry; + } + + @Transactional + @Override + public CommandProcessingResult rejectEdit(final Long productId, final String rejectReason) { + + final AppUser checker = this.context.authenticatedUser(); + final ProductPendingEdit pendingEdit = this.productPendingEditRepository + .findByProductTypeAndProductIdAndStatus(ProductPendingEdit.TYPE_SHARE, productId, ProductPendingEdit.STATUS_PENDING) + .orElseThrow(() -> new ShareProductNoPendingEditException(productId)); + + if (pendingEdit.getMaker().getId().equals(checker.getId()) && !checker.isCheckerSuperUser()) { + throw new ShareProductSelfApprovalNotAllowedException(productId); + } + + pendingEdit.markRejected(checker, rejectReason); + this.productPendingEditRepository.saveAndFlush(pendingEdit); + + final CommandSource auditEntry = findOrCreateAuditEntry(pendingEdit, productId); + auditEntry.markAsRejected(checker); + this.commandSourceRepository.saveAndFlush(auditEntry); + + return new CommandProcessingResultBuilder() // + .withEntityId(productId) // + .build(); + } + private void handleDataIntegrityIssues(final Exception e) { log.error("Unknown data integrity issue with resource", e); throw ErrorHandler.getMappable(e, "error.msg.shareproduct.unknown.data.integrity.issue", diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java index 2cbe6469d..38a61e059 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java @@ -24,11 +24,14 @@ import org.apache.fineract.accounting.producttoaccountmapping.service.ProductToG import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.core.service.PaginationHelper; import org.apache.fineract.infrastructure.core.service.database.DatabaseSpecificSQLGenerator; +import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.event.business.service.BusinessEventNotifierService; +import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.infrastructure.security.utils.ColumnValidator; import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformService; import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; import org.apache.fineract.portfolio.products.service.ShareProductReadPlatformService; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountReadPlatformService; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepositoryWrapper; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepositoryWrapper; @@ -99,10 +102,13 @@ public class ShareProductsConfiguration { ShareProductDividentPayOutDetailsRepositoryWrapper shareProductDividentPayOutDetailsRepository, ShareProductDividendAssembler shareProductDividendAssembler, ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, - BusinessEventNotifierService businessEventNotifierService) { + BusinessEventNotifierService businessEventNotifierService, + PlatformSecurityContext context, + ProductPendingEditRepository productPendingEditRepository, + CommandSourceRepository commandSourceRepository) { return new ShareProductWritePlatformServiceJpaRepositoryImpl(repository, serializer, fromApiJsonHelper, shareProductDividentPayOutDetailsRepository, shareProductDividendAssembler, accountMappingWritePlatformService, - businessEventNotifierService); + businessEventNotifierService, context, productPendingEditRepository, commandSourceRepository); } } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java index 4da5b1860..53c2e9199 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/FixedDepositProductData.java @@ -495,6 +495,7 @@ public final class FixedDepositProductData extends DepositProductData { private Boolean allowDebitTxnAfterDueDate; private Boolean accountClosedZeroBalanceInDayClosing; private String balanceFrequency; + private Boolean isPendingApproval; // Template option setters public void setInterestCalculationTypeOption(Collection v) { this.interestCalculationTypeOption = v; } @@ -541,6 +542,7 @@ public final class FixedDepositProductData extends DepositProductData { public void setAllowDebitTxnAfterDueDate(Boolean v) { this.allowDebitTxnAfterDueDate = v; } public void setAccountClosedZeroBalanceInDayClosing(Boolean v) { this.accountClosedZeroBalanceInDayClosing = v; } public void setBalanceFrequency(String v) { this.balanceFrequency = v; } + public void setIsPendingApproval(Boolean v) { this.isPendingApproval = v; } // CBS field getters public String getProductCode() { return productCode; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java index 62ae76c63..3c6537c83 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/data/RecurringDepositProductData.java @@ -98,6 +98,7 @@ public final class RecurringDepositProductData extends DepositProductData { private Boolean deceasedSettlement; private Boolean allowDebitTxnAfterDueDate; private Boolean withdrawalFeeForTransfers; + private Boolean isPendingApproval; public void setInterestCalculationTypeOption(Collection v) { this.interestCalculationTypeOption = v; } public void setPeriodFrequencyOptions(Collection v) { this.periodFrequencyOptions = v; } @@ -140,6 +141,7 @@ public final class RecurringDepositProductData extends DepositProductData { public void setDeceasedSettlement(Boolean v) { this.deceasedSettlement = v; } public void setAllowDebitTxnAfterDueDate(Boolean v) { this.allowDebitTxnAfterDueDate = v; } public void setWithdrawalFeeForTransfers(Boolean v) { this.withdrawalFeeForTransfers = v; } + public void setIsPendingApproval(Boolean v) { this.isPendingApproval = v; } /** Copy all CBS custom fields from source into this instance. */ public void copyCbsFieldsFrom(final RecurringDepositProductData src) { diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/CurrentOnlyEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/CurrentOnlyEditFields.java new file mode 100644 index 000000000..0f3e8922b --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/CurrentOnlyEditFields.java @@ -0,0 +1,39 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.Getter; +import lombok.Setter; + +@Embeddable +@Getter +@Setter +public class CurrentOnlyEditFields { + + @Column(name = "avg_balance_calc_period") + private String avgBalanceCalcPeriod; + + @Column(name = "valid_for_period") + private String validForPeriod; + + @Column(name = "od_account_closed_zero_balance_in_day_closing") + private Boolean odAccountClosedZeroBalanceInDayClosing; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositLimitKycEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositLimitKycEditFields.java new file mode 100644 index 000000000..9aa3640ea --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/DepositLimitKycEditFields.java @@ -0,0 +1,54 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.Getter; +import lombok.Setter; + +/** + * Mirrors the "depositLimitKyc" JSON object - a 1:1 relationship today, so kept flat here. Note: + * the real JSON shape is nested ({@code {general: {kycType, limit}, minor: {...}, smallSaving: + * {...}}}), not flat siblings - the replay step is responsible for re-nesting these columns back + * into that shape before handing off to the unchanged assembler. + */ +@Embeddable +@Getter +@Setter +public class DepositLimitKycEditFields { + + @Column(name = "kyc_general_type") + private String generalType; + + @Column(name = "kyc_general_limit") + private String generalLimit; + + @Column(name = "kyc_minor_type") + private String minorType; + + @Column(name = "kyc_minor_limit") + private Long minorLimit; + + @Column(name = "kyc_small_saving_type") + private String smallSavingType; + + @Column(name = "kyc_small_saving_limit") + private Long smallSavingLimit; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FacilityConfigEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FacilityConfigEditFields.java new file mode 100644 index 000000000..7f9069144 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FacilityConfigEditFields.java @@ -0,0 +1,79 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.Getter; +import lombok.Setter; + +/** Mirrors the "accountFacilityConfig" JSON object - a 1:1 relationship today, so kept flat here. */ +@Embeddable +@Getter +@Setter +public class FacilityConfigEditFields { + + @Column(name = "fc_atm_facility") + private Boolean atmFacility; + + @Column(name = "fc_atm_withdrawal_facility") + private Boolean atmWithdrawalFacility; + + @Column(name = "fc_upi_facility") + private Boolean upiFacility; + + @Column(name = "fc_pos_transactions_facility") + private Boolean posTransactionsFacility; + + @Column(name = "fc_cheque_book") + private Boolean chequeBook; + + @Column(name = "fc_imps_facility") + private Boolean impsFacility; + + @Column(name = "fc_sms_alerts") + private Boolean smsAlerts; + + @Column(name = "fc_bbps_facility") + private Boolean bbpsFacility; + + @Column(name = "fc_insurance_cover") + private Boolean insuranceCover; + + @Column(name = "fc_bepg_facility") + private Boolean bepgFacility; + + @Column(name = "fc_neft_facility") + private Boolean neftFacility; + + @Column(name = "fc_rtgs_facility") + private Boolean rtgsFacility; + + @Column(name = "fc_inter_bank_total_cap_facility") + private Boolean interBankTotalCapFacility; + + @Column(name = "fc_withdrawal_facility") + private Boolean withdrawalFacility; + + @Column(name = "fc_deposit_facility_kyc") + private Boolean depositFacilityKyc; + + @Column(name = "fc_virtual_debit_card") + private Boolean virtualDebitCard; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositEditFields.java new file mode 100644 index 000000000..8699d91cb --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/FixedDepositEditFields.java @@ -0,0 +1,71 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; + +/** Also used by Recurring Deposit, which extends Fixed Deposit. */ +@Embeddable +@Getter +@Setter +public class FixedDepositEditFields { + + @Column(name = "fd_type") + private String fdType; + + @Column(name = "pre_closure_penal_applicable") + private Boolean preClosurePenalApplicable; + + @Column(name = "pre_closure_penal_interest") + private BigDecimal preClosurePenalInterest; + + @Column(name = "pre_closure_penal_interest_on_type_id") + private Integer preClosurePenalInterestOnTypeId; + + @Column(name = "min_deposit_term") + private Integer minDepositTerm; + + @Column(name = "max_deposit_term") + private Integer maxDepositTerm; + + @Column(name = "min_deposit_term_type_id") + private Integer minDepositTermTypeId; + + @Column(name = "max_deposit_term_type_id") + private Integer maxDepositTermTypeId; + + @Column(name = "in_multiples_of_deposit_term") + private Integer inMultiplesOfDepositTerm; + + @Column(name = "in_multiples_of_deposit_term_type_id") + private Integer inMultiplesOfDepositTermTypeId; + + @Column(name = "min_deposit_amount") + private BigDecimal minDepositAmount; + + @Column(name = "max_deposit_amount") + private BigDecimal maxDepositAmount; + + @Column(name = "deposit_amount") + private BigDecimal depositAmount; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GlAccountMappingEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GlAccountMappingEditFields.java new file mode 100644 index 000000000..01fdc17b0 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/GlAccountMappingEditFields.java @@ -0,0 +1,78 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.Getter; +import lombok.Setter; + +/** + * Scalar (1:1) GL account mapping ids. No FK constraints to the accounting GL table - the + * existing validator already checks GL account validity at submit time. The 3 array-shaped GL + * mappings (payment-channel/fee/penalty to income account) live in m_product_temp_gl_mapping + * instead, since those are genuinely one-to-many. + */ +@Embeddable +@Getter +@Setter +public class GlAccountMappingEditFields { + + @Column(name = "gl_savings_reference_account_id") + private Long savingsReferenceAccountId; + + @Column(name = "gl_savings_control_account_id") + private Long savingsControlAccountId; + + @Column(name = "gl_income_from_fee_account_id") + private Long incomeFromFeeAccountId; + + @Column(name = "gl_income_from_penalty_account_id") + private Long incomeFromPenaltyAccountId; + + @Column(name = "gl_interest_on_savings_account_id") + private Long interestOnSavingsAccountId; + + @Column(name = "gl_transfers_in_suspense_account_id") + private Long transfersInSuspenseAccountId; + + @Column(name = "gl_overdraft_portfolio_control_id") + private Long overdraftPortfolioControlId; + + @Column(name = "gl_income_from_interest_id") + private Long incomeFromInterestId; + + @Column(name = "gl_write_off_account_id") + private Long writeOffAccountId; + + @Column(name = "gl_escheat_liability_id") + private Long escheatLiabilityId; + + @Column(name = "gl_penalties_receivable_account_id") + private Long penaltiesReceivableAccountId; + + @Column(name = "gl_interest_receivable_account_id") + private Long interestReceivableAccountId; + + @Column(name = "gl_fees_receivable_account_id") + private Long feesReceivableAccountId; + + @Column(name = "gl_interest_payable_account_id") + private Long interestPayableAccountId; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java new file mode 100644 index 000000000..dfc0c6347 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java @@ -0,0 +1,209 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embedded; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.Lob; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import java.time.LocalDateTime; +import lombok.Getter; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; +import org.apache.fineract.useradministration.domain.AppUser; + +/** + * Holds a single pending product edit, shared across product types (Savings, Current Account, Share) in one table + * (m_savings_product_temp). Presence of a row here for a given (productType, productId) with + * {@code status = PENDING} is itself the lock - no separate "is locked" column anywhere. The full edit request body + * is kept in {@link #proposedPayloadJson} so approval can replay it through each product's normal update path + * (covering charges, GL/accounting mappings and other related tables, not just scalar columns). + */ +@Entity +@Table(name = "m_savings_product_temp") +@Getter +@Setter +public class ProductPendingEdit extends AbstractPersistableCustom { + + public static final String STATUS_PENDING = "PENDING"; + public static final String STATUS_APPROVED = "APPROVED"; + public static final String STATUS_REJECTED = "REJECTED"; + + public static final String TYPE_SAVINGS = "SAVINGS"; + public static final String TYPE_CURRENT = "CURRENT"; + public static final String TYPE_SHARE = "SHARE"; + public static final String TYPE_FD = "FD"; + public static final String TYPE_RD = "RD"; + + @Column(name = "product_id", nullable = false) + private Long productId; + + @Column(name = "product_type", nullable = false, length = 20) + private String productType; + + @ManyToOne + @JoinColumn(name = "maker_id", nullable = false) + private AppUser maker; + + @ManyToOne + @JoinColumn(name = "checker_id") + private AppUser checker; + + @Column(name = "created_on", nullable = false) + private LocalDateTime createdOn; + + @Column(name = "checked_on") + private LocalDateTime checkedOn; + + @Column(name = "status", nullable = false, length = 20) + private String status; + + @Column(name = "reject_reason", length = 500) + private String rejectReason; + + @Lob + @Column(name = "proposed_payload_json", nullable = false) + private String proposedPayloadJson; + + /** + * ":" while PENDING, NULL otherwise - the real DB-level lock. Unique constraints treat + * NULL as distinct in both PostgreSQL and MySQL/MariaDB, so only one PENDING row per (productType, productId) + * can ever exist, while resolved rows are kept indefinitely for audit history without blocking future edits. + */ + @Column(name = "pending_lock_key", length = 40) + private String pendingLockKey; + + /** Links to the audit-only m_portfolio_command_source row created for this edit's submit/approve/reject. */ + @Column(name = "command_source_id") + private Long commandSourceId; + + /** + * Typed replacement for proposedPayloadJson - one embeddable group per concern, all mapped + * onto this same physical table. proposedPayloadJson is still populated (kept for a safe + * deprecation window) but a product type's write-service uses these typed columns, plus the + * satellite tables (ProductPendingEditCharge/FacilityLimit/GlMapping/MarketPrice) and the + * ProductPendingEditSubmittedField manifest, to build and replay an edit once its cutover + * (see SavingsProductWritePlatformServiceJpaRepositoryImpl and siblings) is complete. + */ + @Embedded + private SavingsCoreEditFields coreFields = new SavingsCoreEditFields(); + + @Embedded + private CurrentOnlyEditFields currentOnlyFields = new CurrentOnlyEditFields(); + + @Embedded + private ShareOnlyEditFields shareOnlyFields = new ShareOnlyEditFields(); + + @Embedded + private FixedDepositEditFields fixedDepositFields = new FixedDepositEditFields(); + + @Embedded + private RecurringDepositEditFields recurringDepositFields = new RecurringDepositEditFields(); + + @Embedded + private FacilityConfigEditFields facilityConfigFields = new FacilityConfigEditFields(); + + @Embedded + private DepositLimitKycEditFields depositLimitKycFields = new DepositLimitKycEditFields(); + + @Embedded + private GlAccountMappingEditFields glAccountMappingFields = new GlAccountMappingEditFields(); + + protected ProductPendingEdit() {} + + public ProductPendingEdit(final String productType, final Long productId, final AppUser maker, final String proposedPayloadJson) { + this.productType = productType; + this.productId = productId; + this.maker = maker; + this.proposedPayloadJson = proposedPayloadJson; + this.createdOn = LocalDateTime.now(); + this.status = STATUS_PENDING; + this.pendingLockKey = lockKeyFor(productType, productId); + } + + public static String lockKeyFor(final String productType, final Long productId) { + return productType + ":" + productId; + } + + public Long getProductId() { + return this.productId; + } + + public String getProductType() { + return this.productType; + } + + public AppUser getMaker() { + return this.maker; + } + + public AppUser getChecker() { + return this.checker; + } + + public LocalDateTime getCreatedOn() { + return this.createdOn; + } + + public LocalDateTime getCheckedOn() { + return this.checkedOn; + } + + public String getStatus() { + return this.status; + } + + public String getRejectReason() { + return this.rejectReason; + } + + public String getProposedPayloadJson() { + return this.proposedPayloadJson; + } + + public Long getCommandSourceId() { + return this.commandSourceId; + } + + public void setCommandSourceId(final Long commandSourceId) { + this.commandSourceId = commandSourceId; + } + + public boolean isPending() { + return STATUS_PENDING.equals(this.status); + } + + public void markApproved(final AppUser checker) { + this.status = STATUS_APPROVED; + this.checker = checker; + this.checkedOn = LocalDateTime.now(); + this.pendingLockKey = null; + } + + public void markRejected(final AppUser checker, final String reason) { + this.status = STATUS_REJECTED; + this.checker = checker; + this.checkedOn = LocalDateTime.now(); + this.rejectReason = reason; + this.pendingLockKey = null; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditCharge.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditCharge.java new file mode 100644 index 000000000..b88d6c14b --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditCharge.java @@ -0,0 +1,50 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; + +/** One row per charge id proposed to be attached to the product, mirroring the "charges" array. */ +@Entity +@Table(name = "m_product_temp_charge") +@Getter +@Setter +@NoArgsConstructor +public class ProductPendingEditCharge extends AbstractPersistableCustom { + + @ManyToOne + @JoinColumn(name = "pending_edit_id", nullable = false) + private ProductPendingEdit pendingEdit; + + @Column(name = "charge_id", nullable = false) + private Long chargeId; + + public ProductPendingEditCharge(final ProductPendingEdit pendingEdit, final Long chargeId) { + this.pendingEdit = pendingEdit; + this.chargeId = chargeId; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditChargeRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditChargeRepository.java new file mode 100644 index 000000000..0a0688b49 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditChargeRepository.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditChargeRepository extends JpaRepository { + + List findByPendingEditId(Long pendingEditId); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimit.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimit.java new file mode 100644 index 000000000..55a0f271e --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimit.java @@ -0,0 +1,63 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; + +/** One row per entry of the "accountFacilityLimits" array. Values can be "UNLIMITED"/"N/A"/numeric-as-string. */ +@Entity +@Table(name = "m_product_temp_facility_limit") +@Getter +@Setter +@NoArgsConstructor +public class ProductPendingEditFacilityLimit extends AbstractPersistableCustom { + + @ManyToOne + @JoinColumn(name = "pending_edit_id", nullable = false) + private ProductPendingEdit pendingEdit; + + @Column(name = "limit_type", nullable = false) + private String limitType; + + @Column(name = "general_limit") + private String generalLimit; + + @Column(name = "minor_account_limit") + private String minorAccountLimit; + + @Column(name = "small_saving_limit") + private String smallSavingLimit; + + public ProductPendingEditFacilityLimit(final ProductPendingEdit pendingEdit, final String limitType, final String generalLimit, + final String minorAccountLimit, final String smallSavingLimit) { + this.pendingEdit = pendingEdit; + this.limitType = limitType; + this.generalLimit = generalLimit; + this.minorAccountLimit = minorAccountLimit; + this.smallSavingLimit = smallSavingLimit; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimitRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimitRepository.java new file mode 100644 index 000000000..1b6577a37 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFacilityLimitRepository.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditFacilityLimitRepository extends JpaRepository { + + List findByPendingEditId(Long pendingEditId); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java new file mode 100644 index 000000000..3eec82403 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java @@ -0,0 +1,696 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import java.time.LocalDate; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.apache.fineract.infrastructure.core.api.JsonCommand; + +/** + * Shared submit-time extraction / approve-time reconstruction logic for the scalar and 1:1 + * "container" fields that Savings, Current, Fixed Deposit and Recurring Deposit products all have + * in common (FD/RD extend the Savings field set). Each populateXxx method reads present JSON + * parameters into the corresponding typed embeddable, returning the set of parameter names it + * found (which the caller must persist as {@link ProductPendingEditSubmittedField} rows - this is + * how the manifest preserves "field omitted" vs "field explicitly null" vs "field has a value"). + * Each writeXxxToJson method is the exact inverse, used at approval time to rebuild a JsonObject + * equivalent to what the maker originally submitted, before handing it to the unchanged + * update()/updateProduct() methods via JsonCommand.fromJsonElement(...). + * + * Share Product's field set is largely disjoint from this shared core and is mapped separately. + */ +public final class ProductPendingEditFieldMapper { + + private ProductPendingEditFieldMapper() {} + + // ---- Savings/Current/FD/RD shared core fields ---------------------------------------------- + + public static Set populateCoreFields(final JsonCommand command, final SavingsCoreEditFields f) { + final Set present = new HashSet<>(); + + if (command.hasParameter("name")) { + f.setName(command.stringValueOfParameterNamed("name")); + present.add("name"); + } + if (command.hasParameter("shortName")) { + f.setShortName(command.stringValueOfParameterNamed("shortName")); + present.add("shortName"); + } + if (command.hasParameter("description")) { + f.setDescription(command.stringValueOfParameterNamed("description")); + present.add("description"); + } + if (command.hasParameter("currencyCode")) { + f.setCurrencyCode(command.stringValueOfParameterNamed("currencyCode")); + present.add("currencyCode"); + } + if (command.hasParameter("digitsAfterDecimal")) { + f.setDigitsAfterDecimal(command.integerValueOfParameterNamed("digitsAfterDecimal")); + present.add("digitsAfterDecimal"); + } + if (command.hasParameter("inMultiplesOf")) { + f.setInMultiplesOf(command.integerValueOfParameterNamed("inMultiplesOf")); + present.add("inMultiplesOf"); + } + if (command.hasParameter("accountingRule")) { + f.setAccountingRule(command.integerValueOfParameterNamed("accountingRule")); + present.add("accountingRule"); + } + if (command.hasParameter("nominalAnnualInterestRate")) { + f.setNominalAnnualInterestRate(command.bigDecimalValueOfParameterNamed("nominalAnnualInterestRate")); + present.add("nominalAnnualInterestRate"); + } + if (command.hasParameter("interestCompoundingPeriodType")) { + f.setInterestCompoundingPeriodType(command.integerValueOfParameterNamed("interestCompoundingPeriodType")); + present.add("interestCompoundingPeriodType"); + } + if (command.hasParameter("interestPostingPeriodType")) { + f.setInterestPostingPeriodType(command.integerValueOfParameterNamed("interestPostingPeriodType")); + present.add("interestPostingPeriodType"); + } + if (command.hasParameter("interestCalculationType")) { + f.setInterestCalculationType(command.integerValueOfParameterNamed("interestCalculationType")); + present.add("interestCalculationType"); + } + if (command.hasParameter("interestCalculationDaysInYearType")) { + f.setInterestCalculationDaysInYearType(command.integerValueOfParameterNamed("interestCalculationDaysInYearType")); + present.add("interestCalculationDaysInYearType"); + } + if (command.hasParameter("minRequiredOpeningBalance")) { + f.setMinRequiredOpeningBalance(command.bigDecimalValueOfParameterNamed("minRequiredOpeningBalance")); + present.add("minRequiredOpeningBalance"); + } + if (command.hasParameter("lockinPeriodFrequency")) { + f.setLockinPeriodFrequency(command.integerValueOfParameterNamed("lockinPeriodFrequency")); + present.add("lockinPeriodFrequency"); + } + if (command.hasParameter("lockinPeriodFrequencyType")) { + f.setLockinPeriodFrequencyType(command.integerValueOfParameterNamed("lockinPeriodFrequencyType")); + present.add("lockinPeriodFrequencyType"); + } + if (command.hasParameter("withdrawalFeeForTransfers")) { + f.setWithdrawalFeeForTransfers(command.booleanObjectValueOfParameterNamed("withdrawalFeeForTransfers")); + present.add("withdrawalFeeForTransfers"); + } + if (command.hasParameter("allowOverdraft")) { + f.setAllowOverdraft(command.booleanObjectValueOfParameterNamed("allowOverdraft")); + present.add("allowOverdraft"); + } + if (command.hasParameter("overdraftLimit")) { + f.setOverdraftLimit(command.bigDecimalValueOfParameterNamed("overdraftLimit")); + present.add("overdraftLimit"); + } + if (command.hasParameter("nominalAnnualInterestRateOverdraft")) { + f.setNominalAnnualInterestRateOverdraft(command.bigDecimalValueOfParameterNamed("nominalAnnualInterestRateOverdraft")); + present.add("nominalAnnualInterestRateOverdraft"); + } + if (command.hasParameter("minOverdraftForInterestCalculation")) { + f.setMinOverdraftForInterestCalculation(command.bigDecimalValueOfParameterNamed("minOverdraftForInterestCalculation")); + present.add("minOverdraftForInterestCalculation"); + } + if (command.hasParameter("enforceMinRequiredBalance")) { + f.setEnforceMinRequiredBalance(command.booleanObjectValueOfParameterNamed("enforceMinRequiredBalance")); + present.add("enforceMinRequiredBalance"); + } + if (command.hasParameter("minRequiredBalance")) { + f.setMinRequiredBalance(command.bigDecimalValueOfParameterNamed("minRequiredBalance")); + present.add("minRequiredBalance"); + } + if (command.hasParameter("lienAllowed")) { + f.setLienAllowed(command.booleanObjectValueOfParameterNamed("lienAllowed")); + present.add("lienAllowed"); + } + if (command.hasParameter("maxAllowedLienLimit")) { + f.setMaxAllowedLienLimit(command.bigDecimalValueOfParameterNamed("maxAllowedLienLimit")); + present.add("maxAllowedLienLimit"); + } + if (command.hasParameter("minBalanceForInterestCalculation")) { + f.setMinBalanceForInterestCalculation(command.bigDecimalValueOfParameterNamed("minBalanceForInterestCalculation")); + present.add("minBalanceForInterestCalculation"); + } + if (command.hasParameter("withHoldTax")) { + f.setWithHoldTax(command.booleanObjectValueOfParameterNamed("withHoldTax")); + present.add("withHoldTax"); + } + if (command.hasParameter("taxGroupId")) { + f.setTaxGroupId(command.longValueOfParameterNamed("taxGroupId")); + present.add("taxGroupId"); + } + if (command.hasParameter("otherGlMappings")) { + f.setOtherGlMappings(command.stringValueOfParameterNamed("otherGlMappings")); + present.add("otherGlMappings"); + } + if (command.hasParameter("isDormancyTrackingActive")) { + f.setIsDormancyTrackingActive(command.booleanObjectValueOfParameterNamed("isDormancyTrackingActive")); + present.add("isDormancyTrackingActive"); + } + if (command.hasParameter("daysToInactive")) { + f.setDaysToInactive(command.integerValueOfParameterNamed("daysToInactive")); + present.add("daysToInactive"); + } + if (command.hasParameter("daysToDormancy")) { + f.setDaysToDormancy(command.integerValueOfParameterNamed("daysToDormancy")); + present.add("daysToDormancy"); + } + if (command.hasParameter("daysToEscheat")) { + f.setDaysToEscheat(command.integerValueOfParameterNamed("daysToEscheat")); + present.add("daysToEscheat"); + } + if (command.hasParameter("accountType")) { + f.setAccountType(command.stringValueOfParameterNamed("accountType")); + present.add("accountType"); + } + if (command.hasParameter("customerSegment")) { + f.setCustomerSegment(command.stringValueOfParameterNamed("customerSegment")); + present.add("customerSegment"); + } + if (command.hasParameter("productCode")) { + f.setProductCode(command.stringValueOfParameterNamed("productCode")); + present.add("productCode"); + } + if (command.hasParameter("glAccountId")) { + f.setGlAccountId(command.longValueOfParameterNamed("glAccountId")); + present.add("glAccountId"); + } + if (command.hasParameter("effectiveDate")) { + f.setEffectiveDate(command.localDateValueOfParameterNamed("effectiveDate")); + present.add("effectiveDate"); + } + if (command.hasParameter("effectiveTo")) { + f.setEffectiveTo(command.localDateValueOfParameterNamed("effectiveTo")); + present.add("effectiveTo"); + } + if (command.hasParameter("endDate")) { + f.setEndDate(command.localDateValueOfParameterNamed("endDate")); + present.add("endDate"); + } + if (command.hasParameter("introducerRequired")) { + f.setIntroducerRequired(command.booleanObjectValueOfParameterNamed("introducerRequired")); + present.add("introducerRequired"); + } + if (command.hasParameter("shareLinkingEnabled")) { + f.setShareLinkingEnabled(command.booleanObjectValueOfParameterNamed("shareLinkingEnabled")); + present.add("shareLinkingEnabled"); + } + if (command.hasParameter("nominationFacility")) { + f.setNominationFacility(command.booleanObjectValueOfParameterNamed("nominationFacility")); + present.add("nominationFacility"); + } + if (command.hasParameter("dormancyAlert")) { + f.setDormancyAlert(command.booleanObjectValueOfParameterNamed("dormancyAlert")); + present.add("dormancyAlert"); + } + if (command.hasParameter("interestCalculateSelector")) { + f.setInterestCalculateSelector(command.integerValueOfParameterNamed("interestCalculateSelector")); + present.add("interestCalculateSelector"); + } + if (command.hasParameter("averagePeriod")) { + f.setAveragePeriod(command.stringValueOfParameterNamed("averagePeriod")); + present.add("averagePeriod"); + } + if (command.hasParameter("autoPost")) { + f.setAutoPost(command.booleanObjectValueOfParameterNamed("autoPost")); + present.add("autoPost"); + } + if (command.hasParameter("frequencyFixDay")) { + f.setFrequencyFixDay(command.integerValueOfParameterNamed("frequencyFixDay")); + present.add("frequencyFixDay"); + } + if (command.hasParameter("lastInterestDate")) { + f.setLastInterestDate(command.localDateValueOfParameterNamed("lastInterestDate")); + present.add("lastInterestDate"); + } + if (command.hasParameter("enableLockinPeriod")) { + f.setEnableLockinPeriod(command.booleanObjectValueOfParameterNamed("enableLockinPeriod")); + present.add("enableLockinPeriod"); + } + if (command.hasParameter("balanceFrequency")) { + f.setBalanceFrequency(command.stringValueOfParameterNamed("balanceFrequency")); + present.add("balanceFrequency"); + } + if (command.hasParameter("accountClosedZeroBalanceInDayClosing")) { + f.setAccountClosedZeroBalanceInDayClosing(command.booleanObjectValueOfParameterNamed("accountClosedZeroBalanceInDayClosing")); + present.add("accountClosedZeroBalanceInDayClosing"); + } + if (command.hasParameter("balanceSwapOption")) { + f.setBalanceSwapOption(command.booleanObjectValueOfParameterNamed("balanceSwapOption")); + present.add("balanceSwapOption"); + } + if (command.hasParameter("msme")) { + f.setMsme(command.booleanObjectValueOfParameterNamed("msme")); + present.add("msme"); + } + if (command.hasParameter("autoDebitFacility")) { + f.setAutoDebitFacility(command.booleanObjectValueOfParameterNamed("autoDebitFacility")); + present.add("autoDebitFacility"); + } + if (command.hasParameter("loanFacility")) { + f.setLoanFacility(command.booleanObjectValueOfParameterNamed("loanFacility")); + present.add("loanFacility"); + } + if (command.hasParameter("prematureWithdrawalOption")) { + f.setPrematureWithdrawalOption(command.booleanObjectValueOfParameterNamed("prematureWithdrawalOption")); + present.add("prematureWithdrawalOption"); + } + if (command.hasParameter("tenureFlexibility")) { + f.setTenureFlexibility(command.booleanObjectValueOfParameterNamed("tenureFlexibility")); + present.add("tenureFlexibility"); + } + if (command.hasParameter("lienMarked")) { + f.setLienMarked(command.booleanObjectValueOfParameterNamed("lienMarked")); + present.add("lienMarked"); + } + if (command.hasParameter("maturityInstructions")) { + f.setMaturityInstructions(command.booleanObjectValueOfParameterNamed("maturityInstructions")); + present.add("maturityInstructions"); + } + if (command.hasParameter("creditMaturityProceeds")) { + f.setCreditMaturityProceeds(command.booleanObjectValueOfParameterNamed("creditMaturityProceeds")); + present.add("creditMaturityProceeds"); + } + if (command.hasParameter("penaltyGracePeriodMissedInstallments")) { + f.setPenaltyGracePeriodMissedInstallments(command.booleanObjectValueOfParameterNamed("penaltyGracePeriodMissedInstallments")); + present.add("penaltyGracePeriodMissedInstallments"); + } + if (command.hasParameter("panelRequestApplicable")) { + f.setPanelRequestApplicable(command.booleanObjectValueOfParameterNamed("panelRequestApplicable")); + present.add("panelRequestApplicable"); + } + if (command.hasParameter("noPenaltyNomineeHeirClosure")) { + f.setNoPenaltyNomineeHeirClosure(command.booleanObjectValueOfParameterNamed("noPenaltyNomineeHeirClosure")); + present.add("noPenaltyNomineeHeirClosure"); + } + if (command.hasParameter("deceasedSettlement")) { + f.setDeceasedSettlement(command.booleanObjectValueOfParameterNamed("deceasedSettlement")); + present.add("deceasedSettlement"); + } + if (command.hasParameter("allowDebitTxnAfterDueDate")) { + f.setAllowDebitTxnAfterDueDate(command.booleanObjectValueOfParameterNamed("allowDebitTxnAfterDueDate")); + present.add("allowDebitTxnAfterDueDate"); + } + return present; + } + + public static void writeCoreFieldsToJson(final JsonObject root, final SavingsCoreEditFields f, final Set submitted) { + putString(root, submitted, "name", f.getName()); + putString(root, submitted, "shortName", f.getShortName()); + putString(root, submitted, "description", f.getDescription()); + putString(root, submitted, "currencyCode", f.getCurrencyCode()); + putNumber(root, submitted, "digitsAfterDecimal", f.getDigitsAfterDecimal()); + putNumber(root, submitted, "inMultiplesOf", f.getInMultiplesOf()); + putNumber(root, submitted, "accountingRule", f.getAccountingRule()); + putNumber(root, submitted, "nominalAnnualInterestRate", f.getNominalAnnualInterestRate()); + putNumber(root, submitted, "interestCompoundingPeriodType", f.getInterestCompoundingPeriodType()); + putNumber(root, submitted, "interestPostingPeriodType", f.getInterestPostingPeriodType()); + putNumber(root, submitted, "interestCalculationType", f.getInterestCalculationType()); + putNumber(root, submitted, "interestCalculationDaysInYearType", f.getInterestCalculationDaysInYearType()); + putNumber(root, submitted, "minRequiredOpeningBalance", f.getMinRequiredOpeningBalance()); + putNumber(root, submitted, "lockinPeriodFrequency", f.getLockinPeriodFrequency()); + putNumber(root, submitted, "lockinPeriodFrequencyType", f.getLockinPeriodFrequencyType()); + putBoolean(root, submitted, "withdrawalFeeForTransfers", f.getWithdrawalFeeForTransfers()); + putBoolean(root, submitted, "allowOverdraft", f.getAllowOverdraft()); + putNumber(root, submitted, "overdraftLimit", f.getOverdraftLimit()); + putNumber(root, submitted, "nominalAnnualInterestRateOverdraft", f.getNominalAnnualInterestRateOverdraft()); + putNumber(root, submitted, "minOverdraftForInterestCalculation", f.getMinOverdraftForInterestCalculation()); + putBoolean(root, submitted, "enforceMinRequiredBalance", f.getEnforceMinRequiredBalance()); + putNumber(root, submitted, "minRequiredBalance", f.getMinRequiredBalance()); + putBoolean(root, submitted, "lienAllowed", f.getLienAllowed()); + putNumber(root, submitted, "maxAllowedLienLimit", f.getMaxAllowedLienLimit()); + putNumber(root, submitted, "minBalanceForInterestCalculation", f.getMinBalanceForInterestCalculation()); + putBoolean(root, submitted, "withHoldTax", f.getWithHoldTax()); + putNumber(root, submitted, "taxGroupId", f.getTaxGroupId()); + putString(root, submitted, "otherGlMappings", f.getOtherGlMappings()); + putBoolean(root, submitted, "isDormancyTrackingActive", f.getIsDormancyTrackingActive()); + putNumber(root, submitted, "daysToInactive", f.getDaysToInactive()); + putNumber(root, submitted, "daysToDormancy", f.getDaysToDormancy()); + putNumber(root, submitted, "daysToEscheat", f.getDaysToEscheat()); + putString(root, submitted, "accountType", f.getAccountType()); + putString(root, submitted, "customerSegment", f.getCustomerSegment()); + putString(root, submitted, "productCode", f.getProductCode()); + putNumber(root, submitted, "glAccountId", f.getGlAccountId()); + putDate(root, submitted, "effectiveDate", f.getEffectiveDate()); + putDate(root, submitted, "effectiveTo", f.getEffectiveTo()); + putDate(root, submitted, "endDate", f.getEndDate()); + putBoolean(root, submitted, "introducerRequired", f.getIntroducerRequired()); + putBoolean(root, submitted, "shareLinkingEnabled", f.getShareLinkingEnabled()); + putBoolean(root, submitted, "nominationFacility", f.getNominationFacility()); + putBoolean(root, submitted, "dormancyAlert", f.getDormancyAlert()); + putNumber(root, submitted, "interestCalculateSelector", f.getInterestCalculateSelector()); + putString(root, submitted, "averagePeriod", f.getAveragePeriod()); + putBoolean(root, submitted, "autoPost", f.getAutoPost()); + putNumber(root, submitted, "frequencyFixDay", f.getFrequencyFixDay()); + putDate(root, submitted, "lastInterestDate", f.getLastInterestDate()); + putBoolean(root, submitted, "enableLockinPeriod", f.getEnableLockinPeriod()); + putString(root, submitted, "balanceFrequency", f.getBalanceFrequency()); + putBoolean(root, submitted, "accountClosedZeroBalanceInDayClosing", f.getAccountClosedZeroBalanceInDayClosing()); + putBoolean(root, submitted, "balanceSwapOption", f.getBalanceSwapOption()); + putBoolean(root, submitted, "msme", f.getMsme()); + putBoolean(root, submitted, "autoDebitFacility", f.getAutoDebitFacility()); + putBoolean(root, submitted, "loanFacility", f.getLoanFacility()); + putBoolean(root, submitted, "prematureWithdrawalOption", f.getPrematureWithdrawalOption()); + putBoolean(root, submitted, "tenureFlexibility", f.getTenureFlexibility()); + putBoolean(root, submitted, "lienMarked", f.getLienMarked()); + putBoolean(root, submitted, "maturityInstructions", f.getMaturityInstructions()); + putBoolean(root, submitted, "creditMaturityProceeds", f.getCreditMaturityProceeds()); + putBoolean(root, submitted, "penaltyGracePeriodMissedInstallments", f.getPenaltyGracePeriodMissedInstallments()); + putBoolean(root, submitted, "panelRequestApplicable", f.getPanelRequestApplicable()); + putBoolean(root, submitted, "noPenaltyNomineeHeirClosure", f.getNoPenaltyNomineeHeirClosure()); + putBoolean(root, submitted, "deceasedSettlement", f.getDeceasedSettlement()); + putBoolean(root, submitted, "allowDebitTxnAfterDueDate", f.getAllowDebitTxnAfterDueDate()); + } + + // ---- accountFacilityConfig (1:1 container) -------------------------------------------------- + + public static boolean populateFacilityConfig(final JsonCommand command, final FacilityConfigEditFields f) { + if (!command.hasParameter("accountFacilityConfig")) { + return false; + } + f.setAtmFacility(booleanOf(command, "accountFacilityConfig", "atmFacility")); + f.setAtmWithdrawalFacility(booleanOf(command, "accountFacilityConfig", "atmWithdrawalFacility")); + f.setUpiFacility(booleanOf(command, "accountFacilityConfig", "upiFacility")); + f.setPosTransactionsFacility(booleanOf(command, "accountFacilityConfig", "posTransactionsFacility")); + f.setChequeBook(booleanOf(command, "accountFacilityConfig", "chequeBook")); + f.setImpsFacility(booleanOf(command, "accountFacilityConfig", "impsFacility")); + f.setSmsAlerts(booleanOf(command, "accountFacilityConfig", "smsAlerts")); + f.setBbpsFacility(booleanOf(command, "accountFacilityConfig", "bbpsFacility")); + f.setInsuranceCover(booleanOf(command, "accountFacilityConfig", "insuranceCover")); + f.setBepgFacility(booleanOf(command, "accountFacilityConfig", "bepgFacility")); + f.setNeftFacility(booleanOf(command, "accountFacilityConfig", "neftFacility")); + f.setRtgsFacility(booleanOf(command, "accountFacilityConfig", "rtgsFacility")); + f.setInterBankTotalCapFacility(booleanOf(command, "accountFacilityConfig", "interBankTotalCapFacility")); + f.setWithdrawalFacility(booleanOf(command, "accountFacilityConfig", "withdrawalFacility")); + f.setDepositFacilityKyc(booleanOf(command, "accountFacilityConfig", "depositFacilityKyc")); + f.setVirtualDebitCard(booleanOf(command, "accountFacilityConfig", "virtualDebitCard")); + return true; + } + + public static void writeFacilityConfigToJson(final JsonObject root, final FacilityConfigEditFields f, final boolean submitted) { + if (!submitted) { + return; + } + final JsonObject config = new JsonObject(); + config.addProperty("atmFacility", f.getAtmFacility()); + config.addProperty("atmWithdrawalFacility", f.getAtmWithdrawalFacility()); + config.addProperty("upiFacility", f.getUpiFacility()); + config.addProperty("posTransactionsFacility", f.getPosTransactionsFacility()); + config.addProperty("chequeBook", f.getChequeBook()); + config.addProperty("impsFacility", f.getImpsFacility()); + config.addProperty("smsAlerts", f.getSmsAlerts()); + config.addProperty("bbpsFacility", f.getBbpsFacility()); + config.addProperty("insuranceCover", f.getInsuranceCover()); + config.addProperty("bepgFacility", f.getBepgFacility()); + config.addProperty("neftFacility", f.getNeftFacility()); + config.addProperty("rtgsFacility", f.getRtgsFacility()); + config.addProperty("interBankTotalCapFacility", f.getInterBankTotalCapFacility()); + config.addProperty("withdrawalFacility", f.getWithdrawalFacility()); + config.addProperty("depositFacilityKyc", f.getDepositFacilityKyc()); + config.addProperty("virtualDebitCard", f.getVirtualDebitCard()); + root.add("accountFacilityConfig", config); + } + + // ---- depositLimitKyc (1:1 container, nested general/minor/smallSaving shape) ---------------- + + public static boolean populateDepositLimitKyc(final JsonCommand command, final DepositLimitKycEditFields f) { + if (!command.hasParameter("depositLimitKyc")) { + return false; + } + final com.google.gson.JsonElement raw = command.parsedJson().getAsJsonObject().get("depositLimitKyc"); + if (raw == null || !raw.isJsonObject()) { + return true; + } + final JsonObject kyc = raw.getAsJsonObject(); + if (kyc.has("general") && kyc.get("general").isJsonObject()) { + final JsonObject general = kyc.getAsJsonObject("general"); + f.setGeneralType(stringOrNull(general, "kycType")); + f.setGeneralLimit(stringOrNull(general, "limit")); + } + if (kyc.has("minor") && kyc.get("minor").isJsonObject()) { + final JsonObject minor = kyc.getAsJsonObject("minor"); + f.setMinorType(stringOrNull(minor, "kycType")); + final String minorLimit = stringOrNull(minor, "limit"); + f.setMinorLimit(minorLimit == null ? null : Long.valueOf(minorLimit)); + } + if (kyc.has("smallSaving") && kyc.get("smallSaving").isJsonObject()) { + final JsonObject smallSaving = kyc.getAsJsonObject("smallSaving"); + f.setSmallSavingType(stringOrNull(smallSaving, "kycType")); + final String smallSavingLimit = stringOrNull(smallSaving, "limit"); + f.setSmallSavingLimit(smallSavingLimit == null ? null : Long.valueOf(smallSavingLimit)); + } + return true; + } + + public static void writeDepositLimitKycToJson(final JsonObject root, final DepositLimitKycEditFields f, final boolean submitted) { + if (!submitted) { + return; + } + final JsonObject kyc = new JsonObject(); + final JsonObject general = new JsonObject(); + general.addProperty("kycType", f.getGeneralType()); + general.addProperty("limit", f.getGeneralLimit()); + kyc.add("general", general); + final JsonObject minor = new JsonObject(); + minor.addProperty("kycType", f.getMinorType()); + if (f.getMinorLimit() != null) { + minor.addProperty("limit", f.getMinorLimit()); + } + kyc.add("minor", minor); + final JsonObject smallSaving = new JsonObject(); + smallSaving.addProperty("kycType", f.getSmallSavingType()); + if (f.getSmallSavingLimit() != null) { + smallSaving.addProperty("limit", f.getSmallSavingLimit()); + } + kyc.add("smallSaving", smallSaving); + root.add("depositLimitKyc", kyc); + } + + // ---- GL scalar account mapping (1:1) ---------------------------------------------------------- + + public static boolean populateGlAccountMapping(final JsonCommand command, final GlAccountMappingEditFields f) { + boolean any = false; + any |= setIfPresent(command, "savingsReferenceAccountId", f::setSavingsReferenceAccountId); + any |= setIfPresent(command, "savingsControlAccountId", f::setSavingsControlAccountId); + any |= setIfPresent(command, "incomeFromFeeAccountId", f::setIncomeFromFeeAccountId); + any |= setIfPresent(command, "incomeFromPenaltyAccountId", f::setIncomeFromPenaltyAccountId); + any |= setIfPresent(command, "interestOnSavingsAccountId", f::setInterestOnSavingsAccountId); + any |= setIfPresent(command, "transfersInSuspenseAccountId", f::setTransfersInSuspenseAccountId); + any |= setIfPresent(command, "overdraftPortfolioControlId", f::setOverdraftPortfolioControlId); + any |= setIfPresent(command, "incomeFromInterestId", f::setIncomeFromInterestId); + any |= setIfPresent(command, "writeOffAccountId", f::setWriteOffAccountId); + any |= setIfPresent(command, "escheatLiabilityId", f::setEscheatLiabilityId); + any |= setIfPresent(command, "penaltiesReceivableAccountId", f::setPenaltiesReceivableAccountId); + any |= setIfPresent(command, "interestReceivableAccountId", f::setInterestReceivableAccountId); + any |= setIfPresent(command, "feesReceivableAccountId", f::setFeesReceivableAccountId); + any |= setIfPresent(command, "interestPayableAccountId", f::setInterestPayableAccountId); + return any; + } + + public static void writeGlAccountMappingToJson(final JsonObject root, final GlAccountMappingEditFields f) { + putNumber(root, "savingsReferenceAccountId", f.getSavingsReferenceAccountId()); + putNumber(root, "savingsControlAccountId", f.getSavingsControlAccountId()); + putNumber(root, "incomeFromFeeAccountId", f.getIncomeFromFeeAccountId()); + putNumber(root, "incomeFromPenaltyAccountId", f.getIncomeFromPenaltyAccountId()); + putNumber(root, "interestOnSavingsAccountId", f.getInterestOnSavingsAccountId()); + putNumber(root, "transfersInSuspenseAccountId", f.getTransfersInSuspenseAccountId()); + putNumber(root, "overdraftPortfolioControlId", f.getOverdraftPortfolioControlId()); + putNumber(root, "incomeFromInterestId", f.getIncomeFromInterestId()); + putNumber(root, "writeOffAccountId", f.getWriteOffAccountId()); + putNumber(root, "escheatLiabilityId", f.getEscheatLiabilityId()); + putNumber(root, "penaltiesReceivableAccountId", f.getPenaltiesReceivableAccountId()); + putNumber(root, "interestReceivableAccountId", f.getInterestReceivableAccountId()); + putNumber(root, "feesReceivableAccountId", f.getFeesReceivableAccountId()); + putNumber(root, "interestPayableAccountId", f.getInterestPayableAccountId()); + } + + // ---- charges (1:many, satellite table) -------------------------------------------------------- + + /** Returns null if "charges" wasn't present at all, else the (possibly empty) list of charge ids. */ + public static List extractChargeIds(final JsonCommand command) { + if (!command.hasParameter("charges")) { + return null; + } + final com.google.gson.JsonElement raw = command.parsedJson().getAsJsonObject().get("charges"); + final List ids = new java.util.ArrayList<>(); + if (raw != null && raw.isJsonArray()) { + for (final com.google.gson.JsonElement el : raw.getAsJsonArray()) { + if (el.isJsonObject() && el.getAsJsonObject().has("id")) { + ids.add(el.getAsJsonObject().get("id").getAsLong()); + } + } + } + return ids; + } + + public static void writeChargesToJson(final JsonObject root, final List charges) { + final JsonArray array = new JsonArray(); + for (final ProductPendingEditCharge charge : charges) { + final JsonObject entry = new JsonObject(); + entry.addProperty("id", charge.getChargeId()); + array.add(entry); + } + root.add("charges", array); + } + + // ---- accountFacilityLimits (1:many, satellite table) ------------------------------------------- + + public static List extractFacilityLimits(final JsonCommand command, final ProductPendingEdit edit) { + if (!command.hasParameter("accountFacilityLimits")) { + return null; + } + final com.google.gson.JsonElement raw = command.parsedJson().getAsJsonObject().get("accountFacilityLimits"); + final List limits = new java.util.ArrayList<>(); + if (raw != null && raw.isJsonArray()) { + for (final com.google.gson.JsonElement el : raw.getAsJsonArray()) { + final JsonObject o = el.getAsJsonObject(); + limits.add(new ProductPendingEditFacilityLimit(edit, stringOrNull(o, "limitType"), stringOrNull(o, "generalLimit"), + stringOrNull(o, "minorAccountLimit"), stringOrNull(o, "smallSavingLimit"))); + } + } + return limits; + } + + public static void writeFacilityLimitsToJson(final JsonObject root, final List limits) { + final JsonArray array = new JsonArray(); + for (final ProductPendingEditFacilityLimit limit : limits) { + final JsonObject entry = new JsonObject(); + entry.addProperty("limitType", limit.getLimitType()); + entry.addProperty("generalLimit", limit.getGeneralLimit()); + entry.addProperty("minorAccountLimit", limit.getMinorAccountLimit()); + entry.addProperty("smallSavingLimit", limit.getSmallSavingLimit()); + array.add(entry); + } + root.add("accountFacilityLimits", array); + } + + // ---- GL array mappings (1:many, satellite table) ----------------------------------------------- + + public static List extractGlArrayMappings(final JsonCommand command, final ProductPendingEdit edit) { + final List mappings = new java.util.ArrayList<>(); + boolean any = false; + any |= extractGlArray(command, edit, "paymentChannelToFundSourceMappings", ProductPendingEditGlMapping.TYPE_PAYMENT_CHANNEL, + "paymentTypeId", mappings); + any |= extractGlArray(command, edit, "feeToIncomeAccountMappings", ProductPendingEditGlMapping.TYPE_FEE, "chargeId", mappings); + any |= extractGlArray(command, edit, "penaltyToIncomeAccountMappings", ProductPendingEditGlMapping.TYPE_PENALTY, "chargeId", + mappings); + return any ? mappings : null; + } + + private static boolean extractGlArray(final JsonCommand command, final ProductPendingEdit edit, final String paramName, + final String mappingType, final String idFieldName, final List out) { + if (!command.hasParameter(paramName)) { + return false; + } + final com.google.gson.JsonElement raw = command.parsedJson().getAsJsonObject().get(paramName); + if (raw != null && raw.isJsonArray()) { + for (final com.google.gson.JsonElement el : raw.getAsJsonArray()) { + final JsonObject o = el.getAsJsonObject(); + final Long idFieldValue = o.has(idFieldName) ? o.get(idFieldName).getAsLong() : null; + final Long glAccountId = o.has("glAccountId") ? o.get("glAccountId").getAsLong() : null; + final Long paymentTypeId = "paymentTypeId".equals(idFieldName) ? idFieldValue : null; + final Long chargeId = "chargeId".equals(idFieldName) ? idFieldValue : null; + out.add(new ProductPendingEditGlMapping(edit, mappingType, paymentTypeId, chargeId, glAccountId)); + } + } + return true; + } + + public static void writeGlArrayMappingsToJson(final JsonObject root, final List mappings) { + writeGlArrayGroup(root, mappings, ProductPendingEditGlMapping.TYPE_PAYMENT_CHANNEL, "paymentChannelToFundSourceMappings", + "paymentTypeId"); + writeGlArrayGroup(root, mappings, ProductPendingEditGlMapping.TYPE_FEE, "feeToIncomeAccountMappings", "chargeId"); + writeGlArrayGroup(root, mappings, ProductPendingEditGlMapping.TYPE_PENALTY, "penaltyToIncomeAccountMappings", "chargeId"); + } + + private static void writeGlArrayGroup(final JsonObject root, final List mappings, final String type, + final String paramName, final String idFieldName) { + final JsonArray array = new JsonArray(); + for (final ProductPendingEditGlMapping mapping : mappings) { + if (!type.equals(mapping.getMappingType())) { + continue; + } + final JsonObject entry = new JsonObject(); + final Long idFieldValue = "paymentTypeId".equals(idFieldName) ? mapping.getPaymentTypeId() : mapping.getChargeId(); + entry.addProperty(idFieldName, idFieldValue); + entry.addProperty("glAccountId", mapping.getGlAccountId()); + array.add(entry); + } + root.add(paramName, array); + } + + // ---- small helpers ----------------------------------------------------------------------------- + + private static boolean booleanOf(final JsonCommand command, final String containerName, final String fieldName) { + final com.google.gson.JsonElement raw = command.parsedJson().getAsJsonObject().get(containerName); + if (raw == null || !raw.isJsonObject()) { + return false; + } + final JsonObject container = raw.getAsJsonObject(); + return container.has(fieldName) && !container.get(fieldName).isJsonNull() && container.get(fieldName).getAsBoolean(); + } + + private static String stringOrNull(final JsonObject o, final String field) { + return (o.has(field) && !o.get(field).isJsonNull()) ? o.get(field).getAsString() : null; + } + + private interface LongSetter { + + void set(Long value); + } + + private static boolean setIfPresent(final JsonCommand command, final String paramName, final LongSetter setter) { + if (!command.hasParameter(paramName)) { + return false; + } + setter.set(command.longValueOfParameterNamed(paramName)); + return true; + } + + private static void putString(final JsonObject root, final Set submitted, final String name, final String value) { + if (submitted.contains(name)) { + root.addProperty(name, value); + } + } + + private static void putNumber(final JsonObject root, final Set submitted, final String name, final Number value) { + if (submitted.contains(name)) { + root.addProperty(name, value); + } + } + + private static void putBoolean(final JsonObject root, final Set submitted, final String name, final Boolean value) { + if (submitted.contains(name)) { + root.addProperty(name, value); + } + } + + private static void putDate(final JsonObject root, final Set submitted, final String name, final LocalDate value) { + if (submitted.contains(name)) { + root.addProperty(name, value == null ? null : value.toString()); + } + } + + private static void putNumber(final JsonObject root, final String name, final Number value) { + if (value != null) { + root.addProperty(name, value); + } + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMapping.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMapping.java new file mode 100644 index 000000000..0943f008d --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMapping.java @@ -0,0 +1,70 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; + +/** + * One row per entry of the 3 array-shaped GL mappings (paymentChannelToFundSourceMappings, + * feeToIncomeAccountMappings, penaltyToIncomeAccountMappings), distinguished by mappingType. + */ +@Entity +@Table(name = "m_product_temp_gl_mapping") +@Getter +@Setter +@NoArgsConstructor +public class ProductPendingEditGlMapping extends AbstractPersistableCustom { + + public static final String TYPE_PAYMENT_CHANNEL = "PAYMENT_CHANNEL"; + public static final String TYPE_FEE = "FEE"; + public static final String TYPE_PENALTY = "PENALTY"; + + @ManyToOne + @JoinColumn(name = "pending_edit_id", nullable = false) + private ProductPendingEdit pendingEdit; + + @Column(name = "mapping_type", nullable = false) + private String mappingType; + + @Column(name = "payment_type_id") + private Long paymentTypeId; + + @Column(name = "charge_id") + private Long chargeId; + + @Column(name = "gl_account_id", nullable = false) + private Long glAccountId; + + public ProductPendingEditGlMapping(final ProductPendingEdit pendingEdit, final String mappingType, final Long paymentTypeId, + final Long chargeId, final Long glAccountId) { + this.pendingEdit = pendingEdit; + this.mappingType = mappingType; + this.paymentTypeId = paymentTypeId; + this.chargeId = chargeId; + this.glAccountId = glAccountId; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMappingRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMappingRepository.java new file mode 100644 index 000000000..12c2c0f9c --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditGlMappingRepository.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditGlMappingRepository extends JpaRepository { + + List findByPendingEditId(Long pendingEditId); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPrice.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPrice.java new file mode 100644 index 000000000..6dc2955be --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPrice.java @@ -0,0 +1,66 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; + +/** One row per entry of Share Product's "marketPrice" array (create/update/delete-by-id semantics). */ +@Entity +@Table(name = "m_product_temp_share_market_price") +@Getter +@Setter +@NoArgsConstructor +public class ProductPendingEditMarketPrice extends AbstractPersistableCustom { + + @ManyToOne + @JoinColumn(name = "pending_edit_id", nullable = false) + private ProductPendingEdit pendingEdit; + + /** id of the existing m_share_product_market_price row this entry updates/deletes, null if new. */ + @Column(name = "source_id") + private Long sourceId; + + @Column(name = "delete_flag", nullable = false) + private boolean deleteFlag; + + @Column(name = "from_date") + private LocalDate fromDate; + + @Column(name = "share_value") + private BigDecimal shareValue; + + public ProductPendingEditMarketPrice(final ProductPendingEdit pendingEdit, final Long sourceId, final boolean deleteFlag, + final LocalDate fromDate, final BigDecimal shareValue) { + this.pendingEdit = pendingEdit; + this.sourceId = sourceId; + this.deleteFlag = deleteFlag; + this.fromDate = fromDate; + this.shareValue = shareValue; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPriceRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPriceRepository.java new file mode 100644 index 000000000..3bb8982c3 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditMarketPriceRepository.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditMarketPriceRepository extends JpaRepository { + + List findByPendingEditId(Long pendingEditId); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditRepository.java new file mode 100644 index 000000000..4c4646bc7 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditRepository.java @@ -0,0 +1,32 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import java.util.Optional; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditRepository extends JpaRepository { + + Optional findByProductTypeAndProductIdAndStatus(String productType, Long productId, String status); + + List findByProductTypeAndStatus(String productType, String status); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedField.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedField.java new file mode 100644 index 000000000..24a0f1469 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedField.java @@ -0,0 +1,56 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom; + +/** + * Records which top-level JSON parameter names were actually present in the maker's original + * request. Typed nullable columns can't by themselves distinguish "field omitted" from "field + * explicitly sent as null" from "field has a value" - and every existing command.hasParameter(...) + * branch in the write-services and assemblers depends on that distinction - so this table is the + * relational replacement for the information a raw JSON blob used to carry implicitly. + */ +@Entity +@Table(name = "m_product_temp_submitted_field") +@Getter +@Setter +@NoArgsConstructor +public class ProductPendingEditSubmittedField extends AbstractPersistableCustom { + + @ManyToOne + @JoinColumn(name = "pending_edit_id", nullable = false) + private ProductPendingEdit pendingEdit; + + @Column(name = "field_name", nullable = false) + private String fieldName; + + public ProductPendingEditSubmittedField(final ProductPendingEdit pendingEdit, final String fieldName) { + this.pendingEdit = pendingEdit; + this.fieldName = fieldName; + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedFieldRepository.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedFieldRepository.java new file mode 100644 index 000000000..a2cf887bd --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditSubmittedFieldRepository.java @@ -0,0 +1,34 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import java.util.List; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +@Repository +public interface ProductPendingEditSubmittedFieldRepository extends JpaRepository { + + List findByPendingEditId(Long pendingEditId); + + @Query("SELECT f.fieldName FROM ProductPendingEditSubmittedField f WHERE f.pendingEdit.id = :pendingEditId") + List findFieldNamesByPendingEditId(@Param("pendingEditId") Long pendingEditId); +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositEditFields.java new file mode 100644 index 000000000..489cc3a3e --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/RecurringDepositEditFields.java @@ -0,0 +1,39 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import lombok.Getter; +import lombok.Setter; + +@Embeddable +@Getter +@Setter +public class RecurringDepositEditFields { + + @Column(name = "is_mandatory_deposit") + private Boolean isMandatoryDeposit; + + @Column(name = "allow_withdrawal") + private Boolean allowWithdrawal; + + @Column(name = "adjust_advance_towards_future_payments") + private Boolean adjustAdvanceTowardsFuturePayments; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java new file mode 100644 index 000000000..086038946 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java @@ -0,0 +1,234 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import jakarta.persistence.Lob; +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Getter; +import lombok.Setter; + +/** + * Scalar edit fields shared by Savings, Current, Fixed Deposit and Recurring Deposit products + * (FD/RD extend the Savings field set). Column names are the snake_case of the JSON API parameter + * name each field stores, not the underlying product table's own column name. + */ +@Embeddable +@Getter +@Setter +public class SavingsCoreEditFields { + + @Column(name = "name") + private String name; + + @Column(name = "short_name") + private String shortName; + + @Column(name = "description") + private String description; + + @Column(name = "currency_code") + private String currencyCode; + + @Column(name = "digits_after_decimal") + private Integer digitsAfterDecimal; + + @Column(name = "in_multiples_of") + private Integer inMultiplesOf; + + @Column(name = "accounting_rule") + private Integer accountingRule; + + @Column(name = "nominal_annual_interest_rate") + private BigDecimal nominalAnnualInterestRate; + + @Column(name = "interest_compounding_period_type") + private Integer interestCompoundingPeriodType; + + @Column(name = "interest_posting_period_type") + private Integer interestPostingPeriodType; + + @Column(name = "interest_calculation_type") + private Integer interestCalculationType; + + @Column(name = "interest_calculation_days_in_year_type") + private Integer interestCalculationDaysInYearType; + + @Column(name = "min_required_opening_balance") + private BigDecimal minRequiredOpeningBalance; + + @Column(name = "lockin_period_frequency") + private Integer lockinPeriodFrequency; + + @Column(name = "lockin_period_frequency_type") + private Integer lockinPeriodFrequencyType; + + @Column(name = "withdrawal_fee_for_transfers") + private Boolean withdrawalFeeForTransfers; + + @Column(name = "allow_overdraft") + private Boolean allowOverdraft; + + @Column(name = "overdraft_limit") + private BigDecimal overdraftLimit; + + @Column(name = "nominal_annual_interest_rate_overdraft") + private BigDecimal nominalAnnualInterestRateOverdraft; + + @Column(name = "min_overdraft_for_interest_calculation") + private BigDecimal minOverdraftForInterestCalculation; + + @Column(name = "enforce_min_required_balance") + private Boolean enforceMinRequiredBalance; + + @Column(name = "min_required_balance") + private BigDecimal minRequiredBalance; + + @Column(name = "lien_allowed") + private Boolean lienAllowed; + + @Column(name = "max_allowed_lien_limit") + private BigDecimal maxAllowedLienLimit; + + @Column(name = "min_balance_for_interest_calculation") + private BigDecimal minBalanceForInterestCalculation; + + @Column(name = "with_hold_tax") + private Boolean withHoldTax; + + @Column(name = "tax_group_id") + private Long taxGroupId; + + @Lob + @Column(name = "other_gl_mappings") + private String otherGlMappings; + + @Column(name = "is_dormancy_tracking_active") + private Boolean isDormancyTrackingActive; + + @Column(name = "days_to_inactive") + private Integer daysToInactive; + + @Column(name = "days_to_dormancy") + private Integer daysToDormancy; + + @Column(name = "days_to_escheat") + private Integer daysToEscheat; + + @Column(name = "account_type") + private String accountType; + + @Column(name = "customer_segment") + private String customerSegment; + + @Column(name = "product_code") + private String productCode; + + @Column(name = "gl_account_id") + private Long glAccountId; + + @Column(name = "effective_date") + private LocalDate effectiveDate; + + @Column(name = "effective_to") + private LocalDate effectiveTo; + + @Column(name = "end_date") + private LocalDate endDate; + + @Column(name = "introducer_required") + private Boolean introducerRequired; + + @Column(name = "share_linking_enabled") + private Boolean shareLinkingEnabled; + + @Column(name = "nomination_facility") + private Boolean nominationFacility; + + @Column(name = "dormancy_alert") + private Boolean dormancyAlert; + + @Column(name = "interest_calculate_selector") + private Integer interestCalculateSelector; + + @Column(name = "average_period") + private String averagePeriod; + + @Column(name = "auto_post") + private Boolean autoPost; + + @Column(name = "frequency_fix_day") + private Integer frequencyFixDay; + + @Column(name = "last_interest_date") + private LocalDate lastInterestDate; + + @Column(name = "enable_lockin_period") + private Boolean enableLockinPeriod; + + @Column(name = "balance_frequency") + private String balanceFrequency; + + @Column(name = "account_closed_zero_balance_in_day_closing") + private Boolean accountClosedZeroBalanceInDayClosing; + + @Column(name = "balance_swap_option") + private Boolean balanceSwapOption; + + @Column(name = "msme") + private Boolean msme; + + @Column(name = "auto_debit_facility") + private Boolean autoDebitFacility; + + @Column(name = "loan_facility") + private Boolean loanFacility; + + @Column(name = "premature_withdrawal_option") + private Boolean prematureWithdrawalOption; + + @Column(name = "tenure_flexibility") + private Boolean tenureFlexibility; + + @Column(name = "lien_marked") + private Boolean lienMarked; + + @Column(name = "maturity_instructions") + private Boolean maturityInstructions; + + @Column(name = "credit_maturity_proceeds") + private Boolean creditMaturityProceeds; + + @Column(name = "penalty_grace_period_missed_installments") + private Boolean penaltyGracePeriodMissedInstallments; + + @Column(name = "panel_request_applicable") + private Boolean panelRequestApplicable; + + @Column(name = "no_penalty_nominee_heir_closure") + private Boolean noPenaltyNomineeHeirClosure; + + @Column(name = "deceased_settlement") + private Boolean deceasedSettlement; + + @Column(name = "allow_debit_txn_after_due_date") + private Boolean allowDebitTxnAfterDueDate; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java new file mode 100644 index 000000000..0fbb74896 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java @@ -0,0 +1,64 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.domain; + +import jakarta.persistence.Column; +import jakarta.persistence.Embeddable; +import java.math.BigDecimal; +import lombok.Getter; +import lombok.Setter; + +@Embeddable +@Getter +@Setter +public class ShareOnlyEditFields { + + @Column(name = "total_shares") + private Long totalShares; + + @Column(name = "total_shares_issued") + private Long totalSharesIssued; + + @Column(name = "unit_price") + private BigDecimal unitPrice; + + @Column(name = "minimum_shares") + private Long minimumShares; + + @Column(name = "nominal_shares") + private Long nominalShares; + + @Column(name = "maximum_shares") + private Long maximumShares; + + @Column(name = "allow_dividend_calc_for_inactive_clients") + private Boolean allowDividendCalcForInactiveClients; + + @Column(name = "minimum_active_period_for_dividends") + private Integer minimumActivePeriodForDividends; + + @Column(name = "minimum_active_period_frequency_type") + private Integer minimumActivePeriodFrequencyType; + + @Column(name = "share_lockin_period") + private Integer shareLockinPeriod; + + @Column(name = "share_lockin_period_frequency_type") + private Integer shareLockinPeriodFrequencyType; +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductEditPendingApprovalException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductEditPendingApprovalException.java new file mode 100644 index 000000000..ccb526231 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductEditPendingApprovalException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class SavingsProductEditPendingApprovalException extends AbstractPlatformDomainRuleException { + + public SavingsProductEditPendingApprovalException(final Long productId) { + super("error.msg.savingsproduct.edit.pending.approval", + "Savings product with identifier " + productId + " already has an edit pending approval", productId); + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNoPendingEditException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNoPendingEditException.java new file mode 100644 index 000000000..11c5bb2e0 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductNoPendingEditException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class SavingsProductNoPendingEditException extends AbstractPlatformDomainRuleException { + + public SavingsProductNoPendingEditException(final Long productId) { + super("error.msg.savingsproduct.no.pending.edit", + "Savings product with identifier " + productId + " has no edit pending approval", productId); + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductSelfApprovalNotAllowedException.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductSelfApprovalNotAllowedException.java new file mode 100644 index 000000000..47dcdf844 --- /dev/null +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/exception/SavingsProductSelfApprovalNotAllowedException.java @@ -0,0 +1,29 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.fineract.portfolio.savings.exception; + +import org.apache.fineract.infrastructure.core.exception.AbstractPlatformDomainRuleException; + +public class SavingsProductSelfApprovalNotAllowedException extends AbstractPlatformDomainRuleException { + + public SavingsProductSelfApprovalNotAllowedException(final Long productId) { + super("error.msg.savingsproduct.self.approval.not.allowed", + "The maker of the pending edit for savings product " + productId + " cannot also approve or reject it", productId); + } +} diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java index 76a8c5937..ba906bc70 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformService.java @@ -21,6 +21,7 @@ package org.apache.fineract.portfolio.savings.service; import java.util.Collection; import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.data.DepositProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; public interface DepositProductReadPlatformService { @@ -32,4 +33,8 @@ public interface DepositProductReadPlatformService { DepositProductData retrieveOneWithChartSlabs(DepositAccountType depositAccountType, Long productId); + Collection retrieveAllPendingEdits(DepositAccountType depositAccountType); + + SavingsProductTempData retrievePendingEdit(DepositAccountType depositAccountType, Long productId); + } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java index 92ca7cd51..49a54be66 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformService.java @@ -28,4 +28,10 @@ public interface FixedDepositProductWritePlatformService { CommandProcessingResult update(Long productId, JsonCommand command); CommandProcessingResult delete(Long productId); + + CommandProcessingResult submitEditForApproval(Long productId, JsonCommand command); + + CommandProcessingResult approveEdit(Long productId); + + CommandProcessingResult rejectEdit(Long productId, String rejectReason); } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java index 81a5a2914..09e3d3375 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformService.java @@ -28,4 +28,10 @@ public interface RecurringDepositProductWritePlatformService { CommandProcessingResult update(Long productId, JsonCommand command); CommandProcessingResult delete(Long productId); + + CommandProcessingResult submitEditForApproval(Long productId, JsonCommand command); + + CommandProcessingResult approveEdit(Long productId); + + CommandProcessingResult rejectEdit(Long productId, String rejectReason); } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java index 3f5e2e402..e5ca40ba2 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformService.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.savings.service; import java.util.Collection; import org.apache.fineract.portfolio.savings.data.SavingsProductData; +import org.apache.fineract.portfolio.savings.data.SavingsProductTempData; public interface SavingsProductReadPlatformService { @@ -33,4 +34,8 @@ public interface SavingsProductReadPlatformService { SavingsProductData retrieveOne(Long productId); + Collection retrieveAllPendingEdits(); + + SavingsProductTempData retrievePendingEdit(Long productId); + } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java index 0617cc3be..37c640fde 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformService.java @@ -28,4 +28,21 @@ public interface SavingsProductWritePlatformService { CommandProcessingResult update(Long productId, JsonCommand command); CommandProcessingResult delete(Long productId); + + /** + * Submits an edit for approval instead of applying it directly. Fails if a pending edit already exists for this + * product (that pending row is itself the lock). + */ + CommandProcessingResult submitEditForApproval(Long productId, JsonCommand command); + + /** + * Replays the stored pending edit through the normal update path and marks it approved. Fails if the approving + * user is the same user who submitted the edit. + */ + CommandProcessingResult approveEdit(Long productId); + + /** + * Discards the pending edit. Fails if the rejecting user is the same user who submitted the edit. + */ + CommandProcessingResult rejectEdit(Long productId, String rejectReason); } diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml index 2a50be19e..de44a7419 100644 --- a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml @@ -39,4 +39,14 @@ + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2017_add_saving_product_temp_table.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2017_add_saving_product_temp_table.xml new file mode 100644 index 000000000..a1b9befbc --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2017_add_saving_product_temp_table.xml @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_SAVINGSPRODUCT' + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2018_fix_saving_product_temp_lock_constraint.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2018_fix_saving_product_temp_lock_constraint.xml new file mode 100644 index 000000000..4efb0d2f7 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2018_fix_saving_product_temp_lock_constraint.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + UPDATE m_savings_product_temp SET pending_lock_key = savings_product_id WHERE status = 'PENDING' + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2019_add_command_source_link_to_saving_product_temp.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2019_add_command_source_link_to_saving_product_temp.xml new file mode 100644 index 000000000..44a9e7d89 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2019_add_command_source_link_to_saving_product_temp.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2020_generalize_product_temp_table.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2020_generalize_product_temp_table.xml new file mode 100644 index 000000000..0892f7f79 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2020_generalize_product_temp_table.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + UPDATE m_savings_product_temp SET pending_lock_key_new = 'SAVINGS:' || product_id WHERE status = 'PENDING' + UPDATE m_savings_product_temp SET pending_lock_key_new = CONCAT('SAVINGS:', product_id) WHERE status = 'PENDING' + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_CURRENTPRODUCT' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2021_add_fd_rd_approval_permissions.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2021_add_fd_rd_approval_permissions.xml new file mode 100644 index 000000000..8ae87c1d2 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2021_add_fd_rd_approval_permissions.xml @@ -0,0 +1,61 @@ + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_FIXEDDEPOSITPRODUCT' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2022_add_product_checker_permissions.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2022_add_product_checker_permissions.xml new file mode 100644 index 000000000..dbeb8f43b --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2022_add_product_checker_permissions.xml @@ -0,0 +1,103 @@ + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'UPDATE_SAVINGSPRODUCT_CHECKER' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'UPDATE_CURRENTPRODUCT_CHECKER' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'UPDATE_SHAREPRODUCT_CHECKER' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'UPDATE_FIXEDDEPOSITPRODUCT_CHECKER' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'UPDATE_RECURRINGDEPOSITPRODUCT_CHECKER' + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2023_fix_product_approval_permissions.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2023_fix_product_approval_permissions.xml new file mode 100644 index 000000000..44b9945a9 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2023_fix_product_approval_permissions.xml @@ -0,0 +1,165 @@ + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_SAVINGSPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'REJECT_SAVINGSPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_CURRENTPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'REJECT_CURRENTPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_SHAREPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'REJECT_SHAREPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_FIXEDDEPOSITPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'REJECT_FIXEDDEPOSITPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'APPROVE_RECURRINGDEPOSITPRODUCT' + + + + + + + + + + + + + SELECT COUNT(*) FROM m_permission WHERE code = 'REJECT_RECURRINGDEPOSITPRODUCT' + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2025_recreate_savings_product_temp_table.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2025_recreate_savings_product_temp_table.xml new file mode 100644 index 000000000..69ff8cab2 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2025_recreate_savings_product_temp_table.xml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2026_add_pending_edit_typed_columns.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2026_add_pending_edit_typed_columns.xml new file mode 100644 index 000000000..b54bb8458 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2026_add_pending_edit_typed_columns.xml @@ -0,0 +1,261 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2027_add_pending_edit_satellite_tables.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2027_add_pending_edit_satellite_tables.xml new file mode 100644 index 000000000..003966ce9 --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2027_add_pending_edit_satellite_tables.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9980310c9eb0e54ea281a3ccaca9e6b543e87f71 Mon Sep 17 00:00:00 2001 From: keshav898966 Date: Mon, 6 Jul 2026 17:49:39 +0530 Subject: [PATCH 8/8] table changes on Maker-Checker workflow for Products, with approval-based updates and product locking to prevent concurrent edits --- .../service/CommandWrapperBuilder.java | 2 +- .../savings/DepositsApiConstants.java | 2 +- ...CurrentProductReadPlatformServiceImpl.java | 82 +++-- ...WritePlatformServiceJpaRepositoryImpl.java | 121 ++++++- .../starter/CurrentProductConfiguration.java | 25 +- ...DepositProductReadPlatformServiceImpl.java | 80 +++-- ...WritePlatformServiceJpaRepositoryImpl.java | 96 +++++- ...WritePlatformServiceJpaRepositoryImpl.java | 103 +++++- ...SavingsProductReadPlatformServiceImpl.java | 81 +++-- ...WritePlatformServiceJpaRepositoryImpl.java | 95 +++--- .../savings/starter/SavingsConfiguration.java | 41 ++- .../ShareProductReadPlatformServiceImpl.java | 76 +++-- ...WritePlatformServiceJpaRepositoryImpl.java | 79 ++++- .../starter/ShareProductsConfiguration.java | 17 +- .../savings/domain/ProductPendingEdit.java | 21 +- .../domain/ProductPendingEditFieldMapper.java | 304 +++++++++++++++++- .../savings/domain/SavingsCoreEditFields.java | 31 +- .../savings/domain/ShareOnlyEditFields.java | 26 +- .../savings/parts/module-changelog-master.xml | 2 + .../2028_update_saving_product_temp_table.xml | 93 ++++++ .../2029_remove_proposed_payload_json.xml | 30 ++ 21 files changed, 1175 insertions(+), 232 deletions(-) create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2028_update_saving_product_temp_table.xml create mode 100644 fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2029_remove_proposed_payload_json.xml diff --git a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java index 2f9cf0685..b95df2d30 100644 --- a/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java +++ b/fineract-core/src/main/java/org/apache/fineract/commands/service/CommandWrapperBuilder.java @@ -3573,7 +3573,7 @@ public class CommandWrapperBuilder { this.actionName = "ACTIVATE"; this.entityName = "CURRENTACCOUNT"; this.savingsId = accountId; - this.entityId = null; + this.entityId = accountId; this.href = "/currentaccounts/" + accountId + "?command=activate"; return this; } diff --git a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java index 88ae1c759..078d9aaf4 100644 --- a/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java +++ b/fineract-core/src/main/java/org/apache/fineract/portfolio/savings/DepositsApiConstants.java @@ -224,7 +224,7 @@ public final class DepositsApiConstants { * Deposit Product Parameters */ private static final Set DEPOSIT_PRODUCT_REQUEST_DATA_PARAMETERS = new HashSet<>(Arrays.asList(localeParamName, - monthDayFormatParamName, nameParamName, shortNameParamName, descriptionParamName, currencyCodeParamName, + dateFormatParamName, monthDayFormatParamName, nameParamName, shortNameParamName, descriptionParamName, currencyCodeParamName, digitsAfterDecimalParamName, inMultiplesOfParamName, nominalAnnualInterestRateParamName, interestCompoundingPeriodTypeParamName, interestPostingPeriodTypeParamName, interestCalculationTypeParamName, interestCalculationDaysInYearTypeParamName, lockinPeriodFrequencyParamName, lockinPeriodFrequencyTypeParamName, accountingRuleParamName, chargesParamName, diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java index 90b2d3299..08aca6829 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductReadPlatformServiceImpl.java @@ -51,6 +51,14 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimitRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import java.util.Set; @RequiredArgsConstructor public class CurrentProductReadPlatformServiceImpl implements CurrentProductReadPlatformService { @@ -60,6 +68,11 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead private final CurrentProductFacilityConfigRepository facilityConfigRepository; private final CurrentProductFacilityLimitRepository facilityLimitRepository; private final CurrentProductDepositLimitKycRepository depositLimitKycRepository; + private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; + private final ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository; private final CurrentProductMapper currentProductRowMapper = new CurrentProductMapper(); private final CurrentProductLookupMapper currentProductLookupsRowMapper = new CurrentProductLookupMapper(); @@ -150,41 +163,50 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead } private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " - + "cp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " - + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " - + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " - + "spt.proposed_payload_json as proposedPayloadJson " - + "from m_savings_product_temp spt " + + "cp.name as savingsProductName, spt.createdby_id as makerId, maker.username as makerUsername, " + + "spt.lastmodifiedby_id as checkerId, checker.username as checkerUsername, spt.created_date as createdOn, " + + "spt.lastmodified_date as checkedOn, spt.status as status, spt.reject_reason as rejectReason " + + "from m_saving_product_temp spt " + "join m_current_product cp on cp.id = spt.product_id " - + "join m_appuser maker on maker.id = spt.maker_id " - + "left join m_appuser checker on checker.id = spt.checker_id " + + "join m_appuser maker on maker.id = spt.createdby_id " + + "left join m_appuser checker on checker.id = spt.lastmodifiedby_id " + "where spt.product_type = 'CURRENT' "; - private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { - final SavingsProductTempData data = new SavingsProductTempData(); - data.setId(rs.getLong("tempId")); - data.setSavingsProductId(rs.getLong("savingsProductId")); - data.setSavingsProductName(rs.getString("savingsProductName")); - data.setMakerId(rs.getLong("makerId")); - data.setMakerUsername(rs.getString("makerUsername")); - data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); - data.setCheckerUsername(rs.getString("checkerUsername")); - data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); - data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); - data.setStatus(rs.getString("status")); - data.setRejectReason(rs.getString("rejectReason")); - final String proposedPayloadJson = rs.getString("proposedPayloadJson"); - if (proposedPayloadJson != null) { - data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); - } - return data; - }; + private RowMapper getPendingEditRowMapper() { + return (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + + final Long tempId = data.getId(); + final java.util.Optional opt = this.productPendingEditRepository.findById(tempId); + if (opt.isPresent()) { + final ProductPendingEdit pendingEdit = opt.get(); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final Map proposedChanges = ProductPendingEditFieldMapper.reconstructProposedChangesMap( + pendingEdit, submittedFields, this.pendingEditChargeRepository, this.pendingEditGlMappingRepository, + this.pendingEditFacilityLimitRepository, GSON); + data.setProposedChanges(proposedChanges); + } + return data; + }; + } @Override public Collection retrieveAllPendingEdits() { this.context.authenticatedUser(); - final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; - return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_date desc"; + return this.jdbcTemplate.query(sql, getPendingEditRowMapper()); } @Override @@ -192,7 +214,7 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead this.context.authenticatedUser(); final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; try { - return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + return this.jdbcTemplate.queryForObject(sql, getPendingEditRowMapper(), new Object[] { productId }); // NOSONAR } catch (final EmptyResultDataAccessException e) { throw new CurrentProductNoPendingEditException(productId); } @@ -249,7 +271,7 @@ public class CurrentProductReadPlatformServiceImpl implements CurrentProductRead sqlBuilder.append("cp.balance_swap_option as balanceSwapOption, cp.msme as msme, cp.auto_debit_facility as autoDebitFacility, "); sqlBuilder.append("cp.avg_balance_calc_period as avgBalanceCalcPeriod, cp.valid_for_period as validForPeriod, "); sqlBuilder.append("cp.od_account_closed_zero_balance_in_day_closing as odAccountClosedZeroBalanceInDayClosing, "); - sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = cp.id " + sqlBuilder.append("exists(select 1 from m_saving_product_temp spt where spt.product_id = cp.id " + "and spt.product_type = 'CURRENT' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_current_product cp "); diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java index dbdc417cf..7ef44cd2c 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/service/CurrentProductWritePlatformServiceJpaRepositoryImpl.java @@ -63,6 +63,16 @@ import org.apache.fineract.portfolio.savings.DepositAccountType; import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedField; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditCharge; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimitRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMapping; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import com.google.gson.JsonObject; import org.apache.fineract.portfolio.tax.domain.TaxGroup; import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataAccessException; @@ -72,6 +82,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements CurrentProductWritePlatformService { + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); private final PlatformSecurityContext context; private final CurrentProductRepository currentProductRepository; private final CurrentProductDataValidator fromApiJsonDataValidator; @@ -81,6 +92,10 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr private final CurrentProductFacilityLimitRepository facilityLimitRepository; private final CurrentProductDepositLimitKycRepository depositLimitKycRepository; private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private final FromJsonHelper fromApiJsonHelper; private final CommandSourceRepository commandSourceRepository; @@ -281,7 +296,28 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr this.fromApiJsonDataValidator.validateForUpdate(command.json(), product); - final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_CURRENT, productId, maker, command.json()); + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_CURRENT, productId, maker); + + final java.util.Set submitted = ProductPendingEditFieldMapper.populateCoreFields(command, pendingEdit.getCoreFields()); + final java.util.Set currentOnlySubmitted = ProductPendingEditFieldMapper.populateCurrentOnlyFields(command, pendingEdit.getCurrentOnlyFields()); + final boolean facilityConfigSubmitted = ProductPendingEditFieldMapper.populateFacilityConfig(command, pendingEdit.getFacilityConfigFields()); + final boolean depositLimitKycSubmitted = ProductPendingEditFieldMapper.populateDepositLimitKyc(command, pendingEdit.getDepositLimitKycFields()); + final boolean glMappingSubmitted = ProductPendingEditFieldMapper.populateGlAccountMapping(command, pendingEdit.getGlAccountMappingFields()); + + if (!currentOnlySubmitted.isEmpty()) { + submitted.add("avgBalanceCalcPeriod"); + submitted.add("validForPeriod"); + submitted.add("odAccountClosedZeroBalanceInDayClosing"); + } + if (facilityConfigSubmitted) { + submitted.add("accountFacilityConfig"); + } + if (depositLimitKycSubmitted) { + submitted.add("depositLimitKyc"); + } + if (glMappingSubmitted) { + submitted.add("glAccountMapping"); + } final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // @@ -300,6 +336,30 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr this.productPendingEditRepository.saveAndFlush(pendingEdit); + for (final String fieldName : submitted) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, fieldName)); + } + + final List chargeIds = ProductPendingEditFieldMapper.extractChargeIds(command); + if (chargeIds != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "charges")); + for (final Long chargeId : chargeIds) { + this.pendingEditChargeRepository.save(new ProductPendingEditCharge(pendingEdit, chargeId)); + } + } + + final List facilityLimits = ProductPendingEditFieldMapper.extractFacilityLimits(command, pendingEdit); + if (facilityLimits != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "accountFacilityLimits")); + this.pendingEditFacilityLimitRepository.saveAll(facilityLimits); + } + + final List glMappings = ProductPendingEditFieldMapper.extractGlArrayMappings(command, pendingEdit); + if (glMappings != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "glArrayMappings")); + this.pendingEditGlMappingRepository.saveAll(glMappings); + } + return new CommandProcessingResultBuilder() // .withEntityId(product.getId()) // .build(); @@ -318,8 +378,33 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr throw new CurrentProductSelfApprovalNotAllowedException(productId); } - final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, - this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeCurrentOnlyFieldsToJson(root, pendingEdit.getCurrentOnlyFields(), submittedFields); + ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), + submittedFields.contains("accountFacilityConfig")); + ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), + submittedFields.contains("depositLimitKyc")); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("accountFacilityLimits")) { + ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, + this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); final CommandProcessingResult result = update(productId, replayedCommand); pendingEdit.markApproved(checker); @@ -340,12 +425,40 @@ public class CurrentProductWritePlatformServiceJpaRepositoryImpl implements Curr return existing.get(); } } + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeCurrentOnlyFieldsToJson(root, pendingEdit.getCurrentOnlyFields(), submittedFields); + ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), + submittedFields.contains("accountFacilityConfig")); + ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), + submittedFields.contains("depositLimitKyc")); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("accountFacilityLimits")) { + ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, + this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final String commandJson = GSON.toJson(root); + final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // .entityName("CURRENTPRODUCT") // .resourceGetUrl("/currentproducts/" + productId) // .resourceId(productId) // - .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .commandAsJson(commandJson) // .maker(pendingEdit.getMaker()) // .madeOnDate(DateUtils.getAuditOffsetDateTime()) // .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // diff --git a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java index 503d63186..8b7af3502 100644 --- a/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java +++ b/fineract-current-product/src/main/java/org/apache/fineract/portfolio/currentproduct/starter/CurrentProductConfiguration.java @@ -23,6 +23,10 @@ import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.infrastructure.core.serialization.FromJsonHelper; import org.apache.fineract.infrastructure.security.service.PlatformSecurityContext; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFacilityLimitRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; import org.apache.fineract.portfolio.currentproduct.data.CurrentProductDataValidator; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductAssembler; import org.apache.fineract.portfolio.currentproduct.domain.CurrentProductDepositLimitKycRepository; @@ -46,9 +50,17 @@ public class CurrentProductConfiguration { public CurrentProductReadPlatformService currentProductReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, CurrentProductFacilityConfigRepository currentFacilityConfigRepository, CurrentProductFacilityLimitRepository currentFacilityLimitRepository, - CurrentProductDepositLimitKycRepository currentDepositLimitKycRepository) { + CurrentProductDepositLimitKycRepository currentDepositLimitKycRepository, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, + ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository) { return new CurrentProductReadPlatformServiceImpl(context, jdbcTemplate, currentFacilityConfigRepository, - currentFacilityLimitRepository, currentDepositLimitKycRepository); + currentFacilityLimitRepository, currentDepositLimitKycRepository, + productPendingEditRepository, pendingEditSubmittedFieldRepository, + pendingEditChargeRepository, pendingEditGlMappingRepository, + pendingEditFacilityLimitRepository); } @Bean @@ -61,11 +73,16 @@ public class CurrentProductConfiguration { CurrentProductFacilityLimitRepository currentFacilityLimitRepository, CurrentProductDepositLimitKycRepository currentDepositLimitKycRepository, ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, FromJsonHelper fromApiJsonHelper, CommandSourceRepository commandSourceRepository) { return new CurrentProductWritePlatformServiceJpaRepositoryImpl(context, currentProductRepository, currentProductDataValidator, currentProductAssembler, accountMappingWritePlatformService, currentFacilityConfigRepository, - currentFacilityLimitRepository, currentDepositLimitKycRepository, productPendingEditRepository, fromApiJsonHelper, - commandSourceRepository); + currentFacilityLimitRepository, currentDepositLimitKycRepository, productPendingEditRepository, + pendingEditSubmittedFieldRepository, pendingEditChargeRepository, pendingEditFacilityLimitRepository, + pendingEditGlMappingRepository, fromApiJsonHelper, commandSourceRepository); } } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java index 2eb1e82c8..2be58645f 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/DepositProductReadPlatformServiceImpl.java @@ -44,6 +44,13 @@ import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import java.util.Set; @RequiredArgsConstructor public class DepositProductReadPlatformServiceImpl implements DepositProductReadPlatformService { @@ -54,6 +61,10 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead private final PlatformSecurityContext context; private final JdbcTemplate jdbcTemplate; private final InterestRateChartReadPlatformService chartReadPlatformService; + private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; @Override public Collection retrieveAll(final DepositAccountType depositAccountType) { @@ -135,41 +146,50 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead return depositAccountType.isFixedDeposit() ? "FD" : "RD"; } - private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { - final SavingsProductTempData data = new SavingsProductTempData(); - data.setId(rs.getLong("tempId")); - data.setSavingsProductId(rs.getLong("savingsProductId")); - data.setSavingsProductName(rs.getString("savingsProductName")); - data.setMakerId(rs.getLong("makerId")); - data.setMakerUsername(rs.getString("makerUsername")); - data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); - data.setCheckerUsername(rs.getString("checkerUsername")); - data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); - data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); - data.setStatus(rs.getString("status")); - data.setRejectReason(rs.getString("rejectReason")); - final String proposedPayloadJson = rs.getString("proposedPayloadJson"); - if (proposedPayloadJson != null) { - data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); - } - return data; - }; + private RowMapper getPendingEditRowMapper() { + return (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + + final Long tempId = data.getId(); + final java.util.Optional opt = this.productPendingEditRepository.findById(tempId); + if (opt.isPresent()) { + final ProductPendingEdit pendingEdit = opt.get(); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final Map proposedChanges = ProductPendingEditFieldMapper.reconstructProposedChangesMap( + pendingEdit, submittedFields, this.pendingEditChargeRepository, this.pendingEditGlMappingRepository, null, GSON); + data.setProposedChanges(proposedChanges); + } + return data; + }; + } private static String pendingEditSchema(final String productType) { - return "spt.id as tempId, spt.product_id as savingsProductId, " + "sp.name as savingsProductName, spt.maker_id as makerId, " - + "maker.username as makerUsername, spt.checker_id as checkerId, checker.username as checkerUsername, " - + "spt.created_on as createdOn, spt.checked_on as checkedOn, spt.status as status, " - + "spt.reject_reason as rejectReason, spt.proposed_payload_json as proposedPayloadJson " - + "from m_savings_product_temp spt " + "join m_savings_product sp on sp.id = spt.product_id " - + "join m_appuser maker on maker.id = spt.maker_id " + "left join m_appuser checker on checker.id = spt.checker_id " + return "spt.id as tempId, spt.product_id as savingsProductId, " + "sp.name as savingsProductName, spt.createdby_id as makerId, " + + "maker.username as makerUsername, spt.lastmodifiedby_id as checkerId, checker.username as checkerUsername, " + + "spt.created_date as createdOn, spt.lastmodified_date as checkedOn, spt.status as status, " + + "spt.reject_reason as rejectReason " + + "from m_saving_product_temp spt " + "join m_savings_product sp on sp.id = spt.product_id " + + "join m_appuser maker on maker.id = spt.createdby_id " + "left join m_appuser checker on checker.id = spt.lastmodifiedby_id " + "where spt.product_type = '" + productType + "' "; } @Override public Collection retrieveAllPendingEdits(final DepositAccountType depositAccountType) { final String sql = "select " + pendingEditSchema(productPendingType(depositAccountType)) - + "and spt.status = 'PENDING' order by spt.created_on desc"; - return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + + "and spt.status = 'PENDING' order by spt.created_date desc"; + return this.jdbcTemplate.query(sql, getPendingEditRowMapper()); } @Override @@ -177,7 +197,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead final String sql = "select " + pendingEditSchema(productPendingType(depositAccountType)) + "and spt.status = 'PENDING' and spt.product_id = ?"; try { - return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + return this.jdbcTemplate.queryForObject(sql, getPendingEditRowMapper(), new Object[] { productId }); // NOSONAR } catch (final EmptyResultDataAccessException e) { throw new SavingsProductNoPendingEditException(productId); } @@ -315,7 +335,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead sqlBuilder.append("sp.deceased_settlement as deceasedSettlement, "); sqlBuilder.append("sp.allow_debit_txn_after_due_date as allowDebitTxnAfterDueDate, "); sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers, "); - sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + sqlBuilder.append("exists(select 1 from m_saving_product_temp spt where spt.product_id = sp.id " + "and spt.product_type = 'FD' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); sqlBuilder.append("left join m_deposit_product_term_and_preclosure dptp on sp.id=dptp.savings_product_id "); @@ -455,7 +475,7 @@ public class DepositProductReadPlatformServiceImpl implements DepositProductRead sqlBuilder.append("sp.deceased_settlement as deceasedSettlement, "); sqlBuilder.append("sp.allow_debit_txn_after_due_date as allowDebitTxnAfterDueDate, "); sqlBuilder.append("sp.withdrawal_fee_for_transfer as withdrawalFeeForTransfers, "); - sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + sqlBuilder.append("exists(select 1 from m_saving_product_temp spt where spt.product_id = sp.id " + "and spt.product_type = 'RD' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); sqlBuilder.append("left join m_deposit_product_term_and_preclosure dptp on sp.id=dptp.savings_product_id "); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java index 23166a11d..301e3bbcf 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/FixedDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -55,6 +55,14 @@ import org.apache.fineract.portfolio.savings.domain.FixedDepositProduct; import org.apache.fineract.portfolio.savings.domain.FixedDepositProductRepository; import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedField; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditCharge; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMapping; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import com.google.gson.JsonObject; import org.apache.fineract.portfolio.savings.exception.FixedDepositProductNotFoundException; import org.apache.fineract.portfolio.savings.exception.SavingsProductEditPendingApprovalException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; @@ -68,6 +76,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements FixedDepositProductWritePlatformService { + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); private final PlatformSecurityContext context; private final FixedDepositProductRepository fixedDepositProductRepository; private final DepositProductDataValidator fromApiJsonDataValidator; @@ -75,6 +84,9 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private final FromJsonHelper fromApiJsonHelper; private final CommandSourceRepository commandSourceRepository; @@ -108,10 +120,16 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements @Transactional @Override public CommandProcessingResult update(final Long productId, final JsonCommand command) { + return updateInternal(productId, command, true); + } + + private CommandProcessingResult updateInternal(final Long productId, final JsonCommand command, final boolean validate) { try { this.context.authenticatedUser(); - this.fromApiJsonDataValidator.validateForFixedDepositUpdate(command.json()); + if (validate) { + this.fromApiJsonDataValidator.validateForFixedDepositUpdate(command.json()); + } final FixedDepositProduct product = this.fixedDepositProductRepository.findById(productId) .orElseThrow(() -> new FixedDepositProductNotFoundException(productId)); @@ -180,7 +198,18 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements this.fromApiJsonDataValidator.validateForFixedDepositUpdate(command.json()); - final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_FD, productId, maker, command.json()); + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_FD, productId, maker); + + final java.util.Set submitted = ProductPendingEditFieldMapper.populateCoreFields(command, pendingEdit.getCoreFields()); + final java.util.Set fdSubmitted = ProductPendingEditFieldMapper.populateFixedDepositFields(command, pendingEdit.getFixedDepositFields()); + final boolean glMappingSubmitted = ProductPendingEditFieldMapper.populateGlAccountMapping(command, pendingEdit.getGlAccountMappingFields()); + + if (!fdSubmitted.isEmpty()) { + submitted.addAll(fdSubmitted); + } + if (glMappingSubmitted) { + submitted.add("glAccountMapping"); + } final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // @@ -199,6 +228,24 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements this.productPendingEditRepository.saveAndFlush(pendingEdit); + for (final String fieldName : submitted) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, fieldName)); + } + + final List chargeIds = ProductPendingEditFieldMapper.extractChargeIds(command); + if (chargeIds != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "charges")); + for (final Long chargeId : chargeIds) { + this.pendingEditChargeRepository.save(new ProductPendingEditCharge(pendingEdit, chargeId)); + } + } + + final List glMappings = ProductPendingEditFieldMapper.extractGlArrayMappings(command, pendingEdit); + if (glMappings != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "glArrayMappings")); + this.pendingEditGlMappingRepository.saveAll(glMappings); + } + return new CommandProcessingResultBuilder() // .withEntityId(product.getId()) // .build(); @@ -217,9 +264,26 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements throw new SavingsProductSelfApprovalNotAllowedException(productId); } - final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, - this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); - final CommandProcessingResult result = update(productId, replayedCommand); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFixedDepositFieldsToJson(root, pendingEdit.getFixedDepositFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); + final CommandProcessingResult result = updateInternal(productId, replayedCommand, false); pendingEdit.markApproved(checker); this.productPendingEditRepository.saveAndFlush(pendingEdit); @@ -239,12 +303,32 @@ public class FixedDepositProductWritePlatformServiceJpaRepositoryImpl implements return existing.get(); } } + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFixedDepositFieldsToJson(root, pendingEdit.getFixedDepositFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final String commandJson = GSON.toJson(root); + final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // .entityName("FIXEDDEPOSITPRODUCT") // .resourceGetUrl("/fixeddepositproducts/" + productId) // .resourceId(productId) // - .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .commandAsJson(commandJson) // .maker(pendingEdit.getMaker()) // .madeOnDate(DateUtils.getAuditOffsetDateTime()) // .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java index 363d6e4ed..3abffe3ad 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/RecurringDepositProductWritePlatformServiceJpaRepositoryImpl.java @@ -52,10 +52,18 @@ import org.apache.fineract.portfolio.savings.SavingsApiConstants; import org.apache.fineract.portfolio.savings.data.DepositProductDataValidator; import org.apache.fineract.portfolio.savings.domain.DepositProductAssembler; import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditCharge; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMapping; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedField; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; import org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct; import org.apache.fineract.portfolio.savings.domain.RecurringDepositProductRepository; import org.apache.fineract.portfolio.savings.exception.RecurringDepositProductNotFoundException; +import com.google.gson.JsonObject; import org.apache.fineract.portfolio.savings.exception.SavingsProductEditPendingApprovalException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; import org.apache.fineract.portfolio.savings.exception.SavingsProductSelfApprovalNotAllowedException; @@ -68,6 +76,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implements RecurringDepositProductWritePlatformService { + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); private final PlatformSecurityContext context; private final RecurringDepositProductRepository recurringDepositProductRepository; private final DepositProductDataValidator fromApiJsonDataValidator; @@ -75,6 +84,9 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem private final ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService; private final InterestRateChartAssembler chartAssembler; private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private final FromJsonHelper fromApiJsonHelper; private final CommandSourceRepository commandSourceRepository; @@ -108,10 +120,16 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem @Transactional @Override public CommandProcessingResult update(final Long productId, final JsonCommand command) { + return updateInternal(productId, command, true); + } + + private CommandProcessingResult updateInternal(final Long productId, final JsonCommand command, final boolean validate) { try { this.context.authenticatedUser(); - this.fromApiJsonDataValidator.validateForRecurringDepositUpdate(command.json()); + if (validate) { + this.fromApiJsonDataValidator.validateForRecurringDepositUpdate(command.json()); + } final RecurringDepositProduct product = this.recurringDepositProductRepository.findById(productId) .orElseThrow(() -> new RecurringDepositProductNotFoundException(productId)); @@ -180,7 +198,22 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem this.fromApiJsonDataValidator.validateForRecurringDepositUpdate(command.json()); - final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_RD, productId, maker, command.json()); + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_RD, productId, maker); + + final java.util.Set submitted = ProductPendingEditFieldMapper.populateCoreFields(command, pendingEdit.getCoreFields()); + final java.util.Set fdSubmitted = ProductPendingEditFieldMapper.populateFixedDepositFields(command, pendingEdit.getFixedDepositFields()); + final java.util.Set rdSubmitted = ProductPendingEditFieldMapper.populateRecurringDepositFields(command, pendingEdit.getRecurringDepositFields()); + final boolean glMappingSubmitted = ProductPendingEditFieldMapper.populateGlAccountMapping(command, pendingEdit.getGlAccountMappingFields()); + + if (!fdSubmitted.isEmpty()) { + submitted.addAll(fdSubmitted); + } + if (!rdSubmitted.isEmpty()) { + submitted.addAll(rdSubmitted); + } + if (glMappingSubmitted) { + submitted.add("glAccountMapping"); + } final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // @@ -199,6 +232,24 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem this.productPendingEditRepository.saveAndFlush(pendingEdit); + for (final String fieldName : submitted) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, fieldName)); + } + + final List chargeIds = ProductPendingEditFieldMapper.extractChargeIds(command); + if (chargeIds != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "charges")); + for (final Long chargeId : chargeIds) { + this.pendingEditChargeRepository.save(new ProductPendingEditCharge(pendingEdit, chargeId)); + } + } + + final List glMappings = ProductPendingEditFieldMapper.extractGlArrayMappings(command, pendingEdit); + if (glMappings != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "glArrayMappings")); + this.pendingEditGlMappingRepository.saveAll(glMappings); + } + return new CommandProcessingResultBuilder() // .withEntityId(product.getId()) // .build(); @@ -217,9 +268,28 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem throw new SavingsProductSelfApprovalNotAllowedException(productId); } - final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, - this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); - final CommandProcessingResult result = update(productId, replayedCommand); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + submittedFields.remove("fdType"); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFixedDepositFieldsToJson(root, pendingEdit.getFixedDepositFields(), submittedFields); + ProductPendingEditFieldMapper.writeRecurringDepositFieldsToJson(root, pendingEdit.getRecurringDepositFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); + final CommandProcessingResult result = updateInternal(productId, replayedCommand, false); pendingEdit.markApproved(checker); this.productPendingEditRepository.saveAndFlush(pendingEdit); @@ -239,12 +309,33 @@ public class RecurringDepositProductWritePlatformServiceJpaRepositoryImpl implem return existing.get(); } } + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFixedDepositFieldsToJson(root, pendingEdit.getFixedDepositFields(), submittedFields); + ProductPendingEditFieldMapper.writeRecurringDepositFieldsToJson(root, pendingEdit.getRecurringDepositFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final String commandJson = GSON.toJson(root); + final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // .entityName("RECURRINGDEPOSITPRODUCT") // .resourceGetUrl("/recurringdepositproducts/" + productId) // .resourceId(productId) // - .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .commandAsJson(commandJson) // .maker(pendingEdit.getMaker()) // .madeOnDate(DateUtils.getAuditOffsetDateTime()) // .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java index 7c1b9f3a0..2663310e8 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductReadPlatformServiceImpl.java @@ -45,12 +45,19 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKy import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKycRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; import org.apache.fineract.portfolio.savings.exception.SavingsProductNoPendingEditException; import org.apache.fineract.portfolio.savings.exception.SavingsProductNotFoundException; import org.apache.fineract.portfolio.tax.data.TaxGroupData; import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +import java.util.Set; @RequiredArgsConstructor public class SavingsProductReadPlatformServiceImpl implements SavingsProductReadPlatformService { @@ -63,6 +70,10 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead private final SavingsProductFacilityConfigRepository facilityConfigRepository; private final SavingsProductFacilityLimitRepository facilityLimitRepository; private final SavingsProductDepositLimitKycRepository depositLimitKycRepository; + private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private static final Gson GSON = new Gson(); private static final Type OTHER_GL_MAPPINGS_TYPE = new TypeToken>>() {}.getType(); private static final Type OTHER_GL_MAPPINGS_MAP_TYPE = new TypeToken>>>() {}.getType(); @@ -173,43 +184,49 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead } private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " - + "sp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " - + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " - + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " - + "spt.proposed_payload_json as proposedPayloadJson " - + "from m_savings_product_temp spt " + + "sp.name as savingsProductName, spt.createdby_id as makerId, maker.username as makerUsername, " + + "spt.lastmodifiedby_id as checkerId, checker.username as checkerUsername, spt.created_date as createdOn, " + + "spt.lastmodified_date as checkedOn, spt.status as status, spt.reject_reason as rejectReason " + + "from m_saving_product_temp spt " + "join m_savings_product sp on sp.id = spt.product_id " - + "join m_appuser maker on maker.id = spt.maker_id " - + "left join m_appuser checker on checker.id = spt.checker_id " + + "join m_appuser maker on maker.id = spt.createdby_id " + + "left join m_appuser checker on checker.id = spt.lastmodifiedby_id " + "where spt.product_type = 'SAVINGS' "; - private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { - final SavingsProductTempData data = new SavingsProductTempData(); - data.setId(rs.getLong("tempId")); - data.setSavingsProductId(rs.getLong("savingsProductId")); - data.setSavingsProductName(rs.getString("savingsProductName")); - data.setMakerId(rs.getLong("makerId")); - data.setMakerUsername(rs.getString("makerUsername")); - data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); - data.setCheckerUsername(rs.getString("checkerUsername")); - data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); - data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); - data.setStatus(rs.getString("status")); - data.setRejectReason(rs.getString("rejectReason")); - final String proposedPayloadJson = rs.getString("proposedPayloadJson"); - if (proposedPayloadJson != null) { - final Map proposedChanges = GSON.fromJson(proposedPayloadJson, - new TypeToken>() {}.getType()); - data.setProposedChanges(proposedChanges); - } - return data; - }; + private RowMapper getPendingEditRowMapper() { + return (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + + final Long tempId = data.getId(); + final java.util.Optional opt = this.productPendingEditRepository.findById(tempId); + if (opt.isPresent()) { + final ProductPendingEdit pendingEdit = opt.get(); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final Map proposedChanges = ProductPendingEditFieldMapper.reconstructProposedChangesMap( + pendingEdit, submittedFields, this.pendingEditChargeRepository, this.pendingEditGlMappingRepository, null, GSON); + data.setProposedChanges(proposedChanges); + } + return data; + }; + } @Override public Collection retrieveAllPendingEdits() { this.context.authenticatedUser(); - final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; - return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_date desc"; + return this.jdbcTemplate.query(sql, getPendingEditRowMapper()); } @Override @@ -217,7 +234,7 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead this.context.authenticatedUser(); final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; try { - return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + return this.jdbcTemplate.queryForObject(sql, getPendingEditRowMapper(), new Object[] { productId }); // NOSONAR } catch (final EmptyResultDataAccessException e) { throw new SavingsProductNoPendingEditException(productId); } @@ -271,7 +288,7 @@ public class SavingsProductReadPlatformServiceImpl implements SavingsProductRead sqlBuilder.append("sp.enable_lockin_period as enableLockinPeriod, "); sqlBuilder.append("sp.balance_frequency as balanceFrequency, "); sqlBuilder.append("sp.account_closed_zero_balance_in_day_closing as accountClosedZeroBalanceInDayClosing, "); - sqlBuilder.append("exists(select 1 from m_savings_product_temp spt where spt.product_id = sp.id " + sqlBuilder.append("exists(select 1 from m_saving_product_temp spt where spt.product_id = sp.id " + "and spt.product_type = 'SAVINGS' and spt.status = 'PENDING') as isPendingApproval "); sqlBuilder.append("from m_savings_product sp "); diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java index a65a1e1c3..5a2ee8187 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsProductWritePlatformServiceJpaRepositoryImpl.java @@ -87,6 +87,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements SavingsProductWritePlatformService { + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); private final PlatformSecurityContext context; private final SavingsProductRepository savingProductRepository; private final SavingsProductDataValidator fromApiJsonDataValidator; @@ -324,7 +325,7 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi // Reuses the same validator the direct-update path uses, so bad data can't sit "pending" undetected. this.fromApiJsonDataValidator.validateForUpdate(command.json(), product); - final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SAVINGS, productId, maker, command.json()); + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SAVINGS, productId, maker); // Typed-column storage: extract every recognised field into the pending edit's own columns // (plus satellite rows for the 1:many pieces) instead of relying solely on the JSON blob @@ -409,44 +410,32 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi throw new SavingsProductSelfApprovalNotAllowedException(productId); } - // Replay through the real update path so charges, GL/accounting mappings and other related - // tables are applied exactly as a direct edit would apply them - not hand-copied field by - // field. The replay JSON is rebuilt from this row's typed columns/satellite tables (the - // manifest records exactly which top-level parameters the maker actually submitted); pending - // edits created before this cutover have no manifest rows, so they fall back to replaying the - // legacy JSON blob directly. final Set submittedFields = new java.util.HashSet<>( this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); - final JsonCommand replayedCommand; - if (submittedFields.isEmpty()) { - replayedCommand = JsonCommand.fromJsonElement(productId, this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), - this.fromApiJsonHelper); - } else { - final JsonObject root = new JsonObject(); - root.addProperty("locale", "en"); - root.addProperty("dateFormat", "yyyy-MM-dd"); - ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); - ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), - submittedFields.contains("accountFacilityConfig")); - ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), - submittedFields.contains("depositLimitKyc")); - if (submittedFields.contains("glAccountMapping")) { - ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); - } - if (submittedFields.contains("charges")) { - ProductPendingEditFieldMapper.writeChargesToJson(root, - this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); - } - if (submittedFields.contains("accountFacilityLimits")) { - ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, - this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); - } - if (submittedFields.contains("glArrayMappings")) { - ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, - this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); - } - replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), + submittedFields.contains("accountFacilityConfig")); + ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), + submittedFields.contains("depositLimitKyc")); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("accountFacilityLimits")) { + ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, + this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); final CommandProcessingResult result = update(productId, replayedCommand); pendingEdit.markApproved(checker); @@ -460,11 +449,6 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi return result; } - /** - * Every edit submitted through submitEditForApproval() links a CommandSource audit row. This fallback only - * matters for pending edits that were created before that linking existed - it backfills one now so approve - * and reject always leave an entry in m_portfolio_command_source, with no silent no-op case. - */ private CommandSource findOrCreateAuditEntry(final ProductPendingEdit pendingEdit, final Long productId) { if (pendingEdit.getCommandSourceId() != null) { final java.util.Optional existing = this.commandSourceRepository.findById(pendingEdit.getCommandSourceId()); @@ -472,12 +456,39 @@ public class SavingsProductWritePlatformServiceJpaRepositoryImpl implements Savi return existing.get(); } } + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + ProductPendingEditFieldMapper.writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + ProductPendingEditFieldMapper.writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), + submittedFields.contains("accountFacilityConfig")); + ProductPendingEditFieldMapper.writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), + submittedFields.contains("depositLimitKyc")); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("accountFacilityLimits")) { + ProductPendingEditFieldMapper.writeFacilityLimitsToJson(root, + this.pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final String commandJson = GSON.toJson(root); + final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // .entityName("SAVINGSPRODUCT") // .resourceGetUrl("/savingsproducts/" + productId) // .resourceId(productId) // - .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .commandAsJson(commandJson) // .maker(pendingEdit.getMaker()) // .madeOnDate(DateUtils.getAuditOffsetDateTime()) // .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java index d9537ad2f..b5fa180bc 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/starter/SavingsConfiguration.java @@ -97,6 +97,9 @@ import org.apache.fineract.portfolio.savings.domain.SavingsProductDepositLimitKy import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfig; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityConfigRepository; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; import org.apache.fineract.commands.domain.CommandSourceRepository; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimit; import org.apache.fineract.portfolio.savings.domain.SavingsProductFacilityLimitRepository; @@ -311,8 +314,14 @@ public class SavingsConfiguration { @Bean @ConditionalOnMissingBean(DepositProductReadPlatformService.class) public DepositProductReadPlatformService depositProductReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, - InterestRateChartReadPlatformService interestRateChartReadPlatformService) { - return new DepositProductReadPlatformServiceImpl(context, jdbcTemplate, interestRateChartReadPlatformService); + InterestRateChartReadPlatformService interestRateChartReadPlatformService, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository) { + return new DepositProductReadPlatformServiceImpl(context, jdbcTemplate, interestRateChartReadPlatformService, + productPendingEditRepository, pendingEditSubmittedFieldRepository, + pendingEditChargeRepository, pendingEditGlMappingRepository); } @Bean @@ -327,11 +336,16 @@ public class SavingsConfiguration { FixedDepositProductRepository fixedDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, DepositProductAssembler depositProductAssembler, ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler, - ProductPendingEditRepository productPendingEditRepository, FromJsonHelper fromApiJsonHelper, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, + FromJsonHelper fromApiJsonHelper, CommandSourceRepository commandSourceRepository) { return new FixedDepositProductWritePlatformServiceJpaRepositoryImpl(context, fixedDepositProductRepository, fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler, - productPendingEditRepository, fromApiJsonHelper, commandSourceRepository); + productPendingEditRepository, pendingEditSubmittedFieldRepository, pendingEditChargeRepository, + pendingEditGlMappingRepository, fromApiJsonHelper, commandSourceRepository); } @Bean @@ -354,11 +368,16 @@ public class SavingsConfiguration { RecurringDepositProductRepository recurringDepositProductRepository, DepositProductDataValidator fromApiJsonDataValidator, DepositProductAssembler depositProductAssembler, ProductToGLAccountMappingWritePlatformService accountMappingWritePlatformService, InterestRateChartAssembler chartAssembler, - ProductPendingEditRepository productPendingEditRepository, FromJsonHelper fromApiJsonHelper, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, + FromJsonHelper fromApiJsonHelper, CommandSourceRepository commandSourceRepository) { return new RecurringDepositProductWritePlatformServiceJpaRepositoryImpl(context, recurringDepositProductRepository, fromApiJsonDataValidator, depositProductAssembler, accountMappingWritePlatformService, chartAssembler, - productPendingEditRepository, fromApiJsonHelper, commandSourceRepository); + productPendingEditRepository, pendingEditSubmittedFieldRepository, pendingEditChargeRepository, + pendingEditGlMappingRepository, fromApiJsonHelper, commandSourceRepository); } @Bean @@ -481,9 +500,15 @@ public class SavingsConfiguration { @ConditionalOnMissingBean(SavingsProductReadPlatformService.class) public SavingsProductReadPlatformService savingsProductReadPlatformService(PlatformSecurityContext context, JdbcTemplate jdbcTemplate, FineractEntityAccessUtil fineractEntityAccessUtil, SavingsProductFacilityConfigRepository facilityConfigRepository, - SavingsProductFacilityLimitRepository facilityLimitRepository, SavingsProductDepositLimitKycRepository depositLimitKycRepository) { + SavingsProductFacilityLimitRepository facilityLimitRepository, SavingsProductDepositLimitKycRepository depositLimitKycRepository, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository) { return new SavingsProductReadPlatformServiceImpl(context, jdbcTemplate, fineractEntityAccessUtil, facilityConfigRepository, - facilityLimitRepository, depositLimitKycRepository); + facilityLimitRepository, depositLimitKycRepository, + productPendingEditRepository, pendingEditSubmittedFieldRepository, + pendingEditChargeRepository, pendingEditGlMappingRepository); } @Bean diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java index 425f6b2e8..a9525484e 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductReadPlatformServiceImpl.java @@ -56,6 +56,12 @@ import org.apache.fineract.portfolio.shareproducts.exception.ShareProductNoPendi import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEdit; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; @RequiredArgsConstructor public class ShareProductReadPlatformServiceImpl implements ShareProductReadPlatformService { @@ -66,6 +72,10 @@ public class ShareProductReadPlatformServiceImpl implements ShareProductReadPlat private final ShareProductDropdownReadPlatformService shareProductDropdownReadPlatformService; private final AccountingDropdownReadPlatformService accountingDropdownReadPlatformService; private final ProductToGLAccountMappingReadPlatformService accountMappingReadPlatformService; + private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private final PaginationHelper shareProductDataPaginationHelper; private final DatabaseSpecificSQLGenerator sqlGenerator; @@ -159,47 +169,55 @@ public class ShareProductReadPlatformServiceImpl implements ShareProductReadPlat private static final Gson GSON = new Gson(); private static final String PENDING_EDIT_SCHEMA = "spt.id as tempId, spt.product_id as savingsProductId, " - + "sp.name as savingsProductName, spt.maker_id as makerId, maker.username as makerUsername, " - + "spt.checker_id as checkerId, checker.username as checkerUsername, spt.created_on as createdOn, " - + "spt.checked_on as checkedOn, spt.status as status, spt.reject_reason as rejectReason, " - + "spt.proposed_payload_json as proposedPayloadJson " - + "from m_savings_product_temp spt " + + "sp.name as savingsProductName, spt.createdby_id as makerId, maker.username as makerUsername, " + + "spt.lastmodifiedby_id as checkerId, checker.username as checkerUsername, spt.created_date as createdOn, " + + "spt.lastmodified_date as checkedOn, spt.status as status, spt.reject_reason as rejectReason " + + "from m_saving_product_temp spt " + "join m_share_product sp on sp.id = spt.product_id " - + "join m_appuser maker on maker.id = spt.maker_id " - + "left join m_appuser checker on checker.id = spt.checker_id " + + "join m_appuser maker on maker.id = spt.createdby_id " + + "left join m_appuser checker on checker.id = spt.lastmodifiedby_id " + "where spt.product_type = 'SHARE' "; - private static final RowMapper PENDING_EDIT_MAPPER = (rs, rowNum) -> { - final SavingsProductTempData data = new SavingsProductTempData(); - data.setId(rs.getLong("tempId")); - data.setSavingsProductId(rs.getLong("savingsProductId")); - data.setSavingsProductName(rs.getString("savingsProductName")); - data.setMakerId(rs.getLong("makerId")); - data.setMakerUsername(rs.getString("makerUsername")); - data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); - data.setCheckerUsername(rs.getString("checkerUsername")); - data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); - data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); - data.setStatus(rs.getString("status")); - data.setRejectReason(rs.getString("rejectReason")); - final String proposedPayloadJson = rs.getString("proposedPayloadJson"); - if (proposedPayloadJson != null) { - data.setProposedChanges(GSON.fromJson(proposedPayloadJson, new TypeToken>() {}.getType())); - } - return data; - }; + private RowMapper getPendingEditRowMapper() { + return (rs, rowNum) -> { + final SavingsProductTempData data = new SavingsProductTempData(); + data.setId(rs.getLong("tempId")); + data.setSavingsProductId(rs.getLong("savingsProductId")); + data.setSavingsProductName(rs.getString("savingsProductName")); + data.setMakerId(rs.getLong("makerId")); + data.setMakerUsername(rs.getString("makerUsername")); + data.setCheckerId(JdbcSupport.getLong(rs, "checkerId")); + data.setCheckerUsername(rs.getString("checkerUsername")); + data.setCreatedOn(rs.getTimestamp("createdOn") == null ? null : rs.getTimestamp("createdOn").toLocalDateTime()); + data.setCheckedOn(rs.getTimestamp("checkedOn") == null ? null : rs.getTimestamp("checkedOn").toLocalDateTime()); + data.setStatus(rs.getString("status")); + data.setRejectReason(rs.getString("rejectReason")); + + final Long tempId = data.getId(); + final java.util.Optional opt = this.productPendingEditRepository.findById(tempId); + if (opt.isPresent()) { + final ProductPendingEdit pendingEdit = opt.get(); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final Map proposedChanges = ProductPendingEditFieldMapper.reconstructProposedChangesMap( + pendingEdit, submittedFields, this.pendingEditChargeRepository, this.pendingEditGlMappingRepository, null, GSON); + data.setProposedChanges(proposedChanges); + } + return data; + }; + } @Override public Collection retrieveAllPendingEdits() { - final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_on desc"; - return this.jdbcTemplate.query(sql, PENDING_EDIT_MAPPER); + final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' order by spt.created_date desc"; + return this.jdbcTemplate.query(sql, getPendingEditRowMapper()); } @Override public SavingsProductTempData retrievePendingEdit(final Long productId) { final String sql = "select " + PENDING_EDIT_SCHEMA + "and spt.status = 'PENDING' and spt.product_id = ?"; try { - return this.jdbcTemplate.queryForObject(sql, PENDING_EDIT_MAPPER, new Object[] { productId }); // NOSONAR + return this.jdbcTemplate.queryForObject(sql, getPendingEditRowMapper(), new Object[] { productId }); // NOSONAR } catch (final EmptyResultDataAccessException e) { throw new ShareProductNoPendingEditException(productId); } diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java index a0020f108..e3714d10d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/service/ShareProductWritePlatformServiceJpaRepositoryImpl.java @@ -22,7 +22,9 @@ import com.google.gson.JsonElement; import jakarta.persistence.PersistenceException; import java.math.BigDecimal; import java.time.LocalDate; +import java.util.List; import java.util.Map; +import java.util.Set; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.exception.ExceptionUtils; @@ -52,6 +54,14 @@ import org.apache.fineract.portfolio.shareproducts.exception.ShareProductEditPen import org.apache.fineract.portfolio.shareproducts.exception.ShareProductNoPendingEditException; import org.apache.fineract.portfolio.shareproducts.exception.ShareProductSelfApprovalNotAllowedException; import org.apache.fineract.portfolio.shareproducts.serialization.ShareProductDataSerializer; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedField; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditCharge; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMapping; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditFieldMapper; +import com.google.gson.JsonObject; import org.apache.fineract.useradministration.domain.AppUser; import org.springframework.dao.DataIntegrityViolationException; import org.springframework.orm.jpa.JpaSystemException; @@ -61,6 +71,7 @@ import org.springframework.transaction.annotation.Transactional; @RequiredArgsConstructor public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareProductWritePlatformService { + private static final com.google.gson.Gson GSON = new com.google.gson.Gson(); private final ShareProductRepositoryWrapper repository; private final ShareProductDataSerializer serializer; private final FromJsonHelper fromApiJsonHelper; @@ -70,6 +81,9 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP private final BusinessEventNotifierService businessEventNotifierService; private final PlatformSecurityContext context; private final ProductPendingEditRepository productPendingEditRepository; + private final ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository; + private final ProductPendingEditChargeRepository pendingEditChargeRepository; + private final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository; private final CommandSourceRepository commandSourceRepository; @Override @@ -208,7 +222,13 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP throw new ShareProductEditPendingApprovalException(productId); } - final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SHARE, productId, maker, command.json()); + final ProductPendingEdit pendingEdit = new ProductPendingEdit(ProductPendingEdit.TYPE_SHARE, productId, maker); + + final java.util.Set submitted = ProductPendingEditFieldMapper.populateShareOnlyFields(command, pendingEdit.getShareOnlyFields()); + final boolean glMappingSubmitted = ProductPendingEditFieldMapper.populateGlAccountMapping(command, pendingEdit.getGlAccountMappingFields()); + if (glMappingSubmitted) { + submitted.add("glAccountMapping"); + } final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // @@ -227,6 +247,24 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP this.productPendingEditRepository.saveAndFlush(pendingEdit); + for (final String fieldName : submitted) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, fieldName)); + } + + final List chargeIds = ProductPendingEditFieldMapper.extractChargeIds(command); + if (chargeIds != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "charges")); + for (final Long chargeId : chargeIds) { + this.pendingEditChargeRepository.save(new ProductPendingEditCharge(pendingEdit, chargeId)); + } + } + + final List glMappings = ProductPendingEditFieldMapper.extractGlArrayMappings(command, pendingEdit); + if (glMappings != null) { + this.pendingEditSubmittedFieldRepository.save(new ProductPendingEditSubmittedField(pendingEdit, "glArrayMappings")); + this.pendingEditGlMappingRepository.saveAll(glMappings); + } + return new CommandProcessingResultBuilder() // .withEntityId(product.getId()) // .build(); @@ -245,8 +283,23 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP throw new ShareProductSelfApprovalNotAllowedException(productId); } - final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, - this.fromApiJsonHelper.parse(pendingEdit.getProposedPayloadJson()), this.fromApiJsonHelper); + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + ProductPendingEditFieldMapper.writeShareOnlyFieldsToJson(root, pendingEdit.getShareOnlyFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final JsonCommand replayedCommand = JsonCommand.fromJsonElement(productId, root, this.fromApiJsonHelper); final CommandProcessingResult result = updateProduct(productId, replayedCommand); pendingEdit.markApproved(checker); @@ -267,12 +320,30 @@ public class ShareProductWritePlatformServiceJpaRepositoryImpl implements ShareP return existing.get(); } } + final Set submittedFields = new java.util.HashSet<>( + this.pendingEditSubmittedFieldRepository.findFieldNamesByPendingEditId(pendingEdit.getId())); + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + ProductPendingEditFieldMapper.writeShareOnlyFieldsToJson(root, pendingEdit.getShareOnlyFields(), submittedFields); + if (submittedFields.contains("glAccountMapping")) { + ProductPendingEditFieldMapper.writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges")) { + ProductPendingEditFieldMapper.writeChargesToJson(root, + this.pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings")) { + ProductPendingEditFieldMapper.writeGlArrayMappingsToJson(root, + this.pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + final String commandJson = GSON.toJson(root); + final CommandSource auditEntry = CommandSource.builder() // .actionName("UPDATE") // .entityName("SHAREPRODUCT") // .resourceGetUrl("/products/share/" + productId) // .resourceId(productId) // - .commandAsJson(pendingEdit.getProposedPayloadJson()) // + .commandAsJson(commandJson) // .maker(pendingEdit.getMaker()) // .madeOnDate(DateUtils.getAuditOffsetDateTime()) // .status(CommandProcessingResultType.AWAITING_APPROVAL.getValue()) // diff --git a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java index 38a61e059..0134e629d 100644 --- a/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java +++ b/fineract-provider/src/main/java/org/apache/fineract/portfolio/shareproducts/starter/ShareProductsConfiguration.java @@ -32,6 +32,9 @@ import org.apache.fineract.organisation.monetary.service.CurrencyReadPlatformSer import org.apache.fineract.portfolio.charge.service.ChargeReadPlatformService; import org.apache.fineract.portfolio.products.service.ShareProductReadPlatformService; import org.apache.fineract.portfolio.savings.domain.ProductPendingEditRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditSubmittedFieldRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditChargeRepository; +import org.apache.fineract.portfolio.savings.domain.ProductPendingEditGlMappingRepository; import org.apache.fineract.portfolio.shareaccounts.service.ShareAccountReadPlatformService; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividentPayOutDetailsRepositoryWrapper; import org.apache.fineract.portfolio.shareproducts.domain.ShareProductRepositoryWrapper; @@ -89,9 +92,15 @@ public class ShareProductsConfiguration { ShareProductDropdownReadPlatformService shareProductDropdownReadPlatformService, AccountingDropdownReadPlatformService accountingDropdownReadPlatformService, ProductToGLAccountMappingReadPlatformService accountMappingReadPlatformService, - PaginationHelper shareProductDataPaginationHelper, DatabaseSpecificSQLGenerator sqlGenerator) { + PaginationHelper shareProductDataPaginationHelper, DatabaseSpecificSQLGenerator sqlGenerator, + ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository) { return new ShareProductReadPlatformServiceImpl(jdbcTemplate, currencyReadPlatformService, chargeReadPlatformService, shareProductDropdownReadPlatformService, accountingDropdownReadPlatformService, accountMappingReadPlatformService, + productPendingEditRepository, pendingEditSubmittedFieldRepository, + pendingEditChargeRepository, pendingEditGlMappingRepository, shareProductDataPaginationHelper, sqlGenerator); } @@ -105,10 +114,14 @@ public class ShareProductsConfiguration { BusinessEventNotifierService businessEventNotifierService, PlatformSecurityContext context, ProductPendingEditRepository productPendingEditRepository, + ProductPendingEditSubmittedFieldRepository pendingEditSubmittedFieldRepository, + ProductPendingEditChargeRepository pendingEditChargeRepository, + ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, CommandSourceRepository commandSourceRepository) { return new ShareProductWritePlatformServiceJpaRepositoryImpl(repository, serializer, fromApiJsonHelper, shareProductDividentPayOutDetailsRepository, shareProductDividendAssembler, accountMappingWritePlatformService, - businessEventNotifierService, context, productPendingEditRepository, commandSourceRepository); + businessEventNotifierService, context, productPendingEditRepository, pendingEditSubmittedFieldRepository, + pendingEditChargeRepository, pendingEditGlMappingRepository, commandSourceRepository); } } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java index dfc0c6347..744f18cad 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEdit.java @@ -39,7 +39,7 @@ import org.apache.fineract.useradministration.domain.AppUser; * (covering charges, GL/accounting mappings and other related tables, not just scalar columns). */ @Entity -@Table(name = "m_savings_product_temp") +@Table(name = "m_saving_product_temp") @Getter @Setter public class ProductPendingEdit extends AbstractPersistableCustom { @@ -61,17 +61,17 @@ public class ProductPendingEdit extends AbstractPersistableCustom { private String productType; @ManyToOne - @JoinColumn(name = "maker_id", nullable = false) + @JoinColumn(name = "createdby_id", nullable = false) private AppUser maker; @ManyToOne - @JoinColumn(name = "checker_id") + @JoinColumn(name = "lastmodifiedby_id") private AppUser checker; - @Column(name = "created_on", nullable = false) + @Column(name = "created_date", nullable = false) private LocalDateTime createdOn; - @Column(name = "checked_on") + @Column(name = "lastmodified_date") private LocalDateTime checkedOn; @Column(name = "status", nullable = false, length = 20) @@ -80,9 +80,7 @@ public class ProductPendingEdit extends AbstractPersistableCustom { @Column(name = "reject_reason", length = 500) private String rejectReason; - @Lob - @Column(name = "proposed_payload_json", nullable = false) - private String proposedPayloadJson; + /** * ":" while PENDING, NULL otherwise - the real DB-level lock. Unique constraints treat @@ -130,11 +128,10 @@ public class ProductPendingEdit extends AbstractPersistableCustom { protected ProductPendingEdit() {} - public ProductPendingEdit(final String productType, final Long productId, final AppUser maker, final String proposedPayloadJson) { + public ProductPendingEdit(final String productType, final Long productId, final AppUser maker) { this.productType = productType; this.productId = productId; this.maker = maker; - this.proposedPayloadJson = proposedPayloadJson; this.createdOn = LocalDateTime.now(); this.status = STATUS_PENDING; this.pendingLockKey = lockKeyFor(productType, productId); @@ -176,9 +173,7 @@ public class ProductPendingEdit extends AbstractPersistableCustom { return this.rejectReason; } - public String getProposedPayloadJson() { - return this.proposedPayloadJson; - } + public Long getCommandSourceId() { return this.commandSourceId; diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java index 3eec82403..030703976 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ProductPendingEditFieldMapper.java @@ -20,6 +20,7 @@ package org.apache.fineract.portfolio.savings.domain; import com.google.gson.JsonArray; import com.google.gson.JsonObject; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.HashSet; import java.util.List; @@ -308,10 +309,25 @@ public final class ProductPendingEditFieldMapper { f.setAllowDebitTxnAfterDueDate(command.booleanObjectValueOfParameterNamed("allowDebitTxnAfterDueDate")); present.add("allowDebitTxnAfterDueDate"); } + if (command.hasParameter("depositTypeEnum")) { + f.setDepositTypeEnum(command.integerValueOfParameterNamed("depositTypeEnum")); + present.add("depositTypeEnum"); + } + if (command.hasParameter("withdrawalFeeAmount")) { + f.setWithdrawalFeeAmount(command.bigDecimalValueOfParameterNamed("withdrawalFeeAmount")); + present.add("withdrawalFeeAmount"); + } + if (command.hasParameter("withdrawalFeeTypeEnum")) { + f.setWithdrawalFeeTypeEnum(command.integerValueOfParameterNamed("withdrawalFeeTypeEnum")); + present.add("withdrawalFeeTypeEnum"); + } return present; } public static void writeCoreFieldsToJson(final JsonObject root, final SavingsCoreEditFields f, final Set submitted) { + if (f == null) { + return; + } putString(root, submitted, "name", f.getName()); putString(root, submitted, "shortName", f.getShortName()); putString(root, submitted, "description", f.getDescription()); @@ -377,6 +393,9 @@ public final class ProductPendingEditFieldMapper { putBoolean(root, submitted, "noPenaltyNomineeHeirClosure", f.getNoPenaltyNomineeHeirClosure()); putBoolean(root, submitted, "deceasedSettlement", f.getDeceasedSettlement()); putBoolean(root, submitted, "allowDebitTxnAfterDueDate", f.getAllowDebitTxnAfterDueDate()); + putNumber(root, submitted, "depositTypeEnum", f.getDepositTypeEnum()); + putNumber(root, submitted, "withdrawalFeeAmount", f.getWithdrawalFeeAmount()); + putNumber(root, submitted, "withdrawalFeeTypeEnum", f.getWithdrawalFeeTypeEnum()); } // ---- accountFacilityConfig (1:1 container) -------------------------------------------------- @@ -405,7 +424,7 @@ public final class ProductPendingEditFieldMapper { } public static void writeFacilityConfigToJson(final JsonObject root, final FacilityConfigEditFields f, final boolean submitted) { - if (!submitted) { + if (f == null || !submitted) { return; } final JsonObject config = new JsonObject(); @@ -460,7 +479,7 @@ public final class ProductPendingEditFieldMapper { } public static void writeDepositLimitKycToJson(final JsonObject root, final DepositLimitKycEditFields f, final boolean submitted) { - if (!submitted) { + if (f == null || !submitted) { return; } final JsonObject kyc = new JsonObject(); @@ -505,6 +524,9 @@ public final class ProductPendingEditFieldMapper { } public static void writeGlAccountMappingToJson(final JsonObject root, final GlAccountMappingEditFields f) { + if (f == null) { + return; + } putNumber(root, "savingsReferenceAccountId", f.getSavingsReferenceAccountId()); putNumber(root, "savingsControlAccountId", f.getSavingsControlAccountId()); putNumber(root, "incomeFromFeeAccountId", f.getIncomeFromFeeAccountId()); @@ -693,4 +715,282 @@ public final class ProductPendingEditFieldMapper { root.addProperty(name, value); } } + + public static Set populateCurrentOnlyFields(final JsonCommand command, final CurrentOnlyEditFields f) { + final Set present = new java.util.HashSet<>(); + if (command.hasParameter("avgBalanceCalcPeriod")) { + f.setAvgBalanceCalcPeriod(command.stringValueOfParameterNamed("avgBalanceCalcPeriod")); + present.add("avgBalanceCalcPeriod"); + } + if (command.hasParameter("validForPeriod")) { + f.setValidForPeriod(command.stringValueOfParameterNamed("validForPeriod")); + present.add("validForPeriod"); + } + if (command.hasParameter("odAccountClosedZeroBalanceInDayClosing")) { + f.setOdAccountClosedZeroBalanceInDayClosing(command.booleanObjectValueOfParameterNamed("odAccountClosedZeroBalanceInDayClosing")); + present.add("odAccountClosedZeroBalanceInDayClosing"); + } + return present; + } + + public static void writeCurrentOnlyFieldsToJson(final JsonObject root, final CurrentOnlyEditFields f, final Set submitted) { + if (f == null) { + return; + } + putString(root, submitted, "avgBalanceCalcPeriod", f.getAvgBalanceCalcPeriod()); + putString(root, submitted, "validForPeriod", f.getValidForPeriod()); + putBoolean(root, submitted, "odAccountClosedZeroBalanceInDayClosing", f.getOdAccountClosedZeroBalanceInDayClosing()); + } + + public static Set populateShareOnlyFields(final JsonCommand command, final ShareOnlyEditFields f) { + final Set present = new java.util.HashSet<>(); + if (command.hasParameter("totalShares")) { + f.setTotalShares(command.longValueOfParameterNamed("totalShares")); + present.add("totalShares"); + } + if (command.hasParameter("totalSharesIssued") || command.hasParameter("issuedShares")) { + final Long val = command.hasParameter("totalSharesIssued") ? command.longValueOfParameterNamed("totalSharesIssued") : command.longValueOfParameterNamed("issuedShares"); + f.setTotalSharesIssued(val); + present.add("totalSharesIssued"); + } + if (command.hasParameter("unitPrice")) { + f.setUnitPrice(command.bigDecimalValueOfParameterNamed("unitPrice")); + present.add("unitPrice"); + } + if (command.hasParameter("minimumShares") || command.hasParameter("minimumClientShares")) { + final Long val = command.hasParameter("minimumShares") ? command.longValueOfParameterNamed("minimumShares") : command.longValueOfParameterNamed("minimumClientShares"); + f.setMinimumShares(val); + present.add("minimumShares"); + } + if (command.hasParameter("nominalShares") || command.hasParameter("nominalClientShares")) { + final Long val = command.hasParameter("nominalShares") ? command.longValueOfParameterNamed("nominalShares") : command.longValueOfParameterNamed("nominalClientShares"); + f.setNominalShares(val); + present.add("nominalShares"); + } + if (command.hasParameter("maximumShares") || command.hasParameter("maximumClientShares")) { + final Long val = command.hasParameter("maximumShares") ? command.longValueOfParameterNamed("maximumShares") : command.longValueOfParameterNamed("maximumClientShares"); + f.setMaximumShares(val); + present.add("maximumShares"); + } + if (command.hasParameter("allowDividendCalcForInactiveClients") || command.hasParameter("allowDividendsInactiveClients")) { + final Boolean val = command.hasParameter("allowDividendCalcForInactiveClients") ? command.booleanObjectValueOfParameterNamed("allowDividendCalcForInactiveClients") : command.booleanObjectValueOfParameterNamed("allowDividendsInactiveClients"); + f.setAllowDividendCalcForInactiveClients(val); + present.add("allowDividendCalcForInactiveClients"); + } + if (command.hasParameter("minimumActivePeriodForDividends") || command.hasParameter("minimumActivePeriodFrequency")) { + final Integer val = command.hasParameter("minimumActivePeriodForDividends") ? command.integerValueOfParameterNamed("minimumActivePeriodForDividends") : command.integerValueOfParameterNamed("minimumActivePeriodFrequency"); + f.setMinimumActivePeriodForDividends(val); + present.add("minimumActivePeriodForDividends"); + } + if (command.hasParameter("minimumActivePeriodFrequencyType") || command.hasParameter("minimumActivePeriodFrequencyEnum")) { + final Integer val = command.hasParameter("minimumActivePeriodFrequencyType") ? command.integerValueOfParameterNamed("minimumActivePeriodFrequencyType") : command.integerValueOfParameterNamed("minimumActivePeriodFrequencyEnum"); + f.setMinimumActivePeriodFrequencyType(val); + present.add("minimumActivePeriodFrequencyType"); + } + if (command.hasParameter("shareLockinPeriod")) { + f.setShareLockinPeriod(command.integerValueOfParameterNamed("shareLockinPeriod")); + present.add("shareLockinPeriod"); + } + if (command.hasParameter("shareLockinPeriodFrequencyType")) { + f.setShareLockinPeriodFrequencyType(command.integerValueOfParameterNamed("shareLockinPeriodFrequencyType")); + present.add("shareLockinPeriodFrequencyType"); + } + if (command.hasParameter("externalId")) { + f.setExternalId(command.stringValueOfParameterNamed("externalId")); + present.add("externalId"); + } + if (command.hasParameter("startDate")) { + f.setStartDate(command.localDateValueOfParameterNamed("startDate")); + present.add("startDate"); + } + if (command.hasParameter("totalsubscribedShares")) { + f.setTotalsubscribedShares(command.longValueOfParameterNamed("totalsubscribedShares")); + present.add("totalsubscribedShares"); + } + if (command.hasParameter("capitalAmount") || command.hasParameter("shareCapital")) { + final BigDecimal val = command.hasParameter("capitalAmount") ? command.bigDecimalValueOfParameterNamed("capitalAmount") : command.bigDecimalValueOfParameterNamed("shareCapital"); + f.setCapitalAmount(val); + present.add("shareCapital"); + } + return present; + } + + public static void writeShareOnlyFieldsToJson(final JsonObject root, final ShareOnlyEditFields f, final Set submitted) { + if (f == null) { + return; + } + putNumber(root, submitted, "totalShares", f.getTotalShares()); + putNumber(root, submitted, "totalSharesIssued", f.getTotalSharesIssued()); + putNumber(root, submitted, "unitPrice", f.getUnitPrice()); + putNumber(root, submitted, "minimumShares", f.getMinimumShares()); + putNumber(root, submitted, "nominalShares", f.getNominalShares()); + putNumber(root, submitted, "maximumShares", f.getMaximumShares()); + putBoolean(root, submitted, "allowDividendCalcForInactiveClients", f.getAllowDividendCalcForInactiveClients()); + putNumber(root, submitted, "minimumActivePeriodForDividends", f.getMinimumActivePeriodForDividends()); + putNumber(root, submitted, "minimumActivePeriodFrequencyType", f.getMinimumActivePeriodFrequencyType()); + putNumber(root, submitted, "shareLockinPeriod", f.getShareLockinPeriod()); + putNumber(root, submitted, "shareLockinPeriodFrequencyType", f.getShareLockinPeriodFrequencyType()); + putString(root, submitted, "externalId", f.getExternalId()); + putDate(root, submitted, "startDate", f.getStartDate()); + putNumber(root, submitted, "totalsubscribedShares", f.getTotalsubscribedShares()); + if (submitted.contains("capitalAmount") || submitted.contains("shareCapital")) { + if (f.getCapitalAmount() != null) { + root.addProperty("shareCapital", f.getCapitalAmount()); + } + } + } + + public static Set populateFixedDepositFields(final JsonCommand command, final FixedDepositEditFields f) { + final Set present = new java.util.HashSet<>(); + if (command.hasParameter("fdType")) { + f.setFdType(command.stringValueOfParameterNamed("fdType")); + present.add("fdType"); + } + if (command.hasParameter("preClosurePenalApplicable")) { + f.setPreClosurePenalApplicable(command.booleanObjectValueOfParameterNamed("preClosurePenalApplicable")); + present.add("preClosurePenalApplicable"); + } + if (command.hasParameter("preClosurePenalInterest")) { + f.setPreClosurePenalInterest(command.bigDecimalValueOfParameterNamed("preClosurePenalInterest")); + present.add("preClosurePenalInterest"); + } + if (command.hasParameter("preClosurePenalInterestOnTypeId")) { + f.setPreClosurePenalInterestOnTypeId(command.integerValueOfParameterNamed("preClosurePenalInterestOnTypeId")); + present.add("preClosurePenalInterestOnTypeId"); + } + if (command.hasParameter("minDepositTerm")) { + f.setMinDepositTerm(command.integerValueOfParameterNamed("minDepositTerm")); + present.add("minDepositTerm"); + } + if (command.hasParameter("maxDepositTerm")) { + f.setMaxDepositTerm(command.integerValueOfParameterNamed("maxDepositTerm")); + present.add("maxDepositTerm"); + } + if (command.hasParameter("minDepositTermTypeId")) { + f.setMinDepositTermTypeId(command.integerValueOfParameterNamed("minDepositTermTypeId")); + present.add("minDepositTermTypeId"); + } + if (command.hasParameter("maxDepositTermTypeId")) { + f.setMaxDepositTermTypeId(command.integerValueOfParameterNamed("maxDepositTermTypeId")); + present.add("maxDepositTermTypeId"); + } + if (command.hasParameter("inMultiplesOfDepositTerm")) { + f.setInMultiplesOfDepositTerm(command.integerValueOfParameterNamed("inMultiplesOfDepositTerm")); + present.add("inMultiplesOfDepositTerm"); + } + if (command.hasParameter("inMultiplesOfDepositTermTypeId")) { + f.setInMultiplesOfDepositTermTypeId(command.integerValueOfParameterNamed("inMultiplesOfDepositTermTypeId")); + present.add("inMultiplesOfDepositTermTypeId"); + } + if (command.hasParameter("minDepositAmount")) { + f.setMinDepositAmount(command.bigDecimalValueOfParameterNamed("minDepositAmount")); + present.add("minDepositAmount"); + } + if (command.hasParameter("maxDepositAmount")) { + f.setMaxDepositAmount(command.bigDecimalValueOfParameterNamed("maxDepositAmount")); + present.add("maxDepositAmount"); + } + if (command.hasParameter("depositAmount")) { + f.setDepositAmount(command.bigDecimalValueOfParameterNamed("depositAmount")); + present.add("depositAmount"); + } + return present; + } + + public static void writeFixedDepositFieldsToJson(final JsonObject root, final FixedDepositEditFields f, final Set submitted) { + if (f == null) { + return; + } + if (f.getFdType() != null) putString(root, submitted, "fdType", f.getFdType()); + if (f.getPreClosurePenalApplicable() != null) putBoolean(root, submitted, "preClosurePenalApplicable", f.getPreClosurePenalApplicable()); + if (f.getPreClosurePenalInterest() != null) putNumber(root, submitted, "preClosurePenalInterest", f.getPreClosurePenalInterest()); + if (f.getPreClosurePenalInterestOnTypeId() != null) putNumber(root, submitted, "preClosurePenalInterestOnTypeId", f.getPreClosurePenalInterestOnTypeId()); + if (f.getMinDepositTerm() != null) putNumber(root, submitted, "minDepositTerm", f.getMinDepositTerm()); + if (f.getMaxDepositTerm() != null) putNumber(root, submitted, "maxDepositTerm", f.getMaxDepositTerm()); + if (f.getMinDepositTermTypeId() != null) putNumber(root, submitted, "minDepositTermTypeId", f.getMinDepositTermTypeId()); + if (f.getMaxDepositTermTypeId() != null) putNumber(root, submitted, "maxDepositTermTypeId", f.getMaxDepositTermTypeId()); + if (f.getInMultiplesOfDepositTerm() != null) putNumber(root, submitted, "inMultiplesOfDepositTerm", f.getInMultiplesOfDepositTerm()); + if (f.getInMultiplesOfDepositTermTypeId() != null) putNumber(root, submitted, "inMultiplesOfDepositTermTypeId", f.getInMultiplesOfDepositTermTypeId()); + if (f.getMinDepositAmount() != null) putNumber(root, submitted, "minDepositAmount", f.getMinDepositAmount()); + if (f.getMaxDepositAmount() != null) putNumber(root, submitted, "maxDepositAmount", f.getMaxDepositAmount()); + if (f.getDepositAmount() != null) putNumber(root, submitted, "depositAmount", f.getDepositAmount()); + } + + public static Set populateRecurringDepositFields(final JsonCommand command, final RecurringDepositEditFields f) { + final Set present = new java.util.HashSet<>(); + if (command.hasParameter("isMandatoryDeposit")) { + f.setIsMandatoryDeposit(command.booleanObjectValueOfParameterNamed("isMandatoryDeposit")); + present.add("isMandatoryDeposit"); + } + if (command.hasParameter("allowWithdrawal")) { + f.setAllowWithdrawal(command.booleanObjectValueOfParameterNamed("allowWithdrawal")); + present.add("allowWithdrawal"); + } + if (command.hasParameter("adjustAdvanceTowardsFuturePayments")) { + f.setAdjustAdvanceTowardsFuturePayments(command.booleanObjectValueOfParameterNamed("adjustAdvanceTowardsFuturePayments")); + present.add("adjustAdvanceTowardsFuturePayments"); + } + return present; + } + + public static void writeRecurringDepositFieldsToJson(final JsonObject root, final RecurringDepositEditFields f, final Set submitted) { + if (f == null) { + return; + } + if (f.getIsMandatoryDeposit() != null) putBoolean(root, submitted, "isMandatoryDeposit", f.getIsMandatoryDeposit()); + if (f.getAllowWithdrawal() != null) putBoolean(root, submitted, "allowWithdrawal", f.getAllowWithdrawal()); + if (f.getAdjustAdvanceTowardsFuturePayments() != null) putBoolean(root, submitted, "adjustAdvanceTowardsFuturePayments", f.getAdjustAdvanceTowardsFuturePayments()); + } + + public static java.util.Map reconstructProposedChangesMap( + final ProductPendingEdit pendingEdit, + final Set submittedFields, + final ProductPendingEditChargeRepository pendingEditChargeRepository, + final ProductPendingEditGlMappingRepository pendingEditGlMappingRepository, + final ProductPendingEditFacilityLimitRepository pendingEditFacilityLimitRepository, + final com.google.gson.Gson gson) { + final JsonObject root = new JsonObject(); + root.addProperty("locale", "en"); + root.addProperty("dateFormat", "yyyy-MM-dd"); + + final String productType = pendingEdit.getProductType(); + if ((ProductPendingEdit.TYPE_SAVINGS.equals(productType) || ProductPendingEdit.TYPE_CURRENT.equals(productType) || ProductPendingEdit.TYPE_FD.equals(productType) || ProductPendingEdit.TYPE_RD.equals(productType)) && pendingEdit.getCoreFields() != null) { + writeCoreFieldsToJson(root, pendingEdit.getCoreFields(), submittedFields); + } + if (ProductPendingEdit.TYPE_CURRENT.equals(productType) && pendingEdit.getCurrentOnlyFields() != null) { + writeCurrentOnlyFieldsToJson(root, pendingEdit.getCurrentOnlyFields(), submittedFields); + } + if (ProductPendingEdit.TYPE_SAVINGS.equals(productType) || ProductPendingEdit.TYPE_CURRENT.equals(productType)) { + if (submittedFields.contains("accountFacilityConfig") && pendingEdit.getFacilityConfigFields() != null) { + writeFacilityConfigToJson(root, pendingEdit.getFacilityConfigFields(), true); + } + if (submittedFields.contains("depositLimitKyc") && pendingEdit.getDepositLimitKycFields() != null) { + writeDepositLimitKycToJson(root, pendingEdit.getDepositLimitKycFields(), true); + } + if (submittedFields.contains("accountFacilityLimits") && pendingEditFacilityLimitRepository != null) { + writeFacilityLimitsToJson(root, pendingEditFacilityLimitRepository.findByPendingEditId(pendingEdit.getId())); + } + } + if ((ProductPendingEdit.TYPE_FD.equals(productType) || ProductPendingEdit.TYPE_RD.equals(productType)) && pendingEdit.getFixedDepositFields() != null) { + writeFixedDepositFieldsToJson(root, pendingEdit.getFixedDepositFields(), submittedFields); + } + if (ProductPendingEdit.TYPE_RD.equals(productType) && pendingEdit.getRecurringDepositFields() != null) { + writeRecurringDepositFieldsToJson(root, pendingEdit.getRecurringDepositFields(), submittedFields); + } + if (ProductPendingEdit.TYPE_SHARE.equals(productType) && pendingEdit.getShareOnlyFields() != null) { + writeShareOnlyFieldsToJson(root, pendingEdit.getShareOnlyFields(), submittedFields); + } + if (submittedFields.contains("glAccountMapping") && pendingEdit.getGlAccountMappingFields() != null) { + writeGlAccountMappingToJson(root, pendingEdit.getGlAccountMappingFields()); + } + if (submittedFields.contains("charges") && pendingEditChargeRepository != null) { + writeChargesToJson(root, pendingEditChargeRepository.findByPendingEditId(pendingEdit.getId())); + } + if (submittedFields.contains("glArrayMappings") && pendingEditGlMappingRepository != null) { + writeGlArrayMappingsToJson(root, pendingEditGlMappingRepository.findByPendingEditId(pendingEdit.getId())); + } + + final String json = gson.toJson(root); + return gson.fromJson(json, new com.google.gson.reflect.TypeToken>() {}.getType()); + } } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java index 086038946..b531290e5 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/SavingsCoreEditFields.java @@ -48,28 +48,28 @@ public class SavingsCoreEditFields { @Column(name = "currency_code") private String currencyCode; - @Column(name = "digits_after_decimal") + @Column(name = "currency_digits") private Integer digitsAfterDecimal; - @Column(name = "in_multiples_of") + @Column(name = "currency_multiplesof") private Integer inMultiplesOf; - @Column(name = "accounting_rule") + @Column(name = "accounting_type") private Integer accountingRule; @Column(name = "nominal_annual_interest_rate") private BigDecimal nominalAnnualInterestRate; - @Column(name = "interest_compounding_period_type") + @Column(name = "interest_compounding_period_enum") private Integer interestCompoundingPeriodType; - @Column(name = "interest_posting_period_type") + @Column(name = "interest_posting_period_enum") private Integer interestPostingPeriodType; - @Column(name = "interest_calculation_type") + @Column(name = "interest_calculation_type_enum") private Integer interestCalculationType; - @Column(name = "interest_calculation_days_in_year_type") + @Column(name = "interest_calculation_days_in_year_type_enum") private Integer interestCalculationDaysInYearType; @Column(name = "min_required_opening_balance") @@ -78,10 +78,10 @@ public class SavingsCoreEditFields { @Column(name = "lockin_period_frequency") private Integer lockinPeriodFrequency; - @Column(name = "lockin_period_frequency_type") + @Column(name = "lockin_period_frequency_enum") private Integer lockinPeriodFrequencyType; - @Column(name = "withdrawal_fee_for_transfers") + @Column(name = "withdrawal_fee_for_transfer") private Boolean withdrawalFeeForTransfers; @Column(name = "allow_overdraft") @@ -102,7 +102,7 @@ public class SavingsCoreEditFields { @Column(name = "min_required_balance") private BigDecimal minRequiredBalance; - @Column(name = "lien_allowed") + @Column(name = "is_lien_allowed") private Boolean lienAllowed; @Column(name = "max_allowed_lien_limit") @@ -111,7 +111,7 @@ public class SavingsCoreEditFields { @Column(name = "min_balance_for_interest_calculation") private BigDecimal minBalanceForInterestCalculation; - @Column(name = "with_hold_tax") + @Column(name = "withhold_tax") private Boolean withHoldTax; @Column(name = "tax_group_id") @@ -231,4 +231,13 @@ public class SavingsCoreEditFields { @Column(name = "allow_debit_txn_after_due_date") private Boolean allowDebitTxnAfterDueDate; + + @Column(name = "deposit_type_enum") + private Integer depositTypeEnum; + + @Column(name = "withdrawal_fee_amount") + private BigDecimal withdrawalFeeAmount; + + @Column(name = "withdrawal_fee_type_enum") + private Integer withdrawalFeeTypeEnum; } diff --git a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java index 0fbb74896..2a614fe95 100644 --- a/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java +++ b/fineract-savings/src/main/java/org/apache/fineract/portfolio/savings/domain/ShareOnlyEditFields.java @@ -32,28 +32,28 @@ public class ShareOnlyEditFields { @Column(name = "total_shares") private Long totalShares; - @Column(name = "total_shares_issued") + @Column(name = "issued_shares") private Long totalSharesIssued; @Column(name = "unit_price") private BigDecimal unitPrice; - @Column(name = "minimum_shares") + @Column(name = "minimum_client_shares") private Long minimumShares; - @Column(name = "nominal_shares") + @Column(name = "nominal_client_shares") private Long nominalShares; - @Column(name = "maximum_shares") + @Column(name = "maximum_client_shares") private Long maximumShares; - @Column(name = "allow_dividend_calc_for_inactive_clients") + @Column(name = "allow_dividends_inactive_clients") private Boolean allowDividendCalcForInactiveClients; - @Column(name = "minimum_active_period_for_dividends") + @Column(name = "minimum_active_period_frequency") private Integer minimumActivePeriodForDividends; - @Column(name = "minimum_active_period_frequency_type") + @Column(name = "minimum_active_period_frequency_enum") private Integer minimumActivePeriodFrequencyType; @Column(name = "share_lockin_period") @@ -61,4 +61,16 @@ public class ShareOnlyEditFields { @Column(name = "share_lockin_period_frequency_type") private Integer shareLockinPeriodFrequencyType; + + @Column(name = "external_id") + private String externalId; + + @Column(name = "start_date") + private java.time.LocalDate startDate; + + @Column(name = "totalsubscribed_shares") + private Long totalsubscribedShares; + + @Column(name = "capital_amount") + private BigDecimal capitalAmount; } diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml index de44a7419..c717feeaa 100644 --- a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/module-changelog-master.xml @@ -49,4 +49,6 @@ + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2028_update_saving_product_temp_table.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2028_update_saving_product_temp_table.xml new file mode 100644 index 000000000..c6bfea24a --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2028_update_saving_product_temp_table.xml @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2029_remove_proposed_payload_json.xml b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2029_remove_proposed_payload_json.xml new file mode 100644 index 000000000..19a3970fe --- /dev/null +++ b/fineract-savings/src/main/resources/db/changelog/tenant/module/savings/parts/parts/2029_remove_proposed_payload_json.xml @@ -0,0 +1,30 @@ + + + + + + + + + + +