Zum Hauptinhalt springen
Version: Classic

SharePoint Online

Mit dem SharePoint Online Adressprovider können Sie auf Ihre SharePoint Listen zugreifen.

Konfiguration​

Um auf SharePoint Online zuzugreifen, ist die Authentifizierung über OAuth nötig. Hierfür benötigt es eine "App Registration" im Azure Active Directory. Führen Sie folgende Schritte aus:

  • Melden Sie sich über das Azure Portal an.
  • Wählen Sie Ihr Azure Active Directory aus & kopieren Sie die TenantId.
  • Unter "App registrations" legen Sie eine neue App mit beliebigen Namen an.
  • Unter "API permissions" fügen Sie die Microsoft Graph Sites.Read.All Berechtigung hinzu (benötigt Admin Consent).
  • Unter "Certificates & secrets" fügen Sie ein neues Client Secret hinzu.
<!-- AddressService -->
<AddressProvider id="E10A8313-A92D-4CB2-A12B-9AEB58F39207" order="1" active="true">
<!-- serverside SharePoint Online address provider -->
<AddressProvider id="5da866b2-e63a-11eb-ba80-0242ac130004" Title="SharePoint">
<HostUrl>{HostUrl}</HostUrl>
<TenantId>{TenantId}</TenantId>
<ClientId>{ClientId}</ClientId>
<ClientSecret>{ClientSecret}</ClientSecret>
<Site>{SiteName}</Site>
<List>{ListName}</List>
<SearchParameters>
<SearchParameter Name="firstName" Label="Vorname/Name" Type="String" Length="100" Sort="1" />
<SearchParameter Name="street" Label="Strasse" Type="String" Length="100" Sort="2" />
</SearchParameters>
<Query>
<Filters>
<Filter>substringof('{street}', fields/Street)</Filter>
<Filter>substringof('{firstName}', fields/Vorname)</Filter>
</Filters>
<OrderBy>fields/Vorname</OrderBy>
<Top>30</Top>
<Expand>fields(expand=LinkedPerson)</Expand>
<Select>fields/Vorname, Fields/Name, fields/SpaltenName</Select>
</Query>
<Debug>true</Debug>
<Mapping>
<Map Source="Name" Target="Person_LastName"></Map>
<Map Source="Vorname" Target="Person_FirstName"></Map>
<Map Source="Adresse.address.street" Target="Person_Street" />
<Map Source="Adresse.address.city" Target="Person_City"></Map>
<Map Source="Adresse.address.postalCode" Target="Person_ZipCode"></Map>
</Mapping>
</AddressProvider>
</AddressProvider>

Parameter​

  • id 5da866b2-e63a-11eb-ba80-0242ac130004
  • Title Titel des Address Provider. Default: "SharePoint"
  • HostUrl Host-Url des SharePoint Online (ohne https://) z. B. firma.sharepoint.com
  • TenantId Die TenantId des AAD
  • ClientId Die AppClient ID der im AAD konfigurierten App
  • ClientSecret Client Secret der im AAD konfigurierten APP (kann verschlüsselt werden)
  • Site Name der Site in welcher die Liste erstellt ist
  • List Name der Liste
  • SearchParameter Liste mit allen Eingabemöglichkeiten
    • Name Eindeutige Id für den Parameter. Entspricht dem Platzhalter in der Odata Query
    • Label Angezeigter Text vor dem Eingabefeld
    • Type Eingabetyp: String (Text), Long (Zahl), Boolean (Ja/Nein) oder Date (Datum)
    • Length Maximale Länge für Strings
    • Sort Sortierungswert gegenüber den anderen Parametern
  • Query Die Query für die Abfrage am Service wird mit OData v4 geschrieben. Aus der Lister der unterstützten Operationen sind folgende möglich: expand, filter, orderby, select, top. Die Spalten aus der Liste sind immer unter fields/ abgelegt, daher ist es wichtig, das bei allen Operationen (ausser top) stets der Präfix 'fields/' aufgeführt ist. z. B. <Select>fields/Vorname</Select>. Die Suchparameter können mittels {SearchParamId} innerhalb der Query referenziert werden.
    • Expand Mit dem Expand Operator können mehrdimensionale/verlinkte Felder erweitert werden. Klassische Beispiele dafür sind verknüpfte Personen und die Adresse. Standard ist fields.
    • Filter Mit dem Filter Operator können die Einträge anhand der eingegebenen Suchwerte gefiltert werden. Liste der Vergleichsoperatoren. Achtung, Einschränkungen weiter unten beachten.
    • OrderBy Mit dem OrderBy Operator können die Einträge nach bestimmten Spalten sortiert werden. Standard ist unsortiert.
    • Select mit dem Select Operator können die zurückgegebenen Spalten/Informationen eingeschränkt werden. Standardmässig werden alle Informationen selektiert.
    • Top Mit dem Top Operator kann die maximale Anzahl zurückgegebener Resultate limitiert werden. Standard ist 50.
  • Debug Boolean - true falls zusätzliche Informationen geloggt werden sollen (verfügbare Werte mit Namen für das Mapping, detailliertere Fehlermeldungen)
  • Mapping Für SharePointlisten muss zwingend ein Standard-Kontakt-Mapping definiert werden. Ohne Mapping können die Einträge nicht verarbeitet werden. Für das Mapping werden die Spaltennamen als SourceAttribute verwendet. Ausnahme dabei sind Felder vom Typ Ort und Link.
    • Ort
      • Ortschaftsangaben werden durch Sharepoint automatisch auf mehrere Spalten aufgeteilt. Diese enthalten dann nicht den Spaltennamen, sondern die englische Bezeichnung: Street, PostalCode, City usw. Die komplette Adresse wird mit DispName hinzugefügt. Sind mehrere Spalten vom Typ Ort in einer Liste vorhanden, so werden diese von links nach rechts durchnummeriert, beginnend bei der zweiten Adresse mit 0, z. B. Street, Street0, Street1 bei drei Adressen.
      • primedocs bereitet die Adressen auch noch selbst auf. Dies mit SpaltenName.address.City usw.
    • Link
      • Links werden durch SharePoint in Url und Anzeigename aufgeteilt zurückgegeben: SpaltenName.Url, SpaltenName.Description
  • Icon Base64-Icon, das dem Benutzer im Empfängerdialog angezeigt wird.
vorsicht

WARNUNG Für die Filterquery gibt es einige Einschränkungen:

  • Es kann nur in indexierten Spalten gesucht werden MS-Dokumentation zum Hinzufügen indexierter Spalten.
  • Entgegen der Dokumentation der Vergleichsoperatoren von Microsoft funktioniert der contains(FieldName, 'SearchValue') Vergleichsoperator nicht! Es muss stattdessen substringof('SearchValue',FieldName) verwendet werden.
  • Leere Werte gelten bei substringof nicht als Teil des Inhaltes. Dies hat als Konsequenz, dass wenn nicht alle Suchparameter einen Wert haben, kein Eintrag gefunden wird. Aus diesem Grund wurde die Filterquery so aufgebaut, dass innerhalb des <Filters></Filters> mehrere <Filter></Filter> definiert werden können. Ein <Filter></Filter> wird nur dann beachtet, wenn für jeden darin enthaltenen Suchparameter ein Wert eingegeben wurde:
substringof('{street}', fields/Street) substringof('{firstName}', fields/Vorname) and substringof('{street}', fields/Street) ```xml