Logo TucarioThe Tucario Blog

Udostępnianie zespołowe na obiektach niestandardowych: jak wyjść poza natywne ograniczenia Salesforce [przewodnik]

Natywne zespoły Salesforce działają wyłącznie na obiektach Account, Opportunity i Case. Zobacz, jak rozszerzyć udostępnianie zespołowe na dowolny obiekt niestandardowy — bez ani jednej linijki Apex.

Michał Bajdek

Współzałożyciel, Tucario

5 min czytania

Udostępnij artykuł

Kluczowe wnioski

  • Natywne zespoły Salesforce nie obsługują obiektów niestandardowych. Out of the box dostępne są wyłącznie Account Teams, Opportunity Teams i Case Teams.
  • Flexible Team Share przenosi model zespołowy na dowolny obiekt. Ten sam znajomy schemat: role, poziomy dostępu, członkostwo w zespole. Działa na Project__c, Engagement__c i każdym obiekcie, który zbudowaliście.
  • Użytkownicy biznesowi sami zarządzają swoimi zespołami. Bez zgłoszeń do administratora, bez cykli wdrożeniowych. Właściciel zespołu dodaje i usuwa członków bezpośrednio.
  • Zero kodu. W odróżnieniu od Apex managed sharing nie ma tu nic do napisania ani utrzymywania.

Flexible Team Share przenosi natywny model zespołów Salesforce na dowolny obiekt — standardowy lub niestandardowy. Skoro potraficie utworzyć zespół na koncie (Account), potraficie utworzyć go także na projekcie, zleceniu czy dowolnym rekordzie, który wymaga wspólnej pracy. Właściciel zespołu sam zarządza jego składem, każda rola przekłada się na poziom dostępu, a gdy ktoś dołącza do zespołu lub go opuszcza, uprawnienia aktualizują się automatycznie.

Rozszerzenie udostępniania zespołowego z obiektów standardowych na dowolny obiekt niestandardowy

Jak działa Flexible Team Share?

Model odwzorowuje to, co znacie z Account Teams i Opportunity Teams. Role zespołowe definiujecie raz (Technical Lead, Business Analyst, Executive Sponsor). Każda rola ma przypisany poziom dostępu: odczyt, edycję albo pełną kontrolę. Gdy przypisujecie rekord do zespołu, każdy jego członek otrzymuje dostęp wynikający ze swojej roli.

Różnica polega na tym, że działa to na dowolnym wybranym przez was obiekcie — nie tylko na Account, Opportunity i Case.

Samoobsługa dla użytkowników biznesowych

Najwięcej zyskują na tym organizacje, które toną w zgłoszeniach typu „dodajcie mnie do tego projektu“. Kiedy właściciele zespołów sami zarządzają składem, dzieją się dwie rzeczy: dostęp zmienia się szybciej (minuty zamiast dni), a obciążenie administratorów spada.

Ten sam wzorzec widzę we wdrożeniach raz za razem: organizacje, które oddają użytkownikom biznesowym kontrolę nad członkostwem w zespołach, poświęcają mniej czasu na zarządzanie dostępami, a więcej na właściwą pracę. Model dostępu staje się przy okazji przejrzysty, bo każdy widzi, kto jest w zespole i dlaczego.

Model bezpieczeństwa pozostaje nienaruszony: właściciel zespołu może nadać dostęp co najwyżej na swoim własnym poziomie. Jeśli ma uprawnienia Edit, nie doda nikogo z Full Control. Przenosicie administrację bliżej ludzi, którzy rozumieją kontekst biznesowy — nie obchodzicie zabezpieczeń.

Jak to wygląda w praktyce

Rekord projektu ma swój zespół. Kierownik projektu dodaje członków i przypisuje im role. Każda rola ma z góry zdefiniowany poziom dostępu. Kto dołącza do zespołu, od razu widzi rekord. Kto odchodzi — automatycznie traci dostęp.

Żadnych zgłoszeń do IT. Żadnego czekania na okno wdrożeniowe. Żadnych zmian w kodzie, gdy struktura zespołu ewoluuje.

Dlaczego natywne zespoły nie działają na obiektach niestandardowych?

Salesforce zbudował Account Teams, Opportunity Teams i Case Teams pod konkretne przypadki użycia. Ta architektura jest sztywno związana z tymi trzema obiektami. Nie istnieje żadna opcja konfiguracyjna, ukryte ustawienie ani obejście, które uruchomi natywne zespoły na obiekcie niestandardowym takim jak Project__c czy Engagement__c.

Problem zaczyna się wtedy, gdy wasze procesy biznesowe nie mieszczą się w schemacie kont, szans sprzedaży i spraw. Firmy usługowe prowadzą projekty. Firmy konsultingowe zarządzają zleceniami. Organizacje ochrony zdrowia koordynują plany opieki. Firmy produkcyjne obsługują zlecenia serwisowe. Żaden z tych obiektów nie dostaje natywnego wsparcia zespołów.

Schemat, który obserwuję nieustannie: organizacja buduje obiekty niestandardowe dopasowane do rzeczywistych procesów biznesowych, po czym odkrywa, że nie może na nich użyć modelu zespołowego, który tak dobrze sprawdza się na obiektach standardowych.

Jakie są typowe obejścia (i ich problemy)?

Gdy natywne zespoły odpadają, organizacje sięgają zwykle po jedno z trzech rozwiązań. Każde załatwia doraźny problem — i tworzy nowe.

Apex managed sharing

Apex managed sharing daje programistyczną kontrolę nad udostępnianiem rekordów. Piszecie triggery lub joby wsadowe, które tworzą rekordy Share, gdy spełnione są określone warunki.

Problem: ktoś ten kod musi napisać, przetestować i utrzymywać. Gdy wymagania biznesowe się zmieniają (a zmieniają się zawsze), deweloper musi zmodyfikować logikę. Kod staje się częścią waszego długu technicznego. W organizacjach, z którymi pracowałem, logika udostępniania w Apex często staje się tym fragmentem, którego nikt nie chce dotykać — bo autor dawno odszedł, a dokumentacji jak na lekarstwo.

Udostępnianie ręczne (manual sharing)

Udostępnianie ręczne to najprostsze podejście: właściciel rekordu klika przycisk Sharing i dodaje użytkowników jednego po drugim. Bez kodu, bez angażowania administratora przy każdym udostępnieniu.

Problem: to się nie skaluje. Przy setkach rekordów i częstych zmianach w składzie zespołów ręczne udostępnianie staje się pracą na pełen etat. Ludzie zapominają odebrać dostęp, gdy ktoś schodzi z projektu. Nie ma też żadnego śladu audytowego, dlaczego ktoś został dodany.

Reguły udostępniania oparte na kryteriach (criteria-based sharing rules)

Reguły udostępniania (sharing rules) pozwalają administratorom zdefiniować kryteria, które automatycznie nadają dostęp. Jeśli rekord spełnia określone warunki, wskazani użytkownicy lub grupy go widzą.

Problem: reguły udostępniania działają na poziomie całej organizacji i są statyczne. Nie da się powiedzieć „udostępnij ten konkretny projekt temu konkretnemu zespołowi“. Trzeba tworzyć reguły dopasowujące wzorce, co szybko się komplikuje. Limit reguł (50 reguł opartych na kryteriach na obiekt) organizacje osiągają wcześniej, niż się spodziewały. A każda zmiana reguły wymaga administratora — i tak powstają wąskie gardła.

Wspólny mianownik: każde z trzech obejść przerzuca ciężar gdzie indziej — na deweloperów (Apex), na właścicieli rekordów (udostępnianie ręczne) albo na administratorów (sharing rules). Żadne nie daje użytkownikom biznesowym samoobsługowego zarządzania zespołem, jakie znają z natywnych Account Teams.

Kiedy to podejście ma sens?

Udostępnianie zespołowe na obiektach niestandardowych nie jest odpowiedzią na każdy scenariusz. Sprawdza się, gdy:

Macie zdefiniowane struktury zespołowe. Jeśli ludzie naturalnie pracują zespołowo nad konkretnymi rekordami (projektami, zleceniami, sprawami, kontami), rozszerzenie modelu zespołowego ma sens. Jeśli dostęp wynika wyłącznie z roli lub obejmuje całą organizację, standardowe reguły udostępniania mogą wystarczyć.

Skład zespołów często się zmienia. Statyczne reguły udostępniania działają dobrze, gdy wzorce dostępu są stałe. Ale gdy ludzie regularnie dołączają do projektów i z nich schodzą, samoobsługowe zarządzanie zespołem oszczędza mnóstwo pracy.

Użytkownicy biznesowi wiedzą, kto powinien mieć dostęp. Kierownik projektu zna skład swojego projektu. Lead zlecenia zna swój zespół. Przekazanie decyzji o dostępie ludziom z kontekstem daje lepsze rezultaty niż zgadywanie przez centralnego administratora.

Zbliżacie się do limitów reguł udostępniania. Każda reguła oparta na kryteriach zużywa ograniczony zasób. Udostępnianie zespołowe omija ten problem, bo działa na poziomie rekordu, a nie całej organizacji.

Najważniejsze wnioski

  • Flexible Team Share rozszerza natywny model zespołów na dowolny obiekt — ten sam schemat, który znacie z Account Teams, działa na obiektach niestandardowych
  • Użytkownicy biznesowi sami zarządzają zespołami — bez zgłoszeń do administratora, bez cykli wdrożeniowych, zmiana dostępu w minuty
  • Zero kodu do utrzymania — w odróżnieniu od udostępniania w Apex nie ma nic do napisania, przetestowania ani debugowania, gdy zmienią się wymagania
  • Natywne obejścia mają swoją cenę — Apex wymaga utrzymania, ręczne udostępnianie się nie skaluje, sharing rules wpadają na limity
  • Najlepsze dopasowanie — zdefiniowane struktury zespołowe, częste zmiany składu i użytkownicy biznesowi, którzy rozumieją wymagania dostępowe

Powiązane artykuły

Michał Bajdek

Współzałożyciel, Tucario

Współzałożyciel Tucario — firmy konsultingowo-produktowej Salesforce. Pracuje przy enterprise’owych wdrożeniach Salesforce — architektura, integracje i produkty AppExchange — i pisze o tym, co sprawdza się w środowiskach produkcyjnych.

Odkryj powiązane treści według tematu