Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
0800 1 255 255

Add-ins in der Farm aufspüren - SharePoint-Inventur zum Jahresende

Die Registrierung eines SharePoint-Add-ins in der Farm ist einfach - aber wie bekomme ich eine Übersicht aller in der Farm registrierten Add-ins? Der Beitrag zeigt, wie es geht.

Quelle: https://docs.microsoft.com/en-us/sharepoint/dev/sp-add-ins/choose-patterns-for-developing-and-hosting-your-sharepoint-add-inAdd-ins füh­ren im SharePoint ein beson­de­res Dasein. Sie sind die Nachfolgetechnologie der Solutions und heben Eigenentwicklungen aus dem SharePoint her­aus, redu­zie­ren damit das Risiko für die Farm. Gleichzeitig sind sie (gefühlt) der Vorgänger der moder­ne­ren SharePoint-Framework client-side Solutions.

Bei der Entwicklung eines SharePoint-Add-ins gibt es ver­schie­dene admin­stra­tive Aufgaben, die erle­digt wer­den müs­sen. Eine davon ist die Registrierung des Add-ins in der Farm. Und genau darum soll es gehen. Die Registrierung eines Add-ins in der Farm ist ein­fach – aber wie bekomme ich eine Übersicht der in der Farm regis­trier­ten Add-ins? Der Beitrag zeigt, wie es funk­tio­nie­ren kann.

Was ist die Add-in-Registrierung?

Wer es noch nie gemacht hat, oder es ver­ges­sen hat, kann unter Microsoft Docs die Details sehr gut beschrie­ben nach­le­sen: Register SharePoint Add-ins 2013

Die Eckdaten des Add-ins (Client ID, App Domain, Redirect URI etc.) wer­den in ein Formular ein­ge­tra­gen, wel­ches unter /_layouts/15/AppRegNew.aspx erreich­bar ist. Die dort hin­ter­leg­ten URIs zei­gen auf den Provider des Add-ins. Diese Registrierung ist farm­weit ein­ma­lig pro Add-in not­wen­dig. Es ist dabei egal, auf wel­cher Site die AppRegNew.aspx auf­ge­ru­fen wird.

Quelle: https://blogs.msdn.microsoft.com/kaevans/2014/04/02/deploying-a-sharepoint-app-to-azure-as-part-of-a-build/

Rund um die Registrierung wich­tig ist:

  • sie ist nur für provider-hosted Add-ins not­wen­dig; SharePoint-hosted Add-ins müs­sen nicht regis­triert wer­den
  • die manu­elle Registrierung via AppRegNew.aspx ist nur für Add-ins not­wen­dig, die nicht über den Office Store ver­trie­ben wer­den

Erfahrungsgemäß wer­den wäh­rend der Entwicklung eines Add-ins auf der Farm meh­rere Versionen mit wech­seln­den IDs regis­triert.

Der Knackpunkt ist nun: die Registrierung von Add-ins ist ver­gleichs­weise ein­fach – schwie­ri­ger ist es, eine Übersicht der Add-ins zu bekom­men. Wie es trotz­dem funk­tio­niert, zeigt der nächste Abschnitt.

Add-in-Inventur auf der Datenbank

Es mag ver­schie­dene Orte im SharePoint geben, die Informationen über Add-ins preis­ge­ben: App Permissions, App Principals, Get-SPAppInstance, appinv.aspx etc. Eine ein­fa­che Übersicht, wel­che Add-ins in der Farm regis­triert sind – unab­hän­gig davon, ob sie in Sites im Einsatz sind oder nicht – exis­tiert nicht. Eine API dafür hat sich bis­her auch nicht gemel­det.

Daher gehen wir eine Ebene tie­fer – in die SharePoint-Datenbank. Hier sind die Informationen rund um Add-ins erstaun­lich les­bar abge­legt. Wir grei­fen dabei nur lesend auf die Datenbank zu. (Der übli­che Disclaimer: nicht auf dem Produktivsystem anwen­den.)

Wie wäre es also mit fol­gen­der Übersicht:

blank

Diese Tabelle zeigt alle in der Farm regis­trier­ten Add-ins inkl. der via AppRegNew.aspx kon­fi­gu­rier­ten URL des Providers (RedirectUrl) sowie Client ID und Product ID. Der erste Eintrag (Kanban-Add-in) wurde aus dem Office Store instal­liert.

Diese Ausgabe lässt sich mit fol­gen­dem SQL-Snippet erzeu­gen, wel­ches gegen die SharePoint-Datenbank aus­ge­führt wer­den muss:

SELECT
AM_AppPrincipals.Title as AppTitle,
RedirectUrl,
Realm,
UPPER(SUBSTRING(AM_ProductOAuthRegistration.AppId, 18, 36)) as ClientIdFromAppManifest,
ProductId as AppProductId,
AM_ProductOAuthRegistration.AppId as AppPrincipalId
FROM
SHAREPOINT_AppManagement.dbo.AM_ProductOAuthRegistration,
SHAREPOINT_AppManagement.dbo.AM_AppPrincipalAppInstances,
SHAREPOINT_AppManagement.dbo.AM_AppPrincipals
WHERE
AM_AppPrincipals.CompositePartitionKey = AM_AppPrincipalAppInstances.CompositePartitionKey AND
AM_ProductOAuthRegistration.AppInstanceId = AM_AppPrincipalAppInstances.AppInstanceId AND
AM_AppPrincipalAppInstances.CompositePartitionKey = AM_AppPrincipals.CompositePartitionKey
GROUP BY ProductId, AppId, AM_AppPrincipals.Title, RedirectUrl, Realm, SUBSTRING(AM_ProductOAuthRegistration.AppId, 18, 37)
ORDER By AppProductId, ClientIdFromAppManifest, AM_AppPrincipals.Title

Es muss ledig­lich SHAREPOINT_AppManagement durch den Namen der Datenbank des App Management Service ersetzt wer­den.

Frohe Feiertage

In die­sem Blogbeitrag haben wir gese­hen, wie sich eine Liste der in der Farm regis­trier­ten provider-hosted Add-ins aus­ge­ben lässt. Dazu muss ein SQL-Script auf der SharePoint-Datenbank aus­ge­führt wer­den. Die gene­rierte Übersicht kann die Fehlerdiagnose unter­stüt­zen und bei der Entwicklung hel­fen, den Überblick zu bewah­ren.

Ich wün­sche viel Erfolg bei der Inventur und frohe Feiertage, mit nur einem Hauch SharePoint!

Related Posts

Pin It on Pinterest