Tuesday, 23 February 2010

SharePoint 2007 metadata management - fail !

I am writing this post mainly in the hope that I missed something fairly fundamental and that someone will contact me and make me look stupid by providing an easy fix........ but I am not holding my breath !

I have been designing a SharePoint (MOSS2007) Project Management Information System (PMIS) that fits our own particular Software Development Life Cycle (SDLC) and Enterprise Project management Framework (EPF). Before anyone points me in the direction of the great "SharePoint for Projects" officiando Dux Sy, I have read all his stuff. I have also used some concepts from Michael Sampons books.

Anyway, our SDLC is document heavy, there are are over 50 SDLC and EPF MS Word and Excel document templates. My design makes a Content Type for each one of these, linking a set of Site Columns together with the MS Office template, and then building them out under the 'new' menu in 3 document libraries (SDLC, EPF and Operational Change Management).

No problems so far ! Working on some principles of user focused design, we wanted to pre-populate some of the metadata that would be the same for every document in a single project, such as Project ID Number, Project Name and 3 fields of 'categorization' metadata based on a taxonomy we call the Business Retail Model (BRM).

Still OK. If you build a site you can go in an enter a metadata value for the site column once via the Site Settings and then every time you start a new document, the DIP shows that this metadata is already filled in - et voila !

However we have up to 100 IT projects a year. So the PMIS has its own web app and path (URL) and the site of at the top level of the site collection will belong to the IT PMO, and then there is a 'master template site' managed as a sub-site. This 'template' has been constructed as a SDLC specific, collaborative PM site and then saved as a template (Site Settings, Save site as template). See screen shot below:

When a new project comes on line IT PMO staff go to the Create menu, and from the 'Custom' section of the create new site box, pick the PMIS template.

All of this works just fine - all Content Types work, open the right MS Office templates, display all the site column fields in the DIP etc etc BUT you can no longer access the site columns via the settings menu for a particular site, so you can no longer pre-populate some of the metadata.

Before you suggest it, building the Site Columns at the site collection level would not work, because of inheritance. In fact myself, plus an experienced SharePoint sys admin and our best SP developer have examined this in depth, and we cannot find a way to create sites from a site template and yet pre-populate some of the metadata.

By the way, in other ECMS' you would get round this by populating the metadata against the folder, and any object dropped into the folder would inherit the values - a behaviour which I beleive has been added to SharePoint 2010, BUT we are not going to get SP2010 until maybe 2012 - so that's not an answer either !

My challenge to you all is - can you show us the error of our ways ? Have we missed something fundamental ? Let us know if you have any ideas on this please.


Unknown said...

"we cannot find a way to create sites from a site template and yet pre-populate some of the metadata"

The key to your solution is a stapler. It's a farm feature where you define all your site templates that have to be intercepted. In this you also provide a feature , this second feaute is scoped on sites. In this second feature (the staplee) you add a featureActivated event. In this event you manage all the settings of your site and lists. Carefull, you have to be sure that everything in your newly created site is provisioned. so start a new thread and check until the spweb.provisioned == true.

JedPC said...

Many thanks Benny, never heard of the 'stapler' concept / feature so I have passed this onto our Developers - much appreciated.

B.Correa, MOSS Architect / SP2010 Evangelist said...

Jed - since u can't wait till SP2010... another recommendation is to move the provisioning out of the default Create Site method (Site Actions -> Create -> SharePoint Site -> Custom). Instead build a provisioning workflow such as at the Project Initiating stage (ex: Charter Approved) that provisions the site based in form data collection inputs. This opens up your options by building the site creation in Visual Studio where you can provide custom field population of metadata based on user interaction with the workflow process -- use VS2008 VSe1.3 for best results.

JedPC said...


Thank you very much for your suggestion. One of my developer colleagues made the same suggestion. I have actually fixed the problem, which strangely enough pushed us up against and even weirder one ! As I am now about a week behind schedule and working frantically to rebuild my solution I had not updated - but I will blog on the solution and what we are doing in a day or two.

I have added your blog to my Google Reader :-)

Thanks again !

College Term Papers said...

I'm very thankful to the author for posting such an amazing development post. Continuing to the post, This is a fantastic survey, very nice write up,Thanks you for sharing.

Unknown said...

Your projects stand out of the herd. There is something special about them. It seems to me all of them are really brilliant!

Custom Term Paper

Unknown said...

Sharepoint 2007 was a great event as genericviagra's festival , so I think that this was a great fail because many people miss time and money , I remeber one boy who was so angry with this situation.