ABP Commercial Version 8.0 Migration Guide

This document is a guide for upgrading ABP Commercial v7.x solutions to ABP Commercial v8.0. Please read them all carefully since v8.0 has some changes that you should take care of.

ABP Commercial upgraded to .NET 8.0, so you need to move your solutions to .NET 8.0 if you want to use the ABP 8.0. You can check the Migrate from ASP.NET Core 7.0 to 8.0 documentation. Also, see the ABP Framework migration guide for the changes made in the ABP Framework.

Upgraded to OpenIddict to 5.0.0

The 5.0 release of OpenIddict is a major release that introduces breaking changes.

See OpenIddict 4.x to 5.x Migration Guide for more information.

Replaced IdentityUserLookupAppService with the IIdentityUserIntegrationService

Integration Services are built for module-to-module (or microservice-to-microservice) communication rather than consumed from a UI or a client application as Application Services are intended to do.

In that regard, we are discarding the IIdentityUserLookupAppService in the Identity Module and moving its functionality to the IIdentityUserIntegrationService. Therefore, if you have used that application service directly, use the integration service (IIdentityUserIntegrationService) instead. IIdentityUserLookupAppService will be removed in thes next versions, so you may need to create a similar service in your application.

Notice that integration services have no authorization and are not exposed as HTTP API by default.

Also, if you have overridden the IdentityUserLookupAppService and IdentityUserIntegrationService classes in your application, you should update these classes' constructors as follows:

IdentityUserLookupAppService.cs

    public IdentityUserLookupAppService(IIdentityUserIntegrationService identityUserIntegrationService)
    {
        IdentityUserIntegrationService = identityUserIntegrationService;
    }

IdentityUserIntegrationService.cs

    public IdentityUserIntegrationService(
        IIdentityUserRepository userRepository, 
+       IdentityUserRepositoryExternalUserLookupServiceProvider userLookupServiceProvider)
    {
        UserRepository = userRepository;
+       UserLookupServiceProvider = userLookupServiceProvider;
    }

CMS Kit Pro: Moved Public Components Under the Common Projects

We have revised the project structure of the CMS Kit Pro module and decided to create common projects to share common components between the public and backoffice applications. Therefore, we have moved some components under these common projects and this development led to modification in the namespaces of the CMS Kit Pro components and their associated DTOs.

As a result, the following namespaces and sub-namespaces were changed as in the following and if you have used these components, you should make the related namespace changes in your application:

Volo.CmsKit.Pro.Public.Web.Pages.Public.Shared.Components -> Volo.CmsKit.Pro.Web.Pages.Public.Shared.Components

The client-proxy.js file was also updated as follows:

client-proxies/cms-kit-pro-proxy.js -> client-proxies/cms-kit-pro-common-proxy.js

CMS Kit Pro: Changed Route Convention for Poll Feature

We have made some improvements on the CMS Kit Pro's Poll Feature such as preventing adding more than one poll with the same date range to a widget, or not rendering a widget without any active poll. During the development, we revised the Poll Feature and noticed that the route convention was not following the REST API Route URI Convention and this led us to update the routes.

You can see the following changes and if you are making a request to the following routes, you can change them as stated below:

/api/cms-kit-public/poll/findbywidget -> /api/cms-kit-public/poll/by-available-widget-name

/api/cms-kit-public/poll/findbycode -> /api/cms-kit-public/poll/by-code

/api/cms-kit-public/poll/showresult -> /api/cms-kit-public/poll/result/{id}

Switch Ocelot to YARP for the API Gateway (Microservice Solution Template)

Until this version, ABP Commercial was using the Ocelot for the API Gateway, in the Microservice Startup Template. Since the Ocelot library is not actively maintained, we have searched for an alternative and decided to switch from Ocelot to YARP for the API Gateway.

You don't need to make any changes in your solution regarding this migration. However, if you want to migrate your existing microservice application's API Gateway from Ocelot to YARP, then you can read the Migrating to YARP documentation.

Added the AccountAdminApplicationModule & AccountAdminHttpApiModule to Auth Server Project

In this version, the Volo.Abp.Account.Pro.Admin.HttpApi and Volo.Abp.Account.Pro.Admin.HttpApi packages have been added to the AuthServer project in the microservice startup template.

/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/MyCompanyName.MyProjectName.AuthServer.csproj:

<ItemGroup>
+    <PackageReference Include="Volo.Abp.Account.Pro.Admin.HttpApi" Version="8.0.*"/>
+    <PackageReference Include="Volo.Abp.Account.Pro.Admin.Application" Version="8.0.*"/>
</ItemGroup>

/apps/auth-server/src/MyCompanyName.MyProjectName.AuthServer/MyProjectNameAuthServerModule.cs:

[DependsOn(
    //other module definitions...
+   typeof(AbpAccountAdminApplicationModule),
+   typeof(AbpAccountAdminHttpApiModule),
)]
public class MyProjectNameAuthServerModule : AbpModule
{
}

Upgraded NuGet Dependencies

You can see the following list of NuGet libraries that have been upgraded with .NET 8.0 upgrade, if you are using one of these packages explicitly, you may consider upgrading them in your solution:

Package Old Version New Version
AspNetCore.HealthChecks.UI 7.0.0-rc2.6 8.0.0
AspNetCore.HealthChecks.UI.Client 7.0.0-rc2.6 8.0.0
AspNetCore.HealthChecks.UI.InMemory.Storage 7.0.0-rc2.6 8.0.0
Blazorise.Bootstrap5 1.3.1 1.3.2
Blazorise.Charts 1.3.1 1.3.2
Blazorise.Components 1.3.1 1.3.2
Blazorise.Icons.FontAwesome 1.3.1 1.3.2
Blazorise.Markdown 1.3.1 1.3.2
Blazorise.TreeView 1.3.1 1.3.2
bunit 1.11.7 1.24.10
CsvHelper 15.0.9 30.0.1
EphemeralMongo.Core 1.1.0 1.1.3
EphemeralMongo6.runtime.linux-x64 1.1.0 1.1.3
EphemeralMongo6.runtime.osx-x64 1.1.0 1.1.3
EphemeralMongo6.runtime.win-x64 1.1.0 1.1.3
Excubo.Blazor.TreeViews 1.3.17 3.2.13
HtmlAgilityPack 1.7.4 1.11.54
HtmlSanitizer 5.0.331 8.0.746
IdentityModel 6.0.0 6.2.0
IdentityModel.OidcClient 5.1.0 5.2.1
Iyzipay 2.1.39 2.1.55
Markdig 0.20.0 0.33.0
Markdig.Signed 0.26.0 0.33.0
Microsoft.AspNetCore.Authentication.Google 7.0.10 8.0.0
Microsoft.AspNetCore.Authentication.JwtBearer 7.0.10 8.0.0
Microsoft.AspNetCore.Authentication.MicrosoftAccount 7.0.10 8.0.0
Microsoft.AspNetCore.Authentication.OpenIdConnect 7.0.10 8.0.0
Microsoft.AspNetCore.Authentication.Twitter 7.0.10 8.0.0
Microsoft.AspNetCore.Authorization 7.0.10 8.0.0
Microsoft.AspNetCore.Components.WebAssembly 7.0.10 8.0.0
Microsoft.AspNetCore.Components.WebAssembly.Authentication 7.0.10 8.0.0
Microsoft.AspNetCore.Components.WebAssembly.DevServer 7.0.10 8.0.0
Microsoft.AspNetCore.DataProtection.StackExchangeRedis 7.0.10 8.0.0
Microsoft.AspNetCore.Mvc.NewtonsoftJson 7.0.10 8.0.0
Microsoft.AspNetCore.SignalR.Client 7.0.10 8.0.0
Microsoft.AspNetCore.WebUtilities 2.2.0 8.0.0
Microsoft.CodeAnalysis 4.2.0 4.5.0
Microsoft.CodeAnalysis.Common 4.2.0 4.5.0
Microsoft.CodeAnalysis.CSharp 4.2.0 4.5.0
Microsoft.CodeAnalysis.CSharp.Features 4.2.0 4.5.0
Microsoft.CodeAnalysis.Features 4.2.0 4.5.0
Microsoft.Data.Sqlite 7.0.0 8.0.0
Microsoft.EntityFrameworkCore.Design 7.0.10 8.0.0
Microsoft.EntityFrameworkCore.Proxies 7.0.10 8.0.0
Microsoft.EntityFrameworkCore.Tools 7.0.10 8.0.0
Microsoft.Extensions.Caching.StackExchangeRedis 7.0.0 8.0.0
Microsoft.Extensions.FileProviders.Embedded 7.0.10 8.0.0
Microsoft.Extensions.Hosting 7.0.0 8.0.0
Microsoft.Extensions.Http 6.0.0 8.0.0
Microsoft.Extensions.Http.Polly 7.0.10 8.0.0
Microsoft.Extensions.Logging.Debug 7.0.0 8.0.0
Microsoft.NET.Test.Sdk 16.6.1 17.8.0
Microsoft.OpenApi 1.2.3 1.6.10
Microsoft.VisualStudio.Web.CodeGeneration.Design 7.0.0 8.0.0
MimeTypeMapOfficial 1.0.11 1.0.17
MongoDB.Driver 2.19.0 2.22.0
MySql.Data 8.0.32.1 8.2.0
NEST 7.15.0 7.17.5
Newtonsoft.Json 12.0.3 13.0.3
NSubstitute 4.3.0 5.1.0
NSwag.AspNetCore 13.18.2 13.20.0
Oracle.EntityFrameworkCore 7.21.9 7.21.12
Owl.reCAPTCHA 0.5.0 7.0.0
PayPalCheckoutSdk 1.0.3 1.0.4
PayPalHttp 1.0.0 1.0.1
Polly 7.2.3 8.2.0
Portable.BouncyCastle 1.8.5.2 1.9.0
Serilog.AspNetCore 4.0.0 8.0.0
Serilog.Extensions.Hosting 3.0.0 8.0.0
Serilog.Extensions.Logging 3.1.0 8.0.0
Serilog.Settings.Configuration 3.4.0 8.0.0
Serilog.Sinks.Console 4.0.1 5.0.0
Serilog.Sinks.File 4.0.0 5.0.0
Shouldly 3.0.2 4.2.1
Stripe.net 39.5.0 43.2.0
Swashbuckle.AspNetCore 6.3.1 6.5.0
System.Data.SQLite 1.0.117 1.0.118
System.IdentityModel.Tokens.Jwt 6.24.0 7.0.3
System.Management 4.7.0 8.0.0
System.Text.Encodings.Web 7.0.0 8.0.0
Twilio 5.43.0 6.14.1
xunit 2.4.1 2.6.1
xunit.extensibility.execution 2.4.1 2.6.1
xunit.runner.visualstudio 2.4.2 2.5.3

Contributors


Last updated: February 28, 2024 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

In this document
Community Talks

Building Modular Monolith Applications Using .NET and ABP Framework

17 Oct, 17:00
Online
Watch the Event
Mastering ABP Framework Book
Mastering ABP Framework

This book will help you gain a complete understanding of the framework and modern web application development techniques.

Learn More