Skip to content

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.

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:

  1. 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).

  1. 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:

  1. eBau-Service On-Premise: Betreiben Sie einen eBau-Service On-Premise, passen Sie die STS3-URL in dessen Konfiguration von sts3.prod.cmicloud.ch auf sts3.stage.cmicloud.ch an.

  2. 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 STM und CNF.

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 ApiServerId Ihres Mandanten auf test endet — produktive Mandanten bleiben unberührt. Prüfen Sie trotzdem nach dem Lauf die ausgegebene Kontrollabfrage, bevor Sie COMMIT TRAN ausfü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:

  1. Führen Sie das Script in einer SQL-Management-Konsole (z.B. SQL Server Management Studio) auf Ihrer Mandanten-Datenbank aus.
  2. Prüfen Sie die Ausgaben (PRINT) und die beiden Kontroll-Abfragen am Ende — die URL in STM und CNF muss neu sts3.stage.cmicloud.ch sein.
  3. Bei korrektem Resultat führen Sie COMMIT TRAN; aus. Im Fehlerfall verwenden Sie ROLLBACK TRAN;.
  4. 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).