Challenge #2 in implementing SharePoint: Column Level Permission in SharePoint
SharePoint Feature Description
According to SharePoint Challenge ID #01, there is possible to set permissions upon item level in SharePoint. Every list item in Microsoft SharePoint has a specific information. For example in our test implementation of Microsoft SharePoint Server, we have a list to store the contract information such as contract date, client name, contract price…
SharePoint Challenge Description
The challenge is in the real world situation, specific user groups have the permission to see and edit a specific SharePoint column in an item. For example in the contract list, the user from sales department should be able to see and edit the pricing information of the contract, but this information should be invisible from other department users.
One suggested solution may be to create custom display and edit form for a list and hide the specific column there. Unfortunately, this cannot be a solution to the challenge since the user has the permission to create view on this list and can select the pricing information as the listed columns and see this information. Also we cannot deny the view-creation permission level of users since many users use views to do their day to day jobs in Microsoft SharePoint.
The other suggested solution was using Microsoft InfoPath forms to create custom form for this list and hide the pricing information. If we want to use this solution, we should not promote the InfoPath objects to SharePoint columns and data will be saved unstructured in the list which was not desirable at all, since the main purpose of the portal is to have structured business information available to users. Moreover, this approach were not an option for us too since we use SharePoint foundation and form service is only available on enterprise version of the product.
There is no solution for this challenge yet and we couldn’t overcome this problem. But we did some workaround. We developed a separate list for the pricing information of the project and created a lookup column to the contract list and give the sales department permission to see and update this new list information. This workaround solve the problem but increase the complexity of the project and the maintenance cost is increased too since we have to maintain larger number of lists in the portal. But the positive side is we use the default SharePoint features and there is no need to code in Visual Studio.