Upcoming Developer Events in Atlanta

On Monday, Eric Engler and Bill Ryan will be presenting at the Atlanta .Net User Group on ASP.Net Debugging and Speech with Live Communications Server respectively. Read more here.

On November 12, there is a free one day training event for BizTalk Server at Microsoft.

.NET University – Biztalk Basics for developers and architects

To be held at:

Microsoft Corporation – Alpharetta, GA

1125 Sanctuary Parkway, Suite 300

Atlanta, GA 30004

9:00 AM–4:30 PM

Register here – Event ID: 1032355784

Event Overview:

.NET University BizTalk Basics is a free, one-day training course for developers and architects!  Join us to get an overview of BizTalk Server 2006. All topics are covered at a 100-level, and take-home labs will be included with the courseware. Upon completion, attendees will receive their official .NET University alumni T-Shirt and a Certificate of completion.

All materials are available for download and re-use, including re-delivery at your own company/user group. Slide notes are included in the PowerPoint files, to guide the speaker during re-delivery. Content may be found here:

· BizTalk Basics 1 – Overview

· BizTalk Basics 2 – Publishers and Subscribers

· BizTalk Basics 3 – Binding and Rule Engine

· BizTalk Basics 4 – Deployment

· Hands on Labs – to take home and try it out.


 

Speakers:

Karl Rissland, Technology Specialist, Microsoft

Rob Cameron, Developer Evangelist, Microsoft

Mark Dunn, President, Dunn Training

Mark Berry, Trainer, Dunn Training

Doug Turnure, Developer Evangelist, Microsoft

Continental breakfast and boxed lunches will be provided. Space is limited, so register now to get your seat at .NET University’s BizTalk Basics.


 

Location: Microsoft Corporation – Alpharetta, GA

1125 Sanctuary Parkway, Suite 300

Atlanta, GA 30004

9:00 AM–4:30 PM

Register here – Event ID: 1032355784

Upcoming Developer Events in Atlanta

On Monday, Eric Engler and Bill Ryan will be presenting at the Atlanta .Net User Group on ASP.Net Debugging and Speech with Live Communications Server respectively. Read more here.

On November 12, there is a free one day training event for BizTalk Server at Microsoft.

.NET University – Biztalk Basics for developers and architects

To be held at:

Microsoft Corporation – Alpharetta, GA

1125 Sanctuary Parkway, Suite 300

Atlanta, GA 30004

9:00 AM–4:30 PM

Register here – Event ID: 1032355784

Event Overview:

.NET University BizTalk Basics is a free, one-day training course for developers and architects!  Join us to get an overview of BizTalk Server 2006. All topics are covered at a 100-level, and take-home labs will be included with the courseware. Upon completion, attendees will receive their official .NET University alumni T-Shirt and a Certificate of completion.

All materials are available for download and re-use, including re-delivery at your own company/user group. Slide notes are included in the PowerPoint files, to guide the speaker during re-delivery. Content may be found here:

· BizTalk Basics 1 – Overview

· BizTalk Basics 2 – Publishers and Subscribers

· BizTalk Basics 3 – Binding and Rule Engine

· BizTalk Basics 4 – Deployment

· Hands on Labs – to take home and try it out.


 

Speakers:

Karl Rissland, Technology Specialist, Microsoft

Rob Cameron, Developer Evangelist, Microsoft

Mark Dunn, President, Dunn Training

Mark Berry, Trainer, Dunn Training

Doug Turnure, Developer Evangelist, Microsoft

Continental breakfast and boxed lunches will be provided. Space is limited, so register now to get your seat at .NET University’s BizTalk Basics.


 

Location: Microsoft Corporation – Alpharetta, GA

1125 Sanctuary Parkway, Suite 300

Atlanta, GA 30004

9:00 AM–4:30 PM

Register here – Event ID: 1032355784

Three Options for Better Usage Data

The usage data reports in WSS and MOSS aren’t terribly useful. I’ve been meaning to find an alternative for awhile and a couple weeks ago a convergence of events drove me to it.

As I mentioned in an earlier post I have a small ecommerce site now and the search engine optimization process is ongoing. I’m using a canned solution that supports Google Analytics. Around the same time the rug store opened, a friend suggested I consider using FeedBurner for my blog. Like Google Analytics, FeedBurner provides some analytics and, most importantly for me, re-syndicates a blog’s list feed. After a few days of using both out of curiosity I took a look at a third option, a web log analyzer. The one I chose after a 5 second internet search is called WebLog Expert.

Both Google Analytics and FeedBurner work by inserting a little Java Script into your site that calls into their services using an identifier that identifies your web site. Both are free and both are owned by Google. Configuration was relatively easy by following the instructions provided by each.

I started by configuring the SharePoint blog for FeedBurner.

With it I can see at a glance how many people are visiting the blog,

what pages they look at while they are here,

and where they came from and if they clicked on any outgoing links.

My only real complaint about the FeedBurner data is that the "Top 20" mode most of the data displays use has no drilldown. So, in cases where you have a lot of instances, like search terms or referrers, that are all tied at 1 each you can’t see all of the information.

I configured FeedBurner on the blog site as its features are all about blogs. But, I have a site collection, and if you look at the incoming report you will see that one of the referrers listed is www.elumenotion.com with 11 referrals. So, the FeedBurner data is incomplete with regards to my whole site.

I configured Google Analytics for the site collection by putting the appropriate java script in the master pages for the root web and the blog.

Analytics provides much more detail and some cool eye candy!

I could spend a lot of time talking about Google Analytics feature set. It has a lot to offer and it’s free. You can see in detail where visitors come from, what brought them there, how they navigated your site, what links they followed, etc. It even offers an overlay of your site that allows you to visually gauge the popularity of your links and the navigation paths. I highly recommend it.

But still, there was one important element of my site that neither of these tools could give me much any insight.

The reason I went to FeedBurner in the first place was to re-syndicate and get information about my RSS Feed.

FeedBurner is great for this compared to SharePoint because it offers no visibility to the list feed at all, but all I can see on FeedBurner are the stats of subscribers since I configured FeedBurner.

This brought me to option three, web log analysis.

When you create a web application in Central Admin, the IIS web site is configured for logging.

For some reason, the log is not configured to store information about referrers by default. You can change this by clicking Properties and selecting the appropriate check boxes.

The biggest advantage to doing web log analysis is that it doesn’t require any special java script on your site and it doesn’t depend on tracking cookies. Your ability to visualize the data is limited only by the tools you select. The disadvantage is that you have to have administrator access to the server to configure it. Higher end tools support report generation and routing. So if you are in a large organization, chances are there is something available and you might be able to talk the folks in the operations center into getting you the data if you ask.

I used a tool called WebLog Expert. Via the web logs it provides the same sort of information I get for Google Analytics, but it gives the most complete and accurate data.

For example,

For now I think I’ll continue to use all three tools as each has strengths the others lack.

I’ve learned a few things from my analysis.

The first is that my request for people to switch to the FeedBurner list feed on October 2nd was completely ignored! As you can see from the chart, the original list feed still accounts for around half of my traffic. However, because the rss links no longer point to it, it isn’t growing.

The second was that I almost never used the term ‘MOSS’ and so unless the search was ‘WSS’ or ‘SharePoint’ people would not find me.

Third, this truly is a World Wide Web. I’ve had a lot of fun with my 5 year old daughter looking at the map overlay to see where our visitors come from and she is learning a little geography in the process!

Adding a Name Field to Comments on a WSS Blog

The other morning I got a comment on one of my posts that said:

"Oh, another one of these Sharepoint Blogs with no input field for a name – strange concept this is."

When I read this I thought to myself, "my, that is peculiar!"

And then I thought, "bah! I’ll just add the column to the comments list!"

This turned out to be a little trickier than I was expecting so I thought I might share how it was done in case anyone else is bothered by this….

First, navigate to the comments list

and create a new column.

I chose to name mine "Your name" and configure it as follows:

Feeling smug and very good about myself and my WSS prowess I decided to test the results.

Well, well. It seems the SharePoint gods hate the overly proud. Chastened and humbled I decide to have a look at the Posts.aspx form under the Posts list in SharePoint Designer. I wanted to look at the ListViewWebPart in an easy to consume fashion so I right clicked it and chose Convert to XSLT Data View.

I’m not sure if the blame lies with designer or the list template, but the result was not pleasing.

Now, at this point I could have tried fixing up the XSLT, but the output resulting from the conversion operation was good enough for me to see that I needed to replace the "Author" field with my new field which is called "Your_x0020_name". So, I closed the form without saving it, because you can’t just CTRL-Z undo the conversion, and reopened it. In the ListViewXML element of the Comments web part I located the applicable portion shown below:

Field Name="Author"/><HTML><![CDATA[ at <span dir="ltr">]]></HTML><Field Name="Created"/><HTML><![CDATA[</span></div>]]></HTML></ViewBody><ViewFooter><IfHasRights><RightsChoices><RightsGroup PermAddListItems="required"/></RightsChoices><Then><HTML><![CDATA[</div> <h3 class="ms-CommentHeader">Add Comment</h3>]]></HTML></Then><Else><HTML><![CDATA[</div>]]></HTML></Else></IfHasRights></ViewFooter><ViewFields><FieldRef Name="Title"/><FieldRef Name="Body"/><FieldRef Name="PostTitle"/><FieldRef Name="Author"

and edited it to use my new field instead of Author:

Field Name="Your_x0020_name"/><HTML><![CDATA[ at <span dir="ltr">]]></HTML><Field Name="Created"/><HTML><![CDATA[</span></div>]]></HTML></ViewBody><ViewFooter><IfHasRights><RightsChoices><RightsGroup PermAddListItems="required"/></RightsChoices><Then><HTML><![CDATA[</div> <h3 class="ms-CommentHeader">Add Comment</h3>]]></HTML></Then><Else><HTML><![CDATA[</div>]]></HTML></Else></IfHasRights></ViewFooter><ViewFields><FieldRef Name="Title"/><FieldRef Name="Body"/><FieldRef Name="PostTitle"/><FieldRef Name="Your_x0020_name"

After saving my work I returned to the page that had so rudely mocked my vain pride earlier and hit refresh.

Viola!

–Doug Ware

Author: Doug Ware

Skinner is Now on CodePlex

Well, it’s been over a month since I introduced the tool and after over 1200 downloads it looks like the tool works pretty well. So, I am taking the plunge and putting the source online for all to see on CodePlex. I am also planning a release soon that will export themes in the format that the Community Kit for SharePoint: Enhanced Blog Edition uses. I’m not sure if that will go under CKS or just be a release in the project I just set up, so stay tuned for more info!

Enjoy.

–Doug

Provisioning Site Collections, Portal Style

Have you ever needed to create a site collection that consists of more than one site? This is a very common scenario, and in fact this very site is an example. This site collection started as a blank site and a sub site was added using the blog site template. MOSS can create a site collection using the Collaboration or Publishing site templates and in both cases, sub sites are involved.

This is accomplished using a Provisioning Provider. The examples in this article apply to MOSS, but if you are using WSS I will talk about how to extend WSS at the bottom.

As in all examples of custom site templates that don’t involve the save as site template, *.stp, sort of site templates, this one starts with a web template file in the 12 hive’s TEMPLATE1033XML (or not 1033 if you are a different locale). For this example I have created an xml file called WEBTEMPProvisioningExample.xml that contains the following:

<?xml
version="1.0"
encoding="utf-8"?>

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

<!– _LocalBinding –>

<Templates
xmlns:ows="Microsoft SharePoint">

<Template
Name="TeamSiteWithBlog"
ID="9172004">

<Configuration
ID="0"

            Title="Team Site with Blog Sample"

            Hidden="FALSE"

            ImageUrl="/_layouts/images/stsprev.png"

            Description="Team site with blog provisioning example."

            DisplayCategory="eLumenotion"

            AllowGlobalFeatureAssociations="True"

            ProvisionAssembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"

        ProvisionClass="Microsoft.SharePoint.Publishing.PortalProvisioningProvider"

            ProvisionData="SiteTemplates\eLumenotion\xml\Provisioning.xml"

    />

</Template>

</Templates>

This file says that we have a new site definition that will display in the eLumenotion group called ‘Team Site with Blog Sample’. It points to a second file, Provisioning.xml that is located in the 12 hive’s TEMPLATESiteTemplateseLumenotionXML folder that contains the following:

<?xml
version="1.0"
encoding="utf-8"?>

<portal
xmlns="PortalTemplate.xsd">

<web
name="Team Site with Blog"

         siteDefinition="STS#0"

         displayName="Team Site with Blog"

         description="A root level team site with a blog." >

<webs>

<web
name="Demo Blog"


siteDefinition="BLOG#0"


displayName="A Blog"


description="A site for a person or team to post ideas, observations, and expertise that site visitors can comment on." />

</webs>

</web>

</portal>

The result is that when a user chooses to create a new site collection, MOSS invokes the Microsoft.SharePoint.Publishing.PortalProvisioningProvider class to read in the file specified by the ProvisioningData attribute and create the Sites and webs. And the result is a team site with a blog as a sub site.

It’s unfortunate that this handy little class, PortalProvisioningProvider, is in an assembly that doesn’t come with WSS, but it is pretty simple, and the provider model makes creating your own close to trivial.

All you need is a class based on SPWebProvisioningProvider. This abstract class defines a single method that accepts a SPWebProvisioningProperties that contains the SPWeb at the root of the new site collection and a string that has the path to the file containing the rest of the provisioning instructions that contains anything you want!

So, what could you do with an implementation of SPWebProvisioningProvider? Well, right off the top of my head you could:

Create a collection of subsites.

Configure any arbitrary aspect of the site through code.

Add and activate features.

Deactivate features.

Create site columns, content types, and lists.


You get the idea. Basically anything that you could do through the object model is possible. This is the equivalent of a feature receiver for a site template.

I personally don’t think you should use this as an alternative to schema xml, because no one can peer into your dll short of reflector or its equivalent, but if you wanted to create a third party solution that was obfuscated or if you just can’t figure out the xml definitions and have to show something tomorrow or be fired, it might not be the worst thing in the world.