Skip to main content

Power automate Flows for SharePoint

We can assign sharepoint memeber to a SharePoint group

Note: Every group name has a prinicple ID which we need it to play around.

Step 1: using connector "Send HTTP request to Sharepoint"

Step 2: Use end points as below for Url: Here 6 is the group ID we can get from sharepoint settings click on group and in the URL we can find the group ID.

_api/web/sitegroups(6)/users

Step 3: Headers

Headers: accept application/json;odata=verbose content-type application/json;odata=verbose

Step 4: Body 

Body: {"__metadata":{"type":"SP.User"},"LoginName":"XYZclaims"}

Note: Keep remember quotes "" are required when dynamically passing claims value

{"__metadata":{"type":"SP.User"},"LoginName":"@{items('Apply_to_each')?['Claims']}"}

Note: Here xyzclaims means your dynamic "people picker field having claims"

In SharePoint list for an Item, Assign Unique permissions

General procedure in SharePoint, In the item level, we need to break the permission from the default and add provide contribute access.

SharePoint field Receipient field or ModifiedBy user or CreatedBy user

I have a scenario, where recepient field with people picker. Receipient field user once item created, he should having default permissions, and then I would like to assign a unique permission to the user of Receipient field (as contribute access)

Flow steps:
Step 1: When an item created
Step 2: Initialize a variable for principle ID of recepient user field.
varprincipleID_Recipient_field as integer type

Step 3: In order to get principle ID of receipient field, we are connecting to sharepoint list

send http request to sharepoint connector
Url: _api/web/SiteUsers/getByEmail('@{triggerOutputs()?['body/Recipient_x0020_Email']}')

Step 4: assign the output of step 3 to varprincipleID_Recipient_field 

using Set varaible action:
varprincipleID_Recipient_field to
@{body('Send_an_HTTP_request_to_SharePoint_PrincipleID_recepient_field')?['body']?['d']?['id']}

Step 5: Now we need to assign the read permission to the user.
Hence in this step, we are add role assignment as read access first.

using Send HTTP request to sharepoint connect
POST method
_api/lists/getByTitle('Acknowledgement')/items(@{triggerOutputs()?['body/ID']})/roleassignments/addroleassignment(principalid=@{variables('varprincipleID_Recipient_field')},roledefid=1073741826)

Note:
1073741826 - Read
1073741827 - Contribute
1073741829 - Full control access

Break inheritance of Sharepoint List item and assign a sharepoint group from full control access to contribute access

Step 1: Initialize variable for principleIDForSharePointGroup
Step 2: Now we need to break the inheritance for SharePoint list item

Send HTTP Request to SharePoint 
POST
URL: _api/lists/getByTitle('Acknowledgement')/items(@{triggerOutputs()?['body/ID']})/breakroleinheritance(copyRoleAssignments=false,clearSubscopes=true)

Step 3: Now We need to get the principle ID
Send HTTP request to Sharepoint
GET
URL: _api/web/SiteGroups/getbyname('Centralized%20Operations%20Communication%20Management%20Owners')

Step 4: Set the priciple ID to the variable principleIDForSharePointGroup from Step 3

@{body('Send_an_HTTP_request_to_SharePoint_Get_role_principleID_Owners_group')?['body']?['d']?['id']}

Step 5: now we need to addroleassignment to the item with our new principle ID with permission level

of read/contribute which ever we want to give

Use Send HTTP Request to SharePoint

POST method

_api/lists/getByTitle('Acknowledgement')/items(@{triggerOutputs()?['body/ID']})/roleassignments/addroleassignment(principalid=@{variables('varGroupNameID_principleID_OwnersGroup')},roledefid=1073741827)

Note:

After this step, Make sure admin Owner is having full control access by repeating similar steps again


Flow to check with List field (type people picker field) wether O365 AD group or SharePoint Group

Step 1: Compose action, Acknoweldgement field (people picker field in SP List item)
Step 2:
using Condition action,
Outputs contains i:0#
Here Outputs means Compose varaible output.

if No means the Step 3:

Step 3:
Initialize and Set a variable name Uri with
/_api/web/sitegroups/getbyname('@{outputs('Compose')}')/users

Step 4: using Condition action, find out whether O365 AD group or SharePoint group

Outputs contains c:0t.c|

If Yes means, Office 365 AD

Step 5:

initialize and set a variable ADGroupuser string type
split(outputs('compose'),'|')[2]

Step 6:
Use connection from O365AD, List group memebers 
Group ID: assign step 5 output variable ADGroupuser

step 7:
Compose variable
Inputs: value "which is nothing but value output from step 6"

Step 8:
Apply to each
Outputs

We can see individual values like We can get email, login name etc..

Step 4: continuing, If no means SharePoint group

Step 9:
We use Send HTTP request to SharePoint

Uri: URL (pass the URL prepared in Step 3)

Step 10: Initialize and Set varable which is Array type with d.results
as below formate
@{body('Send_an_HTTP_request_to_SharePoint')['d']['results']}

Since it is array, we need to loop it

Step 11: Apply to each
We can get email, login name etc..




Comments

Popular posts from this blog

Powerapps overcome 2000 item limit from any datasource

First go through delegation concept https://tejasadventure.blogspot.com/2020/05/power-apps-understanding.html In powerapps, we observe by default 500 item limit has set with in the app level for any data source. In order to overcome, we have option to set the limit of 2000 item limit maximum in the app. Now using code, MaximoFacility is my data source name contains 3000 items. ColFacilityDropdown is the collection storing the count of items from data source. We expect to see more than 2000 items. Based on StartWith function filtering the data with respective to the charectors and numbers as mentioned below. Code: Place the below code in a button on select property. Add label with code CountRows(ColFacilityDropdown) ClearCollect(ColFacilityDropdown,Filter(Filter(MaximoFacility, Status = "ACTIVE"), StartsWith( Title, "A" ))); Collect(ColFacilityDropdown,Filter(Filter(MaximoFacility, Status = "ACTIVE"), StartsWith( Title, "B" ))); Collect(ColFacilit...

Power Apps Understanding

https://tejasadventure.blogspot.com/2019/10/power-apps-we-have-1.html https://tejasadventure.blogspot.com/2019/11/power-apps-how-to-configure-using-blank.html   https://tejasadventure.blogspot.com/2019/11/power-apps-field-controls.html Report We can use people picker fields, look up fields  file attachment back next save cancel download the report and this report can be used in other system of powerapp. Add new report button - asks add from existing report Report all item view can design in the way like sharepoint list views for example. we can group it Group AND or Group OR by apply filters Canvas apps: Arrange user experience and interface design allow creativity and business use case guide how the way app wants to look like. Sources can be around 200+ ways. Majorly SharePOint, Power BI From data, From Sample From CDS From blank canvas via appSource Model driven apps: Model driven apps uses power of CDS rapidly to configure your for...

PowerApps multiselect cascading dropdown and save an item to SharePoint List

 I have one scenario as below List 1: Division List has title field List 2: District List has Title and Division Field(LookUp from Division List) List 3: Facility List has Title, District Field(LookUp field from District List) List 4: County List has Title, Facility Field(LookUp field from Facility List) Main List: Spill Report is the main list  Division Field( Look up from Division List) District Field(Look up field from District List) Facility Field(Look up field from Facility List) County Field(Look up field from County List) List Screenshots provided below can be refered for clarification. ----------------------------------------------------------------------------------------------------- PowerApps Canvas Apps In Power Apps Canvas App, We need to first design the app with the 4 respective fields Since those fields are multiselect, then it is to combo box. Generally power apps are not supported for multiselect cascasding dropdown. Refere microsoft documentation, Know Limit...