Wie funktioniert das eigentlich mit den „Gruppen“?

Einer der vielen Vorteile von CiviCRM sind die umfangreichen Möglichkeiten zur Strukturierung unserer Kontaktdaten – allen voran die Möglichkeiten zur Bildung von „Gruppen“.

Das sieht zunächst alles ganz einfach aus – aber es gibt auch ein paar Feinheiten, die immer wieder für Verwirrung sorgen. Nachdem ich in meinen CiviCRM-Implementierungsprojekten öfter danach gefragt wurde, habe ich das mal in diesem Blogartikel zusammengefasst:

Die (statische) Gruppe

Eine (statische) Gruppe kann man sich als Liste vorstellen, in der alle CiviCRM-IDs der Mitglieder der Gruppe stehen. Genauso ist das in der Datenbank auch abgebildet.

Wenn du aus der Gruppe ein Mitglied „entfernst“, dann wird bei einer Abfrage der Gruppenmitglieder dieser Kontakt nicht mehr angezeigt. In der Datenbank passiert nun folgendes: Der Kontakt bleibt in der Liste der CiviCRM-IDs zu dieser Gruppe – aber er wird als „entfernt“ markiert. Wenn man den Kontakt aufruft, und sich die dazugehörigen Gruppen anschaut, dann wird die Gruppenmitgliedschaft unter „Frühere Gruppen“ als „inaktiv“ dargestellt.

Wenn du hingegen die Gruppenzugehörigkeit eines Kontakts löschst, dann wird tatsächlich der Eintrag aus der Liste der Gruppenmitglieder gelöscht – und man kann es dem Kontakt im Nachhinein nicht mehr ansehen, dass er schon einmal Mitglied der Gruppe war. (Nur zur Vollständigkeit: Wenn ich eine Gruppenzugehörigkeit „lösche“, wird natürlich nicht der Kontakt gelöscht!)

Die dynamische Gruppe

Eine dynamische Gruppe (manchmal auch Smart Group genannt) ist dagegen zunächst einmal eine gespeicherte Suchabfrage. Die Mitglieder der Gruppe bestimmen sich danach, ob die eingegebenen Suchkriterien erfüllt sind. So kann ich zum Beispiel eine Gruppe definieren, in der automatisch immer alle Kontakten stehen, die innerhalb der letzten 12 Monate eine Zuwendung an meine Organisation gezahlt haben.

Auch hier sind ein paar Besonderheiten zu berücksichtigen: Auch bei einer dynamischen Gruppe gibt es eine „Liste“, in der CiviCRM-IDs stehen können. Und wie bei einer statischen Gruppe können auch dort Mitglieder hinzugefügt werden. Es können also einer „gespeicherten Suchabfrage“ auch Kontakte hinzugefügt werden, welche die Suchkriterien eigentlich gar nicht erfüllen.

Umgekehrt können auch Mitglieder entfernt werden – dann wird ein Kontakt bei Abfragen auf die Gruppe nicht mehr angezeigt, obwohl er die Suchkriterien an sich erfüllen würde.

Ob diese „Entfernen“-Funktionalität in der Praxis wirklich sinnvoll ist, weiß ich nicht so recht – ich persönlich finde sie eher unübersichtlich und verwende sie daher kaum.

Anders als bei statischen Gruppen, kann bei dynamischen Gruppen ein Kontakt nicht aus der Gruppe gelöscht werden: Denn dann steht er ja nicht mehr in der „Gruppenliste“ mit den Sonderfällen, und würde bei Erfüllen des Suchkriteriums wieder angezeigt werden – und das ist ja gerade NICHT erwünscht.

Es gibt auch noch weitere Besonderheiten der dynamischen Gruppen, die hauptsächlich aus Performance-Gründen in die Software eingebaut wurden: Die Zuordnung zu den Gruppen wird nämlich nicht bei jedem Aufruf neu berechnet - sondern in einem Zwischenspeicher („Cache“) gespeichert. Und dieser Cache wird nur in bestimmten Abständen und bei bestimmten Aktionen neu berechnet.

Wenn du den Eindruck hast, dass deine dynamischen Gruppen nicht korrekt arbeiten, dann schau doch mal in Administration → Systemeinstellungen → Geplante Jobs, ob dort der Job „Rebuild Smart Group Cache“ aktiviert ist: Der sollte mindestens täglich laufen!