Search This Blog

Friday, December 16, 2011

Sharepoint Part 8: Custom Project Systems on a Shoestring

Develop your own project systems using Free Tools, just add labor

Doing it Yourself - Recommendations

If you don't know where you are going, any road will get you there. But it may not be where you want to end up.

Plan it out.
Figure out what you need to do (the high-level requirements). Brainstorm!
- What do you really need?
- What do you need a system to do for you?
- What problems/pain points are you trying to fix?
- What works with your current processes (manual or otherwise)?
- What doesn't work?
- What are the inputs?
- What are the outputs?
- What are your "gates", decision points and start/end stages?

Gather the ideas from your team, look at how your business processes work (or don't work), and put them together for discussion. Draw it out, use post-its, do your best to cover the various "what if's" that you know of or may happen.

Design the model
With the needs and wants identified, the inputs, outputs, key decision points etc - it is time to put pencil to paper. Mock it up. Draw the high level workflows and review with your team – make sure you do several passes to make sure you have covered all of your key needs.

Then break it down to the next level. Model all of the state transitions (a flow chart is suitable for this), and see if there are any holes. If you missed something, add it in, rework the model and make sure that it "works" for you.

It is important not to skip this step!

An important gate in your planning is determining if you actually do need a new system to help you do what needs going. Maybe you have decided you don't.

But if you do, is an off-the-shelf system close enough (and affordable enough) to do what you need? This might indeed be the case - but now that you have gone through the effort of figuring out what you really need, when you begin your evaluation of different products (vs doing it on on your own), you will be well prepared to make informed decisions. You will be better able to look past the pretty screens and glittering lights of the demo to see if a particlar package will do what you need.

Ideally, you will want to get a free trial copy (full featured, limited time period) to play with each system to really shake it out, and try modelling parts of your process workflow, and see how it works.

Do the same with Sharepoint - of course, WSS 3.0 is free with Windows Server 2005/2008, so it is just a matter of effort.

But if you do need to report on the decision to go with a particular product vs others, it is advisable to do a side by side trial - try modelling some easy bits and some hard bits in each before you pass final judgement.

And also decide if you have the people and skills to do it yourself - and maintain it. If so, great! If not, then grab some books, fire up Google and use my blog and others - or, consider a commercial alternative.

There are many benefits of doing it yourself - particularly the ability to design exactly what you want, but you just need to be prepared for it.

So you've decided to DIY - Now What?
Modularize & Prioritize
Break it down. Divide the overall solution by priority of business need. You will not need everything at once, but you should be able to determine "must have first", "must have next", "really nice to have", "nice to have", "maybe some day", etc.

Note: Document your processes and workflow logic as you go
- for user guides, and
- so you remember how you coded it!

Start with the basics. Get up and running with the essential components; don’t try to swallow the whole elephant at once. You may need to keep the “nice to haves” as paper/email/external processes until you have a chance to integrate them.

Add functionality as you need to, and as you grow. (Consider, plan then develop and test it in a contained, modular fashion). This is particularly important with Sharepoint - if you are planning to add on several pieces of functionality - I recommend you do it modularly.

If the pieces of functionality are independent - start work on one, finish it, test it and make sure it works before starting on the next item.

If some pieces are inter-dependent, develop them together and test the group of them before introducing any other functionality.

Establish your Backup / Recovery plan/mechanism from day one.
Network backup, online backup, a combination of both is fine - but do establish your backups from the very beginning. You will need, at a minimum:
- Regular server image backups (Windows or commercial products)
- Scheduled Sharepoint backups (SPBackup works very well for this) - at least daily
- Online backup service [optional]

Using SPBackup
Download the SPBackup package from Codeplex. Follow the instructions to install and use it, however here are some key points:

There will be two main files:

The XML file is used to define the source and destination for the backup, how many versions to keep, and email notification settings.The settings below in green are recommended for "full backup" of everything. The yellow highlights are what you need to modify for your setup.

<?xml version="1.0" ?>
   <site id="1">
 <hive>C:\Program Files\Common Files\Microsoft Shared\web server extensions\12</hive>

*Note that SPBackup can backup to any folder, however some online backup services will not backup from particular networked drive configurations. In this case, use SPBackup to backup to a local drive and then have the online backup service pull that backup file for safe keeping.

Schedule it
You can automate your SPBackups by creating a .BAT file in the same folder as your SPBackup files. Call it something like "SPBackup.BAT" and it should contain the following line:

powershell -command "& './spbackup.ps1' 'spbackup.xml' "

Solution Summary

- 1 Windows desktop server with Windows Server 2008
- Sharepoint WSS 3.0 Software: free
- Sharepoint Add-ons: free
- DynDNS site name: free
- Email passthru: free
- Labor to implement solution
- Books (optional: Google is very useful)

Requisite Skills
- Windows basic administration concepts
- Basic programming skills & concepts

Learn as you go (use Google, books etc)
- Windows Server 2008 administration
- Firewall setup / port forwarding
- Sharepoint Administration (learn on the job)
- PowerShell

Optional (Tip: Google helps with everything)
- Excel
- SSL setup
- Javascript
- .NET programming

- Windows Sharepoint Services 3.0 SP1:
- Microsoft Office Sharepoint Designer 2007:
- Codeplex:
- iLoveSharepoint: PowerShell 2.0 (Windows Server 2008 built-in-feature, enable through Server Admin)
- Google!

Suggested Books
- Windows Powershell Unleashed 2nd Ed, Tyson Kopczynski  Pete Handley / Marco Shaw
- Windows Sharepoint Services 3.0 (Microsoft Publishing)
- Office Sharepoint Designer 2007 (Microsoft Publishing)
- Many others are also available

Coming next:
Part 9: Using what you've built - more free enhancements

Go back to:
Part 1: The Need
Part 2: Designing the Solution
Part 3: Building the Structure - Sharepoint Lists
Part 4: Process Workflow Design
Part 5: Implementing Custom Workflows with Sharepoint Designer
Part 6: Advanced Workflows with PowerShell
Part 7: Hosting tips, Email & Notifications

For more information or questions, contact:

Gary Nelson, PMP


  1. The project assignment records are structured so that time can be entered increment, or as a group of time at the end of the week, depending on the duration of the task and granularity needed for the end client.

  2. Correct. If you are working on a fixed-price project, it makes it simpler to record a lump at the end of the week. If you are doing daily T&M work, it may be necessary (for client reporting) to record hours for each day - which in the example, would require several record entries. You could setup a hybrid record structure as well - MTWRFSS and a weekly lump, calculated by workflow and/or manual entry - it all depends on what your business needs are.

    The biggest part of designing any custom system is to figure out the various scenarios and business needs and then incorporate that into the design before you start building.