Migration der CMI Cloud STS3-URL
Im Rahmen einer Vereinheitlichung der CMI Cloud Services wird die Verteilung der Mandanten auf die zwei STS3-Instanzen (Stage und Prod) auf das Schema umgestellt, das bereits für alle übrigen CMI Cloud Services gilt. Bisher folgte STS3 einem Legacy-Schema, das nur für diese Komponente galt. Diese Anleitung richtet sich direkt an Sie und beschreibt, welche Anpassungen Sie an Ihrem Mandanten vornehmen müssen, damit Anmeldung und Schnittstellen nach der Umstellung weiterhin funktionieren.
Zielgruppe: IT-Verantwortliche/r eines CMI-Kunden mit Full-Cloud- oder Hybrid-Mandant.
- Migration der CMI Cloud STS3-URL
- Was ändert sich?
- Was muss ich tun?
- SQL-Script für Hybrid-Mandanten
- FAQ
Was ändert sich?
Künftig laufen alle Test-Mandanten auf der Stage-Instanz und alle Produktions-Mandanten auf der Prod-Instanz:
| Mandant-Typ | STS3-Instanz |
|---|---|
| Alle Test-Mandanten | Stage (https://sts3.stage.cmicloud.ch) |
| Alle Prod-Mandanten | Prod (https://sts3.prod.cmicloud.ch) |
Daraus ergeben sich folgende Änderungen pro Mandant-Typ:
| Mandant-Typ | Beispiele | Alte URL | Neue URL |
|---|---|---|---|
| Kunden-Test-Mandant | schwerzenwiltest, aarauzonatest |
https://sts3.prod.cmicloud.ch |
https://sts3.stage.cmicloud.ch |
| Kunden-Prod-Mandant | schwerzenwil, aarauzona |
https://sts3.prod.cmicloud.ch |
Keine Änderung |
Hinweis: Haben Sie nur einen Kunden-Prod-Mandanten, müssen Sie nichts unternehmen. Diese Anleitung ist nur relevant, wenn Sie auch einen Test-Mandanten betreiben.
Was muss ich tun?
Die Umstellung selbst übernimmt CMI für Sie automatisch. Je nach Hosting-Konzept (Full Cloud oder Hybrid) müssen Sie jedoch zusätzliche manuelle Anpassungen vornehmen.
Full Cloud
Bitte prüfen Sie folgende Punkte und führen Sie die Anpassungen bei Bedarf durch:
- Externer Identity Provider (z.B. Entra ID / Azure AD):
Verwenden Sie für die Anmeldung am STS3 einen externen Identity Provider, müssen Sie in dessen Konfiguration die neue STS3-URL zusätzlich als erlaubte Redirect-URI eintragen. Behalten Sie die bestehende Redirect-URI als Vorlage — ersetzen Sie lediglich den Hostname; den Pfad (
<tenantId>und Ihren mandantenspezifischen Callback-Path) übernehmen Sie unverändert:
alt: https://sts3.prod.cmicloud.ch/<tenantId>/identity/<bestehender-callback-path>
neu: https://sts3.stage.cmicloud.ch/<tenantId>/identity/<bestehender-callback-path>
Ihr Callback-Path ist je nach IDP-Konfiguration unterschiedlich (z.B. signin-oidc, signin-oidc-entraid, signin-oidc-auth0, …) und wird aus Ihrer bestehenden Konfiguration übernommen. Diese Anpassung können Sie bereits vor der Umstellung vornehmen. Details zur Konfiguration finden Sie unter Konfiguration von Entra ID bzw. allgemein unter Identity Provider (IDP).
- Custom-Schnittstellen: Betreiben Sie Custom-Schnittstellen, die mit der CMI API kommunizieren und sich dafür über die STS3-URL authentifizieren, müssen Sie diese manuell auf die neue URL anpassen. Da die alte URL nach der Migration nicht mehr antwortet, ist eine vorgängige Anpassung nicht möglich — Sie führen sie am Tag der Migration durch.
Hybrid
Ergänzend zu den unter Full Cloud beschriebenen Anpassungen müssen Sie als Hybrid-Mandant folgende Schritte durchführen:
-
eBau-Service On-Premise: Betreiben Sie einen eBau-Service On-Premise, passen Sie die STS3-URL in dessen Konfiguration von
sts3.prod.cmicloud.chaufsts3.stage.cmicloud.chan. -
CMI Server / Datenbank: Am Tag der Migration stoppen Sie den CMI Server und setzen die neue STS3-URL über das SQL-Script aus dem nächsten Abschnitt in den Tabellen
STMundCNF.
SQL-Script für Hybrid-Mandanten
Das folgende Script aktualisiert die STS-URL in den Konfigurationstabellen STM und CNF. Es ist in eine Transaktion verpackt, sodass Sie das Resultat vor dem COMMIT prüfen können.
Voraussetzungen:
- Sie haben den CMI Server gestoppt.
- Sie führen das Script auf der Datenbank des betroffenen Mandanten aus.
- Sie haben vor dem Ausführen ein Datenbank-Backup erstellt.
Sicherheitsnetz: Das Script führt seine Änderungen nur aus, wenn die
ApiServerIdIhres Mandanten auftestendet — produktive Mandanten bleiben unberührt. Prüfen Sie trotzdem nach dem Lauf die ausgegebene Kontrollabfrage, bevor SieCOMMIT TRANausführen.
SET NOCOUNT ON;
BEGIN TRAN;
DECLARE @StsConfig NVARCHAR(MAX);
DECLARE @ApiServerId NVARCHAR(200);
DECLARE @Search NVARCHAR(100) = 'sts3.prod.cmicloud.ch';
DECLARE @Replace NVARCHAR(100) = 'sts3.stage.cmicloud.ch';
SELECT @StsConfig = CONVERT(NVARCHAR(MAX), STM_VALUE)
FROM STM
WHERE STM_KEY = 'STS_CONFIG';
SET @ApiServerId = JSON_VALUE(@StsConfig, '$.Server.ApiServerId');
DECLARE @SearchUrl NVARCHAR(200) = @Search + '/' + @ApiServerId + '/';
DECLARE @ReplaceUrl NVARCHAR(200) = @Replace + '/' + @ApiServerId + '/';
PRINT 'STS_CONFIG : ' + ISNULL(@StsConfig, '<NULL>');
PRINT 'ApiServerId : ' + ISNULL(@ApiServerId, '<NULL>');
PRINT 'SearchUrl (CNF) : ' + ISNULL(@SearchUrl, '<NULL>');
PRINT 'ReplaceUrl (CNF) : ' + ISNULL(@ReplaceUrl, '<NULL>');
IF @ApiServerId LIKE '%test'
BEGIN
PRINT 'Mandant ist ein Test-Mandant -> ersetze ' + @Search + ' durch ' + @Replace;
UPDATE STM
SET STM_VALUE = REPLACE(CONVERT(NVARCHAR(MAX), STM_VALUE), @Search, @Replace)
WHERE STM_KEY = 'STS_CONFIG'
AND CONVERT(NVARCHAR(MAX), STM_VALUE) LIKE '%' + @Search + '%';
PRINT 'STM aktualisiert: ' + CAST(@@ROWCOUNT AS NVARCHAR(10)) + ' Zeile(n)';
UPDATE CNF
SET CNF_DATA = REPLACE(CONVERT(NVARCHAR(MAX), CNF_DATA), @SearchUrl, @ReplaceUrl)
WHERE CNF_KEY = 'OpenIdClients'
AND CONVERT(NVARCHAR(MAX), CNF_DATA) LIKE '%' + @SearchUrl + '%';
PRINT 'CNF (OpenIdClients) aktualisiert: ' + CAST(@@ROWCOUNT AS NVARCHAR(10)) + ' Zeile(n)';
UPDATE CNF
SET CNF_DATA = REPLACE(CONVERT(NVARCHAR(MAX), CNF_DATA), @SearchUrl, @ReplaceUrl)
WHERE CNF_KEY LIKE '%ServerTokenConfig%'
AND CONVERT(NVARCHAR(MAX), CNF_DATA) LIKE '%' + @SearchUrl + '%';
PRINT 'CNF (ServerTokenConfig) aktualisiert: ' + CAST(@@ROWCOUNT AS NVARCHAR(10)) + ' Zeile(n)';
END
ELSE
BEGIN
PRINT 'ApiServerId endet NICHT auf "test" -> keine Aenderung';
END
-- Zur Kontrolle vor dem Commit:
SELECT STM_KEY, CONVERT(NVARCHAR(MAX), STM_VALUE) AS STM_VALUE
FROM STM
WHERE CONVERT(NVARCHAR(MAX), STM_VALUE) LIKE '%sts3.%.cmicloud.ch%';
SELECT CNF_KEY, OBJ_ID, CONVERT(NVARCHAR(MAX), CNF_DATA) AS CNF_DATA
FROM CNF
WHERE CONVERT(NVARCHAR(MAX), CNF_DATA) LIKE '%sts3.%.cmicloud.ch%';
-- Prüfen und dann eines von beiden ausführen:
-- COMMIT TRAN;
-- ROLLBACK TRAN;
Ablauf:
- Führen Sie das Script in einer SQL-Management-Konsole (z.B. SQL Server Management Studio) auf Ihrer Mandanten-Datenbank aus.
- Prüfen Sie die Ausgaben (
PRINT) und die beiden Kontroll-Abfragen am Ende — die URL inSTMundCNFmuss neusts3.stage.cmicloud.chsein. - Bei korrektem Resultat führen Sie
COMMIT TRAN;aus. Im Fehlerfall verwenden SieROLLBACK TRAN;. - Starten Sie den CMI Server wieder.
FAQ
Seit der Umstellung erhalte ich bei der Anmeldung am Web- oder Desktop-Client die Meldung "Redirect-URI not allowed". Was kann ich tun?
Durch die Migration ändert sich für Test-Mandanten die STS3-URL. Verwenden Sie für die Anmeldung einen externen Identity Provider (z.B. Microsoft 365 / Entra ID), müssen Sie dort die neue Redirect-URI hinterlegen. Siehe Abschnitt Full Cloud sowie die Anleitungen unter Konfiguration von Entra ID und Identity Provider (IDP).