Why you should never attach documents in a SharePoint list
I see this happening again and again – users attach documents in a SharePoint list. Yes, you can do it – but that is not what the SharePoint list was designed for. It is like making pancakes with an iron. As a matter of fact – there are some very strong reasons for you not to continue this poor business practice. Let me explain.
Just to set the stage for what I am talking about, in SharePoint, there is a concept of a list and a library. In case you require clarification on the difference between the two, check out this post.
SharePoint Document Library, by default, allows to store and organize, you guessed it, documents (files). If you have a document to store – you would just upload one (or many) into a document library. And of course, you can organize them via folders or metadata.
SharePoint List, on another hand, is used for storing non-document information (think of it as Excel in SharePoint) – table of rows and columns of some information. This could be a list of events, properties, clients, projects, tasks, etc.
The thing is that SharePoint lists also allow you to attach documents (files) to a given list item. Say you have a list of projects or clients in a SharePoint list, you can attach the file(s) to a given item.
Attachment option in a “classical” SharePoint List
Attachment option in a “modern” SharePoint List
Eventually, you can also end up with an item that has multiple attachments associated with it.
Now that we are clear on the difference and the mechanism of the two, let me explain why you should not use SharePoint lists to store attachments.
Reason 1: Lack of Document Management features
By default, SharePoint list is not a document library and, as a result, lacks all the document management features of a document library, like versioning, check-in/check-out, co-authoring, ability to open and edit documents in the browser, etc.
Reason 2: Lack of Version History on the attached files
While you do have a version history functionality on the item in the list itself (if you enable versioning on the list), it does not carry over to the attached files. For example, if you have an item at Version 1 with two attachments, then make a change to an item and delete one of the attachments, if you decide to go back (restore) Version 1 again, it will only have 1 attachment, not the 2 it had originally. You would need to remember to go to the Recycle Bin and restore deleted attachments from there!
Reason 3: No way to organize attachments or apply document specific metadata
Since attachments just sit together attached to an item, there is no way to organize them in folders or apply file-specific metadata (like you can in the document library). I hope this is obvious!
Reason 4: Can’t upload multiple attachments at once (classical list only)
This depends on whether you use classical SharePoint list or a modern one. In classical SharePoint custom lists and other “classical” web parts like Calendar, Tasks, Issues, Announcements, etc, you can only attach one file at a time. With the modern SharePoint lists (think Custom List), this is not an issue, you can upload many at once, no problem.
How can I prevent people from uploading attachments to a SharePoint list?
Option 1: Training
Education, my friend, education. Knowledge is power! While you can turn off attachments on a list (like I describe below), you won’t remember to do it on every single list you have in your environment. So make sure to properly educate your users (share this post with them) and educate and train them before they screw it up for you!
Option 2: Turn off attachments in a list
It is very easy to disable attachments on a SharePoint list. And something I do every time I configure a list for my clients. To disable attachments in a list:
- Go to List Settings > Advanced Settings
- Scroll to the middle of the page to Attachments section and choose Disabled radio button
- Click OK
Should I never use SharePoint lists for storing documents?
Just like with any other situation in life, it depends. In most cases, it would be wise to not use SharePoint lists for storing files and working documents. However, there are certain situations where this might be beneficial. Say, for example, you have built a Help Desk system in SharePoint, and it is, of course, a SharePoint list (say, Issues log). So when users submit a ticket, you might want them to also attach screenshots to help IT solve the helpdesk request. So leave attachments on in that case.
However, anytime you need to store MS Office documents or other files for say a client or a project, and especially when you wish to store multiple documents, you are better off using good old SharePoint document libraries.
What if I need to store both the list information and documents, what do I do?
Use Document Sets!
In case you have one-to-many sort of relationship, where, say, you have a client list and some documents that need to be associated with a client, the option I would highly recommend is Document Set.
Document Set functionality allows you to create folder level metadata (your SharePoint list metadata essentially) and attach files to each document set (i.e., Client). In a way, you end up with a folder (document set) for each client or project and then corresponding documents inside of each folder. On top of that, all files stored within a document set inherit metadata from the folder! So it is almost like having a SharePoint List with attachments, except, done properly!
List of folders (document sets) with metadata (in place of a SharePoint List metadata)
Contents of a Document Set. Files are organized using metadata and benefit from all the available document management capabilities
If you want to familiarize yourself with the magic of document sets – check out this post which explains what they are all about and how to set them up.