Document Sets 101 (Part 2 of 2)

In part one (link to part 1) of our 3 part series on document sets we learned about what a document set is and what sets them apart from a boring old folder as well as what makes them a much better option.

If you read Part one, you should already be getting an idea of how much more customizable and dynamic document sets are. But as I mentioned previously, a demo is worth a thousand words! Let's jump right in with a simple real world user case!

Imagine the following business scenario... You are a SharePoint consultant for a company that installs swimming pools around town. Every time your client gets a new order for a swimming pool it involves several meetings, such as inspections, follow-ups and estimations. All of these meetings require different sorts of forms and documents to be filled out and stored somewhere.

Up until now, your client has been putting all of these forms into a document library with a folder and sub-folders for every new pool that gets commissioned. Now because you are the best at what you do, you immediately realize that this is a poor implementation and usage of SharePoint, so you decide that you are going put your cape on and heroically save all of their lost potential metadata. How are you going to do this you might ask? With my favorite alternative to a complex folder structure: Document sets!

Lets start by making a simple document set content type using the swimming pool client scenario I mentioned earlier. Like with any content type, lets start by making some columns. For this example I made the following :

  • CustomerName - Single Line of text
  • OrderId - Single Line of text
  • ContractValue - Currency
  • ProjectStartDate - Date
  • ProjectEndDate - Date
  • FirstFollowUp - Date
  • LastFollowUp - Date
  • TypeOfInstallation - Multiple choice (I'm using multiple choice but this might be a good column to put slip some Managed metadata terms if you set them up previously!)

I'm gonna make a new group for my columns so that they are easy for me to find, I'll call it something extra creative like "poolConstructionDS".

Now that we got that out of the way, lets start making that content type! From Site Settings under web designer galleries I'm gonna click on Site content types, then create. I'll give it a name and a description, then when I choose the parent content type to inherit from I'm going to select "Document set content types". I'll go ahead and make a new group called "DocumentSetCTs" so I can find it easily when I decide to implement more document sets for my client. If you're following along it should look something like this :

After I click on okay, I can see my newly created content type. If you've made a content type before, this page will look familiar with one new feature. At the bottom of the settings you should see a new link called "Document Set settings", we will check this out very soon!

First things first, lets add the columns we made earlier. Just scroll to the bottom of your content type page and click add from existing site columns. Take those awesome columns you made earlier and add them to your content type.

This will be super easy because you were smart earlier took the extra time to put your new columns into a group! When you're all done it should look something like this :

At this point I like to click on "Column order" just to make sure the order that the columns show up makes sense to me, but if your OCD can handle it, lets move on to the new link I mentioned earlier, "Document Set settings".

The first thing you will see after you click the link is a section for allowed content types. Document is already in there by default, but now maybe you're starting to see why this is so much better than a simple folder?

So taking our scenario as an example, our client has a couple of events that go into each new pool projects which required some documents at every step. These are the same for every new project, so wouldn't it be great if we just had templates associated with a content type and then were able to associate them with this document group?

Well lucky for you the fine people at Microsoft have allowed just that! I wont go in depth as to how to associate a document template with a content type, but it's as simple as saving a template to your desktop (or taking a url from a templates library in SharePoint), creating a content type (obviously one that inherits from document), then going in under "advanced settings" and uploading the template (or inputting the url) under the "DocumentTemplate" section.

I'll dig deeper into how to make templates and associate them with content types in another blog, but for now I'll use a couple that I've made before. Just select the group you put your template content types in and then add them to your document set content type. This is extremely useful when it comes to data and structural integrity.

By strongly specifying the types of documents that are allowed within this document set, I can ensure that users don't accidentally put the wrong sort of content in this library. More control of how your documents is managed is always better! Once you have added the templates you should be looking at something similar to this :

When you scroll down the page a bit, the next option you will see is for "Default content". Now remember that our client has the same routines for each pool project with the same forms every time. We can actually set up a folder structure within their document before hand, so that every time a new document set is created they get a familiar look and feel with default content already added!

These aren't always necessary and have some funny behavior when it comes to shared properties, but they are a cool feature to explore and play around with! If we scroll a bit lower we will see the "Shared columns" section. These are the columns that will be Synchronized with all documents added to the set. So if we imagine that for our customers needs, they always upload documents from a template that we have already associated with a content type. As we all know, the template content types can have any other extra columns that they need already added to them.

By selecting these other columns from the list, we can also associate these values with any new documents added to the document set. Better yet, these properties are already filled in when initiating a new document set in the library, so those values will automatically be added to the document without the need for the user to do any extra typing! I'm gonna pick a few that I think will be helpful like this :

Now any documents I add to this document set will not only have the properties of the content type they are associated with, but also have the properties I selected in this section. Next up we have the "Welcome Page Columns". As I mentioned previously, one of the things that sets document sets apart from a folder structure is that it comes with a welcome page.

The columns that you pick here and their associated values will be neatly displayed on this welcome page, making that information always close at hand and easily accessible. I think all of my columns should be on the welcome page because I like them so much, but I'll leave the choice up to you. Here's what it looks like so far

PROTIP: The order in which you add your columns here will be the order that they are displayed on the welcome page, so be aware of that when making your selections!

Last but not least we have "Welcome Page" section. You should see a checkbox there that says "Update the welcome page of document sets inheriting from this content type". Since we haven't actually implemented our content type anywhere yet this isn't super important to us, however, if you ever go back and make changes or additions to your welcome page, this checkbox is useful for updating all of the welcome pages on document sets created with this content type that are already in production.

When we click the link "customize the welcome page", we are taken to a pretty normal looking SharePoint page with a few things already built in. We can edit this page just like any other page in SharePoint. On the top left hand side of the screen you will see a button for page. Click that and select edit. As you can see its just like any other SharePoint page! You can add or remove web parts as you see fit, add some text and change the layout.

On the left you'll see a section for an image. For the purposes of this demo I think the layout is fine, I'm just gonna add an image that I already uploaded to a library somewhere in SharePoint and some helpful text so users know a bit about the type of library they are working in. The end result should look something like this :

Looks way better and more fun for an end user than a document library with a bunch of folders right? Go back to your content type page and click okay, we are almost done!

Now that our content type is all set up, it's time to add it to a document library! Go to site contents and add a new document library to the site, I named mine "PoolProjects". Once it's created, go to your document library and go to library settings from the ribbon (or from the cog wheel if you are using the new SharePoint look).

Click advanced settings and select "yes" in the section for content types. If you scroll down on the library settings you'll see a section called "Folders". This is on by default, but since I want the content in here structured in a very specific way I'm going to switch it off so that my users aren't tempted to start adding strange folders all over the place. You can always turn this back on, but as you saw earlier with all of the tools you have to structure and customize your document set content type, users should never even have to make there own folders.

Click on okay. Scroll down the page and you will see a new area called "content types". Click the link for "Add from existing site content types". Choose your DocumentSetCts group and choose your PoolProjects content type from the list. It should look like this :

"Document" is a default content type that is present in every document library. Since we already have "document" as an allowed content type in our document set, lets remove it to make a better and less confusing experience for our users.

Click the link for "Change new button order and default content type". Uncheck the box for "Document" and change the position of your document set content type to 1.

Awesome! Your document set is ready to use. I added a view to the document library as well as some sample document groups, lets take a look at the final product :

On the first page you can see all of my document sets with a view I made previously. I group the items based on TypeOfInstallation and then add a sum based on the ContractValue.

When I click the new button, you see I'm only able to select my PoolProjects document set content type

This is what the inside of one of my document sets "Pool Project 2" looks like

Notice how the properties I selected for my welcome page are all nicely displayed front and center? At the top I have a nice breadcrumb for navigation as well! Now my user needs to add a document for the estimate of the pool price. Since I added that template to my document set content type, they only need to press the "New Button" and select it from the list.

If I click on my document and view properties, I can see that the shared properties I selected are all automatically added

This is a pretty simple implementation of a document set, but I hope you can already see how much better of an alternative it is to folders in SharePoint. Well structured document management is what SharePoint is all about at the heart of things.

The possibilities to use and make managed metadata a key structural component through out your tenant are endless! Contact Cognit today about how we can make the most out of your investment in Office 365 and really bring your content to life!


James is a consultant and junior developer that is extremely motivated and excited to deliver real business value to clients through both coded and “Out of the Box” solutions.

Gothenburg, Sweden