Every business utilizes many different types of data for many different reasons. This data is crucial, critical, and any mismanagement of data can often directly affect your productivity, time spent on projects, and inevitably your bottom-line. The problem is, employee information is different than product data. Similarly, Client contracts are different than consumer contracts. Every time somebody accesses one of these documents, it opens the door for errors. When you have more than one person accessing the same content, the margin of error increases exponentially.
Good news! By utilizing SharePoint Services 3.0, you can avoid mismanagement, and you can organize your data & Workflow in whichever way benefits your business the most. Not only is it easy to use, but it also has a plethora of features that can be customized to fit any of your business needs. Two of the core concepts in SharePoint that are designed to organize your data are content types & columns. *It is important to understand the concept of governance, because governance is the key ingredient that enforces the organization of your Workflows & Content Types. For a detailed analysis of this relationship, see the article that proceeds this one: “Govern your Governance.”
In this article:
- Description of Content Types & Look-up Columns
- How to create Content Types
- Create Lookup Columns
Understanding Content Types
Content types can be any piece of data that you want to store, display, list, search, query, or set access rights to. Content types can consist of anything: a word document, a contract, an ISO document or memo, a web article, an update, video, audio, a forum topic, a page, a picture and so on. Any piece of data that has content that someone can view and comprehend can be a content type.
The way that Content types are usually deployed is by putting them in a list or a library. Once you have customized any given content type, you can make it available to the designated library or list. All of the functionality built into each content type will be available to each library or list that the content type is associated with. Changes to the parent Content Type can be passed down to any list that uses that Content Type. Since the user will not have to manually re-create that piece of content every time they want to apply it to a project, typing errors become a thing of the past.
A Content Typecan be utilized by a list or library. You can customize the functionality of any given content type & make it available to that library or list. Whenever the Content Type is associated with a library or list, all of the functionality built into the customization of that Content Type would be available to that library or list. Any changes to the parent Content Type can be passed down to any list that is using that Content Type. The consistency that this provides can be essential to preventing typing errors, since the user will not have to manually re-create that piece of content every time they want to apply it to a new project. In other words, using a single Content Type in multiple lists allows for consistency in the data structure. This consistency adds to the ability to find those list items through a search across the metadata. For example: “Find me all list items that have a Priority of ‘High’ that were requested by ‘Mark Miller or Bob Mixon’”.
Imagine you have two types of documents: software specifications and legal contacts. For whatever reason, you want to store these documents in the same document library. Most likely, the metadata you would want to gather and store in each of these document types would be very different, and so would their workflows. *For more information on Workflows, check out “Workflows that Actually Work.”
Consider the following two types of documents: Employee Contract and Employee Training Manual. It is reasonable to assume that you might want to store documents of those two types in the same document library. However, the metadata you would want to gather and store about each of these document types would be very different. In addition, you would most likely want to assign very different workflows to the two types of documents. Yet items of both content types could be stored in the same document library.
Content types enable you to store multiple, different types of content in the same document library or list. In the preceding example, you could define two content types named EmpContract and Emptraining. Each Content Type could include different columns for gathering and storing item metadata.
In order to reduce typos and increase efficiency it is sometimes necessary to restrict the amount of typing users are allowed to do in any given application. This is a handy way of accomplishing both – less typing = less typos!
Look-up columns provide a reusable model for content definition. Each list that you use a column in will retain the same definition. Much like Content types, you define a Look-up Column at the site level, independent of any actual list or content type. Because they consistently retain the same definition, they also alleviate the tedious work of reproducing the column in each list that you create. Look-up Columns decrease rework and help you ensure consistency of metadata across sites and lists. If you create a column named Contracts, users would be able to add that column to any list, and it will consistently retain any attributes that have been assigned to it, wherever it appears. Users will always be able to search for it by referencing any of its attributes.
A Look-up Column is a reusable column definition, or template, that you can assign to multiple lists across multiple SharePoint sites. For example, suppose you define a site column named Customer. Users can add that column to their lists and reference it in their Content types. This ensures that the column has the same attributes, at least to start with, wherever it appears.
Additionally, look-up columns provide you with the simplicity of a single maintenance point. For example, you can create a status site column, which might contain multiple choices of an enterprise’s specific statuses, and implement the column in multiple scenarios.
Look-upcolumns are similar to content types in respect to the fact that they can be added to sites and lists, and that they can be customized so they are centrally managed. Unlike Content types, the information in look-up columns is focused to a single definition of data as opposed to encapsulating multiple definitions of data. In other words, look-up columns give your data specific descriptive traits that they can be searched by, such as date, amount of units, status of access, and so on.
To that end we can create Look-up Columns to give the user a list of options to choose from. For example: If our document library is going to store 3 types of documents we can create a look up list that contains 3 choices: Contracts, Proposals, and Quotes. Using the look up column restricts the user to choosing 1 of the 3 available choices, and it does so while alleviating the user of the need to type.
Look-upcolumns can be very useful because they can easily be managed without special permissions, and they can store an unlimited amount of options.
Lets say you have a department in your database called project development. A look up column named department is created as a single line of text for users to enter their department name and a Content Type is created named Projects, which includes the site columns of Department, Project Name and Project Due Date. This way, if the user knows any of these three pieces of information, they can look up the department accordingly.
To create proper Look up Columns we first need to create a location to store the “list of choices”. To do this we use a “Custom List”. The custom list would then contain column such as Document Type and Document Type Description. Once this list is created we can then use the values in the list as the source for our Look up Column.
Here is a quick step by step guide to creating a “Document Type“ Look up column in a document library.
Step 1 – Create a custom list to hold the choices for the document type look-up column.
1. Navigate to the site that contains the document library you want to add the look-up columns to.
2. Click Site Actions > More Options
3. On the left hand side in the “Filter By:” section click List
4. In the details pain click “Custom List” *see figure 1
5. Enter a “Document Types” as the name of the Custom List
6. Click create to create a the list
7. In the Ribbon click List
8. In the List Ribbon click List Settings (far right side)
9. Scroll down to the Columns section
10. Click on the title column
11. Rename the title column to Document Type (Type over the text “Title”)
12. Click OK
13. Click Create Columns
14. Type Document Type Description as the column name
15. Click OK
Step 2 – Create a new site column Look-up column to show the values from the document type list
2. In the Gallery Section click Site Columns
3. Click Create
4. Enter Document Type as the column name
5. Select Look-up as the type of information in this column
6. In the group section either choose and existing group or create a new group to categorize your new column (this will make it easier to find later)
7. Require that this column contains information
8. Under get information from chose the Document Type list that we created earlier
9. Click OK
Step 3 – Add the new Document Type site column to a Document Library.
- Navigate to the document library that you want to add your look-up column to.
- In the ribbon click Library
- In the Library Ribbon Select Library Settings (far right side)
- In the columns section click add from existing site columns
- In the “Select Site Columns from:” drop down select the group that you created earlier (The one that will make it easier to find later)
- Select the Document Type columns we created earlier.
- Click OK
Step 4 – View Document Library
- In the breadcrumb trail click the Name of the document library.
- In the Ribbon click Document
- Click New (far left side)
- Notice in the Document Information panel there is now a field called document type.
This is a very simple example; however it can still be seen as a basic template to implement complex relational databases with Sharepoint lists. Creation of these lists and utilization of the concept is virtually guaranteed to decrease errors and work expenditure.
*Remember Content Types and Look-up Columns can be a bit tricky. Because of the relationships that may or may not be set up at the parent level, deleting a Column could easily mean deleting the content stored in that Column. If you want to delete a Column from a list, it is recommended that you write code that will explicitly allow this, since it means you’ll also lose any content that was stored in that column in the list.
Site columns and Content Types are the foundation of Information Architecture planning in Windows SharePoint. You should always use Content Types and Look-up columns to separate the definition of your content from the actual content. Whenever possible, you should reuse these definitions across the whole application, as well as other applications if you can customize them to do so. When you use these definitions, it eliminates the need to re-type your code every time you want to apply it, and it guarantees that there will be no typing errors at run-time.
Utilize these tools, and you can decrease rework and ensure consistency of metadata across sites and lists. Using Look-up columns and Content types can be tricky. Too much duplication of effort is typically done because of lack of planning before starting to build the infrastructure of a Site Collection. As long as you make the necessary effort in the beginning, you will find that the extra investment of time will help you immensely with management & maintenance of your SharePoint site & implementation.