Warning: printf(): Too few arguments in /www/htdocs/w00f3c65/wp-content/themes/toommorel-lite-132/tag.php on line 11
22 FebSalesforce Freigaberegeln mit APEX
In einem vergangenen Blogpost habe ich zusammengestellt wie man sich in Salesforce die Freigaberegeln definieren kann und habe darauf viele Rückfragen bezüglich APEX bekommen, daher will ich diesem Thema mal hier näher auf den Grund gehen:
Wie funktionieren die Freigaben im Detail – und wie kann man auf die Regeln per APEX zugreifen bzw. diese erstellen?
Das Prinzip ist so einfach wie genial. Um das zu verstehen müssen wir einen kurzen (sehr kurzen!) Ausflug in die Datenbank von Salesforce machen:
Für jedes Objekt für das die Unternehmensweiten Standardeinstellungen NICHT “öffentlicher Lese-/Schreibzugriff” ist, wird eine weiteres Objekt angelegt in dem die Freigaben abgelegt werden. Über die Admin-Bedienoberfläche ist das aber nicht sichtbar. Um darauf zuzugreifen bedient man sich Admin-Tool (z.B. Eclipse, Develpper Konsole, SoqlXplorer etc.) und findet dort das entsprechende Objekt.
Ich habe für Euch die Account-Sicherheitseinstellungen auf privat gesetzt und EINE einzige Freigaberegel erstellt und Euch mit dem SoqlXplorer einen Screenshot gemacht:
Was dann in der Datenbank abgelegt wird ist nicht etwa die Regel selbst, sondern es wird für jeden (!) Account für den eine Freigaberegel erstellt wurde diese in die Sharing-Tabelle eingetragen. In diesem Beispiel wurde also aus einer Regel 12 Einträge.
Das ist auch der Grund weshalb man immer die Meldung bekommt, dass die Regeln “berechnet” werden und das etwas dauern kann nach dem Speichern. Denn Salesforce übersetzt die von Euch erstellten Freigaberegeln auf die Accounts und trägt diese dann in die Tabelle ein. Bei riesigen Datenmengen und entsprechend vielen Usern kann das schon mal richtig viel werden und entsprechend lange dauern.
So, und wie greift man jetzt auf die Tabelle per APEX zu? Ganz einfach: Ihr habt die Chance selbst dort Einträge vorzunehmen bzw. diese auch wieder zu löschen. In der Praxis sieht das dann so aus, dass man (bleiben wir beim Beispiel Account) bei jedem Speichern/Erstellen/Löschen einen Trigger startet, der die Sharing-Regeln in der Tabelle überarbeitet bzw. einträgt.
Ihr legt dort fest welcher User oder welche Gruppe (Vorsicht, das sind keine Chatter-Gruppen, sondern öffentliche Gruppen!) welchen Zugriff auf den Datensatz bekommt.
Mein Tip war und bleibt: Man kommt fast immer mit den Standard-Regeln aus. Erst wenn diese zu 100% ausgenutzt worden sind und Ihr Freigaben braucht, die man einfach nicht anders machen kann, solltet Ihr die APEX-Regeln nutzen.
Was ist Eure Best-Practice?
19 AugJeder sieht nur was er soll – Freigaberegeln entmystifiziert
So ziemlich jeder Kunde hat den Wunsch in seiner Software genau zu regeln wer von den Mitarbeitern welche Daten sehen darf.
Die Möglichkeiten die Freigaberegeln von Datensätzen zu definieren sind sehr vielfältig und haben mich dazu bewogen hier mal zusammenfassen zu schildern welche Wege Euch zur Verfügung stehen wenn Ihr die Freigaben verwalten wollt.
Der Einstieg: Unternehmensweite Standardeinstellungen
Hinter dem im deutschen nicht so richtig prickelnden Begriff steckt eine absolut essentielle Funktionalität. Nicht umsonst wird darauf in der Administrator-Prüfung sehr ausführlich eingegangen.
Recht oder Zugriffsreche in Salesforce zu vergeben funktioniert immer nach dem generellen Muster:
Es gibt eine Standardeinstellung und man kann Benutzern weitere Rechte hinzugeben. Daher ist es wichtig die Grundeinstellungen richtig zu setzen. Wenn die ganze Firma Account-Daten lesen und schreiben sollen darf, dann wäre die Standardeinstellung entsprechend – und es gebe keinen weiteren Grund mehr für zusätzliche Freigaberegeln.
Ihr habt grundsätzlich 3 Möglichkeiten (es gibt wenige Ausnahmen auf die ich hier nicht eingehen möchte):
- Privat – Nur der Datensatzinhaber hat Zugriff auf den Datensatz
- Öffentlicher Lesezugriff – Die ganze Firma hat lesende Rechte auf den Datensatz, nur der Datensatzinhaber hat das Recht ihn zu editieren
- Öffentlicher Lese-/Schreibzugriff – Alle in der Firma haben Zugriff auf den Datensatz und dürfen ihn bearbeiten
Wenn ihr einen der ersten beiden Einstellungen für Eure Objekte ausgewählt habt, dann gibt es noch weitere Orte an denen Ihr den Benutzern freigaben erteilen könnt – und darum soll sich dieses Blog drehen.
Um alle Punkte im Detail mit Praxisbeispielen zu erörtern würde sich eher ein Buch anbieten als ein Blog, gedacht ist das Blog an dieser Stelle zum Einstieg und zum Überblick:
1. Freigaberegeln – der Klassiker
Am bekanntesten dürften die Freigaberegeln sein. Im Setup kann man unter Freigaberegeln die unternehmensweiten Einstellungen vornehmen und auch gleich ausnahmen definieren. Abhängig von jedem (!) Feld auf Eurem Datensatz könnt Ihr Regeln definieren wer zusätzlich die Daten sehen kann.
Ein Klassiker deshalb, weil man in 90% der Fälle damit schon am Ziel ist und die Freigaben für ganze Gruppen, Teams und Rollen aus Eurem Org-Chart geben könnt. Probiert es mal aus.
2. Manuelle Freigaben
Wenn Ihr den Button “Manuelle Freigabe” in Eurem Layout habt und der Benutzer das Recht hat Freigaben zu erteilen, dann könnt Ihr so Euren Benutzern individuell das Recht geben Datensätze Kollegen freizugeben. Es ist halt kein automatisierter Prozess, sondern für alle Sonderfälle gedacht und gemacht bei denen Ihr explizit keine Automatisierung wollt.
3. Account Teams – Auch für Opportunities und Cases
Ebenfalls ein manueller Prozess: Wenn Ihr in größeren Teams arbeitet, dann bietet es sich eventuell an mit Account Teams zu arbeiten. Wenn Ihr einen Kollegen in Euer Account Team aufnehmt, dann gebt ihr ihm Zugriff auf den Account selbst und nach Wunsch auch direkt Zugriff auf die Opportunities und die Cases. Ob Vollzugriff oder nicht: Einstellungssache.
TIP: Wenn Ihr das öfter nutzt, dann definiert Euch bei Eurem User Euer Standard Account Team. So tut Ihr Euch leichter Euer Team hinzuzufügen.
4. Opportunity Teams
Ähnlich wie Account Teams könnt Ihr auf Euren Opportunities Teams definieren mit denen Ihr arbeiten wollt und die Zugriff auf Euren Datensatz bekommen. Ist so ähnlich wie manuelles Sharing, aber mit dem Zusatz, dass Ihr den Kollegen (und Partnern) Rollen geben könnt, die Euch die Zusammenarbeit vereinfacht.
5. Rollenhierarchy – Zugriff auf Opportunities
Recht unbekannt ist, dass man auch im Org-Chart definieren kann wie der Zugriff auf Opportunities ist deren Account-INHABER man selbst ist. Ich selbst empfehle immer die Einstellung so zu setzen, dass man Zugriff auf alle Opportunities. Nur in Ausnahmefällen macht es Sinn anders vorzugehen.
6. Territories – Zugriff auf ein komplettes Gebiet
Zunächst müssen die Territories von Salesforce über ein Ticket aktiviert werden. Wenn Ihr das getan habt und diese nutzt, dann vergesst bitte nicht, dass auf diese genutzt werden können für Freigaben in Eurem Territory: Generell sehr Ihr alle Accounts in Eurem Territory, aber auch der Zugriff auf Kontakte, Opportunities und Cases kann hier geregelt werden.
Der Einsatz von Territories sollte genau abgewogen werden. Wenn Ihr tatsächlich in Teams arbeitet, kann der Einsatz mehr als Sinn machen. Probiert es am Besten mal in einer Development-Umgebung oder Sandbox vorab aus – niemals in Produktion, das es sich aktuell nicht wieder abschalten lässt!
7. APEX Freigaberegeln
Solltet Ihr mit den Freigaberegeln und den anderen Möglichkeiten tatsächlich an Grenzen stossen (was mir selbst noch nicht passiert ist), dann steht Euch der Weg offen über Code nach Eurem wohlgefallen Regeln zu erstellen und Freigaben zu erteilen.
Mein Fazit
Die Einsatzmöglichkeiten von Freigaben sind sehr vielfältig und quasi unlimitiert. Versucht wenn möglich mit den Sandard-Einstellungen auszukommen, die sehr, sehr mächtig sind.
Nutzt die anderen Möglichkeiten nach Bedarf, bedenkt aber bitte auch, dass Ihr als Admins das auch pflegen müsst und dann erteilte Freigaben im Zweifelsfall an neue Kollegen übertragen müsst.
Daher mein Rat (wie bei so vielem): Wägt die Möglichkeiten gut ab und entscheidet Euch dann für wenige der oben genannten Optionen. Ihr wollt ja lange Freude an Eurer Salesforce-Umgebung haben.
Was sind Eure Erfahrungen? Wie geht Ihr vor?