Eine öfters vorkommende Aufgabe ist es, SharePoint Listen an einer zentralen Stelle zusammenzuführen und eine Konsolidierte Ansicht zu bieten. Kunden von uns brauchen das beispielsweise für
- Zentrales Ticketing – nämlich dann, wenn jeder Mandant eine eigene Site hat mit eigenem Ticketing, und diese aber für die IT-Betreuer zusammengeführt werden sollen
- Zentrales „Diese Dokumente sind Neu“ aus verschiedenen Bibliotheken oder Wikis
…und tausende von weiteren Möglichkeiten. Grundsätzlich kein Problem…oder eben schon. Wenn nämlich diese Listen aus verschiedenen Sites kommen (sogar in der gleichen Site-Collection), gibts kein Standardverfahren mehr dazu. Im alten SharePoint Server (MOSS 2007) konnte half die [todo] Connect to Another Library Funktion im SharePoint-Designer. Diese fehlt aber (anscheinend absichtlich) in der neuen Ausgabe. Wie also weiter? Meine Recherchen haben folgende Möglichkeiten ergeben:
- Datenzugriff auf jede einzelne Liste über REST, diese als Datenquelle definieren, und dann eine Verbundene Datenquelle aufbauen, welche diese zusammensetzt. Könnte per Klick-Klick gemacht werden. Könnte, denn es hat nicht funktioniert, ich konnte keine Datentabelle in der Seite einfügen da es immer eine Fehlermeldung gab. Gehe davon aus, dass etwas mit dem REST nicht stimmt, habe es dann sein lassen.
- Datenzugriff über SOAP, auch wieder einzeln definieren und zusammenfassen. Hässlich, da die Abfragen in CAML gemacht werden müssten, kann ich also niemandem zur Pflege übergeben da es einfach nicht Power-User tauglich ist.
- Zusatztool von Bamboo-Solutions namens SharePoint List Roll Up, welches die gewünschten Listen zusammenzieht (Content Roll up). Ich denke die Lösung sieht sehr gut aus, ist jedoch nicht geeignet in unserer shared SharePoint Hosting Umgebung, da es Installationen auf dem Server benötigt.
- Eine bestehende Liste als Webpart speichern und an einem anderen Ort wieder einrichten – dies hilft die Site-Bariere zu durchbrechen, aber ist dann eben doch nur eine einzige Liste, kein Zusammenzug.
Die Lösung?
Ehrlich gesagt haben wir keine perfekte Lösung, sondern eine gute, die aber etwas abverlangt. Die alte Feature Connect to Another Library funktioniert nämlich schon, sie wird einfach nicht mehr im Wizzard/Assistent angeboten. Die Aufstellung ist so:
- Erstelle eine SPDataSource – jedoch eine AggregatedDataSource, welche die verschiedenen Quellen hat.
- Dies kann man wahlweise indem man mit dem alten SharePoint Designer etwas zusammenklickt, es ins neue System kopiert und danach im XML die Werte anpasst…
- …oder indem man im neuen SharePoint Designer eine Aggregated Data Source zusammensetzt mit Listen aus der gleichen Site, und dann das XML ergänzt mit dem SiteURL Parameter sowie die ListenIDs austausch mit den richtigen.
Das ist das Grobgerüst. Allerdings benötigt der Aufbau doch ein gutes Verständniss von SharePoint – dann ist es in ca. einer Stunde gemacht, und das Ergebnis kann dann auch von Normalsterblichen gepflegt werden.