Zaawansowana integracja bibliotek dokumentów CE z Sharepoint

fellowmind-business-intelligence-and-advanced-analytics-2.jpg

Aby zapewnić użytkownikom przechowywanie i zarządzanie dokumentami bezpośrednio z interfejsu Dynamics 365, dostępna jest integracja z Sharepoint Out of the Box. Możemy szybko i łatwo skonfigurować biblioteki oraz skorzystać z intuicyjnej integracji.

Jest to jedynie podstawowy sposób przechowywania plików. Co w sytuacji, gdy wymagania biznesowe naszego klienta narzucają pewne wymogi bezpieczeństwa odnośnie widoczności plików i folderów? Dodatkowo, możemy potrzebować skomplikowanej, dedykowanej struktury przechowywania dokumentów. Przyjrzyjmy się temu zagadnieniu, definiując następujące wymagania.

Klient wymaga, aby każda jednostka biznesowa miała dostęp wyłącznie do swoich ofert oraz by każda oferta była zbudowana według określonej struktury i pozwalała na usuwanie zawartości tylko z konkretnych folderów. Poniżej znajduje się wizualna prezentacja tych wymagań.

Obraz1.png

Aby sprostać postawionym przez klienta wyzwaniom, należy przygotować kilka mechanizmów.

Potrzebne jest stworzenie nowej roli zabezpieczeń w Sharepoint, która nie będzie miała uprawnień do usuwania plików. Należy przypisać tę rolę zabezpieczeń do grup w Sharepoint, które mają mieć dostęp do lokalizacji i dokumentów. Należy następnie przypisać tę rolę do wszystkich grup w  . W systemie CRM na każdej jednostce biznesowej przechowujemy informacje o odpowiadającej jej grupie Sharepoint.

W momencie tworzenia folderów odpowiadających jednostkom biznesowym musimy po stronie Sharepoint zerwać dziedziczenie ról na tym folderze:

folderJB.ListItemAllFields.BreakRoleInheritance(false, true);

a następnie nadać uprawnienia dla grupy odpowiadającej jednostce biznesowej:

folderJB.ListItemAllFields.RoleAssignments.Add(groupJB, new RoleDefinitionBindingCollection(clientContext) { JBDefinition });

Tworząc foldery ofert musimy pamiętać o dodaniu dodatkowych folderów wymaganych przez klienta:

ofertaFolder.Folders.Add("Dokumenty_wewnetrzne");

ofertaFolder.Folders.Add("Dokumenty_zewnetrzne");

ofertaFolder.Folders.Add("Dokumenty_wyslane");

Struktura i uprawnienia są już gotowe. Użytkownicy przeglądający Sharepoint bezpośrednio w strukturze katalogów będą widzieli tylko oferty w ramach folderu swojej jednostki biznesowej.

Jeżeli po stronie CRM uprawnienia pozwalają na przeglądanie ofert należących do różnych jednostek biznesowych, to Sharepoint i tak ograniczy użytkownikom dostęp wyłącznie do dokumentów należących do struktury ich własnej jednostce biznesowej.

Klient wymaga, aby użytkownicy mogli usuwać pliki i foldery według zdefiniowanej reguły. Usuwać można jedynie ręcznie utworzone foldery i pliki za wyjątkiem zawartości folderu ‘Dokumenty wysłane’.

Aby spełnić powyższe wymaganie musimy ukryć domyślny przycisk ‘Usuń’ i utworzyć własny. Za pomocą enableRule i odpowiednio zdefiniowanych warunków w skrypcie będziemy sterować widocznością przycisku. Jako akcję wywoływać będziemy AzureFunction, która w kontekście użytkownika z wyższymi uprawnieniami będzie usuwać foldery i pliki. Dodatkowo każde takie usuwanie możemy logować w dodatkowej encji:

obraz (1).png

Podsumowując, zaawansowana integracja dokumentów Dynamics 365 z SharePoint, uwzględnia specyficzne wymagania bezpieczeństwa i struktury przechowywania danych. W odpowiedzi na potrzeby klienta, który wymaga, aby każda jednostka biznesowa miała dostęp tylko do swoich dokumentów, wprowadzono mechanizmy zarządzania uprawnieniami. Polega to na tworzeniu dedykowanych ról w SharePoint, zerwaniu dziedziczenia uprawnień w folderach oraz dodaniu wymaganych folderów. Dodatkowo, aby umożliwić usuwanie plików według określonych reguł, zaprojektowano własny mechanizm usuwania, kontrolowany przez AzureFunction i odpowiednie skrypty, co zapewnia spełnienie wymogów bezpieczeństwa i logowanie takich operacji.

Masz pytanie odnośnie rozwiązania SharePoint i możliwości jego wdrożenia w Twojej firmie?

Skontaktuj się z nami:

Radosław Malinowski
Senior Developer