Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/8 33 82-0

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ühren im SharePoint ein besonderes Dasein. Sie sind die Nachfolgetechnologie der Solutions und heben Eigenentwicklungen aus dem SharePoint heraus, reduzieren damit das Risiko für die Farm. Gleichzeitig sind sie (gefühlt) der Vorgänger der moderneren SharePoint-Framework client-side Solutions.

Bei der Entwicklung eines SharePoint-Add-ins gibt es verschiedene adminstrative Aufgaben, die erledigt werden müssen. 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 einfach – aber wie bekomme ich eine Übersicht der in der Farm registrierten Add-ins? Der Beitrag zeigt, wie es funktionieren kann.

Was ist die Add-in-Registrierung?

Wer es noch nie gemacht hat, oder es vergessen hat, kann unter Microsoft Docs die Details sehr gut beschrieben nachlesen: Register SharePoint Add-ins 2013

Die Eckdaten des Add-ins (Client ID, App Domain, Redirect URI etc.) werden in ein Formular eingetragen, welches unter /_layouts/15/AppRegNew.aspx erreichbar ist. Die dort hinterlegten URIs zeigen auf den Provider des Add-ins. Diese Registrierung ist farmweit einmalig pro Add-in notwendig. Es ist dabei egal, auf welcher Site die AppRegNew.aspx aufgerufen 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 wichtig ist:

  • sie ist nur für provider-hosted Add-ins notwendig; SharePoint-hosted Add-ins müssen nicht registriert werden
  • die manuelle Registrierung via AppRegNew.aspx ist nur für Add-ins notwendig, die nicht über den Office Store vertrieben werden

Erfahrungsgemäß werden während der Entwicklung eines Add-ins auf der Farm mehrere Versionen mit wechselnden IDs registriert.

Der Knackpunkt ist nun: die Registrierung von Add-ins ist vergleichsweise einfach – schwieriger ist es, eine Übersicht der Add-ins zu bekommen. Wie es trotzdem funktioniert, zeigt der nächste Abschnitt.

Add-in-Inventur auf der Datenbank

Es mag verschiedene Orte im SharePoint geben, die Informationen über Add-ins preisgeben: App Permissions, App Principals, Get-SPAppInstance, appinv.aspx etc. Eine einfache Übersicht, welche Add-ins in der Farm registriert sind – unabhängig davon, ob sie in Sites im Einsatz sind oder nicht – existiert nicht. Eine API dafür hat sich bisher auch nicht gemeldet.

Daher gehen wir eine Ebene tiefer – in die SharePoint-Datenbank. Hier sind die Informationen rund um Add-ins erstaunlich lesbar abgelegt. Wir greifen dabei nur lesend auf die Datenbank zu. (Der übliche Disclaimer: nicht auf dem Produktivsystem anwenden.)

Wie wäre es also mit folgender Übersicht:

Diese Tabelle zeigt alle in der Farm registrierten Add-ins inkl. der via AppRegNew.aspx konfigurierten URL des Providers (RedirectUrl) sowie Client ID und Product ID. Der erste Eintrag (Kanban-Add-in) wurde aus dem Office Store installiert.

Diese Ausgabe lässt sich mit folgendem SQL-Snippet erzeugen, welches gegen die SharePoint-Datenbank ausgeführt werden 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 lediglich SHAREPOINT_AppManagement durch den Namen der Datenbank des App Management Service ersetzt werden.

Frohe Feiertage

In diesem Blogbeitrag haben wir gesehen, wie sich eine Liste der in der Farm registrierten provider-hosted Add-ins ausgeben lässt. Dazu muss ein SQL-Script auf der SharePoint-Datenbank ausgeführt werden. Die generierte Übersicht kann die Fehlerdiagnose unterstützen und bei der Entwicklung helfen, den Überblick zu bewahren.

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

Kommentar hinterlassen