Recently I have had the opportunity to utilize Document Sets in some projects I had been working on. I think they are an amazing tool, but not without their limitations. Check out this blog post from SharePoint Analyst HQ if you would like to read up more on that topic. Also if you are not very familiar with Document Sets in general, you can read about them here. In this post, I want to focus on the pros and cons of using document sets versus creating a custom Folder content type.
Custom Folders
For those that aren’t aware, you can create a content type using the Folder content type as a parent.
This gives you the ability to create folders that have additional metadata properties as seen here:The Project
The Project
So to compare Document Sets against custom folders, let’s imagine we have the following requirements:
- Need ability to track the following metadata about the project
- Project Name
- Project End Date
- Project Status
- Need ability to version project documents as a whole
- Need to support sub projects
We will look at each requirement individually to see what pros and cons each of our solutions has to offer. Also for this project we are not allowed to use custom code. This would be cheating since you could pretty much accomplish anything in SharePoint with enough custom code.
Track Project Metadata (Winner: Document Sets)
On the surface it would see that both solutions are equal since each can have metadata attached to the root folder as soon here:
When you look closer, you will see that Document Sets win in this category because you have much more control of your project documents. One of the biggest advantages is the ability to push metadata values from the Document Set to the properties of the documents inside. For example, if you create a Project Document content type which also had values for Project Name, Project End Date, and Project Status, you could setup your Document Set so that all documents inherit its parent Document Set’s values for these fields. You can also control which content types are allowed; you can auto-generate new documents when a new Document Set is created; you can attach the Document Set Name to each sub-document; and so much more.
The only customization you can do with folders is to change the default values on a folder by folder basis. Go to Library Settings > Column default value settings. Now you can click on each project folder and specify the default values for all documents in that folder. This is a cumbersome workaround, but maybe it will work depending on your goals.
Version Projects (Winner: Document Sets)
This one is a clear winner for Document Sets since versioning Document Sets is one of its core abilities. Granted, it is a manual process to version a Document Set, but there is not a good alternative for custom folders. The best you could do is zip up the project folder and version that zip file in a different document library.
Sub Projects (Winner: Custom Folders)
Now this requirement could be a potential game changer if you were all set on using Document Sets already. For some reason, you can’t nest Document Sets. To make things even worse, you can’t even create folders inside Document Sets! Custom folders on the other hand have no restrictions like this. If you needed to accomplish this with Document Sets, the best you could do would be a setup like this:
- Create a new list called Projects.
- Add fields for Project Name, Project End Date, and Project Status
- Populate this list with all projects you plan to track
- Back in your document library, create a new Document Set content type with the following fields:
- Project – This is a lookup field to the Project list
- Parent Project – This is also a lookup field to the Project list
Now for each Document Set you create you can specify which project the documents are associated with and if there is a parent project, you can specify that too. This is not the most intuitive process, but depending on your requirements you may need to do something like this.
Anyways I hope this help. As with all projects I do in SharePoint, I am able to get a %90 solution fairly easy, but getting that last %10 to work is always a struggle.