The simple process of setting item level permission is not available for SharePoint 2013 workflows. The only way I was able to do was through REST api called under Appstep.
There are 2 calls made:
- BreakRoleInheritance
- AddRoleAssignment
This blog by Yuri Leontyev over at spssite.pro can be a good start.
Excerpt:
BreakRoleInheritance
BreakRoleInheritance is just not documented and can be used using POST request:
https://your_sp_site.sharepoint.com/_api/web/lists/getByTitle('Test')/breakroleinheritance(copyRoleAssignments=true, clearSubscopes=true)
where
copyRoleAssignments – “if true, this method copies the role assignments of the parent securable object when breaking inheritance; otherwise, this method adds the current user to the permission level that is required to manage the list item.”
clearSubscopes – “Indicates whether subscopes should be cleared or not.”
AddRoleAssignment
Instead of the Add there is AddRoleAssignment method that also can be called using POST request (NOTE: this method works incorrectly in RTM release of SharePoint 2013!!!! It checks user within current item and if user is not found (usually as we’ve just broken inheritance) throws an exception. In SharePoint Online and March CU it works as expected):
https://your_sp_site.sharepoint.com/_api/web/lists/getByTitle('Test')/roleassignments/addroleassignment(principalid=20,roleDefId=1073741828)
where
principalid is id of user or group within current site collection. You can get a list of users by executing using GET:
https://your_sp_site.sharepoint.com/_api/web/siteusers
roleDefId is internal id of Role Definition (Read, Contribute, Full Control and so on). You can get a list of available role definitions using GET:
https://your_sp_site.sharepoint.com/_api/web/roledefinitions
Please use this guide to Enable App step in SharePoint 2013 Workflow, once you make sure all is set upped well the above solution will work fine.
facing some Error they are