SharePoint Foundation – Projektliste aus SQL Tabelle mit BCS und Display Templates

Vor ein paar Wochen hatte ich die Anforderung eine Projektliste aus einer SQL Server Tabelle in SharePoint 2013 Foundation anzuzeigen.

Hierfür sollte ich die Business Connectivity Services in SharePoint nutzen. Der Kunde hatte weiterhin die Anforderung das diese Liste durchsuchbar gemacht und in den Suchergebnissen von SharePoint auftauchen sollte. Hierfür kann der Externe Inhaltstyp als separate Suchquelle bei der Suchdienstanwendung angegeben werden.

Im SharePoint Foundation und dem BCS gibt es aber keine Profile Pages, sodass man keine durchforstbare Seiten anlegen kann.

Als Alternative ist es möglich für den Externen Inhaltstypen Managed Properties anzulegen. Auf diese kann ich so die Idee innerhalb eines Display Templates für die Suche zugreifen. Sobald ich die Externe Liste als Inhaltsquelle eingebunden habe, ist es notwendig eine Full Crawl zu starten, damit ich die gefundenen Eigenschaften mit meinen eigenen Managed Properties verknüpfen kann.

Als Beispiel ein Ergebnis Screenshot aus dem Projekt:

Hierbei haben sich aber folgende Problemstellungen ergeben. Die Anpassungen von Display Templates erfolgt im SharePoint Standard mit dem Publishing Feature. Das heißt ich kann Display Templates innerhalb von html bearbeiten. Danach werden diese in automatisiert js Dateien umgewandelt.

Beim SharePoint Foundation muss ich hingegen direkt die js Dateien manipulieren. Am besten man kopiert sich das Standard Item Template und modifiziert dieses.

Hier ein Screenshot meiner Modifikationen. In rot sind die Stellen markiert, die ich anpassen musste.

Um das Display Template anzuwenden, habe ich einen ResultType „Projekte“ angelegt. Leider haben meine individuellen Managed Properties keine Daten angezeigt. Ich hatte mehrere Crawls für die Suche starten lassen und auch mehrfach die Managed Properties geprüft.

Letztendlich bin ich auf folgende Lösung gestoßen. Ich habe meine ResultType „Projekte“ per PowerShell aktualisiert, sodass hierüber meine gebundenen Managed Properties aktualisiert wurden.

Anbei das folgende PowerShell Script.

$ssa = Get-SPEnterpriseSearchServiceApplication
$tenantOwner = Get-SPEnterpriseSearchOwner -Level SPWeb -SPWeb „http://intranet
Get-SPEnterpriseSearchResultItemType -Owner $tenantOwner -SearchApplication $ssa
$ResultType = Get-SPEnterpriseSearchResultItemType -SearchApplication $ssa -Owner $tenantOwner | where-object { $_.Name -eq „Projekte“ }
$ssa.UpdateResultItemType($ResultType) 

Das war dann des Rätsel Lösung und alle Eigenschaften wurden mir in meiner Suchergebnisseite angezeigt. Diese Vorgehensweise sollte sich auch für Office 365 anwenden lassen, wenn ich z.B. nur die Office 365 Business Essentials verwende.

Leave a Comment

Your email address will not be published. Required fields are marked *