März 2026

Rollup-Feld aktualisiert sich nicht: so erzwingen Sie die Neuberechnung in Dataverse

Rollup-Felder in Dataverse rechnen asynchron im Hintergrund. Warum Werte verzögert erscheinen und wie Sie die Neuberechnung sofort auslösen.

Jan Bettinger
COO & CPO
Dataverse Rollup-Feld mit Recalculate-Symbol auf einem Dynamics-365-Formular

Ein Rollup-Feld in Dataverse zeigt scheinbar den falschen Wert, obwohl die zugrunde liegenden Datensätze längst aktualisiert sind. Das ist meist kein Fehler, sondern erwartetes Verhalten: Rollup-Felder werden nicht in Echtzeit berechnet, sondern von asynchronen Systemjobs im Hintergrund. Standardmäßig läuft die Neuberechnung erst 12 Stunden nach dem Anlegen oder Ändern der Spalte. Dieser Artikel erklärt, wie Rollups arbeiten, warum die Werte verzögert erscheinen, welche Grenzen es gibt und wie Sie eine sofortige Neuberechnung erzwingen.

Wie Rollup-Felder in Dataverse funktionieren

Ein Rollup-Feld enthält einen Aggregatwert, der über die zu einem Datensatz gehörenden Zeilen berechnet wird, etwa die Summe der offenen Umsätze aller Verkaufschancen eines Kontos. Als Aggregatfunktionen stehen ausschließlich SUM, COUNT, MIN, MAX und AVG zur Verfügung, wie Microsoft Learn zu Rollup-Spalten dokumentiert. Die Berechnung kann optional über eine Hierarchie laufen, also über die untergeordneten Datensätze eines Baumes von Konten oder Verkaufschancen.

Wichtig für das Verständnis: Zu jeder Rollup-Spalte legt Dataverse zwei Begleitspalten an, eine mit dem Suffix _date und eine mit _state. Die _date-Spalte hält den Zeitpunkt der letzten Berechnung fest, die _state-Spalte den Status. Steht dort der Wert 1 (Calculated), ist der Wert aktuell zum Zeitpunkt in _date. Genau dieser Zeitstempel erklärt, warum ein Rollup „hinterherhinkt": Er zeigt nicht den Live-Zustand, sondern das Ergebnis des letzten Berechnungslaufs.

Warum sich der Wert verzögert: die zwei Systemjobs

Die Berechnung übernehmen wiederkehrende, asynchron im Hintergrund laufende Systemjobs. Administratoren finden und verwalten sie unter Einstellungen, dann Systemaufträge, in der Ansicht der wiederkehrenden Systemaufträge. Zwei Jobtypen teilen sich die Arbeit.

Mass Calculate Rollup Field

Dieser Job wird pro Rollup-Spalte angelegt und berechnet alle vorhandenen Datensätze der Spalte einmalig neu. Er läuft standardmäßig 12 Stunden nach dem Anlegen oder Ändern der Spalte. Ändern Sie die Definition erneut, wird der Timer wieder auf 12 Stunden zurückgesetzt. Der Sinn dieser Verzögerung ist Rücksicht auf die Systemlast: Die Massenberechnung soll in den ruhigen Stunden der Umgebung laufen, idealerweise nachts. Ist der Lauf abgeschlossen und ändert sich an der Spalte danach nichts mehr, plant Dataverse den nächsten Termin bewusst 10 Jahre in die Zukunft, weil es ohne Änderungen nichts neu zu rechnen gibt.

Calculate Rollup Field

Von diesem Job gibt es genau einen pro Tabelle. Er arbeitet inkrementell und verarbeitet nur die Zeilen, die seit dem letzten abgeschlossenen Mass-Lauf erstellt, geändert oder gelöscht wurden. Die minimale Wiederholung liegt bei einer Stunde. Der Job entsteht automatisch mit der ersten Rollup-Spalte einer Tabelle und verschwindet, wenn die letzte gelöscht wird. Für die Praxis heißt das: Nach einer Datenänderung kann es bis zu rund eine Stunde dauern, bis der Rollup den neuen Wert zeigt, sofern Sie nicht manuell nachhelfen.

Als Administrator können Sie das Wiederholungsmuster anpassen, den Job vorziehen (Postpone auf einen früheren Zeitpunkt), pausieren oder fortsetzen. Löschen oder endgültig abbrechen lässt sich ein Rollup-Job dagegen nicht. Läuft eine Berechnung schief, meldet der zugehörige Systemauftrag den Fehler, der sich über den _state-Wert des Datensatzes einordnen lässt, etwa OverflowError oder RetryLimitExceeded.

Die Grenzen von Rollup-Feldern

Viele vermeintliche Aktualisierungsprobleme sind in Wahrheit konzeptionelle Grenzen. Wer sie kennt, wählt von vornherein das richtige Werkzeug.

  • Nur bestimmte Aggregationen: SUM, COUNT, MIN, MAX und AVG. Alles darüber hinaus geht mit Rollups nicht.
  • Keine Rollups über Rollups: Ein Rollup darf sich nicht auf eine andere Rollup-Spalte stützen, und er kann keine berechnete Spalte referenzieren, die ihrerseits eine weitere berechnete Spalte nutzt.
  • Nur 1:N-Beziehungen: Aggregiert wird über direkte 1:N-Beziehungen. Über N:N-Beziehungen ist kein Rollup möglich.
  • Kein Workflow-Trigger: Die Aktualisierung einer Rollup-Spalte kann keinen klassischen Workflow auslösen, und ein Workflow kann in einer Wartebedingung nicht auf einen Rollup-Wert warten.
  • Nur direkte Beziehungen zählen: Anders als ein zugeordnetes Grid im Formular berücksichtigt der Rollup ausschließlich die in der Definition explizit angegebene Beziehung. Die Zahl im Rollup kann daher bewusst von der Zeilenzahl im Grid abweichen.
  • Mengengrenzen: Standardmäßig sind 200 Rollup-Spalten pro Umgebung und 50 pro Tabelle erlaubt. Mehr als 100 pro Umgebung kann die Performance spürbar verschlechtern.

So erzwingen Sie die sofortige Neuberechnung

Für den Alltag gibt es mehrere Wege, den aktuellen Wert sofort zu erhalten, statt auf den nächsten Systemjob zu warten.

Das Recalculate-Symbol auf dem Formular

Der schnellste Weg für einen einzelnen Datensatz: Auf dem Formular zeigt die Rollup-Spalte ein kleines Taschenrechner-Symbol samt Wert und Zeitpunkt der letzten Berechnung. Ein Klick darauf blendet die Schaltfläche Neu berechnen ein, die den Wert für diesen Datensatz sofort aktualisiert. Dabei gelten allerdings feste Grenzen: Die Online-Neuberechnung verarbeitet maximal 50.000 verbundene Zeilen und eine Hierarchietiefe von 10. Wird eine dieser Grenzen überschritten, verweigert Dataverse die Rechnung mit einer Fehlermeldung. Außerdem funktioniert die Option nur online, nicht im Offline-Modus, und Sie brauchen Schreibrechte auf der Quelltabelle.

CalculateRollupField per Web API oder SDK

Programmatisch erzwingen Sie die Neuberechnung eines Datensatzes über die Funktion CalculateRollupField. In der Dataverse Web API übergeben Sie die beiden Parameter Target (Verweis auf den Datensatz) und FieldName (der logische Name der Rollup-Spalte). In klassischem .NET-Code entspricht das der CalculateRollupFieldRequest. Beide liefern den frisch berechneten Wert zurück, ohne den Systemjob abzuwarten.

Auslösung per Power Automate oder Plugin

Weil sich CalculateRollupField als ungebundene Aktion aufrufen lässt, können Sie die Neuberechnung bequem aus einem Power-Automate-Flow heraus anstoßen, etwa nach jeder Änderung eines untergeordneten Datensatzes. Muss der Wert dagegen sofort und innerhalb derselben Transaktion stimmen, ruft ein Plugin dieselbe Nachricht serverseitig auf. Die grundsätzliche Abwägung, welche Logik als Flow und welche als Code gehört, behandeln wir im Beitrag zu Business Rule, JavaScript, Plugin oder Cloud Flow.

Wann berechnete Felder oder ein Plugin die bessere Wahl sind

Wenn Sie ständig manuell neu berechnen müssen, ist der Rollup oft das falsche Werkzeug. Zwei Alternativen lösen das Verzögerungsproblem an der Wurzel.

KriteriumRollup-FeldBerechnetes FeldPlugin
AktualisierungAsynchron, SystemjobIn Echtzeit beim AbrufSynchron in der Transaktion
Aggregation über Kind-DatensätzeJa (SUM, COUNT, MIN, MAX, AVG)NeinFrei programmierbar
Code nötigNeinNeinJa (.NET)
Komplexe Logik, N:NNeinBegrenztJa
WartungsaufwandGeringGeringHöher

Ein berechnetes Feld (Calculated Column) wird beim Abruf in Echtzeit ausgewertet und kennt daher keine Verzögerung. Es eignet sich für Werte aus dem eigenen oder einem übergeordneten Datensatz, etwa gewichteter Umsatz aus Wert mal Wahrscheinlichkeit. Es kann jedoch nicht über untergeordnete Zeilen aggregieren, ist auf maximal fünf verkettete berechnete Spalten begrenzt und spannt höchstens zwei Tabellen. Wie Sie solche Felder sinnvoll modellieren, zeigt der Leitfaden zu benutzerdefinierten Feldern in Dynamics 365.

Ein Plugin ist die richtige Wahl, wenn die Aggregation über das hinausgeht, was ein Rollup kann: bei komplexer Logik, bei N:N-Beziehungen oder wenn der Summenwert sofort und synchron beim Speichern eines Kind-Datensatzes stehen muss. Der Preis dafür ist höherer Entwicklungs- und Wartungsaufwand, weshalb Sie ein Plugin nur einsetzen sollten, wenn die konfigurierbaren Optionen wirklich nicht ausreichen.

Empfehlung für die Praxis

Behandeln Sie den verzögerten Rollup-Wert zuerst als das, was er meistens ist: normales, asynchrones Verhalten. Prüfen Sie über den _date-Zeitstempel und die Systemaufträge, wann zuletzt gerechnet wurde. Brauchen einzelne Nutzer punktuell den aktuellen Stand, genügt das Recalculate-Symbol. Muss die Aktualisierung automatisiert und zeitnah geschehen, lösen Sie CalculateRollupField per Flow oder Plugin aus. Und wenn Sie merken, dass Sie ständig gegen die Verzögerung ankämpfen, ist wahrscheinlich ein berechnetes Feld oder ein Plugin die sauberere Lösung.

Wenn Sie unsicher sind, ob Ihr Szenario ein Rollup, ein berechnetes Feld oder ein Plugin verlangt, sprechen Sie uns an. Wir bewerten Ihr Datenmodell und bauen eine Lösung, die zuverlässig und wartbar bleibt.

Häufig gestellte Fragen

Warum aktualisiert sich mein Rollup-Feld in Dataverse nicht sofort?

Weil Rollup-Felder nicht in Echtzeit, sondern von asynchronen Systemjobs im Hintergrund berechnet werden. Nach dem Anlegen oder Ändern einer Rollup-Spalte plant Dataverse den Job Mass Calculate Rollup Field standardmäßig 12 Stunden in die Zukunft, damit die rechenintensive Neuberechnung außerhalb der Hauptnutzungszeiten läuft. Zwischen den Läufen zeigt das Feld immer den zuletzt berechneten Wert.

Wie erzwinge ich die sofortige Neuberechnung eines Rollup-Felds?

Für einen einzelnen Datensatz klicken Sie auf dem Formular auf das kleine Taschenrechner-Symbol neben dem Rollup-Wert und dann auf Neu berechnen. Programmatisch nutzen Sie die Web-API-Funktion CalculateRollupField mit den Parametern Target und FieldName oder in klassischem Code die CalculateRollupFieldRequest. Beide lassen sich aus einem Power-Automate-Flow oder einem Plugin heraus aufrufen.

Was ist der Unterschied zwischen Mass Calculate Rollup Field und Calculate Rollup Field?

Mass Calculate Rollup Field ist ein wiederkehrender Job pro Rollup-Spalte, der nach dem Anlegen oder Ändern der Spalte einmalig alle vorhandenen Datensätze neu berechnet. Calculate Rollup Field gibt es genau einmal pro Tabelle. Er läuft standardmäßig mindestens stündlich und verarbeitet inkrementell nur die Zeilen, die seit dem letzten Mass-Lauf erstellt, geändert oder gelöscht wurden.

Welche Grenzen haben Rollup-Felder in Dataverse?

Rollups unterstützen nur die Aggregate SUM, COUNT, MIN, MAX und AVG. Sie funktionieren ausschließlich über 1:N-Beziehungen, nicht über N:N. Ein Rollup über ein anderes Rollup ist nicht möglich. Bei der manuellen Online-Neuberechnung gilt eine Obergrenze von 50.000 verbundenen Zeilen und eine Hierarchietiefe von maximal 10. Pro Umgebung sind standardmäßig 200 und pro Tabelle 50 Rollup-Spalten erlaubt.

Wann sollte ich ein berechnetes Feld oder ein Plugin statt eines Rollups verwenden?

Ein berechnetes Feld ist besser, wenn der Wert sofort und ohne Verzögerung stimmen muss und aus Spalten desselben oder eines übergeordneten Datensatzes stammt, denn es wird beim Abruf in Echtzeit ausgewertet. Ein Plugin ist die richtige Wahl, wenn die Aggregation komplexer ist als SUM, COUNT, MIN, MAX oder AVG, über N:N-Beziehungen geht oder synchron innerhalb der Transaktion greifen soll.

Dynamics 365.
Einfach mit Aliru.

Ihre Ansprechpartner

Julian Kissel

CEO

Jan Bettinger

Kundenberater

Kontaktformular

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.