Administration 29 September 2026 7 min read

Power Pages Terms & Conditions: The Complete Setup (and the Silent Failure Everyone Hits)

Terms & Conditions in Power Pages: the one site setting, the content snippet that matters, and why the dialog silently never appears when one field is empty.

Terms & Conditions are rarely optional in a customer portal: GDPR, consent, legal traceability. Power Pages ships a built-in feature that forces users to accept them at sign-in.

Setup looks like five minutes of site settings, but it has a trap that throws no error: if one particular content snippet is empty, the dialog simply doesn't appear. No error, no warning, no console message.

This post walks through the complete setup, verified against the Microsoft docs, the silent failure, and an observation from the demo portal that explains why the dialog still won't show for your already-logged-in test user.

The one site setting that drives the dialog

The recurring consent dialog hangs on a single documented setting plus a date:

Site setting Value Meaning
Authentication/Registration/TermsAgreementEnabled true Turns on the consent requirement. Users must agree before they're considered authenticated. Default false.
Authentication/Registration/TermsPublicationDate Date (GMT) Effective date of the current version. Anyone who hasn't accepted after this date is asked again on next sign-in. Without a date: every sign-in.

Both are documented verbatim by Microsoft. One note for honesty: older blogs (and some older portals) also mention Authentication/Registration/TermsAndConditionsEnabled, a separate registration setting. It is no longer described in the current Power Pages docs. For the recurring feature, rely on TermsAgreementEnabled + TermsPublicationDate.

Practical observation, not from the docs: set TermsPublicationDate to a date in the past. A future date logically means no one can have "accepted after this date" yet, so the trigger won't fire as expected. Use GMT format, e.g. 2026-09-28T00:00:00Z.

The content snippet everyone forgets

This is where the trap sits. The dialog needs content, and that comes from content snippets:

Snippet Type Default
Account/Signin/TermsAndConditionsCopy HTML empty - the actual terms text, required
Account/Signin/TermsAndConditionsHeading Text "Terms and Conditions"
Account/Signin/TermsAndConditionsAgreementText Text "I agree to these terms and conditions."
Account/Signin/TermsAndConditionsButtonText Text "Continue"

TermsAndConditionsCopy is, per the docs, empty by default and must be filled in by an administrator. But if it stays empty, the dialog doesn't appear at all - even though every site setting is correct. No error, no log, nothing. Microsoft documents that the snippet must be filled, but nowhere warns that an empty snippet silently disables the whole feature.

I reproduced exactly this in the demo portal: settings true, date in the past, contact's agreement date empty - and the page loaded with no dialog. Only after creating the Copy snippet did it appear:

The Power Pages Terms and Conditions page with rendered text, an agreement checkbox and a Confirm button

Why the dialog still won't show for your test user

An observation from the hands-on that saves a lot of debugging time: the dialog is not an overlay that checks on every page load. It's served as its own page (/Account/Login/TermsAndConditions) during the sign-in flow, before authentication completes. The docs phrase it as "the next time they sign in".

Consequence: if you test with a user who is already signed in (from a session before you enabled the feature), nothing happens, no matter how often you reload. You have to sign out and back in for the check to run at all. That's the second silent trap next to the empty snippet.

The mechanism behind it

At sign-in, Power Pages compares the effective date with the contact's agreement date. The field on the contact is msdyn_portaltermsagreementdate (not adx_termsagreeddate, as in older sources). As a mechanism, inferred from the documented behavior:

  • Agreement date empty or older than TermsPublicationDate → dialog appears
  • Agreement date newer or equal → no dialog

On confirmation, Power Pages writes the current timestamp to this field.

Updating terms and re-prompting

  1. Update the text in Account/Signin/TermsAndConditionsCopy
  2. Set TermsPublicationDate to today's date (in the past, not the future)
  3. Invalidate the cache
  4. All users whose msdyn_portaltermsagreementdate is older are asked again on next sign-in

External identity providers

An honest note: on how this classic terms feature behaves with external identity providers (Entra External ID, Azure AD B2C), the current docs say nothing. If the login flow runs outside Power Pages and bypasses the portal /signin path, whether the check fires is an open question. Test it, don't assume it. Code-first sites also have a separate, own terms feature - don't confuse the two.

Go-live checklist

  • □ Authentication/Registration/TermsAgreementEnabled = true
  • □ Authentication/Registration/TermsPublicationDate = valid past date (GMT)
  • □ Account/Signin/TermsAndConditionsCopy is not empty
  • □ To test: sign out and back in (the dialog fires at sign-in, not on page load)
  • □ Contact field msdyn_portaltermsagreementdate is empty or older than the effective date

If any one of these is off, the dialog stays away - silently.

Related articles

Sources

Tino Rabe

Tino Rabe

Power Pages Spezialist · Former Microsoft MVP

Power Pages specialist, former Microsoft MVP. I help companies build secure customer portals: architecture workshop, weekly coaching, security audits.

When was your portal last independently reviewed?

Fixed-fee security audit, or just talk it through first.

Book a call