Activities of "manas-patnaik_HON"

Does ABP have a plan to support SQL Server as a vector Store in the AI Management Module?

https://learn.microsoft.com/en-us/sql/sql-server/ai/vectors?view=sql-server-ver17

Is there any update on supporting AI Management as a tenant-scoped feature?

https://abp.io/support/questions/10688/VoloAIManagementBackgroundJobsIndexDocumentJob-fails-for-tenant-uploads--blob-path-mismatch-caused-by-missing-IMultiTenant-on-IndexDocumentJobArgs

ABP / module versions:

Volo.AIManagement.VectorStores.Pgvector 10.2.0 Volo.Abp.BlobStoring.Azure 10.2.0 All other Volo packages 10.2.0 ABP Framework 10.x (matching) .NET 10.0 DB: SQL Server (Azure SQL), background-jobs provider: default Volo.Abp.BackgroundJobs.EntityFrameworkCore


When a non-host (saas tenant) user uploads a Workspace Data Source PDF, the file is correctly stored in Azure Blob Storage under the multi-tenant path:

triarch-blobs/tenants/{tenantId}/{workspaceId}/{dataSourceId}.pdf …but IndexDocumentJob runs ~minutes later as host and looks up the blob without the tenants/{tenantId}/ prefix, producing:

Volo.Abp.AbpException: Could not find the requested BLOB '{workspaceId}/{dataSourceId}.pdf' in the container 'workspace-data-sources'! at Volo.Abp.BlobStoring.BlobContainer.GetAsync(...) at Volo.AIManagement.BackgroundJobs.IndexDocumentJob.ExecuteAsync(IndexDocumentJobArgs args) The job retries until TryCount = 10, then is abandoned. The DataSource row exists in the DB and the blob exists in Azure — only the path the indexer resolves is wrong.

  • Steps to reproduce the issue:

BackgroundJobExecuter.GetJobArgsTenantId(object jobArgs) in Volo.Abp.BackgroundJobs.Abstractions:

protected virtual Guid? GetJobArgsTenantId(object jobArgs) { return jobArgs switch { IMultiTenant multiTenantJobArgs => multiTenantJobArgs.TenantId, _ => CurrentTenant.Id }; } AbpBackgroundJobs table has no TenantId column (by design — BackgroundJobRecord does not implement IMultiTenant). So the only mechanism to carry tenant from enqueue → execute is the args class implementing IMultiTenant.

We inspected the queued args in AbpBackgroundJobs.JobArgs for our failing job:

{"dataSourceId":"c4b5d4f3-a627-e1f5-a9ab-3a2168f8944b"} — no tenantId field. Therefore IndexDocumentJobArgs does not implement IMultiTenant. The executer falls into the _ => CurrentTenant.Id branch on the worker thread (host context, CurrentTenant.Id == null), so ExecuteAsync runs as host and the blob naming normalizer omits the tenants/{tenantId}/ prefix.

Upon digging deeper into the code, we figured out the issue was due to middleware introduction for custom / forced routing. We have reverted it and are able to make it work. Apologies for the confusion.

Please close the ticket.

We can't, considering policies, but we will be available for remote troubleshooting based on your calender

  1. Local environment means localhost, and it works; the CMS is supposed to work anonymously and post login as administrative.
  2. Tenant resolved via ?_tenant
  3. With /api/cms-kit-public/menu-items, it redirects to login .
  4. https://storefront.dev.triarch.ai/?__tenant=Alpharetta

[21:42:36 INF] Executed endpoint 'Volo.Chat.Users.ContactController.GetTotalUnreadMessageCountAsync (Volo.Chat.HttpApi)' [21:42:36 INF] Request finished HTTP/2 GET https://localhost:44340/api/chat/contact/total-unread-message-count - 200 null application/json; charset=utf-8 187.4404ms [21:42:36 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": null, "validationErrors": null }

[21:42:36 ERR] The API description of the Volo.AIManagement.Workspaces.IWorkspaceAppService.GetListAsync method was not found! Volo.Abp.AbpException: The API description of the Volo.AIManagement.Workspaces.IWorkspaceAppService.GetListAsync method was not found! at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.BuildHttpProxyClientProxyContext(String methodName, ClientProxyRequestTypeValue arguments) at Volo.Abp.Http.Client.ClientProxying.ClientProxyBase1.RequestAsync[T](String methodName, ClientProxyRequestTypeValue arguments) at Volo.AIManagement.Workspaces.WorkspaceClientProxy.GetListAsync(WorkspaceGetListInput input) at lambda_method2773(Closure, Object) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(ActionContext actionContext, IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.

And the warning

gETTING ERROR IN wEB PROJECT WHILE FETCHING ALL THE WORKSPACES , [21:39:48 WRN] Could not find ApiDescriptionModel for action: Create in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: Delete in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: Get in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetList in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetEmbedderProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetEmbedderProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetVectorStoreProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetVectorStoreProviders in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: Update in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: Duplicate in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetMcpServerConnections in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: AddMcpServerConnection in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: UpdateMcpServerConnection in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: RemoveMcpServerConnection in controller: Workspace, May be the generate-proxy.json is not up to date. [21:39:48 WRN] Could not find ApiDescriptionModel for action: GetByName in controller: Workspace, May be the generate-proxy.json is not up to date.

  • Steps to reproduce the issue:

Thank you for your quick response. Resolved.

IS there any manual steps which we can implement to avoid this blockage ?

Provide us with the following info:

  • Template: app
  • Created ABP Studio Version: 2.2.1
  • Current ABP Studio Version: 2.2.1
  • Tiered: No
  • Multi-Tenancy: Yes
  • UI Framework: mvc
  • Theme: leptonx
  • Theme Style: system
  • Theme Menu Placement: side
  • Database Provider: ef
  • Database Management System: sqlserver
  • Separate Tenant Schema: Yes
  • Mobile Framework: react-native
  • Public Website: Yes
  • Social Login: Yes
  • Include Tests: Yes
  • Kubernetes Configuration: Yes
  • Distributed Event Bus: rabbitmq
  • Use Local References: No
  • Optional Modules:
    • GDPR
    • FileManagement
    • TextTemplateManagement
    • LanguageManagement
    • AuditLogging
    • Chat
    • OpenIddictAdmin
  • Selected Languages: English
  • AI Management Enabled: Yes
  • Selected AI Providers: Ollama, OpenAI
  • Default Language: English
  • Create Command: abp new AbpSolution5 -t app --ui-framework mvc --mobile react-native --database-provider ef --database-management-system sqlserver --theme leptonx --separate-tenant-schema --skip-migration --skip-migrator --public-website --without-cms-kit --sample-crud-page --dont-run-install-libs --dont-run-bundling -chat -file-management
  • Exception message and full stack trace: During DB Migration : Microsoft.Data.SqlClient.SqlException HResult=0x80131904 Message=Invalid column name 'Leaved'. Source=Core Microsoft SqlClient Data Provider StackTrace: at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__195_0(Task1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.<InitializeReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__72.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.<MoveNextAsync>d__21.MoveNext() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable1.ConfiguredValueTaskAwaiter.GetResult() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__161.MoveNext() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__161.MoveNext() at Volo.Abp.Identity.EntityFrameworkCore.EfCoreIdentityUserRepository.<FindByNormalizedUserNameAsync>d__1.MoveNext() at Castle.DynamicProxy.AsyncInterceptorBase.<ProceedAsynchronous>d__141.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.<ProceedAsync>d__7.MoveNext() at Volo.Abp.Uow.UnitOfWorkInterceptor.<InterceptAsync>d__2.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.<InterceptAsync>d__31.MoveNext() at Volo.Abp.Identity.IdentityDataSeeder.<SeedAsync>d__25.MoveNext() at Volo.Abp.Identity.UserSharing.UserSharingIdentityDataSeeder.<SeedAsync>d__8.MoveNext() at Castle.DynamicProxy.AsyncInterceptorBase.<ProceedAsynchronous>d__141.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.<ProceedAsync>d__7.MoveNext() at Volo.Abp.Uow.UnitOfWorkInterceptor.<InterceptAsync>d__2.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.<InterceptAsync>d__31.MoveNext() at Volo.Abp.Data.DataSeeder.<SeedAsync>d__7.MoveNext() at Castle.DynamicProxy.AsyncInterceptorBase.<ProceedAsynchronous>d__13.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapter.<ProceedAsync>d__7.MoveNext() at Volo.Abp.Uow.UnitOfWorkInterceptor.<InterceptAsync>d__2.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.<InterceptAsync>d__2.MoveNext() at AbpSolution5.Data.AbpSolution5DbMigrationService.<SeedDataAsync>d__11.MoveNext() in C:\Startups_Local\AbpSolution5\src\AbpSolution5.Domain\Data\AbpSolution5DbMigrationService.cs:line 108 at AbpSolution5.Data.AbpSolution5DbMigrationService.<MigrateAsync>d__9.MoveNext() in C:\Startups_Local\AbpSolution5\src\AbpSolution5.Domain\Data\AbpSolution5DbMigrationService.cs:line 54 at AbpSolution5.DbMigrator.DbMigratorHostedService.<StartAsync>d__3.MoveNext() in C:\Startups_Local\AbpSolution5\src\AbpSolution5.DbMigrator\DbMigratorHostedService.cs:line 36 at Microsoft.Extensions.Hosting.Internal.Host.<<StartAsync>b__14_1>d.MoveNext() at Microsoft.Extensions.Hosting.Internal.Host.<ForeachService>d__171.MoveNext()

And If we run the project ignroing migration error we encounter error related to AI module fields ,

Microsoft.Data.SqlClient.SqlException HResult=0x80131904 Message=Invalid column name 'SupportedEmbedderProviders'. Invalid column name 'SupportedVectorStoreProviders'. Source=Core Microsoft SqlClient Data Provider StackTrace: at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__195_0(Task1 result) at System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) --- End of stack trace from previous location --- at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) --- End of stack trace from previous location --- at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.<ExecuteReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.<InitializeReaderAsync>d__22.MoveNext() at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.<ExecuteAsync>d__72.MoveNext() at Microsoft.EntityFrameworkCore.Query.Internal.SplitQueryingEnumerable1.AsyncEnumerator.<MoveNextAsync>d__21.MoveNext() at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable1.ConfiguredValueTaskAwaiter.GetResult() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__161.MoveNext() at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.<SingleOrDefaultAsync>d__161.MoveNext() at Volo.Abp.Domain.Repositories.EntityFrameworkCore.EfCoreRepository2.<FindAsync>d__36.MoveNext() at Castle.DynamicProxy.AsyncInterceptorBase.<ProceedAsynchronous>d__141.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAbpMethodInvocationAdapterWithReturnValue1.<ProceedAsync>d__7.MoveNext() at Volo.Abp.Uow.UnitOfWorkInterceptor.<InterceptAsync>d__2.MoveNext() at Volo.Abp.Castle.DynamicProxy.CastleAsyncAbpInterceptorAdapter1.<InterceptAsync>d__3`1.MoveNext() at Volo.AIManagement.ApplicationWorkspaceProviders.ApplicationAIProviderManager.

  • Steps to reproduce the issue:

Create a new solution using ABP Studio with V 10.2.0 RC1.

Showing 1 to 10 of 34 entries
Boost Your Development
ABP Live Training
Packages
See Trainings
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
Made with ❤️ on ABP v10.8.0-preview. Updated on September 28, 2026, 11:44
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.