Sie haben eine Power-Pages-Site gebaut. Jetzt will das Marketing 30 neue Content Snippets, in zwei Sprachen. Sie oeffnen die Verwaltung, klicken "Neu", fuellen das Formular, speichern. Klicken "Neu". Fuellen. Speichern. Nach dem zehnten wollen Sie den Laptop aus dem Fenster werfen.
Es geht besser. Das Enhanced Data Model legt Content Snippets in einer Dataverse-Tabelle ab, die sich per Excel exportieren und wieder importieren laesst. Sie bereiten 60 Snippets in einer Tabelle vor und laden sie in einem Rutsch. Kein verstecktes Feature, nur nicht am naheliegenden Ort: Die meisten lernen Power Pages ueber das Design Studio, wo es keine Massenoperationen gibt.
Eine Tabelle fuer (fast) alles: Site Component
Jahrelang lag die Power-Pages-Konfiguration in adx_*-praefixierten Tabellen (adx_contentsnippet, adx_webfile und so weiter). Das Enhanced Data Model (seit 2023/2024 fuer neue Sites) konsolidiert das in eine Dataverse-Tabelle: Anzeigename Site Component, logischer Name powerpagecomponent. Jede Zeile traegt einen Component Type, der sie unterscheidet.
Microsoft dokumentiert die Typen ausdruecklich, unter anderem: Content Snippet (Typ 7), Web Template (8), Site Setting (9), Web Page Access Control Rule (10), Web Page (2), Web File (3), Table Permission (18), Web Role (11) und rund zwei Dutzend weitere. Alles in einer Tabelle.
Zwei Details, die man kennen sollte:
- Ueber der physischen Tabelle
powerpagecomponentliegen pro Typ virtuellemspp_*-Tabellen (mspp_contentsnippet,mspp_webtemplate,mspp_sitesetting, ...). Ueber sie greifen Sie typisiert zu; die Site-Component-Tabelle ist die gemeinsame Basis. Genau deshalb sieht ein Snippet je nach Zugriffsweg unterschiedlich aus. - Die Site-Component-Tabelle wird in Power Apps als read only angezeigt ("this table represents a collection of objects in Dataverse"). Der Export/Import-Weg funktioniert trotzdem, er laeuft ueber genau diese Tabelle.
Das Content-Feld: ein JSON-Umschlag
Fuer eine Content-Snippet-Zeile steckt der Inhalt im Feld Content als JSON:
{"value": "Gespeichert.", "type": 756150000}
| Schluessel | Bedeutung |
|---|---|
| value | Der eigentliche Text bzw. das HTML, das gerendert wird |
| type | 756150000 = Text, 756150001 = HTML |
Ehrlichkeitshinweis: Die Typ-Codes 756150000 (Text) und 756150001 (HTML) sind offiziell dokumentiert (als Optionsset mspp_type). Das JSON-Umschlag-Format des Content-Felds dagegen ist von Microsoft nicht dokumentiert, es ist meine im Demo-Portal live verifizierte Beobachtung. Ueber die typisierte mspp_contentsnippet-Sicht liegen Wert und Typ in getrennten Spalten (mspp_value, mspp_type); in der Site-Component-Tabelle sind sie im Content-JSON zusammengefasst.
Text-Snippets werden escaped ausgegeben (sicher per Default), HTML-Snippets as-is. HTML nur waehlen, wenn Sie wirklich Markup brauchen, sonst handeln Sie sich ohne Not eine XSS-Flaeche ein.
Der Round-Trip
1. Export als Vorlage
In make.powerapps.com die Umgebung waehlen, unter Tabellen die Site Component oeffnen, die Ansicht auf Ihre Snippets (und Ihre Site) filtern, dann Export to Excel / Edit in Excel. Sie erhalten eine .xlsx mit den passenden Zeilen und einer Dataverse-Verbindung.
2. In Excel bearbeiten
Bestehende Snippets: den Wert im Content-Feld aendern. Neue Snippets: Zeilen ergaenzen mit Name (z. B. Common/Status/Saved), Component Type (Content Snippet), Power Pages Site id (der Site-Anzeigename), Content (das JSON oben) und Power Pages Site Language Id (Sprach-Anzeigename, z. B. English, German - Germany).
Wichtig: Die exportierte Datei enthaelt versteckte Pflicht-/Kontrollspalten, die Sie nicht anfassen duerfen (im File als (Do Not Modify) ... beschriftet: Row ID, Row Checksum, Modified On). Microsoft beschreibt sie in der Doku als "required hidden columns", der genaue Wortlaut der Beschriftung ist meine Beobachtung aus dem File. Fuer neue Zeilen bleiben diese Spalten leer, Dataverse vergibt beim Import die IDs.
3. Publish
Publish im Excel-Add-in laedt die Aenderungen zurueck. Neue Zeilen ohne Schluessel werden eingefuegt, bestehende aktualisiert. Zwei belegte Regeln: Zeilen werden nacheinander verarbeitet, ein Fehler in einer Zeile bricht die folgenden ab (vorherige bleiben gespeichert). Und: Wurde ein Datensatz zwischen Export und Import anderswo geaendert, meldet der Import fuer diese Zeile einen Konflikt (Checksum/Modified-On-Staleness).
Stolpersteine
Falsches Dateiformat
Der Export bringt eine Excel-Datei mit Dataverse-Verbindung. Als CSV speichern oder in Numbers/LibreOffice oeffnen kappt die Verbindung, Publish funktioniert nicht mehr. In echtem Excel bleiben (Desktop oder Web).
Kontrollspalten versehentlich fuellen
Wer eine Zeile kopiert, um ein neues Snippet zu bauen, schleppt leicht GUID und Checksum mit. Dann versucht Dataverse ein UPDATE der Quellzeile statt eines INSERT, und Sie haben Ihr altes Snippet umbenannt. Bei neuen Zeilen die Kontrollspalten immer leeren.
Site-Anzeigename statt technischem Namen
Power Pages Site id will den Anzeigenamen. Bei mehreren aehnlich benannten Sites gibt es Mehrdeutigkeitsfehler beim Publish. Vorher die Export-Ansicht auf Ihre Site filtern, das pinnt die Spalte.
Sprach-Anzeigename
Power Pages Site Language Id will ebenfalls den Anzeigenamen (German - Germany, nicht German). Falsch geschrieben, entsteht ein verwaistes Snippet ohne Sprachbindung, ohne Fehlermeldung.
Programmatisch erzeugte Dateien
Bauen Sie das Excel per Skript (openpyxl o. ae.), fehlt die Dataverse-Verbindung. Dann entweder die generierten Zeilen in das echte Dataverse-Excel einfuegen und publishen, oder gleich einen Power-Automate-Flow mit dem Dataverse-Connector nehmen.
Ueber Content Snippets hinaus
Derselbe Mechanismus gilt fuer alle Komponententypen in der Site-Component-Tabelle. Das Content-Format unterscheidet sich je Typ: Site Settings tragen einen einfachen Wert, Web Templates ihren HTML/Liquid-Quelltext. Wer je 50 Site Settings auf einmal aendern wollte, ohne gegen die Web API zu skripten: das ist die Antwort.
Fuer echtes CI/CD ist der Excel-Weg aber der falsche: dort gehoeren Solution-Deployment oder Power-Automate-Flows hin. Der Excel-Round-Trip ist fuer Menschen, fuer Bulk-Lokalisierung, initiales Setup und kleine Cross-Environment-Uebernahmen.
Weiterfuehrende Artikel
Der Maker's Guide fuer Power Pages Daten
Die vier Datenwerkzeuge in Power Pages: Lists, Forms, Basic Forms und die Dataverse Web API.
Artikel lesen → EntwicklungDas Render-Mutate-Refresh-Muster
Ein Architekturmuster fuer datengebundene Power-Pages-Komponenten, oft mit vielen Snippets im Zusammenspiel.
Artikel lesen → EntwicklungLiquid FetchXML vs. Web API
Entscheidungsbaum, Performance-Vergleich und Security-Muster zwischen den beiden Datenzugriffswegen.
Artikel lesen →Quellen
- Microsoft Learn: Migrate to the enhanced data model (Site Component /
powerpagecomponent, Component-Type-Liste, adx_-Legacy) - Microsoft Learn: powerpagecomponent (Site Component) table reference
- Microsoft Learn: mspp_contentsnippet table reference (
mspp_type756150000 Text / 756150001 HTML) - Microsoft Learn: Edit table data in Excel (Excel Add-in) und Import/Export from Excel
- Hands-on-Verifikation im Power-Portals-Demo-Portal: Site-Component-Tabelle mit allen Komponententypen und JSON-
Content-Feld live geprueft