0

I am wondering if there is a way to achieve the following:

We have SharePoint lists on all sites within a site collection (some modern lists and some classic lists) where we have some basic common data columns. These columns are applicable across all sites within the site collection and are referenced by some power automate flows. We do not want users to be able to edit or delete these columns.

We want to be able to enable users to add their own columns for data entry to suit their individual needs. These columns won't be used in the power automate flows, so it doesn't really matter what they do with them or what they call them, that's up to the user.

I am aware that column level permissions doesn't seem to be possible in SharePoint. But I was wondering if it's possible to split up the permissions granted by the 'Manage lists' permissions setting so that users can add columns, but not edit or delete any columns in existence?

I am aware this could create a situation where users create columns that they can then no longer structurally edit or delete, but I'm willing to work around that if what I'm trying to achieve is possible.

Is what I'm trying to achieve possible?

Thanks in advance!

1
  • Have you tried the workaround below? Does it meet your requirements? As there is no such function at present, to address your concern about the situation, we’d suggest you go to feedback on this issue, this is the best platform to let us hear from you and make our products and services better for you and others. The more votes, the easier it is to be seen. feedbackportal.microsoft.com/feedback/forum/… Jun 8, 2023 at 6:21

1 Answer 1

0

Column Level Permission is not possible by default in both the way i.e. for adding information or for managing column as per your requirement i.e. user should only allow to add column but not edit or delete.

As work around you can create Remove Event Receiver of type A field is being removed and A Field is being updated as shown in below screen shot

enter image description here

Here you can write your own code where you can decide where you want to allow field updation or deletion by canceling event as shown in below screen shot:

public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties)
        {
            SPRemoteEventResult result = new SPRemoteEventResult();

            using (ClientContext clientContext = TokenHelper.CreateRemoteEventReceiverClientContext(properties))
            {
                if (clientContext != null)
                {
                    clientContext.Load(clientContext.Web);
                    clientContext.ExecuteQuery();


                    if(properties.EventType == SPRemoteEventType.FieldDeleting || properties.EventType == SPRemoteEventType.FieldUpdating)
                    {
                        // decide whether you want to allow to delete or not

                        bool allow = false;

                        if(!allow)
                        {
                            result.Status = SPRemoteEventServiceStatus.CancelNoError;
                        }
                    }
                }
            }

            return result;
        }

Helper links for remote event receiver:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.