none
Sharepoint 2013 per Workflow User Rechte und Gruppen zuordnen RRS feed

  • Frage

  • Guten Morgen,

     

    wir haben bei uns einen SP2013 on premise laufen. Dort ist auch die 2013er Workflowengine aktiviert und läuft ohne Probleme. Aktuell wird ein Workflow genutzt, der automatisch eine Subsite per http Web Service anlegt und auch die Berechtigungsvererbung unterbricht.

    Geplanter Ablauf soll sein, dass ein Benutzer eine Subsite beantragen kann und diese durch „bestimmte“ User genehmigt bekommt. Um Informationen zu sammeln, muss der Anforderer ein NewFrom item ausfüllen in dem drei Peoplepicker hinterlegt sind. Dort können dann die unterschiedlichen Berechtigungslevel (Gruppen) der User zugeordnet werden die auf die Subsite Zugriff haben sollen.

     

    Subsite Owner -> volle Berechtigung

    Subsite Member -> schreib /lese Berechtigung

    Subsite Visitor -> lese Berechtigung

     

    Die Userinformationen kommen aus einer synchronisierten AD. Die Informationen werden dann in eine separate List hinterlegt. Sobald der Antrag bzw. das Formular genehmigt wurde, wird automatisch die Subsite erstellt.

     Mein Anliegen ist es nun das beim Erstellen der Subsite automatisch Gruppen in der Sitepermission der Subsite angelegt werden und die User die in der Liste abgespeichert werden den Gruppen zugeordnet werden.

     

    Beispiel:

     

    Lothar Locher fordert eine Subsite mit der URL http://sharepoint.com/Buero an. Auf diese Subsite sollen User mit folgenden Berechtigungslevel zugreifen können.

    Hinzu soll in der Substie Persmisson drei Berechtigungsgruppen erstellt werden, die sich an der Subsite URL orientiert:

     

    Buero Owner  -> Lothar Locher

    Buero Member -> Tim Tacker

    Buero Visitor -> Thorsten Tesa

     

    Lässt sich dies per Workflow darstellen? Aktuell wurde der Workflow nur über den Designer erstellt.

    Auf Codeplex hatte ich eine custom solution gefunden die dies für 2010er Workflows nutzt. Hat jemand evtl. einen Tipp?

     

    Sollte noch was an Infos fehlen, versuche ich diese nachzureichen.

     

    Gruß und Danke

    Pat Spo

     



    • Bearbeitet Pat Spo Montag, 26. September 2016 05:47
    Freitag, 23. September 2016 07:13

Antworten

  • Hi Pat,
    wenn man es richtig macht und den Knoten im Gehirn nach etwas Schlaf löst, dann funktioniert es :-)

    Was habe ich gemacht:

    1. String-Variable "rootUrl" angelegt und mit gefüllt mit:
         WorkflowContext/Aktuelle WebSite-Url

    2. String-Variable "endPoint" angelegt und gefüllt mit:
         [%Variable: rootUrl%]_api/web/sitegroups

    3. Wörterbuch-Variable "headers" angelegt und gefüllt mit 2 String-Einträgen:
         {"Accept":"application\/json;odata=verbose","Content-Type":"application\/json;odata=verbose"}

    4. Wörterbuch-Variable "anforderungType" angelegt und gefüllt mit einem Eintrag:
         {"type":"SP.Group"}

    5. Wörterbuch-Variable "anforderung" angelegt und gefüllt mit 3 Einträgen, wobei der erste Eintrag "__metadata" (mit 2 vorangestellten Underscore!) vom Typ Wörterbuch ist und mit "anforderungType" gefüllt ist:
         {"__metadata":{"type":"SP.Group"},"Title":"Projekteigentümer","Description":"Volle Kontrolle des Projekteigentümers"}

    5. Http-Webdienst aufgerufen mit POST, headers und Anforderung.

    6. Antwort protokolliert: "Created"

    Meine Problem waren, dass sich ein rückgegebenes Wörterbuch, was etwas üppiger gefüllt ist, nicht in der Workflowverlaufsliste protokollieren ließ und dass ich die Anforderung nicht richtig erstellt hatte.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.


    Freitag, 7. Oktober 2016 06:27

Alle Antworten

  • Hi,
    mit dem SharePoint Designer 2013 kannst Du in SharePoint 2013 Workflows die Action "HTTP-Webdienst aufrufen" nutzen und den REST endpoint für die gewünschte Aktivität aufrufen. Um eine neue SharePoint Gruppe anzulegen, kann dieser Link dienen.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.

    Freitag, 23. September 2016 16:17
  • Hey,

    danke für die Antwort. Ich werd mir das mal anschauen und Rückmeldung geben.

    Dienstag, 27. September 2016 06:49
  • Ich bin jetzt soweit das ich im SPD2013 einen Workflow erstellt habe, der mir aber folgende Fehlermeldung ausgibt:

    {"error":{"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":{"lang":"en-US","value":"An entry without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified."}}}

    Der Wokflow sieht im SPD wie folgt aus:

    Log WF started

    Set Variable: GroupTitle to TestGroup

    Set Variable: Group Description to TestGroup1

    Log Variabels created

    erstellen der Dictionarys

    build requestHeaders

    Accept String application/json;odata=verbose

    Content-Type String application/json;odata=verbose

    build Metadata

    Type Sting SP.Group

    build Parameters

    __metadata String Variable:metadata

    Title Sting Variable:GroupTitle

    GroupDescription String Variable:Group Description

    build requestDictionary

    parameters Dictionary Variable:Paramters

    Der HTTP Web Service wurde im App-Schritt ausgeführt bzgl. der Berechtigung.
    Webservice enthält dann folgende Eingaben bzw. Verweise auf die einzelnen Dictionary Variablen .

    Call http://sharepointtest/Sitecollection/_api/web/SiteGroups (HTTP POST) HTTP web service with Variable:requestDictionary (ResponseContent to Variable: response Content | ResponseHeaders to responseHeaders | ResponseStatusCode to Variable:responseCode

    Then Log App step finished

    Go to End of Wokflow

    Evtl. hat ja jemand noch nen Tipp woran er nun scheitert, da ich nicht auf Anhieb jetzt ersehen kann welcher Eintrag im Wokrflow keinen Namen hinterlegt hat. Kann leider noch keine Snapshots hochladen.

    Dienstag, 27. September 2016 11:52
  • Hi,
    ich kann auf Anhieb keinen Fehler sehen. Protokolliere mal mit dem Fiddler den JSon, der an den SharePoint abgeschickt wird.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.

    Dienstag, 27. September 2016 11:59
  • Mit dem Tool kenn ich mich leider gar nicht aus :/

    Habe nochmal eine URL Variable hinzugefügt, weshalb die URL ohne den die API ausgegeben wird.

    Hier nochmal die Variablen und erstellten Dictionarys die ich mir per Mail zukommen lassen hab.

    GroupTitle

    TestGroup

    Group Description

    TestGroup1

    Dictionary

    requestHeaders

    {"Accept":"application\/json;odata=verbose","Content-Type":"application\/json;odata=verbose"}

    metadata

    {"type":"SP.Group"}

    paramters

    {"__metadata":{"type":"SP.Group"},"Title":"TestGroup","GroupDescription":"TestGroup1"}

    URL

    http://sharepointtest/Sitecollection/

    Habe auch schon etwas gefunden gehabt wo es an der Groß-/Kleinschreibung gelegen haben soll. Ist aber auch schon ausprobiert. Bezog sich zwar auf User, ist aber denk ich das selbe nur in grün. Link: http://blogs.candoerz.com/question/255909/problem-with-workflow-rest.aspx




    • Bearbeitet Pat Spo Dienstag, 27. September 2016 14:26
    Dienstag, 27. September 2016 12:36
  • Moin,

    hat nicht noch jemand einen Tipp? Konnte leider bis jetzt keine Lösung finden um den Workflow im SPD zu verwirklichen. Bekomme jedes Mal die selbe Fehlermeldung. Das was ich bis jetzt gefunden hatte, bezog sich immer nur Java Script in dem ich jetzt nicht der Profi bin :D Ich weiss das der SPF in Sachen Entwicklung von Custom Workfows nicht das obtimalste tool ist doch es müsste auch möglich sein solch einen WF zu erstellen.

    Danke für die Hilfe

    Pat Spo

    Freitag, 30. September 2016 07:29
  • Hi Pat,
    kannst Du nochmals zusammenfassen, welcher Aufruf bei Dir nicht funktioniert, d.h., welcher Fehler geworfen wird, d.h., welcher ResponseStateCode und welcher ResponseContent die Http-Webservice-Activity zurückgegeben wird?

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.

    Samstag, 1. Oktober 2016 15:27
  • Hey Peter,

    danke für deine Antwort. Es wird folgendes ausgegben wenn ich mir die Codes Mail zukommen lasse:

    Responsecode:

    BadRequest

    ResponseContent:

    {"error":{"code":"-1, Microsoft.SharePoint.Client.InvalidClientQueryException","message":{"lang":"en-US","value":"An entry without a type name was found, but no expected type was specified. To allow entries without type information, the expected type must also be specified when the model is specified."}}}

    Die Subsite ist erstellt und hat aktuell die Vererbung der Berechtigungen unterbrochen, somit ist nur das Adminkonto berechtigt. Die App permission wurde zugelassen. Ich entnehme der Fehlermeldung zwar das ein "Type" ohne Bezeichnung vorhanden sein soll, doch welcher das sein soll erschließt sich mir nicht wirklich. Ich kann mir nur vorstellen das ein Type bzw. eine Variable oder Dictanary fehlt die noch zur Erstellung der Gruppe fehlt.

    Zu beachten ist, dass der Teil des Workflows erstmal nur eine Gruppe mit bestimmter Namensgebung in einer Subsite erstellen soll, im nachhinein soll dies dann um die Berechtigung der Gruppe und Benutzer die in diese Gruppe sollen erweitert werden.

    Wenn ich in den Blog Eintrag von Jason Lee (http://www.jrjlee.com/2014/01/custom-workflow-activity-for-creating_23.html)  schaue, hat dieser in seinem Script noch weitere Typen die einerseits hinterlegt werden müssen, andererseits ausgegeben werden. Müssen wie z.B. die GroupID durch den Workflow abgefragt werden? Könnten das evtl. die fehlenden Paramter sein die im Workflow fehlen? Lässt sich so etwas über den SPD2013 überhaupt verwirklichen?

    Dienstag, 4. Oktober 2016 07:45
  • Hi Pat,
    ich habe gerade mal mit dem SharePoint Designer ein GET auf sitegroups abgesetzt, lief zwar mit Status OK, aber ohne Antwort (Workflow hängt). Ich werde mal weiter versuchen, den Add-In-Workflow aus dem Visual Studio in einen SharePoint Designer Workflow umzusetzen.

    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.

    Mittwoch, 5. Oktober 2016 06:23
  • Hallo Peter,

    vielen Dank für die Rückmeldung und danke für die Unterstützung.

    Donnerstag, 6. Oktober 2016 12:02
  • Hi Pat,
    wenn man es richtig macht und den Knoten im Gehirn nach etwas Schlaf löst, dann funktioniert es :-)

    Was habe ich gemacht:

    1. String-Variable "rootUrl" angelegt und mit gefüllt mit:
         WorkflowContext/Aktuelle WebSite-Url

    2. String-Variable "endPoint" angelegt und gefüllt mit:
         [%Variable: rootUrl%]_api/web/sitegroups

    3. Wörterbuch-Variable "headers" angelegt und gefüllt mit 2 String-Einträgen:
         {"Accept":"application\/json;odata=verbose","Content-Type":"application\/json;odata=verbose"}

    4. Wörterbuch-Variable "anforderungType" angelegt und gefüllt mit einem Eintrag:
         {"type":"SP.Group"}

    5. Wörterbuch-Variable "anforderung" angelegt und gefüllt mit 3 Einträgen, wobei der erste Eintrag "__metadata" (mit 2 vorangestellten Underscore!) vom Typ Wörterbuch ist und mit "anforderungType" gefüllt ist:
         {"__metadata":{"type":"SP.Group"},"Title":"Projekteigentümer","Description":"Volle Kontrolle des Projekteigentümers"}

    5. Http-Webdienst aufgerufen mit POST, headers und Anforderung.

    6. Antwort protokolliert: "Created"

    Meine Problem waren, dass sich ein rückgegebenes Wörterbuch, was etwas üppiger gefüllt ist, nicht in der Workflowverlaufsliste protokollieren ließ und dass ich die Anforderung nicht richtig erstellt hatte.


    --
    Viele Grüsse
    Peter Fleischer (MVP, Partner)
    Meine Homepage mit Tipps und Tricks
    Warum Groß- und Kleinschreibung wichtig ist:
    Der Gefangene floh.
    Der gefangene Floh.


    Freitag, 7. Oktober 2016 06:27
  • Hallo Peter,

    ich habs jetzt mal getestet. Als ersters hatte ich einen Fehler bekommen und zwar.

    401 UNAUTHORIZED

    Hatte gesehn das due App Permission deaktivert war. Nachdem ich diese aktivert hatte für die Subsite lief der WF mit Status OK druch. Alledings erstellt er mir nicht die Gruppe, zumindest finde ich sie in der Administration und den Permissons nicht. Ich schau gleich nochmal weiter nach...

    Wurde bei dir die Gruppe angelegt?

    Gibt es die Möglichkeit die App Permisson global zu setzen? Wenn eine neu Subsite erstellt wird is unter Manage Featuers der Subsite " Workflows can use app permissions" immer auf deaktivert. Dadurch läuft der WF dann in den Unauthorized Fehler. Auf der SiteCollection Seite ist die Permssion auf active.

    Gruß

    Patrick und nochmal vielen Dank für die Hilfe!


    • Bearbeitet Pat Spo Montag, 10. Oktober 2016 11:36
    Montag, 10. Oktober 2016 11:26
  • Hi Patrick,
    natürlich wurde die Gruppe angelegt. Alle Gruppen werden aber in der Websitesammlung gesammelt (verwaltet). Genutzt werden sie aber dann im entsprechenden Objekt irgendwo tiefer in der Struktur der Websitesammlung.

    Der Status OK ist nicht gut. Der Status muss CREATED sein. Vielleicht hast Du vergessen, auf POST umzustellen. Bei GET kommt OK.


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




    Montag, 10. Oktober 2016 11:32
  • Leider ist er auf POST gestellt, egal ob POST oder GET, bei beiden kommt OK wenn ich mir den responseCode per Mail zukommen lasse.
    Montag, 10. Oktober 2016 12:08
  • Folgendes bekomm ich reported:

    request:

    {"__metadata":{"Type":"SP.Group"},"Title":"Testgruppe_Owner","Description":"Komplette Berechtigung"}

    requestType

    {"Type":"SP.Group"}

    responseCode

    BadRequest

    responseContent

    wird  nicht ausgegeben!


    Der BadRequest kann natürlich alles mögliche bedeuten. Die URL die ich noch zusätzlich ausgegeben bekomme passt soweit und ist mit der API vervollständigt.


    • Bearbeitet Pat Spo Mittwoch, 12. Oktober 2016 12:39
    Mittwoch, 12. Oktober 2016 12:35
  • Hi Patrick,
    der requestType muss HTTP POST sein.

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

    Sonntag, 16. Oktober 2016 04:51
  • Hey Peter,

    der WF bzw. die REST API ist auf POST gestellt. Leider bekomm ich immer noch die Meldung OK bzw. BadRequest.

    Gruß

    Pat

    Montag, 17. Oktober 2016 07:25
  • Hallo Peter,

    Gruppen werden nun korrelt angelegt :) Habs sie nun erstellen können, frag bitte nicht warum es jetzt geht...hab den WF nochmal komplett neu aufgesetzt...

    VIEL VIELEN Dank für deine Hilfe doch das war erste Etappe Nr. 1 :D

    Nun gehts weiter die Gruppen in die richten Unterwebseiten zu lenken und die reichtigen Recht zu vergben und User zuzuordnen.
    Montag, 17. Oktober 2016 14:38
  • Hi,
    wenn es nicht klappt, dann melde Dich mit konkreten Fragen. Lösbar sind Deine Fragen.

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

    Montag, 17. Oktober 2016 17:17
  • Guten Morgen,

    wie in der eigentlichen Fragestellung ganz oben, möchte ich eine Sharepoint Gruppe in einer vorher erstellten Subsite als berechtigte Gruppe erstellen lassen. In diese Gruppe sollen dann aus einer Liste (mit People Picker) User zugeordnet werden. Die Rechte für die Subsite sollen dann auf die Gruppe angewand werden.

    Ablauf wie folgt:

    create Subsite (done) -> create group (almost finished) -> set group rights -> add user from list item

    Nun ist es so das die Subsite erstellt wird und dank dir Peter, auch die Gruppe. Nun ist aber die Gruppe in der Sitecollection hinterlegt aber nicht der Subsite zugeordnet. Jetzt müsste im Endeffekt noch ein Schritt dazu kommen, dass die erstellte Gruppe der Subsite zugeordnet (in den Site permissions) wird. Da ich aber schon im GUI sehe, dass ich innerhalb einer Subsite vorhandene Sharepoint Gruppen nicht zuordnen sondern nur neu anlegen lassen kann, wird wohl ein "verschieben" der Gruppe so nicht möglich sein...nehm ich mal an.

    Im Grunde sollen die Standardgruppen (Owner, Member, Visitor) Erstellt werden wenn eine Subsite automatisch angelegt wird und zusätzlich Benutzer hinzugefügt werden, die aus einem Listitem gezogen werden.


    EDIT:

    Hab jetzt einiges gelesen und gesehen das es nicht mögklich ist, aktuelle mit der REST API Gruppen innerhalb einer Subsite anzulegen. Sollte wer was anderes wissen bzgl. der REST API, gerne Info.

    Anbei der Info Link: http://www.jrjlee.com/2014/01/custom-workflow-activity-for-setting_24.html

    Somit lässt sich zum aktuellen Zeitpunkt wohl kein SPD Workflow mit der Anforderung erstellen...

    Ich denke wenn es keine weitere Info dazu gibt, kann das Thema geschlossen werden...alternativ würde ich bei weiteren Fragen einen neuen eröffnen.




    • Bearbeitet Pat Spo Dienstag, 18. Oktober 2016 08:06
    Dienstag, 18. Oktober 2016 06:56
  • Hi,
    mir ist unklar, in welchem Schritt Du Probleme hast:

    1. Gruppe anlegen

    2. Nutzer der Gruppe hinzufügen

    3. Vererbung des betreffenden Objektes brechen, ggf. mit Kopie der geerbten Rechte

    4. nicht benötigte Gruppenzuordnung löschen

    5. neuen Rechtesatz anlegen, wenn erforderlich, ansonsten vorhandenen nutzen

    6. Gruppe mit Rechtesatz verknüpfen

    7. Gruppe dem betreffenden Objekt zuordnen


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

    Dienstag, 18. Oktober 2016 09:45
  • Na das hört sich ja einfach an :)

    Ich werd mich mal ran machen und schauen ob ich das auf die Reihe bekomme. Meld mich dann bei Bedarf nochmal! Danke für die Hilfe.

    Gruß

    Patrick

    Montag, 24. Oktober 2016 09:25