WSSStore Base Solution Structure

In the previous post I introduced the tools I’m using to create the new Real Nice Rugs site. I also talked about the version control and introduced the Visual Studio 2008 solution containing the project’s base site definition. In this post I’m going talk about the solution package itself.

You can download the version that goes with this post here.

Project Structure

This project uses WSPBuilder to create web solution packages. WSPBuilder works by examining the project’s folder structure and creating a cabinet file containing a solution manifest and all of the project’s files. The manifest tells SharePoint where to put each file from the cabinet into the 12 hive.

The folder structure looks like this:


A Web Template file is an xml file that advertises the presence of a site definition to SharePoint. The web templates on your server are in the 12TEMPLATE1033XML folder (1033 is my LCID, it indicates EN-US, but yours may differ). The name of each web template starts with the literal text, WEBTEMP. The web template for this solution is WEBTEMPWSSSTORE.XML. I created this file using the existing WEBTEMP.XML from my development server’s 12 hive as a starting point.


<!– _lcid="1033" _version="12.0.4518" _dal="1" –>

<!– _LocalBinding –>

xmlns:ows="Microsoft SharePoint">



Title="WSS Store"



Description="A simple eCommerce site."

DisplayCategory="Capitalism" >




SharePoint uses this information on the Create Site Collection page.

This particular web template points to two other sections of the 12 hive: the images folder and the site template.

12TEMPLATEImages – RNRImage.png

The 12TEMPLATEImages folder maps to the /_layouts/images/ URI on every site collection. The project contains the single image, RNRImage.png, indicated by the ImageUrl attribute.

12TEMPLATESiteTemplatesRNR – Default.aspx

SharePoint uses the value of the webtemp’s Template element Name attribute. The Name attribute in the template is RNR.

This folder contains the default web part page, default.aspx. In this example, the file is a copy of the STS (Team Site) default.aspx file.


The web template indicates that there is a site template named RNR. SharePoint looks for the site template file in the site template’s XML folder. The site template definition is always named ONET.XML.

You can see the ONET.XML for this version of the site definition here. I will fully describe this file and how I made it in a subsequent post.

The other two files in the project, FullDeployBuildEvent.txt and UpgradeBuildEvent.txt, are outside of the 12 hive structure. WSPBuilder will not include them in the package. These contain different post-build event command scripts that build and deploy the solution.



How to Sabotage Your Projects

A friend of mine sent me a link to a declassified WWII era document called the "Simple Sabotage Field Manual" that was the subject of a presentation at the recent Enterprise 2.0 conference. It is a fascinating read if you do any work managing collaborative efforts (anything involving a team) or build systems to facilitate collaboration (like SharePoint).

It gives advice on how to deliberately screw things up but can also be read as an anti-pattern of behaviors to avoid yourself and to watch for in those you manage or collaborate with. The evil genius of this guide is that all of the techniques it advises are destructive behaviors that normal people exhibit on a daily basis. So, if you were to do these things in a theater of war you could hurt the enemy while maintaining plausible deniability and avoid a firing squad.

I guarantee that you’ve seen most or all of these in action. I know I have over the many consulting projects I’ve done here in Atlanta and not just the ones involving SharePoint.

Here are some of my favorites:

Sabotage Under the Guise of Process

  • Insist on doing everything through "channels." Never permit short-cuts to be taken in order to expedite decisions.
  • When possible, refer all matters to committees, for "further study and consideration." Attempt to make the committees as large as possible — never less than five.
  • Bring up irrelevant issues as frequently as possible.
  • Haggle over precise wordings of communications, minutes, resolutions.
  • Refer back to matters decided upon at the last meeting and attempt to re-open the question of the advisability of that decision.
  • Advocate "caution." Be "reasonable" and urge your fellow-conferees to be "reasonable" and avoid haste which might result in embarrassments or difficulties later on.

Sabotage Via Project Management

  • Do everything possible to delay the delivery of orders. Even though parts of an order may be ready beforehand, don’t deliver it until it is completely ready.
  • In making work assignments, always sign out the unimportant jobs first. See that the important jobs are assigned to inefficient workers of poor machines.
  • Insist on perfect work in relatively unimportant products; send back for refinishing those which have the least flaw. Approve other defective parts whose flaws are not visible to the naked eye.
  • When training new workers, give incomplete or misleading instructions.
  • Hold conferences when there is more critical work to be done.
  • Multiply paper work in plausible ways. Start duplicate files.
  • Apply all regulations to the last letter.

Sabotage Your Team Via Poor Work

  • Work slowly. Think out ways to increase the number of movements necessary on your job
  • Contrive as many interruptions to your work as you can
  • Do your work poorly and blame it on bad tools
  • Never pass on your skill and experience to a new or less skillful worker
  • Give lengthy and incomprehensible explanations when questioned
  • Act stupid (My favorite)
  • Be as irritable and quarrelsome as possible without getting yourself into trouble

I predict it won’t be long before someone writes a best-selling business book based on this guide.

Author: Doug Ware

June Atlanta .NET User Group Meeting

6:00 Networking and Refreshments
6:30 Tutorial or Q&A Session
7:00 Announcements
7:15 Technical Presentation

Public Policy and IT

Speaker: Johnathan Zuck

Some of you may have heard the name Jonathan Zuck who was, in his day, a bit of a VB, Smalltalk and Delphi maven, speaking and teaching all over the world. With hundreds of articles, components, 5 MVP awards and a few books to his name, some of the older of you may have learned a lot of programming from him.

After selling his third company 10 years ago, Jonathan became astutely aware of the growing influence politics and public policy were having on the IT industry generally and on small businesses in particular. The Association for Competitive Technology is a trade association that represents small IT companies around the world on issues as far reaching as trade, public procurement, intellectual property protection and overregulation on privacy and online safety. Jonathan and ACT have been devoted to creating an environment which is open to all comers and as free as possible from the kind of bureaucracy that cripples small businesses.

Every day, policies are being discussed in Georgia and around the world that could have an adverse effect on your business including rules for your website, procurement biases in government agencies or internet taxation. You have made various technology decisions for yourself and have invested a great deal of time and money in those technologies to gain expertise and command premium dollars. Politicians are lobbied by big players to enact policies to advance their specific business objectives most often at the expense of your interests. Their size and incumbency lead to policies of stagnation and protectionism that are generally antithetical to entrepreneurship. If politicians create policies that would create a bias against those technologies you would potentially lose some of that hard earned competitive advantage. Very seldom is it a technical decision to do something sweeping but is, instead, more often a political one.

Jonathan is making a few stops here in Georgia to talk about these issues and how they affect you as a businessman or technology professional. Topics of discussion include:

1. Examples of legislation from Georgia and elsewhere that could stifle the potential of your business

2. Technology preferences that could devalue your investment in expertise.

3. Opportunities to become more involved at the right time for maximum impact.

You probably have followed some of this stuff in the news so you might have questions about it as well such as the implications for the ISO vote to accept OOXML as a document standard the role small businesses played in making that happen.

Please join us for a dynamic and informative session about a part of your business and career that often gets overlooked.

About the speaker: Jonathan Zuck | President, Association for Competitive Technology

Jonathan Zuck is a widely known and respected leader in the technology industry. As a professional software developer and IT executive with more than 15 years of experience, Mr. Zuck brings an insider’s perspective to his role as President of the Association for Competitive Technology.

Since assuming leadership of ACT, Mr. Zuck has provided analysis, commentary and background information on a wide range of technology issues to the media, the public and Congress. He has been called on as a technology expert for the major news networks including CNN, CNBC and ABC, he is a frequent contributor to national and local radio news programs, and is consistently quoted in the trade and popular press. A prolific writer whose work has appeared in trade publications including PC Magazine, PC Week, Windows Tech Journal and in several books, Mr. Zuck is in high demand as a speaker at trade conferences around the world.

Just prior to coming on board for ACT, Mr. Zuck served as Director of Technical Services at the Spectrum Technology Group in Washington, D.C., a consulting firm specializing in client/server, Internet and data warehouse solutions development. In 1988, Mr. Zuck founded and served as President of User Friendly, Inc., of Washington, D.C., a company providing consulting and software development services to local businesses. Mr. Zuck also set up U.S. operations for a French software firm where he helped build the company into an $11 million business.

In 1996, Mr. Zuck joined Financial Dynamics as Vice President of Technology, where he set the standard for innovation in technical architecture, career management and employee empowerment. During his tenure, company revenues doubled, and his leadership helped position the firm for a strategic combination with the Spectrum Technology Group in November 1997.

Meeting Location and Directions

Microsoft Corporation
1125 Sanctuary Pkwy.
Suite 300
Atlanta, GA 30004

Directions to Microsoft Iteration 0

This is the third post in a series about my attempt to create a basic eCommerce platform on WSS 3.0 to replace the site I use to sell welcome mats. You can read about the project here and see all the posts in this category here.

To complete iteration 0 I need to pick my toolset and set up version control.

My Toolset

I know that I’ll be adding to the toolset over time, especially when I begin to integrate forms based authentication and credit card processing. I have some ideas about both of these, but I am deferring selection of those components until later. For now, my toolset will consist of:

I’ll use VS2008 to create the project and the individual artifacts. I’ll use SPD to create my master pages. WSPBuilder will help me package everything into a Web solution package, and my own SharePoint Skinner will help me create my style sheets and themes. (Who knows? maybe I’ll finally finish v1.1 of skinner in the process!)

Version Control

Since I’m doing all of this in full view of you, my readers, I’ve decided to use the source control services provided by CodePlex. I created a new project named WSSStore located here. I am using Visual Studio Team System 2008 Team Explorer. You can download it here.

Setting Up the Project

I didn’t intend to start any concrete implementation until iteration 1, but I went ahead and made a new project containing a basic site definition so that I could finish setting up the CodePlex site. I’ll explain the contents of the project in a subsequent post, but there are a couple things you need to do in order to build the solution.

The first thing you need to do is install the WSPBuilder files to your development server’s local disk. The release files are in a ZIP archive, so just extract them to a directory of your choice.

The project uses the following Post-build event command line script in the VS project’s properties to build the package and deploy the solution:

cd $(ProjectDir)


stsadm -o retractsolution -name $(ProjectName).wsp -immediate

stsadm -o execadmsvcjobs

stsadm -o deletesolution -name $(ProjectName).wsp

stsadm -o addsolution -filename $(ProjectName).wsp

stsadm -o deploysolution -name $(ProjectName).wsp -allowgacdeployment -immediate

stsadm -o execadmsvcjobs


For this to work you must add the locations of stsadm.exe and wspbuilder.exe to the Path environment variable.

In Explorer, right-click My Computer and select Properties. On the Advanced tab, click Environment Variables.

The Environment Variables dialog box will open. Select Path and click Edit.

Add the following to the end of the path:

;C:Program FilesCommon FilesMicrosoft Sharedweb server extensions12bin;C:ThePlaceYouPutWSPBuilder;

Click the various OK buttons to save the path and you’ll be able to build the solution.

After you build the solution, the WSS Store template will appear on the Create Site and Create Site Collection pages. This version is simply a blank site definition.

The source code for this iteration is available on CodePlex and is also downloadable as a zip file here. – The Plan

If you don’t know what this is about, see this post.

I’m sure we all agree that no one should ever start a project without having a plan. In my case it’s critical because I’m doing this on the side as time permits and I want to document the entire process. I need a plan so that when a week goes by between cycles spent building the site definition; I won’t have to start by saying, ‘now where was I?’

You need to see my plan because I promised to be honest and not obscure my bone-head moves or general screw-ups by saying, ‘I meant to do that’.

That said… here is my high-level plan.

Iteration 0 – Project Initiation

This is what I started today.

  1. Stick neck out and make promises
  2. Advertise to the blogosphere
  3. Pick toolset
  4. Setup version control

Iteration 1 – Basic Site Definition

In this cycle I am going to create a new site definition that contains the various lists and libraries I expect to need in the final solution. I won’t customize any of the lists in this phase and I will ignore the shopping cart and its related elements. This is a rough-draft of the super-structure.

  1. Create a Blank site collection.
  2. Use the browser UI to add lists and libraries.
  3. Create a site definition (not a template) based on 1 & 2.

Iteration 2 – Security

In this iteration I will define groups, permission levels, and get the custom membership provider working.

  1. Define user roles and groups
  2. Define and implement permission levels
  3. Custom membership
  4. Web Solution Package integration

Iteration 3 – Product Catalog

In this phase the site will begin to resemble a commerce site.

  1. Implement product content type and custom forms
  2. Implement product document library
  3. Implement catalog viewer web part
  4. Web Solution Package integration

Iteration 4 – Shopping Cart

It’s an ecommerce site, it needs a shopping cart!

  1. Figure out how this is going to work
  2. Revise plan
  3. Web Solution Package integration

Iteration 5 – Check-out

In this phase the site will get the ability to finalize an order and collect payment.

  1. Collect billing and shipping info
  2. Credit card gateway
  3. Confirm transaction emails
  4. Web Solution Package integration

Iteration 6 – Fulfillment workflows

This cycle includes workflows to communicate with the suppliers, track shipments, and notify customers of status.

  1. Define workflows.
  2. Implement workflows.
  3. Web Solution Package integration

Iteration 7 – Branding

In this iteration we’ll do the branding. I’ll be talking to some gfx artists soon to start figuring out the Real Nice Rugs layouts. So, this really runs parallel to the other cycles.

  1. Define branding.
  2. Create themes.
  3. Create master pages.
  4. Web Solution Package integration

Wow! That’s a lot to do. I’ll be lucky to make the holiday season, but at least I know what I’m facing, and you know what to look forward to, unless I fail utterly. J No pressure.

–Doug Ware

How We’ll Do It – Rebuilding

One of my little side businesses is I started it to give my father an online outlet for his welcome mat business. It hasn’t been a huge success because neither Dad nor I have the time to really do proper marketing or to maintain the site. One of the reasons for this is that, while the hosted ecommerce package is functional, if you want the good tools you have to pay more and at our relatively low volume it doesn’t seem worthwhile.

Things would be better if the platform had more functionality and was more usable. But, even if the upgraded package paid for itself through more sales, we intend to add custom printing to the product mix later this year. When we do, the site will need custom functionality that the package we’re using doesn’t offer at any price. And so, the time has come to start building a custom solution.

I’m happy to say that Elumenotion is growing both in terms of our consulting projects and training offerings, but this means I’ll have even less time to work on this side project. Therefore, it’s critical that the new site do what we need with little manual intervention and also be easy enough to use that anyone can maintain the catalog. I think a simple ecommerce platform built on Windows SharePoint Services will be just the ticket!

I love the "How We Did It: *" posts on the SharePoint Team Blog. Each of these is a little case study on a successful project and it’s always interesting to see how people did their projects. But, whenever I read a case study (of any kind), I always wonder how it really went. You know… what skeletons were buried? What went unsaid?

Because of this, I will be brave (foolish?) and keep a running diary as I build the new platform and I will make the resulting site definition available for download.

This little project is not my number 1 priority, but I did promise Dad I’d have it done before the Christmas holiday buying season starts. I invite you to follow along. Feel free to comment and criticize, and if you like the rugs, maybe buy one for your Dad or Mom. J

Right now we only ship in the US, but that will also change soon.

–Doug Ware



Tech-Ed Tweener Events

There are events in Orlando all weekend for the folks in town for Tech-Ed or those loitering in the vicinity of Tech-Ed.

There’s a little something for everyone on Saturday at the Orlando Convention Center.

Read more here:

Saturday, June 7, daytime

Registration opens at 0800A







SQL Saturday BI


SQL Saturday BI


SQL Saturday


SQL Saturday


SQL Saturday


SQL Saturday


.NET CodeCamp


.NET CodeCamp


.NET CodeCamp


.NET CodeCamp


.NET CodeCamp


.NET CodeCamp


Day of Silverlight III


.NET CodeCamp


IT Pro Camp


IT Pro Camp


IT Pro Camp


IT Pro Camp





S330 GH

Dev Exam Cram


Dev Exam Cram


MCT Training


MCT Training


Saturday, June 7, afterhours

Registration opens at 0800A


Jessica says its 700p-1000p somewhere!  devfish is kinda scared of this one. Click here for more info



I will be presenting my SharePoint Developer’s Survival Guide at the .NET CodeCamp at 11:00.

On Sunday, June 8, you can come see me at the Sharepoint Fundamentals DotNet University!

Doug Turnure’s flagship series of structured courses geared to bring you up to speed on a particular topic.

NET University presents SharePoint Fundamentals – a 1-day technical seminar that teaches the fundamentals of Windows SharePoint Services 2007. Join SharePoint gurus Josh Carlisle, Mikhail Dikov, Jacob Sanford, Doug Ware, and Ted Pattison, who will take you on a tour of SharePoint from the ground up. Topics will include:

  • Installation
  • What’s new in 2007
  • Core Concepts
  • Building WebParts

(All course material is downloadable from
The course will include take-home labs (also downloadable from Attendees will receive a .NET U *Alumni* t-shirt and certificate of completion.

Contact :: Doug Turnure –

More info :: Doug’s blog entry on ]inbetween[ dotnetu –

Registration info:

I hope to see you there!

–Doug Ware