# Duende IdentityServer v7.3 to v7.4

This upgrade guide covers upgrading from Duende IdentityServer v7.3 to v7.4 ([release notes](https://github.com/DuendeSoftware/products/releases/tag/is-7.4.0)).

IdentityServer 7.4 is a significant release that includes:

* Support for [.NET 10](https://learn.microsoft.com/en-us/dotnet/core/whats-new/dotnet-10/overview)
* Support for OAuth 2.0 Authorization Server Metadata ([RFC 8414](https://www.rfc-editor.org/rfc/rfc8414.html))
* Add service for diagnostic data byÂ [@josephdecock](https://github.com/josephdecock)Â inÂ [#2252](https://github.com/DuendeSoftware/products/pull/2252)
* Trigger Back Channel Logout Earlier in Pipeline byÂ [@bhazen](https://github.com/bhazen)Â inÂ [#2258](https://github.com/DuendeSoftware/products/pull/2258)
* Enable Customizing ErrorMessage on Redirect to Error Page byÂ [@bhazen](https://github.com/bhazen)Â inÂ [#2263](https://github.com/DuendeSoftware/products/pull/2263)
* Better DCR Support for Public Clients byÂ [@bhazen](https://github.com/bhazen)Â inÂ [#2264](https://github.com/DuendeSoftware/products/pull/2264)
* New Callback option for path detection in Dynamic Providers
* Improved UI locales support
* Support for custom parameters in the Authorize Redirect Uri
* Identity package now persists session claims based on an interface
* Skipping front-channel logout iframe when unnecessary
* Set HTTP activity name on routing

There are no schema changes needed for IdentityServer 7.4. Small code changes may be required for some users to upgrade:

* Removed public unused class `Duende.IdentityServer.Models.DiscoveryDocument`
* Marked static properties referring to counters in `Telemetry.cs` as `readonly`

Note that `Duende.IdentityServer.EntityFramework.Storage` now depends on Entity Framework Core 9.x in the `net8.0` target framework, which should be fully supported on both .NET 8 and .NET 9. .NET 10 projects will use Entity Framework Core 10.x.

## Step 1: Update NuGet package

[Section titled âStep 1: Update NuGet packageâ](#step-1-update-nuget-package)

In your IdentityServer host project, update the version of the NuGet. For example, in your project file:

```xml
<PackageReference Include="Duende.IdentityServer" Version="7.3.0" />
```

would change to:

```xml
<PackageReference Include="Duende.IdentityServer" Version="7.4.3" />
```

## Step 2: Breaking Changes

[Section titled âStep 2: Breaking Changesâ](#step-2-breaking-changes)

Small code changes may be required for some users to upgrade.

#### Removed public unused class `Duende.IdentityServer.Models.DiscoveryDocument`

[Section titled âRemoved public unused class Duende.IdentityServer.Models.DiscoveryDocumentâ](#removed-public-unused-class-duendeidentityservermodelsdiscoverydocument)

In the process of internal code cleanup, we found that the `Duende.IdentityServer.Models.DiscoveryDocument` class was public but not used anywhere in the codebase.

If you were using this class in your codebase, you would need to replace it with your own implementation or use a different class that provides similar functionality. You can find the removed class in the [pull request](https://github.com/DuendeSoftware/products/pull/2128/files#diff-b9470315ba30a728f573d4fd52fae80da4f3f180b19d5e1b9b0bf3a9c7ce6841).

<https://github.com/DuendeSoftware/products/pull/2128>

#### Marked static properties referring to counters in `Telemetry.cs` as `readonly`

[Section titled âMarked static properties referring to counters in Telemetry.cs as readonlyâ](#marked-static-properties-referring-to-counters-in-telemetrycs-as-readonly)

In the process of internal code cleanup, these properties were updated to be marked as `readonly`. Code should not have been updating these properties as it would likely change the behavior of the telemetry emitted by IdentityServer.

Any code which was updating these properties should instead create its own counters for their specific scenario.

<https://github.com/DuendeSoftware/products/pull/2170>

## Step 3: Done!

[Section titled âStep 3: Done!â](#step-3-done)

Thatâs it. Of course, at this point, you can and should test that your IdentityServer is updated and working properly.
-----