Back to Cleverworkarounds mainpage
 

It’s gonna be quiet around here

Tags: Uncategorized @ 12:41 pm

Hi

I’m off on a one month holiday to Vietnam for most of Jan 09, so it will be very quiet around here for a while and my email access will be somewhat limited. My colleagues at Seven Sigma will man the cleverworkarounds inbox for this period, so if you do need to make contact, then just use the email address listed on the about page.

For those of you back at work, you have my deepest condolences 🙂

Paul



New article posted to EndUserSharepoint

Tags: Uncategorized @ 5:27 pm

Hi all

I recently wrote an article on how learning and behavioural styles affect the way SharePoint collaboration features are used in deployments. It is called Learning styles, behavioural styles and “collaboration” and can be found over at EnduserSharePoint.com

regards

Paul



"Train the Trainer"

Tags: Uncategorized @ 1:46 am

Sorry about the lack of posts, but I’m am right into the middle of a 5 day course called “Train the Trainer” which is run by the Australian Institute of Management. This course, among other things, will qualify me as a Microsoft Certified Trainer, so if you feel like flying me somewhere nice in the world for a custom tailored course, I’m sure that something could be arranged 🙂

Seriously though, this course is right outside my normal comfort zone in relation to subject matter and discipline, it is harder work that I expected and this entire week really is a write-off in relation to work activities, blogging and the like.

But, it has really opened my eyes actually, to how adults learn, and the huge difference in approach from the relatively easy task of writing educational blogs like this one, to taking the material, distilling it and turning it into learning outcomes that adhere to various key principles of adult learning. Just to produce a 20 minute lesson for tomorrow has taken me three freakin’ hours! (with practice of course, it gets faster)

But more importantly, what is a “learning outcome”? Funnily enough it defines “what a successful learner will be able to do at the end of a session.”

They stress that this outcome are defined so that the aims are concrete and measurable.

If you have read the “project failure…” series, ROI, or the organisational maturity posts, you will see a parallel here. Seems that even to teach a concept, you need to start out with an outcome that can be quantified, so you know if you have achieved your goal as a trainer.

So with the current SharePoint projects that you are currently working on, can you articulate what your outcomes are? Are they measurable?



New Technet Planning and Architecture webcasts

Tags: Uncategorized @ 9:41 pm

Back when I was a lad (okay, back on mid 06) I had to plan, design and implement a fully redundant MOSS farm for a largish company that was an early MOSS adopter. I previously blogged some notes about how I went about doing Disk I/O planning, and one of these days I will get around to detailing my use of SQLIOSIM as well.

Back then there was absolutely no useful information to help me with this whole process apart from some stuff that Joel had written.

That has now changed. Microsoft have released a series of whitepaper/webcasts covering a variety of critically important infrastructure oriented topics. I’ve just watched the capacity planning one and it really is excellent (although my experience suggests their document storage ratio in SQL vs FileSystem is closer to 2x than 1.2 – 1.5x. )

CISSP readers, some of these would certainly qualify for type A CPE’s as well

Continue reading “New Technet Planning and Architecture webcasts”



SharePoint reality TV?

Tags: Uncategorized @ 11:51 pm

This is probably my last post for the year – winding down to the festive season 🙂 Thanks to all of you who’ve read my blog, it’s a good stress outlet for me and I hope that some of you have benefited.

So one final small post (by my standards) on whether there is truly such a role as a “SharePoint specialist“. To answer this, I propose we do this with an exciting new TV show called “So You Think You Can SharePoint?”.

What will happen is that all of us supposed “SharePoint specialists” will audition and be narrowed down to the final 10. Then each week, we demonstrate our SharePoint abilities in new and creative ways before a panel of expert judges who get to publicly humiliate us. Each week, one specialist gets voted off until we are left with our winner.

Original, huh?

So, why am on earth am I ‘borrowing’ from the TV show “so you think you can dance?”. Well, apparently, half the world thinks I look like Benji. (Seriously!)

Continue reading “SharePoint reality TV?”



Learn to talk to your CFO in their language – Part 2

Hi, there.

It’s been a while since my last post but the whole issue of having a life and earning money kind of got in the way. In addition I have been procrastinating a little, because writing about technical and programming type issues for me are a lot easier to write, compared to governance, strategy and financial matters.

To recap on my last post, I wrote about a common technique used to assess the value of an investment. I discussed the time effect on money, the concept discount cash-flow and some of the related calculations like Net Present Value (NPV) and Internal Rate of Return (IRR). If you have not read that article, I strongly suggest that you do so before continuing.

Continue reading “Learn to talk to your CFO in their language – Part 2”



Property Investor Interlude

Tags: Uncategorized @ 1:18 pm

Taking a quick break from part 4 of my series of articles on SharePoint branding. I hope to have posted in a day or two, but my daughter just got the new Zelda game on Nintendo DS. Of course, now I am completely addicted to it and blogging is coming a distant second 🙂

The last game I got addicted to was the Zelda “Oracina of Time” on the Nintendo 64 – seems I have a weakness for Zelda games

So in the meantime, why not look at a program I wrote some years ago for property investors. Its free, easy to use and allows you to simulate buying investment properties in Australia, and allows you to see the tax and cash-flow scenarios.

Continue reading “Property Investor Interlude”



A simple example of a SharePoint “feature”


If you check my introductory post, I discussed the concept of SharePoint features in a real world scenario. In this post I actually show an example of features from end to end, to illustrate that scenario.

So, first to recap the scenario, slightly simplified from my other post: A webdesigner has a new CSS file that is the new corporate branding standard. They must package it up as a ‘feature’. A misunderstood sysadmin nazi installs the feature onto the SharePoint farm once only, then sends a mail to the 35 site collection owners advising them to activate the "branding feature" on their sites.  Each site collection owner who does so has the identical configuration modified so it is all nice and consistent.

Now also before we start, this demo requires the "Office SharePoint Server Publishing Infrastructure" feature to be enabled. If this is not enabled, the "Style Library" document library that we rely on, will not exist.

Step 1: Create the Feature

Our web designer of course has a development box so they can’t kill production. On this box they navigate to the

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES

and create a new folder called CustomBranding

C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\CustomBranding

Inside this folder we place our CSS file (in this case, called CustomBrand.CSS) and we create a file called FEATURE.XML.

Now in real life, you will copy a FEATURE.XML from one of the many other features here and work off that. But in our case, we will just type it in. The contents of FEATURE.XML is this:

<Feature Id="01c34560-6561-11dc-8314-0800200c9a66″   
Title="Pimp my SharePoint"   
Description="This is a feature that adds a new sexy CSS"   
Version="1.0.0.0″   
Scope="Site"   
xmlns="
http://schemas.microsoft.com/sharepoint/">   
<ElementManifests>        
    <ElementManifest Location="ProvisionedFiles.xml"/>   
</ElementManifests>
</Feature>

So we have a <feature> element and inside that an <elementmanifests> element. The required parameters for the <feature> element are below (lifted straight from MSDN)

Attribute Description
Description Optional String. Returns a longer representation of what the Feature does.
Id Required Text. Contains the globally unique identifier (GUID) for the Feature.
Scope Required Text. Can contain one of the following values: Farm (farm), WebApplication (Web application), Site (site collection), Web (Web site).
Title Optional Text. Returns the title of the Feature. Limited to 255 characters.
Version Optional Text. Specifies a System.Version-compliant representation of the version of a Feature. This can be up to four numbers delimited by decimals that represent a version.

So the first thing to do is generate a GUID. You can do this a number of ways, but I typically use an online generator like the one here to do it.

My GUID from the online generator is:  01c34560-6561-11dc-8314-0800200c9a66. Feel free to use it for this example but you should substitute with your own.

Title and description parameters should be plainly obvious and version is optional, but whack it in anyway.

Scope is important, a feature can be activated at various points in the farm. "Site" means it is activated once per site collection. All sub-sites under this site collection can make use of the feature without having to activate it. This will become clear later.

Next we refer to an <element manifest>. This is a reference to another XML file that actually tells Sharepoint what to do (provisionedfiles.xml). In our case, it is going to tell SharePoint to upload the CustomBrand.CSS file to the site collection style library.

Let’s take a look.

<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
    <Module Name="MyPimpedStyles" Url="Style Library" RootWebOnly="TRUE">        
        <File Url="CustomBrand.css" Type="GhostableInLibrary" />    
    </Module>
</Elements>

In this file, the top-level Elements element defines the elements comprising the Feature. In my previous post, I outlined a table of elements that can be used to install SharePoint features.

  • Content Types: Contains a definition of a SharePoint content type.
  • Content Type Binding: Actually applies a content type to a document library.
  • Control: Allows you to replace existing controls on the page, such as the search or navigation with your own custom control.
  • Custom Action: You can define custom actions such as add a new menu item in "Site Actions".
  • Feature/Site Template Association: This allows you to bind a feature to a site template so that the feature is included in new sites based on that template.
  • Field: Contains a field, or column definition that can be reused in multiple lists.
  • Hide Custom Action: Opposite to "Custom Action", where you want to hide menu items.
  • List Instance: Provisions a SharePoint site with a list which includes specific data.
  • List Template: A list definition or template, which defines a list that can be provisioned to a SharePoint site.
  • Module: Deploys files which are included when provisioning sites.
  • Receiver: Defines an event handler for a list, or document library
  • Workflow: Defines a workflow for a list, or document library. 

So as you can see in the above XML file, we have used the MODULE element to install 1 single file. Let’s examine the <MODULE> and <FILE> element in detail.

<Module Name="MyPimpedStyles" Url="Style Library" RootWebOnly="TRUE">        
<File Url="CustomBrand.css" Type="GhostableInLibrary" />    
</Module>

Module Attribute Description
Name Required Text. Contains the name of the file set.
RootWebOnly Optional Boolean. TRUE if the files specified in the module are installed only in the top-level Web site of the site collection.
Url Optional Text. Specifies the virtual path of the folder in which to place the files when a site is instantiated. If Path is not specified, the value of Url is used for the physical path. Use the Url attribute to provision a folder through the Feature.
File
Attribute
Description
IgnoreIfAlreadyExists Optional Boolean. TRUE to provision the view even if the file aready exists at the specified URL; otherwise, FALSE.
Type Optional Text. Specifies that the file be cached in memory on the front-end Web server. Possible values include Ghostable and GhostableInLibrary. Both values specify that the file be cached, but GhostableInLibrary specifies that the file be cached as part of a list whose base type is Document Library.When changes are made, for example, to the home page through the UI, only the differences from the original page definition are stored in the database, while default.aspx is cached in memory along with the schema files. The HTML page that is displayed in the browser is constructed through the combined definition resulting from the original definition cached in memory and from changes stored in the database.

So, the module section is specifying where any <file> elements be copied to. We are going to copy this to the document library called "Style Library" in the root web site for the site collection. 

 

Step 2. Installing and testing the Feature

Now that our web developer has created the feature, they test it on their development SharePoint server. Open command prompt and execute the STSADM -installfeature command. When the -name parameter is specified, SharePoint knows to look in the TEMPLTE\FEATUIRES folder already, so you do not have to specify a full path.

Step 3. Test the feature

Okay, so the feature is installed. Now what? Now we need to activate this feature on a site collection. Here is the "Style Library" of my test site. (Remember that this library will not exist unless the SharePoint Publishing Infrastructure feature has been installed). Note that at this time, there is no CSS file called CUSTOMBRAND.CSS

So now let’s Activate the feature. Browse to Site Actions>Site Settings and from the Site Collection Administration menu, choose "Site Collection Features". Lo and behold! We have our feature listed! Note the title and description is as per our FEATURE.XML file.

Click "Activate" to activate the feature (you can also do this on the command line via STSADM -o activatefeature command). Once it is marked as active, re-examine the style library. Woo freakin hoo! There is our CSS file!

Step 5. Test and deploy the Feature

In our example here, we can test this feature, by choosing to use this new CSS file in the master page settings of any site within the site collection. The Site Collection administrator navigates to site settings->look and feel->master page settings and specifies the CSS file override as shown below.

By clicking on the "Browse" button, they can select the CSS file from the style library in the site collection.

This highlights the relationship between the web designer and the farm, site collection and site owners. In a large production farm the sequence would look something like this.

  • The developer creates and tests the feature
  • The developer hands the tested and approved feature to the the SharePoint farm administrator
  • The SharePoint farm administrator copies this feature into the FEATURES folder on the web front end servers on the farm and notifies the site collection administrators that the feature has been installed
  • Each site collection administrator activates the feature and informs the site owners that the feature is now available.
  • Each site owner optinally chooses to use this new CSS installed by the feature.

Summing Up

I hope that you found this article useful. Now you are going to totally hate me, because now I am going to tell you that features are only half of the solution to SharePoint customisation. "What is the other half"? you may ask.  Well the other half of the solution is "solutions" … don’t you just love generic terminology!

 

 



« Previous Page

Today is: Wednesday 3 June 2026 -