Nutzungsbedingungen sind in einem Kundenportal selten optional: DSGVO, Einwilligung, rechtliche Nachweisbarkeit. Power Pages bringt dafuer ein eingebautes Feature mit, das den Nutzer beim Anmelden zur Zustimmung zwingt.
Die Einrichtung sieht nach fuenf Minuten Site Settings aus, hat aber eine Falle, die keinen Fehler wirft: Ist ein bestimmtes Content Snippet leer, erscheint der Dialog schlicht nicht. Kein Fehler, keine Warnung, keine Konsolenmeldung.
Dieser Beitrag zeigt den kompletten, gegen die Microsoft-Doku geprueften Aufbau, den stillen Fehler und eine Beobachtung aus dem Demo-Portal, die erklaert, warum der Dialog bei Ihrem eingeloggten Testnutzer trotzdem ausbleibt.
Das eine Site Setting, das den Dialog steuert
Der wiederkehrende Zustimmungs-Dialog haengt an einem einzigen dokumentierten Setting plus einem Datum:
| Site Setting | Wert | Bedeutung |
|---|---|---|
| Authentication/Registration/TermsAgreementEnabled | true | Schaltet die Zustimmungspflicht ein. Nutzer muessen zustimmen, bevor sie als authentifiziert gelten. Default false. |
| Authentication/Registration/TermsPublicationDate | Datum (GMT) | Stichtag der aktuellen Fassung. Wer nach diesem Datum nicht zugestimmt hat, wird beim naechsten Sign-in erneut gefragt. Ohne Datum: bei jedem Sign-in. |
Beides ist woertlich so in der Microsoft-Doku belegt. Ein Hinweis zur Ehrlichkeit: In aelteren Blogs (und teils in aelteren Portalen) taucht zusaetzlich Authentication/Registration/TermsAndConditionsEnabled auf, ein separates Registrierungs-Setting. In der aktuellen Power-Pages-Doku ist dieses Setting nicht mehr beschrieben. Verlassen Sie sich fuer das wiederkehrende Feature auf TermsAgreementEnabled + TermsPublicationDate.
Praktische Beobachtung, nicht aus der Doku: Setzen Sie TermsPublicationDate auf ein Datum in der Vergangenheit. Ein Zukunftsdatum bedeutet logisch, dass "nach diesem Datum" noch niemand zugestimmt haben kann, der Trigger greift dann nicht wie erwartet. Format als GMT, z. B. 2026-09-28T00:00:00Z.
Das Content Snippet, das jeder vergisst
Hier sitzt die Falle. Der Dialog braucht Inhalt, und der kommt aus Content Snippets:
| Snippet | Typ | Default |
|---|---|---|
| Account/Signin/TermsAndConditionsCopy | HTML | leer - der eigentliche Bedingungstext, Pflicht |
| Account/Signin/TermsAndConditionsHeading | Text | "Terms and Conditions" |
| Account/Signin/TermsAndConditionsAgreementText | Text | "I agree to these terms and conditions." |
| Account/Signin/TermsAndConditionsButtonText | Text | "Continue" |
TermsAndConditionsCopy ist laut Doku standardmaessig leer und muss vom Administrator gefuellt werden. Nur: Bleibt es leer, erscheint der Dialog gar nicht - obwohl alle Site Settings korrekt stehen. Kein Fehler, kein Log, nichts. Microsoft dokumentiert zwar, dass das Snippet gefuellt werden muss, warnt aber an keiner Stelle davor, dass ein leeres Snippet das gesamte Feature still aushebelt.
Genau das habe ich im Demo-Portal nachgestellt: Settings auf true, Datum in der Vergangenheit, Zustimmungsdatum des Kontakts leer - und die Seite laedt ohne jeden Dialog. Erst nach dem Anlegen des Copy-Snippets erscheint er:
Warum der Dialog bei Ihrem Testnutzer trotzdem fehlt
Eine Beobachtung aus dem Hands-on, die viel Debugging-Zeit spart: Der Dialog ist kein Overlay, das bei jedem Seitenaufruf prueft. Er wird als eigene Seite (/Account/Login/TermsAndConditions) waehrend des Sign-in-Flows ausgeliefert, bevor die Anmeldung abgeschlossen ist. Die Doku formuliert es als "the next time they sign in".
Konsequenz: Wenn Sie mit einem Nutzer testen, der bereits angemeldet ist (aus einer Session vor dem Aktivieren), passiert nichts, egal wie oft Sie neu laden. Sie muessen sich ab- und wieder anmelden, damit die Pruefung ueberhaupt laeuft. Das ist der zweite stille Stolperstein neben dem leeren Snippet.
Die Mechanik dahinter
Beim Sign-in vergleicht Power Pages den Stichtag mit dem Zustimmungsdatum des Kontakts. Das Feld am Kontakt heisst msdyn_portaltermsagreementdate (nicht adx_termsagreeddate, wie in aelteren Quellen). Als Mechanik, hergeleitet aus dem dokumentierten Verhalten:
- Zustimmungsdatum leer oder aelter als
TermsPublicationDate→ Dialog erscheint - Zustimmungsdatum juenger oder gleich → kein Dialog
Beim Bestaetigen schreibt Power Pages den aktuellen Zeitstempel in dieses Feld.
Bedingungen aktualisieren und erneut abfragen
- Den Text in
Account/Signin/TermsAndConditionsCopyaktualisieren TermsPublicationDateauf das heutige Datum setzen (in der Vergangenheit, nicht in der Zukunft)- Cache invalidieren
- Alle Nutzer, deren
msdyn_portaltermsagreementdateaelter ist, werden beim naechsten Sign-in erneut gefragt
Externe Identity Provider
Ein ehrlicher Hinweis: Zum Verhalten dieses klassischen Terms-Features mit externen Identity Providern (Entra External ID, Azure AD B2C) sagt die aktuelle Doku nichts. Wenn der Login-Flow ausserhalb von Power Pages laeuft und die Portal-/signin-Strecke umgeht, ist offen, ob die Pruefung greift. Das gehoert getestet, nicht angenommen. Code-First-Sites haben ausserdem ein separates, eigenes Terms-Feature - nicht mit diesem verwechseln.
Checkliste vor dem Go-Live
- □
Authentication/Registration/TermsAgreementEnabled=true - □
Authentication/Registration/TermsPublicationDate= gueltiges Datum in der Vergangenheit (GMT) - □
Account/Signin/TermsAndConditionsCopyist nicht leer - □ Zum Testen: einmal ab- und wieder anmelden (der Dialog kommt beim Sign-in, nicht beim Seitenaufruf)
- □ Kontaktfeld
msdyn_portaltermsagreementdateist leer oder aelter als der Stichtag
Stimmt einer dieser Punkte nicht, bleibt der Dialog aus - lautlos.
Weiterfuehrende Artikel
Power Pages Authentifizierung erklaert
OAuth 2.0, OpenID Connect, SAML, SSO und Social Login in Power Pages, der Rahmen, in dem der Terms-Dialog beim Sign-in laeuft.
Artikel lesen → SicherheitPower Pages Sicherheitsarchitektur
Table Permissions, Web Roles und das hierarchische Sicherheitsmodell im Detail.
Artikel lesen → SicherheitSicherheit und Compliance in Power Pages
Der groessere Rahmen aus DSGVO, Datenschutz und Governance, in den Nutzungsbedingungen gehoeren.
Artikel lesen →Quellen
- Microsoft Learn: Implement privacy protections – Agreeing to terms and conditions (Site Settings
TermsAgreementEnabled/TermsPublicationDate, die vier Content Snippets, "Copy is empty by default") - Microsoft Learn: Contact table reference (Feld
msdyn_portaltermsagreementdate, Portal Terms Agreement Date) - Hands-on-Nachstellung im Power-Portals-Demo-Portal (Enhanced Data Model), inkl. Silent-Failure bei leerem Copy-Snippet und Sign-in-Trigger