none
Per Workflow mehrere User aus PeoplePicker in Gruppe per Rest api hinzufügen RRS feed

  • Allgemeine Diskussion

  • Hallo,

    ich stehe gerade vor dem Problem, mit einem Workflow mehrere Benutzer die in einem Mehreingabefeld mit einem People Picker eingetragen werden, per Rest Api zu einer Gruppe hinzuzufügen. Mit einem Benutzer in dem Feld geht es ohne Probleme, sobald aber mehrere User eingetragen sind erhalte ich folgende Fehlermeldung:

    NotFound

    {"error":{"code":"-2130575276, Microsoft.SharePoint.SPException","message":{"lang":"en-US","value":"The user does not exist or is not unique."}}}

    Ich vermute, dass ich im Vorfeld eine Variable erzeugen muss, in der die Anzahl der eingetragen User hochgezählt wird und dann der Rest Api mit gebe X Durchläufe auf das Eingabefeld durchzuführen. Wie stelle ich sicher das er dann immer zum nächsten Benutzer springt? Ich hab gerad nen Knoten und bekomm den Ansatz nicht hin wie ich dies verwirkliche. Es sei gesagt das ich die Workflows im SPD designe...is nicht optimal, aber aktuell keine andere Möglichkeit.

    Für Tipps wäre ich dankbar :)

    Gruß

    Pat

    Freitag, 11. November 2016 07:36

Alle Antworten

  • Hi Pat,
    welche Technologie nutzt Du? Programm und Objektautomatisierung? Add-Inn? Farmlösung? Oder?

    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Freitag, 11. November 2016 08:32
  • Achso sorry,

    wir haben einen SharePoint 2013 on premise am laufen. Keine zusätzlichen Add-Inns. 2013er Workflowmanager is auch am laufen. 1x Webfrontend 1x App Tier 1x SQL

    Freitag, 11. November 2016 08:37
  • Hi Pat,
    meine Frage bezog sich auf die Technologie, die Du für den Zugriff auf den SharePoint nutzt.

    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Freitag, 11. November 2016 08:45
  • Hey Peter,

    ich kann dir gerad nicht folgen. Was genau meinst du mit Zugriff? Der Sp wird über Browser aufgerufen. Administrativ geht es auch per Remote auf die VMs der Farm. Konten der Benutzer werden aus der AD synchronisiert. Workflows werden per SPD erstellt.

    Freitag, 11. November 2016 09:01
  • Hi Pat,
    z.B. kann man mit dem Visual Studio eine WPF Anwendung erstellen, die einen Workflow startet, der die REST-Schnittstelle des SharePoints anspricht und dort JSON Streams übergibt bzw. zurück bekommt. Ähnlich kann man mit dem Visual Studio ein Add Inn erstellen, welches mit JavaScript den Rest Service nutzt und welches dann im AppStore für die Nachnutzung auf einer WebPage z.B. Add Inn Part bereitgestellt wird.

    Welche Technologie Du nutzt, ist unklar. Deshalb ist es auch schwierig mitzuteilen, wie Du eine Schleife programmieren musst, um durch alle Mitarbeiter der Liste zu iterieren.

    Erstellst Du mit dem SharePoint Designer 2013-Worflows, in welchen Du mit HTTP auf die REST-Schnittstelle zugreifst? Wenn ja, wie?


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks




    Freitag, 11. November 2016 09:17
  • Hallo Peter,

    aktuell werden die WFs mit dem SharePoint Designer erstellt. Dort wird mit dem HTTP WebService gearbeitet. Ein Visiual Studio ist aktuell nicht vorhanden bzw. kann ggf. organisiert werden.

    Hier mal aus dem WF der Teil wo die User in die Membergruppe verschoben werden sollen:

        accept string application/json;odata=verbose

                    content-type sting application/json;odata=verbose

                    Build {...} Dictionary (Output to Variable: JsonRestAPI_Member )

                   

    type string SP.User

                    Build {...} Dictionary (Output to Variable: move_user_type )

                   

    __metadata dictionary move_user_type

                    LoginName sting (PeoplePicker aus Liste)

                    Build {...} Dictionary (Output to Variable: Member_move_parameters )

     

    App-Schritt mit HTTP Webservice Abfrage

    Call [%Variable: rootURL%]_api/web/sitegroups/getbyname('[%Variable: Group_Name_Member%]')/users HTTP web service with Variable: Member_move_parameters (ResponseContent to Variable: responseContent5 |ResponseHeaders to responseHeaders |ResponseStatusCode to Variable: responseCode5 )

    Übergang in Phase

                    nächste Phase

    Hier nochmal der "responseContent" der mir per Mail zukommt zwecks Prüfung:

    {"d":{"__metadata":{"id":"http:\/\/sharepoint.com\/seite\/_api\/Web\/GetUserById(364)","uri":"http:\/\/sharepoint.com\/seite\/_api\/Web\/GetUserById(364)","type":"SP.User"},"Groups":{"__deferred":{"uri":"http:\/\ sharepoint.com\/seite \/\/_api\/Web\/GetUserById(364)\/Groups"}},"Id":364,"IsHiddenInUI":false,"LoginName":"i:0#.w|firmenad\\user.name","Title":"name;user","PrincipalType":1,"Email":"user.name@firma.com","IsSiteAdmin":false,"UserId":{"__metadata":{"type":"SP.UserIdInfo"},"NameId":"s-1-5-21-1919358814-4177666439-2532058216-3770","NameIdIssuer":"urn:office:idp:activedirectory"}}}


    Ich hoffe ich konnte damit etwas an Infos geben. Die Benutzer werden in Gruppen eingetragen die ím Vorfeld durch einen Workflow auf Basis gewisser Inforamtionen erstellt werden. Somit wird in dem "Move WF" auf andere Variablen verwiesen.



    • Bearbeitet Pat Spo Freitag, 11. November 2016 11:04
    Freitag, 11. November 2016 09:45
  • Hi Pat,
    genau diese Info meine ich. Ich brauche aber etwas Zeit (Wochenende), um das Szenario mal nachzustellen.


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Freitag, 11. November 2016 10:42
  • Hallo Peter,

    kein Problem :) Bin für jede Hilfe dankbar.

    Gruß

    Patrick

    Freitag, 11. November 2016 11:03
  • Hi Patrick,
    ich habe mal versucht, Dein Problem zu reproduzieren. Mehrere Anwender hinzufügen kann man in einer Schleife. Voraussetzung dazu ist eine Liste der Anwender, die durchlaufen wird. Als Liste eignet sich ein Wörterbuch, welches über ein HTTP-Service als Json vom SharePoint gelesen werden kann.

    Wie stellst Du die Anwender, die der Gruppe hinzuzufügen sind, bereit?


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Mittwoch, 16. November 2016 04:50
  • Guten Morgen Peter,

    die Benutzer werden über einen PeoplePicker in ein Multivalue Feld einer Liste eingetragen. Die Benutzer selber kommen aus einer AD. Da ich ein Multivalue Feld in einer Liste habe, könnte man doch rein theoretisch ein Wörterbuch erstellen was als erstes die Anzahl der Benutzer ausliest oder?. An Hand der Anzahl der Benutzer immer einen weiteren Durchlauf des Multi Value Feldes durchführt. Hinzu kommt dann denk ich mal, dass immer ein Wert von +1 auf die jeweilige Abfrage im Multivalue Feld gegeben werden muss, damit immer der nächste User hinzugefügt wird, bis alle durchgelaufen sind bzw. der Wert aus dem Wörterbuch erreicht ist. 

    Mir stellt sich dann natürlich die Frage, ist es überhaupt möglich, eine Abfrage auf ein Multivalue Feld durchzuführen und hoch zählen zu lassen? 

    Könnte das das so vom Ansatz her funktionieren? 

    Gruß

    Patrick


    • Bearbeitet Pat Spo Mittwoch, 16. November 2016 09:22
    Mittwoch, 16. November 2016 09:21
  • Hallo Peter,

    konntest du schon etwas in Erfahrung bringen?

    Freitag, 25. November 2016 09:52
  • Hi Pat,
    natürlich kannst Du den Inhalt eines MultiValueFields in einer Schleife verarbeiten:
    1. Workflowvariable vom Typ Wörterbuch mit Feldinhalt festlegen
    2. results aus der in 1. geladenen Variablen in eine neue Variable vom Typ Wörterbuch abrufen
    3. Elemente der in 2. abgerufenen Variablen zählen und in einer Ganzzahl-Variablen ablegen
    4. Schleife mit der unter 3. geladenen Anzahl ausführen
    5. In der Schleife über den Laufindex aus results die entsprechende Zeichenkette laden
    6. Zeichenkette verarbeiten

    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Dienstag, 29. November 2016 08:09
  • Hallo Peter,

    konntest du denn so feststellen, woran es liegt das die bisherige Abfrage die User nicht mit in die Gruppe zieht sobald mehrere im People Picker enthalten sind?

    Donnerstag, 1. Dezember 2016 06:38
  • Hi Pat,
    ich verstehe Deine Frage nicht.

    Wenn Du mehrere Anwender in einem Multi-Value-User-Feld hast, dann bekommst Du nach Laden des Inhalts in einer Schleife die ID's der Nutzer entsprechend Benutzerinformationsliste (_catalogs/users). Dort kannst Du die weitere Information zu jedem Nutzer auslesen.

    Wo hast Du da konkret Probleme?


    --
    Viele Grüsse
    Peter Fleischer (MVP Reconnect, Partner)
    Meine Homepage mit Tipps und Tricks

    Sonntag, 4. Dezember 2016 17:26
  • Hi Peter,

    bin im bereich Programierung / Java Scripting nicht wirklich bewandert...aber das mit dem (_catalog/users) war schonmal ein Hinweis. Ich lass es dich wissen wenn ich noch irgendwo feststecke...Danke dir erstmal für die Hilfe.

    Dienstag, 6. Dezember 2016 14:22