Document Management in SharePoint – My Best Practices

The document management component of SharePoint is easily one of my favorite (if not my favorite) feature of SharePoint. Whenever I do a SharePoint consultation for a team, I like to stress the document management features. I also like to debunk a common SharePoint myth: that SharePoint is just a dumping ground for documents. Yes it’s true that SharePoint can easily take your documents, but there’s so much more to it. This article covers some best practices for moving your documents into SharePoint and improving ease of use. Hopefully this article will give you some guidance before you decide to dump that network folder into SharePoint. Just a quick note – this article will not teach you how to configure document libraries. If you want a good how-to – click here.

Preparing your files to move into SharePoint

Although SharePoint does function like a network folder, however it does have to abide by a few more rules. For example, since it is a web-based application, you can’t just have unlimited lengths in your file / folder names.  SharePoint will simply give you an error message (The specified file or folder name is too long.) and not tell you exactly what file or folder is causing the problem. According to Microsoft, “The URL path for all files and folders must be 260 characters or less (and no more than 128 characters for any single file or folder name in the URL”. This means that if you have extremely long file names, extremely long folder names, or deeply nested folders, you may need to think about the general organization before you drop your files in. You may find yourself reorganizing your folders before you are able to drop your files in.

Once you’ve dealt with your file folder structure, you will need to look at your file names. Although Windows will allow you to have special characters in file names – SharePoint does not. The biggest offender is the & symbol. Make sure that none of your files have special characters before you dump them into SharePoint.

Cleaning up your files

We’ve all been there: in order to keep track of file versions, you simply put the current date and your initials at the end of the file name. When your task  / project is over, you find that you have 20 copies of the same file all differing by the date and the acronyms at the end! This might seem like organization, but if you try to search, all 20 files will appear! To add another layer to the problem, if you dump all of these file versions into SharePoint, the search will return all of the files as well. Doing this pretty much cripples any search feature. SharePoint has a comprehensive search feature that even reads documents.  You may want to clean up your network folders to ensure that you can benefit from the SharePoint search features.

Folders vs columns

If you are thinking about moving a network folder into SharePoint, chances are that you tried to create a level of organization through using network folders. I have been against using folders as a primary method of organization since I started using SharePoint. I actually prefer a combination of folders and columns to increase the ease of navigation through the documents. As you drill down into folders, you cannot see what is inside of the  upper or lower level folders. You have to drill down into a folder to see what is inside, and then navigate up and out to see what else is available.

Folders provide a logical way to organize your content. However, you cannot sort and filter information by a folder. You also cannot see what is inside of a folder without opening the folder. If you use columns, you can apply unlimited sets of meta data to your files. Below are some examples of file meta data that I often use:

  • Description
  • Status ( Active / Archived)
  • Author
  • Language
  • Date ( This is not the date it was created/modified, but the date the document is related to)

When setting up your views, you can choose to show or hide folders. By hiding folders, you can view documents in an unlimited number of sub folders. This little feature allows you to put files in folders that make sense to you and also benefit from the sorting and filtering of the meta data you have entered. The down side to this is that you have to enter meta data for your files to use this feature.

One last tip: SharePoint can only support 1000 or so documents in a folder or view before it starts to have performance issues. You may want to use folders to avoid this file limitation, but use columns to provide easy ways to navigate your files.

You can read more about this here :

Setting up your views

Assuming that you have figured out your document library columns and folders, you are probably ready to create views. If you create different views based on your meta data (columns), you can create multiple interfaces for end users that will make it easier to navigate through your files. Referencing the columns I mentioned above, I use the custom status column to help me mark files as relevant (active) or old versions (archived). I created a view that groups documents by their status, making it easy to see the files that are active and the files that are considered old and should not be referenced. You can easily put the same document library web part on a single page in different views to make it easier for users to navigate the files. The first view would show a standard list view with your choice of display.  The second web part should show the document library in its default view with folders. This allows users to upload a file into the folder that it belongs to, but view the document in the view that hides folders.  Give careful thought to the views so that users can easily get to the files that are buried deep in the folders.

Search vs filtering / sorting

SharePoint provides a very powerful search feature. Not only will it search file names, titles, and columns, but it will also open documents and read the documents and return search results accordingly. This means that the search can find pretty much anything. The down side is that this means that the search will also return results for anything that matches your search terms. Because of this search capability, search should not be your only method to help users find your files. If you use columns effectively, your users will be able to find documents by combining filters of columns to narrow down the documents that they want. Make sure that you hide folders in your views that you intend to use with filtering and sorting. You do not have the ability to narrow down the search results by columns without custom development, so unless you have a developer on-hand, you should try organizing your content by columns and use sorting / filtering as a primary method.


Version control in SharePoint will eliminate the need to rename files in order to track versions. SharePoint also provides several ways for team members to communicate what has been changed in a version. You can require users to enter a comment for the version before they save. This makes it easy to track the changes as you review the list of versions that are available. You can also request that users enter a message in the check-in comments field. You can then display the comment in the document views. This helps your users understand what is inside of a document before they open the document. You can also use the approver comments field to track information regarding the approval or rejection of a file.

Some final words of wisdom

Don’t be afraid to create multiple document libraries. Sometimes it’s better to split a network folder into multiple document libraries to allow for searching of just a section or to handle issues with deep nested folders. Do not use file names to try to store all of the information about the document. Instead you should use additional columns to store that information. Try to use columns that will work for sorting and filtering. Get out of the habit of renaming files. If you choose to use workflows and rename a file while in the middle of a workflow, it will automatically terminate the workflow. The bottom line is that you need to think long and hard about how you want to organize your documents before you move your files into SharePoint. Do not simply open explorer view and copy and paste an entire network drive into a SharePoint document library. If you design this properly, your users will be able to quickly work through the files that are in the document library. If you do not, you will have the same issues as you did with your network folders, and your search will not yield useful results.

SharePoint LMS: The Good

I’ve had a lot to say about what SharePoint LMS doesn’t do well – so it’s only fair if I end with what SharePoint LMS does do well.

It’s actually SCORM compliant

Many claim to be SCORM compliant – but we’ve tested it and this one definitely is!

It works well within the SharePoint constructs

I do a lot of SharePoint based solutions for business collaboration. Therefore it only makes sense that if we were going to do e-learning, we would want to do something that fits within the SharePoint construct. This one works great in that respect and can quick enhance your portal. This is like taking a good LMS and adding the full power of MOSS to it!

You can easily insert surveys into the learning path

I really liked the fact that we could ask a student if they liked the course right at the end of the learning path!

It works on MOSS – don’t try to install it on WSS!

It works great on MOSS. We made the mistake of testing it on WSS and it literally tore WSS apart!

It’s got tons of bookmarking

There are actually 2 levels of bookmarking. You can return to your position in a learning path or return to your position within your SCORM. Pretty cool!

You can easily add quizzes

We ultimately didn’t need them because our quizzes are part of our SCORM, but I like the fact that we can roll these out.

Reports can be scheduled and emailed

I did like the fact that we could schedule recurring reports and they can automatically be emailed to someone. That takes away the burden of manually pulling the reports.

User Management Module allows for easy management of students

We did add this module and it really helped our LMS administrator.

You can apply your own theme to each course

We didn’t do this – but I can definitely see the usefulness of being able to have a different look and feel for each course.


This was a core requirement for us. We liked to be able to force a user to complete a lesson or activity before moving onwards.

Ultimately – if you deal with a SharePoint environment, you will like this product. It’s got a lot going on and I think with future versions will be a force to be reckoned with in the e-learning game!

SharePoint LMS: The Bad and the Ugly

I’ve indicated that I was overall happy with this product, but that’s not to say there aren’t things that could really improve it and take it to the next level.  For anyone considering deploying SharePoint LMS – here are some things to be aware of :

The gradebook – not all it’s cracked up to be

I had two major issues with the gradebook. The major one was that when we added over 500 users, the gradebook came to a grinding halt. Whenever one of us accessed the gradebook – it simply failed to respond. When we had only 20 users it worked fine. It seemed to be a huge resource hog and would shoot our server memory up to 2GB and cause huge processor spikes. When this would happen, sometimes a page would load, sometimes not. Often the entire site stopped working for all of us because one person accessed the gradebook. Therefore we had to get rid of it because it had huge performance implications.

The second issue was more of a subjective issue – but it doesn’t really seem that useful for the end user. It uses a horizontal way to display the information which makes it not that easy on the eye. There’s also no way to really customize how it looks for students. Ultimately we abandoned it and added a way for users to see their attempts and scores on the course landing pages.

You can’t add HTML in a lot of places

It takes a few clicks for a user to get to their lessons. For example:

  1. Click to get to your course
  2. Click to enter your learning path
  3. Click to confirm you want to start the learning path
  4. Click to start the lesson

Now this is not an unreasonable number of steps to get to a lesson. However, to an end user who may not be aware of what a learning path vs lesson is – this may seem a bit confusing. We were able to use SharePoint designer as well as some of the menus to add some text explaining this, but it would be nice to have menu options to fill information at each of these stages.

Double sets of buttons

SharePoint by default has double sets of buttons. This is so that if you have a long list, you don’t have to scroll to the top or bottom to find the buttons. However, in some cases the LMS has these double sets of buttons with only one line of text in between them. If we were able to add some HTML in between the buttons it would make it a bit more attractive, but for the end user, it looked awkward from time to time.

While within a course – the full list of courses does not display

When you are at the root of the LMS, you can see a list of all available courses on the quick launch. Unfortunately when you drill into a course (which is really a sub-site) the course item on the quick launch remains, yet it’s empty. This creates a menu option with no content. We couldn’t figure out how to turn this off. It would be nice if we were able to get it to fully populate.

Delineating between attempts of a learning path and attempts of a SCORM

This really got us confused. When a user is moving through the learning path, there are a series of screens identifying where there is a new or existing attempt. However, the default language doesn’t reflect that in the LMS.  We found ourselves starting attempt 2, and then starting attempt 4 and not understanding how the LMS was counting. Ultimately we discovered that it was attempt #2 of the learning path and attempt #4 of the SCORM. We added some cues to explain this to users as they worked through the learning path.

Unable to get to full SCORM data

When a user finishes a SCORM, they get a full summary of their activities. It’s the type of stuff that is most useful for evaluation of your training.  It tells them what they answered, what questions they did well on, what questions they had to answer more than once, how much time they spent etc. Unfortunately when you run reports on activity, you aren’t able to access the granular data. We also could not find the data and so therefore couldn’t pull it into a list or out of the database L

Reporting wishes –  why are they only cumulative

The reports are always cumulative. We wanted to provide a report over a specific period of time. We devised a way to pull regular reports and then calculate the difference between the current report and the previous one to determine activity – but that’s a round-about way of doing things.

I wish the reports had some advanced charting

We really would have liked to have some pie-charts, bar graphs, etc for the reporting. It produced a concise table with information, but when showing these things to the client – it’s always better to have some graphics that can be generated automatically. A reporting panel would be great.
Controlling where a user lands at the end of a learning path

At the end of a learning path or at the end of a lesson, a user always lands on the respective allitems.aspx page. The problem is that this page doesn’t really fit within a web-site and is more of a page that makes sense in SharePoint. As a result, we used SharePoint designer to customize these pages so that they looked like they were part of the navigation.

Control over the quick launch area that lists the elements of the learning path

It’s great that the LMS lists all of the elements of your learning path as well as your progress. It does this in the quick launch. However, the quick launch is always fairly short and cannot support long amounts of text. To address this the LMS allows scrolling, but it looks awkward. The result is a horizontal scroll bar in the middle of the quick launch that seems out of place. If nothing else – this text should wrap and perhaps be bulleted so that it can be clearly viewed.

The language files are cumbersome
You might not be too happy with the default language in the LMS. We wanted to change things like the words attempt and how it displayed attempts. It was initially grammatically wrong … it would say :

  1. You are about to start 1 attempt
  2. You are about to start 2 attempt
  3. You are about to start 3 attempt

We were able to change this – but it’s literally like searching for a needle in a hay stack.  Furthermore, one we opened the language files, we realized that text was re-used in multiple places. So you might change congratulatory text yet realize it’s used to congratulate people for 3 different scenarios. Without a manual for the language files, it was quite tedious to customize it. This LMS could benefit from a control panel for managing these things or if nothing else… a manual for the language files!

Migrating user scores – ain’t so easy

We needed to migrate scores for users into the LMS. There was no way to do this with an import feature. We also couldn’t go in and “set” scores or award certificates for users. This presents a large problem when migrating a large number of users into this LMS.

Last Thoughts

We were able to overcome pretty much everything listed here. However, the fact that they needed to be overcome is what was frustrating. Ultimately, I do like this product. There are things that work great and other things that are strangely challenging. With some custom development and use of SharePoint designer, you can do quite a bit to make this your own.

SharePoint LMS: The insider overview

I’ve now conquered my 4th public-facing SharePoint portal. This one was a little different because it was designed to serve as a platform for a learning management system (LMS). We went with SharePoint LMS ( Last year we did a proof of concept and deployed it internally to make sure we understood what we were getting ourselves into. This year it was time to prove we could do it. I have mixed but overall positive feelings about this product. It does do what it claims on the brochure – but in some ways certain things could be done much better.

We were able to create our own SCORM compliant flash e-learning lessons and get them to work within the LMS. All of the lessons scored properly – so it was comforting to know that we were able to move our lessons from one LMS straight into another LMS. Our requirements were fairly straight forward:

  1. Develop a working LMS
  2. Migrate our content into the new LMS
  3. Migrate user scores into the LMS
  4. Allow for multiple learning paths per course
  5. Add surveys at the end of each course
  6. Generate certificates for users
  7. Support prerequisites within the learning paths
  8. Allow users to bookmark their progress within their lessons
  9. Allow users to track their progress through lessons
  10. Allow users to retake lessons as they wish
  11. Make sure the menus were not confusing

There were more – but that’s a good overview of what we set out to do. Because SharePoint out of the box is so plain-vanilla – we also designed a fully custom theme to make it look more like a web-site. What we ended up with was a heavily customized SharePoint site. We got the learning management system to work. We created our own navigation and as-you-go help cues to assist users with using the site. As for the requirements :

  1. We did create a fully functional LMS
  2. All of the lessons were migrated in
  3. We were able to migrate the user scores (but that’s another story for another post!)
  4. We were able to create all of our learning paths
  5. We were able to integrate surveys into the learning paths (but there’s more to add on how that worked ultimately!)
  6. Certificate generation worked fine!
  7. We got all of the prerequisites working – so you had to pass certain lessons to move onwards.
  8. We got bookmarking to work (but we didn’t realize there were 2 levels of bookmarking!)
  9. We were able to show users their progress (but I’ll talk about the grade book later)
  10. Users could take lessons in or outside of their learning path
  11. We did quite a bit to work with the menus – but even the default SharePoint menus are frustrating at times.

I should add that to deploy this it took a SharePoint administrator, SharePoint specialist or two, a SharePoint developer, a flash / SharePoint developer, as well as a full e-learning team. Once deployed the product is easy to use – but do not make the mistake of thinking it’s easy to deploy this.

I’ve come up for air!

I’m sorry that I disappeared for the last few months.  I always hate to say work got the better of me – but it really did in this case. Aside from the many projects I was working on – I took on a challenge to lead the migration from one learning management system to SharePoint LMS. And to add to that – we decided to do it in 7.5 weeks! We finally got it done – but I definitely won’t try to roll out anything that complex in such a short period of time again. I’m going to follow up with some posts about the project – because it’s pretty cool. Also , I feel like we had a chance to really work with the product and find its strengths as well as weaknesses.

Random SharePoint Tip: Quickly set rules for Alerts in Outlook

I came across this by accident, when looking at an alert email in my Outlook. Before I start let me say that this occurred using WSS 3.0 and Outlook 2007. When an alert from SharePoint come in, you get a menu option on the top left of the message asking me if I want to set a rule. When I click on it – it’s prepopulated with the title of the alert and allows me to set a rule immediately f or this kind of alert. This is kind of cool because it’s a shortcut way to set outlook rules for SharePoint alerts. If you use the SharePoint task lists heavily – you will know that you can quickly get a flood of emails – so this makes it that much easier to organize it all.

SharePoint Tip of the Day: 1000 file limit in document libraries

Although I’m anti-folders and I like to use columns as a way to organize things – there is a limit to how many things you can put in a folder before SharePoint performance starts to degrade. I have always preferred 1000 although some say you can go as high as 2000 items per folder before you have issues.  There’s a good article on scaling the performance of SharePoint here.

You can have up to 5 million files comfortably in a document library – but you must use folders. You should set your views to show less than 2000 items. This can be difficult, but remember that your views don’t have to show folders. A flat view can allow you to use folders for organization but still display without folders when needed.

Also remember that you can turn on indexing to improve performance as well.

Feedback Server: A potential survey tool (possibly in SharePoint too?)

Feedback Server
Feedback Server

I’ve been tasked with finding a survey solution. Now before I get started, I will acknowledge that I posted a lengthy post about how you can use SharePoint as a survey collection tool. This is true, but sometimes your needs can go beyond what SharePoint does. I was looking for a .NET based survey solution that can be used easily and still has hope for being integrated cleanly into SharePoint. In my search, what I found was the Feedback Server. I also want to add another caveat – I haven’t deployed this solution yet so I can only go by what the brochures say!

Sometimes you don’t want to go with a 3rd party hosted solution for a corporate product. My main concern is when we have security requirements. I don’t like the idea of going to a 3rd party for stuff like that. In my search, I came across the Feedback Server – and here’s what they describe:

Feedback Server is an web based survey software and form builder to manage and deploy without any technical knowledge web based surveys across your organization to gather important feedback from your customers, employees, students or website visitors and let you to analyze the collected data.

In addition to a ton of features, there is a SharePoint connector for it. Click here for that. In a nutshell this provides:

The Sharepoint 2007 extension enables you to integrate the power of Feedback Server’s survey and form management tools within your Sharepoint portal pages and web parts.

To highlight some of the cooler features:

  1. It’s skinnable
  2. It has full permissions control – for example even limiting access by IP address.
  3. It has that SharePoint connector
  4. It uses AJAX
  5. It has built in email reminder systems
  6. It  has solid reporting
  7. It can export reports in excel and SPSS format
  8. It uses CAPTCHA
  9. It has an integrated analysis tool
  10. It uses XML to import and export surveys
  11. It has a SDK for custom integration

I’m just saying…… this seems cool!

Been quiet for a few days

I haven’t had a chance to post in a bit – but I’ll rectify that soon. Just to give an update:

We finally got the SharePoint LMS platform in house. I’m excited to get started. We’ve laid out a plan for how we will be using it.

  1. Installing the LMS
  2. Skinning it with a custom master page
  3. Creating flash based SCORM lessons

More to come on this!

Restricting view access on a list and Alerts

This is a quick and dirty tip, but I thought it would be good to share. It’s quite common to set up a list so that users can only view and edit items that they add. I’ve always used this when I have a sort of “ticketing” system. I want everyone to be able to add new items, and to see what their additions are – but I don’t want them viewing anyone else’s submissions.

Item Level Read and Edit Access
Item Level Read and Edit Access

In case you don’t know how to do this :

Go to List Settings –> Advanced Settings

Scroll down to the Item Level Permissions section

Under Read Access Specify only their own

Under Edit Access select only their own .

Voila! Now users can only see and modify what they have seen.

Here’s the catch though. You can’t use alerts on a list that has these item level permissions. If a user tries to set an alert on the list – you will receive the following error message :

You cannot create alerts for lists for which users can only read their own items.   at Microsoft.SharePoint.ApplicationPages.SubNewPage.OnLoad(EventArgs e)
at System.Web.UI.Control.LoadRecursive()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

So just be aware – if you set item level read restrictions on a sharepoint list – you lose the ability to use alerts. I haven’t tested this to see if a custom workflow will work – but I believe you can have the email alerts with a custom workflow..