ABP Framework version: 5.1.1 User Interface: Angular database provider: EF Core
When using the IdentityUserController and MaxUserCount has been set, the tenant is at the maximum number of users. Updating the details of an existing user is not possible.
If there a way to bypass this quickly?
Thanks in advance :)
[INF] Route matched with {area = "identity", controller = "User", action = "Update", page = ""}. Executing controller action with signature System.Threading.Tasks.Task1[Volo.Abp.Identity.IdentityUserDto] UpdateAsync(System.Guid, Volo.Abp.Identity.IdentityUserUpdateDto) on controller Volo.Abp.Identity.IdentityUserController (Volo.Abp.Identity.Pro.HttpApi).
[WRN] ---------- RemoteServiceErrorInfo ----------
Reached maximum allowed user count! This tenant is allowed to have a maximum of 3 users.
[WRN] Exception of type 'Volo.Abp.BusinessException' was thrown.
Volo.Abp.BusinessException: Exception of type 'Volo.Abp.BusinessException' was thrown
. at Volo.Abp.Identity.MaxUserCountValidator.CheckMaxUserCountAsync()
at Volo.Abp.Identity.MaxUserCountValidator.ValidateAsync(UserManager1 manager, IdentityUser user)
at Microsoft.AspNetCore.Identity.UserManager1.ValidateUserAsync(TUser user)
at Microsoft.AspNetCore.Identity.UserManager1.UpdateUserAsync(TUser user)
Just tried now and its working, but about an hour ago was still reporting error like this.
11:00:01 C:\Program Files\dotnet\sdk\5.0.401\NuGet.targets(131,5): error : Failed to download package 'Newtonsoft.Json.12.0.2' from 'https://nuget.abp.io/[key removed]/v3/package/newtonsoft.json/12.0.2/newtonsoft.json.12.0.2.nupkg'.
11:00:01 C:\Program Files\dotnet\sdk\5.0.401\NuGet.targets(131,5): error : Response status code does not indicate success: 409 (Conflict).
and...
C:\Program Files\dotnet\sdk\5.0.401\NuGet.targets(131,5): error : The given key '(Volo.Abp.Sms, 4.4.0)' was not present in the dictionary.
Have you fixed anything within the hour or is this a tempremental issue?
We had the same thing appear ourselves earlier, our nuget source is exactly as you have supplied. Also all of the abp.nuget.io packages are returning 403's now (the api keys are still in the url as before)
Looks like the polly package is hosted by abp not nuget. we have the same issue with several other packages.
This appears to be an ongoing issue.
Our builds are faiing with various errors related to your private nuget feed.
Examples (taken from teamcity logs)
C:\Program Files\dotnet\sdk\5.0.401\NuGet.targets(131,5): error : The feed 'ABP Commercial NuGet Source [https://nuget.abp.io/{api-key}/v3/index.json]' lists package 'Newtonsoft.Json.12.0.2' but multiple attempts to download the nupkg have failed. The feed is either invalid or required packages were removed while the current operation was in progress. Verify the package exists on the feed and try again.
Also getting issues with Polly (403) nuget package
I'm not sure if this is the same thing but as of yesterday for no reason at all our teamcity build process started generating these errors without any changes (verified) to our github repo or config so it appears to be an external change/update on your feed.
C:\Program Files\dotnet\sdk\5.0.400\Sdks\Microsoft.NET.Sdk.BlazorWebAssembly\targets\Microsoft.NET.Sdk.BlazorWebAssembly.Current.targets(564,5): error MSB6006: "C:\Program Files\dotnet" exited with code 1.
Thanks for your help with this!
Recreate the dbContext object inside of the loop for each iteration ( each tenant )
Database context instance is expensive, we should reuse
Are you sure about that? Maybe refresh after 500 tenants. Seeding tenants takes 300ms+ after the first few thousand. Opening dbContext should take <10ms.
I suggest creating a testdb with 20k tenants and running some tests on the migrator.
> Repository is abstract, you can do it in your project. see : https://github.com/abpframework/abp/issues/9652
Surely I can't disabled change tracking for ABP seed code though, not sure that would be safe even if I could. We do not yet have our own seeding.
I have previously reported this as a bug here. https://github.com/abpframework/abp/issues/9467
ABP EFCore migrations are currently running N+1 loops with the tenant seeding without recreating the dbContext instance for each loop. This is against microsoft's EFCore guidence and causes severe slowdowns after a few hundred tenants. I believe this is due to change tracking.
This seems fairly simple to fix but it's not something we can do here. Possible fixes are.
The quick fixes seem to be disabling change tracking or recreating the dbContext on each tenant loop. I also think pulling out the permissions in bulk rather than one at a time would make a big difference.
For our number of users is it entirelly impossible to migrate the database seeding (structural changes are fast though.)
I submitted this to github and to bugs and issues and got no response, just closed as stale.
External provider SSO login is broken on the ABP site and our projects if you already have a local account.
Clicking SSO on login page takes me to a prefilled register page.
If I submit this page I get an error account already exists.
Note the register page doesn't even have the SSO buttons.
Proper flow should simply login with any provider with matching email address (you shouldn't have to remember which provider you used.)
This is a critical bug for us along with the dbmigrator issue I've already reported.
dbmigrator has a severe performance issue when using 500+ tenants which I believe is caused because of the efcore itterations and n+1 query issues. I think you need to disable changetracking for dbmigrator and/or open dbcontext per tenant. It would also be considerably faster and best practice if the permissions were downloaded as a single query and not 30+ separate small queries. Realistically you're limiting ABP to a small number of tenants otherwise.
Thanks.
Striple has two billling products, the standard payment system and stripe billing which include invoicing/vat etc.
Chargebee is similar to stripe billing where you forward a plan ID to them and it handles the rest through hosted checkout and plan change pages. The tenant is linked by recording a simple customer ID and subscription ID for links the accounts, and a webhook for plan changes and cancellations.
Checkout https://www.chargebee.com/docs/2.0/checkout.html
Self service portal (plan change. cancellations, invoice download etc.) https://www.chargebee.com/docs/2.0/inapp-self-serve-portal.html
Saas subscription invoicing is realy complex now as the VAT location proof rules have changed in the EU, USA, Australia and middle east trade blocks so it makes sense to use these types of service unless you only trade in your own country (which most Saas businesses don't)
We're working on a project now which will be released in the next few months and we're wondering if any of the following are planned for the commercial product.
Subscription system & payment integration for the SaaS module.
How will this work. We use Chargebee for recurring billing. Will we be able to create plugins for the main subscription invoicing systems (Chargebee, Recurly, Chargify, Stripe Billing)? It would be great if we could have our tenants edition switch to the matching Chargebee subscription plan when they order, cancel, expire. It would be good to tie in the Chargebee dunning process to your system so that users could be alerted that their card has failed when the login.
Tenant impersonation for the SaaS module. / Custom management
How does all of this fit together as a customer management system? Currently the tenant search is near useless as it doesn't appear to search by other fields (tenant user email, billing reference etc.)
This is important as our customer service agents need to quicly access someones account with we receive a support request or worse a Terms of service abuse report. They will not have tenant id and will need to bring up a list of tenants connected to an email address or some other field. Ideally this would include custom search function we could create.
Unchangable Default Roles for Tenants
If I understand correctly roles and permissions are created at the tenant level. If this is the case then I'm not sure how to practically use the roles feature as when we add new features our application we would have to choose between leaving them inactive for all users until enabled (really bad) or manually adding them to every role in every tenant(very, very bad as we don't know what the roles were created for, they might be read only or something like that.) We're not sure what to do about this as we role out new functionality every month or so and 99.9% of our customers would simply want it enabled by default.
I think the option to add Default / template tenant roles which cannot be edited except by the host would be highly desirable.
Please add roadmap/ discussions sticky to this forum for ideas etc.
It would be good to hear others opinions on the roadmap.