Upgrade auf iCL Portal 1.80+
iCL Portal 1.80 bringt mehrere tiefgreifende Änderungen mit sich und erfordert manuelle Schritte, die über den normalen Upgrade-Ablauf hinausgehen. Führen Sie diese Anleitung vor dem regulären Upgrade durch (siehe Neuere Versionen installieren).
Voraussetzungen
.NET Framework 4.8
Auf dem Server des Web-Frontends muss .NET Framework 4.8 installiert sein (erforderlich ab iCL Portal 1.19.x).
SQL Server 2017 oder neuer
iCL Portal 1.80 erfordert SQL Server 2017 oder neuer und jede iCL-Portal-Datenbank muss Kompatibilitätsgrad 140 (oder höher) verwenden.
Führen Sie die folgende Abfrage gegen jede iCL-Portal-Datenbank aus, um dies zu überprüfen:
SELECT compatibility_level
FROM sys.databases
WHERE name = DB_NAME()
Änderungen an der Authentifizierung
Client-Credentials müssen neu erstellt werden
iCL Portal 1.80 wechselt auf ein neues Authentifizierungssystem (OpenIddict), um OpenID zu unterstützen. Bestehende Client-Credentials können nicht migriert werden, da ihre Secrets verschlüsselt gespeichert sind.
Nach der Installation der neuen Server-Version müssen Sie:
- Jede Client-Credential in den Benutzereinstellungen der betroffenen Benutzer neu anlegen.
- Die neuen Client-IDs und Secrets an alle Tools, Integrationen und Skripte verteilen, die sich gegen iCL Portal authentifizieren.
Der Password-Grant ist veraltet
Der OAuth-2.0-Password-Grant (Resource Owner Password Credentials) ist veraltet. Stellen Sie alle Consumer auf den Client-Credentials-Flow um.
Details siehe Auth-API-Dokumentation.
WSFED / Azure Entra ID müssen neu konfiguriert werden
Bis zu dieser Version konnte WSFED- oder Azure-Entra-ID-Authentifizierung nur für einen einzigen Tenant und nur in der web.config konfiguriert werden. Das hat sich geändert — die Konfiguration erfolgt nun pro Tenant und wird in der Portal-Oberfläche verwaltet.
Nach dem Upgrade müssen Sie die Authentifizierung neu konfigurieren:
- In iCL Portal — folgen Sie Azure Entra ID Integration konfigurieren.
- In Azure Entra ID — überprüfen bzw. aktualisieren Sie die zugehörige App-Registrierung (Redirect-URLs, Client-Secret usw.) entsprechend der neuen Konfiguration pro Tenant.
Salesforce-Authentifizierung entfernt
Salesforce-Authentifizierung wird nicht mehr unterstützt und ist veraltet. Kunden, die sie bisher verwendet haben, müssen auf einen anderen Authentifizierungsanbieter umsteigen (z. B. Azure Entra ID).
Datenmigrationen
migrate_databases.bat führt nun zusätzlich zu den Schema-Migrationen auch Datenmigrationen aus. Diese können bei großen Mandanten (Tenants) lange dauern.
Führen Sie das Upgrade am Freitag oder außerhalb der Bürozeiten durch — nicht weil das System ausfällt, sondern weil die Datenmigrationen spürbar sind.
Das System ist bereits betriebsbereit, während die Datenmigrationen laufen. Benutzer können weiterarbeiten, während die Migrationen im Hintergrund abgeschlossen werden.
Migrator bricht mit „The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION“ ab
Bricht migrate_databases.bat mit
Unhandled Exception: System.Transactions.TransactionAbortedException: The transaction has aborted. ---> System.Data.SqlClient.SqlException: The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
ab, starten Sie den Migrator direkt und übergeben Sie ihm den Connection-String Default aus der web.config als Argument. Öffnen Sie dazu eine Eingabeaufforderung im Ordner des iCL Portals (z. B. C:\inetpub\wwwroot\iCLPortal) und führen Sie aus:
bin\icl.portal.migrator.exe "Server=.;Database=portal;Trusted_Connection=True;TrustServerCertificate=True;"
Ersetzen Sie den Connection-String durch den Wert von Default aus Ihrer web.config und führen Sie den Befehl mit demselben Windows-Benutzer aus, mit dem Sie auch migrate_databases.bat ausführen würden.
Ohne Argument liest der Migrator die web.config und migriert die Host-Datenbank auf eine Weise, bei der der eigentliche SQL-Fehler hinter der obigen Meldung verborgen bleibt. Mit einem Connection-String als Argument wird die web.config nicht gelesen, die Migrationen laufen normal und ein tatsächlicher Fehler wird angezeigt.
In diesem Modus ändert der Migrator die web.config nicht. Stellen Sie sicher, dass der Connection-String Default TrustServerCertificate enthält, wie unter Dem SQL-Server-Zertifikat vertrauen beschrieben.
Änderungen an der web.config
Nach dem Entpacken des neuen Release-Pakets muss die web.config wie folgt angepasst werden.
.NET Framework 4.8 als Zielplattform
Stellen Sie in <system.web> sicher, dass <compilation> und <httpRuntime> auf .NET 4.8 abzielen:
<compilation targetFramework="4.8" debug="false">
<assemblies>
<add assembly="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
</assemblies>
</compilation>
<httpRuntime targetFramework="4.8" maxRequestLength="51200" executionTimeout="300" />
Query-String-Länge für JWT-Tokens erhöhen
JWT-Tokens können so groß werden, dass die Standard-Limits von IIS / ASP.NET für Query-Strings überschritten werden. Nehmen Sie die folgenden Änderungen vor.
1. <requestFiltering> unter <system.webServer> anpassen.
Falls kein <requestLimits>-Element existiert, fügen Sie eines hinzu:
<security>
<requestFiltering>
<requestLimits maxQueryString="32768" /> <!-- oder ein anderer geeigneter Wert -->
</requestFiltering>
</security>
Falls bereits ein <requestLimits>-Element existiert, fügen Sie lediglich das Attribut maxQueryString="32768" hinzu. Das Ergebnis sollte so aussehen:
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="52428800" maxQueryString="32768" />
</requestFiltering>
</security>
2. <httpRuntime> anpassen.
Fügen Sie dem bestehenden <httpRuntime>-Element das Attribut maxQueryStringLength="32768" hinzu:
<httpRuntime targetFramework="4.8"
maxRequestLength="51200"
executionTimeout="300"
maxQueryStringLength="32768" />
Dem SQL-Server-Zertifikat vertrauen
Teile des Portals verbinden sich nun standardmäßig verschlüsselt mit dem SQL Server. Verwendet der SQL Server ein selbstsigniertes Zertifikat (der Standard bei einer On-Premises-Installation), schlagen diese Verbindungen mit „Die Zertifikatkette wurde von einer nicht vertrauenswürdigen Zertifizierungsstelle ausgestellt“ fehl.
Hängen Sie ;TrustServerCertificate=True; an den Connection-String Default unter <connectionStrings> an:
<connectionStrings>
<add name="Default"
connectionString="Server=.;Database=portal;Trusted_Connection=True;TrustServerCertificate=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Enthält der Connection-String bereits TrustServerCertificate — etwa TrustServerCertificate=False für eine Azure-SQL-Datenbank mit vertrauenswürdigem Zertifikat —, lassen Sie ihn unverändert.
dox42-Host
iCL Portal 1.80 liefert die dox42-Berichts-Engine als eigenständigen Windows-Dienst aus.
- Erstinstallation: siehe Installation des dox42-Hosts.
- Upgrade einer bestehenden Installation: siehe Upgrade des dox42-Hosts.