Activities of "Rishi1532"

Hi ABP team,

We are planning the upgrade of our production application from ABP Commercial 9.0.4 to the latest stable ABP 10.x, and from .NET 9 to .NET 10.

To be clear up front: moving to .NET 10 is a firm decision on our side. We are not looking for a way to stay on .NET 9. What we need from you is the safest sequencing to get there and the full set of breaking changes we should expect along the way.

Our current setup

  • ABP Commercial 9.0.4 (a few packages on 9.0.5)
  • .NET 9 (net9.0 across ~90 projects)
  • UI: Angular 18.1, @abp/ng.* 9.0.4, @volo/abp.ng.* 9.0.4
  • Theme: LeptonX Angular (@volosoft/abp.ng.theme.lepton-x 4.0.5) and MVC LeptonX for the Auth/account pages
  • Database: PostgreSQL (Volo.Abp.EntityFrameworkCore.PostgreSql), EF Core migrations
  • Background jobs: Hangfire (Volo.Abp.BackgroundJobs.Hangfire)
  • Auth: OpenIddict, currently hosted in the API host; we have a planned activity to split the Auth Server into its own application
  • Blob storing: Volo.Abp.BlobStoring.Database
  • Multi-tenant (Volo.Saas), plus Windows Service host projects

Most important: we have HEAVILY CUSTOMIZED many of the ABP Commercial modules

This is the main reason we are opening this ticket, and the part we are most worried about.

Instead of consuming the Commercial modules as NuGet packages, we pulled seven of them into our repository as SOURCE CODE (via ABP Suite / abp get-source) and then modified them extensively. They are now compiled as part of our solution rather than referenced as packages:

| Module | Projects | C# files | |---|---|---| | Volo.Account.Pro | 25 | 309 | | Volo.Identity.Pro | 12 | 223 | | Volo.Abp.PermissionManagement | 18 | 121 | | Volo.Saas | 17 | 129 | | Volo.LanguageManagement | 12 | 110 | | Volo.TextTemplateManagement | 12 | 79 | | Volo.AuditLogging.Ui | 6 | 46 |

That is roughly 1,000 C# files across ~102 projects of ABP Commercial module source living inside our repository, all of it on 9.0.4 and much of it edited by us.

The customizations are not cosmetic. Across these modules we have changed entities and added properties, added and changed application service methods and DTOs, added new endpoints, changed permission definitions, altered the identity/account and audit-logging behaviour, and adjusted the module classes and EF Core mappings/migrations to match. Because the edits are spread through the module source rather than isolated in override/extension points, we cannot simply drop in the 10.6 module source.

On top of these, we also maintain our own modules in the same solution (KPI, PerioChart, XrayImage, Chat, AccountLedger, Performance).

What we would like from you

  1. Customized source-code modules - our biggest concern. What is the recommended process to move these seven heavily customized Commercial modules from 9.0.4 to 10.6? Specifically:

    • Do we re-download each module's 10.6 source and re-apply our customizations by hand (3-way merge across ~1,000 files), or is there tooling in ABP Studio / ABP Suite / abp CLI that assists with this?
    • How much structural change is there between 9.0 and 10.x inside these modules (namespaces, folder layout, entity and DTO/AppService signatures, module dependencies, permission definitions)? We need to estimate how large and how risky the merge will be.
    • Would you instead recommend we move back to NuGet package references and re-implement our changes through ABP's official extension points (entity extensions, service replacement, custom AppServices, UI customization)? If so, are there customizations of the kind above that ABP's extension points still cannot cover, and would you recommend doing that migration before, during, or after the version upgrade?
    • Is there any guidance or past experience you can share from customers who upgraded a major version with this much customized module source?
  2. Recommended upgrade path. Should we go 9.0.4 -> 10.6.0 in one step, or step through intermediate majors/minors (9.1 -> 9.2 -> 9.3 -> 10.0 -> 10.6)? Given the customized module source, is a stepped upgrade meaningfully safer? Is there a version we should not skip?

  3. Sequencing of the ABP and .NET 10 upgrades. We are going to .NET 10 either way, so this is purely a question of ordering. We noticed Volo.Abp.Core 10.6.0 still multi-targets net8.0/net9.0/net10.0, which seems to give us the option of staging the work. Which of these would you recommend? a. Upgrade ABP 9.0.4 -> 10.6 first while still building against net9.0, then flip the TFM to net10.0 as a separate step. b. Move to net10.0 first while still on ABP 9.0.4 (if that is even supported), then upgrade ABP. c. Do both in a single pass. Given roughly 1,000 files of customized module source to re-merge, we would prefer whichever order isolates the failures. Also please confirm: are the ABP 10.6 Commercial module packages, LeptonX, and ABP Suite/Studio fully supported on net10.0 today, and is there anything in .NET 10 (EF Core 10, ASP.NET Core 10, OpenIddict, Hangfire integration) that ABP 10.6 does not yet handle and that we should work around?

  4. Consolidated breaking-changes / migration guide covering 9.0 -> 10.x for: ABP Framework, ABP Commercial modules, LeptonX, and the Angular UI packages. Links to the official migration docs for each intermediate version would be very helpful.

  5. Database / EF Core migrations. What schema changes do the ABP modules (especially Identity Pro, Account Pro, Saas, PermissionManagement, AuditLogging) introduce between 9.0 and 10.6? Is there a documented list, and are there any data migrations (not just schema) we must run? Note our customized modules own their own migrations, so we need to know exactly what ABP changed. Any PostgreSQL-specific notes for the EF Core upgrade.

  6. Angular UI. What is the required Angular version for @abp/ng.* 10.6.0, and what is the recommended path from Angular 18.1? Are the ABP Angular schematics (abp-ng update / ng update) able to handle 9.0 -> 10.6 directly? Any breaking changes in @abp/ng.core, ng.oauth, and the LeptonX Angular theme (4.0.5 -> 5.6.0) we should plan for? We have also customized the Angular side of the identity/account/audit-logging screens.

  7. OpenIddict / authentication. Any breaking changes in the OpenIddict integration or the Account Pro module between 9.0 and 10.6 that affect token flows, impersonation, or an external Angular SPA client?

  8. Tooling. Which ABP CLI / ABP Studio / ABP Suite version should we use to perform the migration for a 9.0.4 solution, and are there commands (abp update, abp suite migrate) you recommend for a solution of this shape?

  9. Effort and risk. Based on similar migrations with this level of module customization, roughly what effort should we plan for, and is there any known issue in 10.6 that would make you recommend waiting for a later version?

Any sample or checklist you can point us to for a 9.x -> 10.x upgrade of a customized commercial Angular + PostgreSQL solution would be much appreciated.

Thank you.

Regarding the ABP Commercial license — just wanted to confirm what we found:

  1. With the purchased ABP Commercial license, we can create any number of projects — there's no limit on the number of applications/solutions we create.
  2. Once a project is created and development starts, the license is not required for deployment. The deployed application does not perform any license check at runtime.
  3. So we can do as many deployments as we need (dev, staging, production, client environments) without any additional licensing cost.

The license is tied to development (developer seats), not to the number of projects created or deployments made.

While planning our deployment, we found a license check in the generated project code that validates the license key/validity, and we want to understand its implications. For reference, here is the relevant configuration entry (license code redacted):

{
  "AbpLicenseCode": "<YOUR_ABP_LICENSE_CODE>"
}

A few things we'd like to clarify:

  1. Could you confirm what this check actually does at runtime — does it only run during development/build, or could it affect a deployed/production instance? We want to make sure point 2 above still holds given this code exists in the generated solution.
  2. What happens if the ABP license is not renewed after it expires — does it affect already-deployed applications, or only new development going forward?
  3. What happens if the ABP license is downgraded to a lower tier — does that affect existing projects/deployments built under the higher tier, or only what can be created after the downgrade?

Please let us know if this understanding is correct, or if there's anything more we should be aware of.

Thanks!

Hello ABP Support Team,

We are facing issues with Domain-Based Tenant Resolution while using ABP Framework 9.0.4 (Angular + OpenIddict).

We followed the official ABP community article below **exactly **to implement the domain-based tenant resolver:

https://abp.io/community/articles/how-to-use-domainbased-tenant-resolver-in-abp-with-angular-and-openiddict-v9y8da7v

⚠️ Note: The sample source code provided in the article is based on ABP 10.0.2, while our application is using ABP 9.0.4.

Environment Details

  • ABP Version: 9.0.4

  • Frontend: Angular

  • Authentication: OpenIddict

  • Tenant Resolution: Domain-based tenant resolver

  • Hosting: Localhost (custom domains) / Deployed environment

Source Code (Public Repository)

GitHub repository with full source code and configuration:

https://github.com/RISHI-KH-2611/Test/tree/sourcecode

We recreated a demo project in **ABP 9.0.4 **and followed the exact same implementation and steps as mentioned in the article and the sample project.

Public Deployed URL (For Testing)

https://dentpalqaaumtech.org/

  • Username / Password: ABP default credentials

Issues Observed

1️⃣** Localhost + Custom Domains**

Issue: Infinite login redirect loop

Steps:

  • Run the application locally

  • Configure and access the app using custom domains

  • Attempt to log in as a tenant user

Observed Behavior:

  • Login page continuously redirects

  • Authentication never completes

  • Results in an infinite login loop

2️⃣** Deployed Environment**

Issue: Tenant users cannot log in (Host admin works)

Observed Behavior:

  • Host Admin can log in successfully

  • Tenant users are unable to log in

  • Login either redirects back to the login screen or fails silently after authentication

Expected Behavior:

  • Tenant users should be able to log in based on domain resolution

  • Authentication flow should work consistently for both host and tenants

Request for Assistance

Could you please help us understand:

  1. Whether domain-based tenant resolution behaves differently in ABP 9.0.4
  2. If any additional configuration is required for Angular + OpenIddict in ABP 9.x
  3. Whether this is a known issue or limitation in ABP 9.x
  4. Recommended workaround or fix if upgrading to 10.x is the only solution

Hello ABP Support Team,

We are currently implementing domain-based tenant resolution and have been following the official ABP blog below for the implementation steps:

https://abp.io/community/articles/how-to-use-domainbased-tenant-resolver-in-abp-with-angular-and-openiddict-v9y8da7v#step-2-configure-http-for-local-development-optional

Environment Details

  • Frontend: Angular

  • Backend: .NET 9.0

  • ABP Framework Version: 9.0.4

  • Authentication: OpenIddict

  • Multi-tenancy: Domain-based tenant resolver

Both the frontend and backend are running correctly, and the backend URLs are accessible for specific tenant domains.

However, we are facing the following two issues:


Issue 1: Host (Super Admin) Login Issue

We have renamed the Host Admin to Super Admin. When attempting to log in as the Super Admin:

  • The login screen remains stuck and does not proceed further.

  • If an incorrect password is entered, the error message is displayed correctly.

  • This indicates that authentication validation is occurring, but the login flow is not completing successfully.

  • The same behavior occurs when attempting to log in from the backend as well (i.e., Super Admin login is not working from either Angular or backend).


Issue 2: Tenant Login Issue via Angular (OpenIddict Error)

For tenant-specific domains:

  • The tenant frontend loads correctly.

  • However, when navigating to the login screen from the Angular frontend, an OpenIddict-related error occurs.

  • This issue does not occur when accessing the login screen directly from the backend.

This behavior suggests a possible issue with OpenIddict, tenant resolution during the Angular-based login flow.


Could you please advise on:

The correct way to handle host users login when domain-based tenant resolution is enabled.

Any additional configuration required for Angular + OpenIddict login when using tenant subdomains.

Whether there are known limitations or required settings for this setup in ABP 9.0.4.

Please let us know if you need any additional details, logs, or configuration snippets from our side.

Thank you for your support.

Best regards, Rishikesh

Hello ABP Support Team,

I’m facing a critical issue while restoring NuGet packages for my ABP 8.3.4 project. Every time I run dotnet restore, I get the following repeated error:

NU1301: Unable to load the service index for source https://nuget.abp.io/nuget/v3/index.json. Response status code does not indicate success: 500 (Internal Server Error).

What I Have Tried: Cleared local NuGet cache: dotnet nuget locals all --clear Disabled ABP NuGet feed in NuGet.Config and re-enabled it Ran restore with --disable-parallel and --no-cache Confirmed the error is consistently coming from the ABP NuGet feed

My Project Details: ABP Version: 8.3.4 UI: Angular Backend: .NET 8 Operating System: Windows 10 ABP Feed URL: https://nuget.abp.io/nuget/v3/index.json

Please let me know if the ABP feed is currently having server-side issues or if there is a workaround to complete package restore and proxy generation. Thank you in advance.

Best regards, Rishikesh

Hi ABP Support Team,

We are currently facing an issue while running Cypress automation tests in our ABP-based application.

Setup Details:

  • We have deployed the project with two separate subdomains:

      * One for the frontend (Angular).
    
      * Another for the backend (ABP MVC API).
    
  • The application works perfectly when accessed through a regular browser (manually).

  • We are using the Cypress for automated end-to-end testing.

Problem:

When performing POST requests via Cypress (e.g., creating a role), we consistently receive a 400 Bad Request response from the backend API. However, the same operations succeed when done manually through the UI in a regular browser.

Observations:

  • GET requests work fine through Cypress.

  • The issue only arises for POST/PUT operations (e.g., creating roles).

  • Screenshot and Cypress test snippet are attached for reference. /// <reference types="cypress" /> import { Data } from "../../../fixtures/data.model";

describe('Administration > Security Management > Roles', { scrollBehavior: false }, () => { let data: Data; const baseUrl = Cypress.config().baseUrl; const testData = { role_name: "cypress role " + new Date().getTime(), role_sidebar_text: 'Roles', role_sidebar_url: '/identity-management/roles' } before(function () { cy.fixture("example").then((res) => { data = res; }); });

beforeEach(() => {

    cy.visit({ url: baseUrl, failOnStatusCode: false });
    cy.visit({ url: baseUrl, failOnStatusCode: false });
    cy.contains("Login", { matchCase: false, timeout: 30000 })
        .eq(0)
        .should("exist")
        .scrollIntoView()
        .click({ force: true });

    cy.wait(1000);
    // Input creds 
    cy.get('[id="LoginInput_UserNameOrEmailAddress"]').type(data.username, { delay: 20 });
    cy.get('[id="password-input"]').type(data.password, { delay: 20 });
    cy.wait(1000);

    cy.contains("Login", { matchCase: false, timeout: 30000 })
        .eq(0)
        .should("exist")
        .scrollIntoView()
        .click({ force: true });

    cy.contains("Home", { matchCase: false, timeout: 30000 })
        .eq(0)
        .should("exist")
        .scrollIntoView()
        .click({ force: true });
    cy.wait(1000);
    cy.log("✅ Passed ")

});

after(() => {
    // cy.clearLocalStorage();
    // cy.clearCookies();
});

it("should create a role", () => {
    const exactRegex = new RegExp(^${testData.role_sidebar_text}$, 'i');
    cy.log("✅ Visiting -> " + exactRegex)
    cy.contains(exactRegex, { matchCase: false, timeout: 30000 })
        .should('exist')
        .eq(0)
        .scrollIntoView()
        .click({ force: true });

    cy.wait(1000);

    cy.url().should('include', testData.role_sidebar_url);
    cy.wait(1000);

    // On role page
    cy.contains("New role", { matchCase: false, timeout: 30000 })
        .eq(0)
        .should("exist")
        .scrollIntoView()
        .click({ force: true });

    cy.get(".modal-content", { timeout: 20000 })
        .contains("New role", { matchCase: false })
        .should("exist")
        .scrollIntoView()
    cy.wait(2000)

    cy.get('.modal-content', { timeout: 10000 })
        .contains('label', 'Role name', { matchCase: false }) // find the label by text
        .parent()                            // go to the parent of the label
        .find('input')                       // find the input inside that parent
        .first()                             // select the first input (if multiple)
        .scrollIntoView()
        .type(testData.role_name, { force: true });

    cy.get(".modal-content", { timeout: 20000 })
        .contains("Public", { matchCase: false })
        .should("exist")
        .scrollIntoView()
        .click({ force: true });

    const createRole = "createRole"
    // cy.intercept("POST", "/api/identity/roles/").as(createRole);
    cy.wait(1000)
    cy.contains("Save", { matchCase: false, timeout: 30000 })
        .eq(0)
        .should("exist")
        .scrollIntoView()
        .click({ force: true });
    // cy.wait("@" + createRole, { timeout: 60000 }).its("response.statusCode").should("eq", 200);
    cy.wait(1000)
    cy.log("❌ tests failing due to server's incorrect response")
})


it("should look for a role", () => {
    const exactRegex = new RegExp(^${testData.role_sidebar_text}$, 'i');
    cy.log("✅ Visiting -> " + exactRegex)
    cy.contains(exactRegex, { matchCase: false, timeout: 30000 })
        .should('exist')
        .eq(0)
        .scrollIntoView()
        .click({ force: true });

    cy.wait(1000);

    cy.url().should('include', testData.role_sidebar_url);
    cy.wait(1000);

    const getRole = "getRole"
    cy.intercept("GET", "/api/identity/roles**").as(getRole);
    // On role page
    cy.get('input[placeholder="Search"]')
        .should('exist')
        .eq(0)
        .scrollIntoView()
        .type('cypress', { force: true });
    cy.wait("@" + getRole, { timeout: 60000 }).its("response.statusCode").should("eq", 200);
    cy.get('[role="table"]')
        .contains('cypress')
        .eq(0)
        .scrollIntoView()
        .should('be.visible');

});

});

Request:

Could you please assist us in identifying what may be causing this issue specifically for Cypress and how to resolve it within the ABP framework setup (e.g., configuration changes, headers, etc.)?

Thank you in advance for your help!

Best regards, Tuniki Rishikesh AUMTECH

Hello Team,

I am working on a project using the following setup: ABP Studio Installed Version: 0.9.26 ABP CLI Version: 9.1.1 .NET Version: 9.0 Entity Framework Core Version: 9.x (default) My requirement is to connect the solution to an IBM i (AS/400) Db2 database instead of the default PostgreSQL provider. To do this, I need to use the Aumerial.Data.NTI package: https://www.nuget.org/packages/Aumerial.Data.Nti Since EF Core does not officially support IBM i, I’m considering using the Aumerial.EntityFrameworkCore provider.

I would appreciate your guidance on the following:

  1. Which version of Entity Framework Core is fully compatible with Aumerial.EntityFrameworkCore?
  2. If I use a compatible version of Entity Framework Core that works with Aumerial, will I be able to continue using ABP Framework 9.1.1 without issues in my project setup?
  3. What is the recommended approach to use IBM i Db2 in ABP projects?

Looking forward to your guidance. Rishikesh

Showing 1 to 7 of 7 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 October 05, 2026, 11:32
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.