@ -4,13 +4,13 @@ This document is a guide for upgrading ABP v7.3 solutions to ABP v7.4. There are
## Renamed `AddGlobalFilters<>` method as `FilterQueryable<>` in `IMongoDbRepositoryFilterer`
ABP Framework provides services to automatically filter data on querying from a database. Prior to this version, creating a new class that derives from the `MongoDbRepositoryFilterer` and overriding its `AddGlobalFilters` method was needed for implementing a data filter for MongoDB.
ABP Framework provides services to automatically filter data on querying from a database. Prior to this version, creating a new class that derives from the `MongoDbRepositoryFilterer` and overriding its `AddGlobalFilters` method was needed for implementing a data filter for [MongoDB](../MongoDB.md).
In this version, the `AddGlobalFilters` method renamed as `FilterQueryable`. Therefore, you need to update the method name if you have used data filtering for MongoDB, in your application.
In this version, the `AddGlobalFilters<>` method is renamed as `FilterQueryable<>`. Therefore, you need to update the method name if you have used data filtering for MongoDB, in your application.
## Exposing Integration Services
[Integration Services](../Integration-Services.md) are now not being exposed by default. Hiding integration services is useful because in a monolith application, integration services don't need to be exposed outside since the modules probably would be in-process communication with each other. Therefore, from this version on, the integration services will not be exposed as endpoints by default.
[Integration Services](../Integration-Services.md) are now not being exposed by default. In a monolith application, integration services don't need to be exposed outside since the modules probably would be in-process communication with each other. Therefore, from this version on, the integration services will not be exposed as endpoints by default.
If you build a microservice solution, or you need to access an integration service via a network call from any other application, you probably will need to expose the integration services, so the other applications can consume them.
## `LocalizationResource` removed from the `TemplateDefinition` class
## `LocalizationResource`property removed from the `TemplateDefinition` class
In this version, the `LocalizationResource` property (`Type`) removed from the `TemplateDefinition` class and instead the `LocalizationResourceName` property (`string`) has been added.
In this version, the `LocalizationResource` property was removed from the `TemplateDefinition` class and instead the `LocalizationResourceName` property has been added.
```diff
- public Type LocalizationResource { get; set; }
+ public string LocalizationResourceName { get; set; }
```
## Changed method signature for `ICorrelationIdProvider.Get()`
Prior to this version, `ICorrelationIdProvider.Get()` method was returning not nullable string that represents a *correlationId* (a unique key that used in distributed applications to trace requests accross multiple services/operations). With this version, now this method may return `null` if hasn't been generated by `AbpCorrelationIdMiddleware` before.
Prior to this version, `ICorrelationIdProvider.Get()` method was returning a not nullable string that represents a *correlationId* (a unique key that is used in distributed applications to trace requests across multiple services/operations). With this version, now this method may return `null` if hasn't been generated by `AbpCorrelationIdMiddleware` before.
```diff
public interface ICorrelationIdProvider
@ -43,16 +48,16 @@ public interface ICorrelationIdProvider
}
```
Therefore, if you used this method in your application, you might want to make a null check for the method result.
Therefore, if you used this method in your application, you might want to make a null check and update the method signature where it's used.
> See [#16795](https://github.com/abpframework/abp/pull/16795) for more information.
## Dynamic Setting Store - Setting Management Module
In this version, ABP Framework introduces Dynamic Setting Store, which is an important feature that allow us to collect and get all setting definitions from a single point. This feature requires some actions that need to be taken care of as in the following:
In this version, ABP Framework introduces Dynamic Setting Store, which is an important feature that allows us to collect and get all setting definitions from a single point. This feature requires some actions that need to be taken care of as the following:
* You need to create a new migration and apply it to your database because a new database table has been added.
* `ISettingDefinitionManager`'s sync methods have been removed and instead asynchrounus versions of the existing methods have been added.
* `ISettingDefinitionManager`'s sync methods have been removed and instead, asynchronous versions of the existing methods have been added.
```diff
public interface ISettingDefinitionManager
@ -70,13 +75,13 @@ public interface ISettingDefinitionManager
In this version, ABP Framework introduces the `IdentityUserIntegrationService`, which is designed to get current user's information such as his/her role names within a non-authorized integration service. This was need to prevent multiple calls to both permission and identity microservices, to be able to use the remote identity service.
In this version, ABP Framework introduces the `IdentityUserIntegrationService`, which is designed to get current user's information such as his/her role names within a non-authorized integration service.
> For more information see the related PR: [#16962](https://github.com/abpframework/abp/pull/16962)
This is a breaking change for microservice solutions because of the following two reasons and it should be cared:
This is a breaking change for microservice solutions because of the following two reasons and it should be cared about:
* `IdentityUserIntegrationService` provides non-authorized services. This is not breaking the application, but should be taken care of. Since, everyone can use the service to retrieve some informations for a certain user (for example, role names of a user).
* `IdentityUserIntegrationService` provides non-authorized services. This is not breaking the application, but should be taken care of. Since, everyone can use the service to retrieve some information for a certain user (for example, the role names of a user).
* Secondly, since integration services are not exposed by default anymore as explained in the *Exposing Integration Services* section above, you should explicitly enable exposing integration services. Otherwise, the operation will be failed and you get a `404` error from the identity microservice.
To expose integration services and controllers, you can configure the `AbpAspNetCoreMvcOptions` and set the `ExposeIntegrationServices` property as *true* in the `ConfigureServices` method of your [module class](../Module-Development-Basics.md):