What is tiered storage? Why do I need it? How do I do it with SharePoint?
The first two questions are easily answered by typing Tiered Storage or HSM into bing (…you thought I was going to slip and say google didn’t you?), so I’m not going to add to the noise. I will however emphasize that it is a very tangible way to save your company money, look like a hero, and more than pay for StoragePoint and probably most or all of SharePoint. And keep in mind while you’re going thru this that the warehouse or basement where your company stores all that paper is a Tier…a very inefficient and costly one. And getting that paper out of boxes and file cabinets and into SharePoint is pretty darn easy (if you know what you're doing and we do)…we have a whole consulting side to our business that does that stuff too.
So here we go, tiered storage in SharePoint using StoragePoint…
There are a number of ways to implement Hierarchical Storage Management or tiered storage within SharePoint by leveraging StoragePoint. We’ll cover three in this post:
- You can move list items and their associated content BLOBs from one scope (i.e. Web Application or Site Collection) to another via a number of means (i.e. Workflow, Information Management Policies, etc.).
- You can leverage StoragePoint APIs to move the content BLOBs without moving the SharePoint list items…what we call In-Place BLOB Migration.
- You can leverage our Records Center provider and “send” content to a MOSS Records Center which could have a different storage profile than where the content originated. You can then use custom policy actions or workflows triggered by Information Management Expiration Policies to move the content to the Records Center.
1. Scope Change
This one is pretty straightforward. Different web applications and site collections can have different storage profiles, so moving content from one site collection to another would change its scope and therefore could change its storage profile. And there are any number of ways you can do this.
We’ve done work for customers where we used K2 blackpearl to do this. They have a Records Center event template that comes with the product. You literally drop it on the design canvas, walk thru the wizard, and you have real-time, in-process event and policy-based records declaration. Pretty powerful stuff.
We’ve also developed custom Information Management Policy Actions (Copy, Move, and Delete) that can pick-up content from one location and drop it in a Records Center based on the triggering of an expiration policy (…keep the content here for 7 years after the Invoice Date)

And then there’s export/import with stsadm, 3rd party tools, PowerShell scripts, or cracking open Visual Studio and slinging a few dozen to a couple hundred lines of code…let’s play a round of “I can write that migration tool in X lines of code”.
2. StoragePoint API
This is my favorite option. It presents you with infinite possibilities and flexibility while maintaining a level of ease that even the most green .NET developer will be comfortable with. And because we handle all the heavy lifting (…like 500 metric tons) under the covers there are no burnt fingers or orphaned list items or angry users. Just smiling happy storage managers and IT Directors and CXOs because they just saved $500 on their car insurance…err, I mean lots of cash on storage. The math here is pretty easy…Tier 1 storage is super-expensive, Tier 2 is affordable, and Tier 3 is cheap. If you can move content to less expensive storage as it becomes less relevant then you can save your company a lot of money.
And it’s really just 2 lines of StoragePoint API code (highlighted below). You can take that two lines of code and plug it into a workflow step, an event receiver like I did below, or any other utility, job, or component you want. All you need is the reference to a SPListItem object and the GUID for the target storage profile. A zip with all the code for this sample is attached. It's a code sample, so you'll need to tweak it if you actually want to use it.

The reason this works is we have the concept of a “No-scope” or “Floating” storage profile. It’s not tied to a Web Application or Site Collection, so content anywhere in the farm can be externalized using one of these Floating storage profiles.
Here’s a video that shows the concept in action:
Did I mention this was my favorite option?
3. Records Center Provider
I like this option too because it’s our code and it’s a fully baked solution. It just installs on top of the core StoragePoint product and externalizes content as it is sent to the Records Center. With this component installed you can create storage profiles with a Records Center or Routing Rule scope. Similarly to #1, there are a number of ways to move content to a Records Center…K2 workflow, other workflow, Information Management Policies, or just good ‘ole fashioned custom development.
We have customers using this solution to move content to compliant storage (i.e. EMC Center, Hitachi HCAP, and the like) after it’s completed the active phase of its lifecycle. The Records Center provider has the additional benefit of being able to promote expiration policies. For example, I have a content type called Invoices that has an Information Management Expiration Policy defined that states that the content should be deleted 7 years after the Invoice Date. When that record is externalized via our Records Center Provider it will pass that expiration/retention policy to the storage end-point. In the case of CAS style storage platforms like EMC Centera and Hitachi HCAP, it will sync the retention policy of the externalized BLOB with the list item in SharePoint. Pretty cool huh?
What's Next?
Come see us at booth 800 at the SharePoint Conference in October and find out. Good things...good things!