I have one document library that I need to manage item level permissions for. I need a SharePoint 2010 web part developed to do this. See the attached picture for what I envision. Power users will use this web part to select a single user OR group. The web part will then query the document library and show check marks next to any documents this particular user or group has access to. The power user can then go down the list and check mark any documents that they want to give this particular user access to. They would click Save and a workflow would run in the background and assign READ permissions for the selected user (or group) to any documents that were checked, and remove permissions to any documents that were unchecked. They would also use this webpart to simply view what documents this user has access to. This will only be for 1 document library, which holds several thousand documents. The web part will need the ability to collapse folders so that the user can easily navigate through the list and select the individual documents they want to manage. Permissions for this project are granular and cannot be handled by groups alone. It will be handled by groups first, then user level permissions. For example, two users are members of a group named 'Company X'. Company X has permissions to Doc1, Doc2 and Doc3, thus each user has permissions to those documents, but we need the ability in the web part to open User 1, see that documents 1, 2 and 3 are checked, and we can then check Doc5. We could also then open User 2 through the web part, see that documents 1, 2 and 3 are checked, and we can then check docs 7 and 8 as well. They both share access through the group (to files 1-3), but have individual access as well. All of this is managed through a web part. In this scenario, documents 1,2 and 3 should show as grayed out (checked) check boxes in the user1 and user2 query since they are group level permissions. Only individual permissions would be selectable from the web part. Group permissions would need to be handled at the group level using a group query.