Benutzer mit den meisten Antworten
Sharepoint 2013 per Workflow User Rechte und Gruppen zuordnen

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
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-Url2. String-Variable "endPoint" angelegt und gefüllt mit:
[%Variable: rootUrl%]_api/web/sitegroups3. 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.- Bearbeitet Peter Fleischer Freitag, 7. Oktober 2016 06:28
- Als Antwort markiert Teodora MilushevaModerator Montag, 17. Oktober 2016 12:04
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. -
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.
-
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. -
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
-
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
-
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. -
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?
-
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. -
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-Url2. String-Variable "endPoint" angelegt und gefüllt mit:
[%Variable: rootUrl%]_api/web/sitegroups3. 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.- Bearbeitet Peter Fleischer Freitag, 7. Oktober 2016 06:28
- Als Antwort markiert Teodora MilushevaModerator Montag, 17. Oktober 2016 12:04
-
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
-
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
- Bearbeitet Peter Fleischer Montag, 17. Oktober 2016 17:18
-
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
-
Hi Patrick,
der requestType muss HTTP POST sein.--
Viele Grüsse
Peter Fleischer (MVP Reconnect, Partner)
Meine Homepage mit Tipps und Tricks -
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. -
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 -
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
-
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