Saturday, November 15, 2008

Improving MOSS Search Accessibility

At one of my clients, we were looking at improving the accessibility of their intranet for sight impaired users. This was my first opportunity to work with someone that uses a text-to-speech and Braille reader as their only way of browsing a site. If you pardon the pun, this was eye-opening. It's fine to think about accessibility based on reading whitepapers or blog posts, it's quite another matter to watch a sight impaired user navigate through an intranet and try to make sense of it. One thing that we quickly learnt is that any content that describes the location of an item purely based on visual indicators is not enough (e.g. "just click on the blue button")

One area that we were able to improve quickly was in the search results. Our accessibility reviewer mentioned that it would be easier to jump between each search result if they were wrapped up in H3 tags. No problem – we had this implemented that afternoon. This required modifying a property in the Search Results web part:

  1. Perform a search within your MOSS intranet so that you can get to the search results page
  2. Within Search Results, select Site Actions – Edit Page. This will allow you to make changes to the web parts on the search results page
  3. On the Search Core Results web part, select Edit – Modify Shared Web Part
  4. Within the web part properties click on the XSL Editor... button under the Data View Properties section

This is the XML transformation code that is applied to our search results. It allows us to control exactly how they are formatted.

The section that you want to change begins with <xsl:template match="Result">. This controls the HTML written out for each search result. You need to put a <H3> tag immediately before the <span class="srch-Icon"> element and the closing </H3> tag immediately after the closing </span> tag for <span class="srch-Title">

You probably will also want to adjust the formatting of these H3 elements, as by default, they are rather large, and there is too much spacing between the search result title and the other details. The easiest way to do this is to apply an inline style to your H3 element. This is what mine looks like:

<H3 style="margin-bottom:0px; font-size:100%;">

Once you have completed your changes, don't forget to publish the updated page.

You can download a copy of my modified Data View XSL Property from here

Tuesday, November 11, 2008

Sydney User Group meeting – November 18th

If you have been working with SharePoint for some time, there is a good chance that you have one of Michael Noel's books on your shelf. He's the author of SharePoint 2007 Unleashed, SharePoint 2003 Unleashed as well as a number of Microsoft whitepapers. You might have caught one of his presentations at this year's Tech-Ed in Australia. Well, he's back – and for one day only. He's going to be presenting at the Sydney SharePoint User Group this month on one of his favourite topics – virtualisation and how it applies to your SharePoint environment.

The session will be held on Tuesday, November 18th. Normally the User Group meetings are held in the evening, but this one is going to be a lunch-time session. We will be commencing the presentation at 12:30 and expect to wrap up the Q&A session by 2pm. The venue remains the same – Sydney Mechanics School of Arts at 280 Pitt Street in the CBD (close to Town Hall or Museum stations).

To read more and register your interest in attending, go to


Saturday, October 11, 2008

MVP Again

OK – this news is a bit stale now, but heck I thought I'd post anyway. I have been awarded SharePoint MVP status for another year! Well done to me. This will be my third year as a SharePoint MVP. This is particularly exciting with the next release of SharePoint on its way. I just need to find some spare time to devote to learning about the latest gizmos and widgets in vNext once those betas come out. Considering there is still so much in the current release that I'd like to know more about, I'm getting a bit worried about brain overload.

Remember the movie "The Matrix" – that cable they had that you could plug into the back of your head to download new info? I need to get me one of them.

Wednesday, September 24, 2008

MOSS Solution Day – Advanced Portals and Collaboration

I'm back in the classroom again next month delivering a one day training session for Microsoft called "MOSS Solution Day – Advanced Portals and Collaboration". This is going to be in Melbourne on Tuesday October 14th and in Sydney on (updated) November 10th

These sessions are targeted at Solution Architects that already have experience with SharePoint but want to deepen their knowledge in the Portals and Collaboration components. If you'd like to register for either of these sessions, pop along to the Microsoft site at

Tuesday, September 09, 2008

Tech-Ed 2008 Workflow Presentation

Whew, Tech-Ed Australia is finally over for another year. Boy, that was a hectic week. I came that close to winning a HP tablet pc in the Ask the Experts competition, did three presentations, and met up with a whole bunch of people.

I promised to post a link to my presentation on my blog. So firstly, here is the Form Processes in Minutes not Months     session that I co-presented with Ben Walters of SDM.

This session looked at building an InfoPath 2007 browser based form, and creating a SharePoint Designer workflow to process the request.

For a useful series of videos on how to build SharePoint Designer workflows, check out:

For additional custom workflow actions that you can add to your SharePoint Designer workflows check out:


Monday, September 01, 2008

Tech-Ed Australia 2008 – I’ll be presenting

If you are going to Tech-Ed in Sydney this week, you can catch me presenting at one of three different sessions:

  • OFC315 - Why Findability Should Be an Organising Principle for Your SharePoint Server 2007 Deployment. Presenting with Ben Curry from MindSharp
  • OFC301 - Form Processes in Minutes, not Months. Presenting with Ben Walters from SDM.
  • MVP307 – SharePoint Monitoring – How to measure the success of your SharePoint implementation. This one is all by myself

I'm looking forward to the event and getting to meet some people I haven't seen in a while.

Friday, August 08, 2008

Converting Word docs to the Sony eBook format

Hi, my name is Ivan and I'm a gadgetholic. It's been 15 days since my last gadget purchase. Of course, I'll argue that each one of those purchases represents an enhanced quality of life, a way to streamline my day-to-day activities, thus freeing me up to...well, go out and buy more gadgets I guess.

Take this one time earlier this year when I was in the United States. I happened to be passing the Fry's electronics store in Seattle, so I popped in for a browse. I left with the Sony electronic book reader. It's beautiful – it uses one of those special e-ink screens that looks almost like paper. It only uses power when changing the page, so battery life is very good (7,500 page turns in theory). My reasoning was that I have so much reading to catch up on, and this is a lot faster to "boot up" compared to my laptop.

The reader is capable of displaying PDF documents, the only problem is that scales them to fit it's screen size. So a document laid out for A4 doesn't look so good on the reader. I really wanted to catch up on all those SharePoint white papers and articles that I haven't had time to read, so I needed to figure out an easy solution for putting them on the Sony.

So I've put together a Word macro. This reformats a document to match the Sony screen size, adjusting both page dimensions and margins. I also adjust the dimensions of any images in the document so that they fit the page, its crude, but seems to work. Once it has been resized, I can save it as a PDF document and download it to the Sony reader. This also works for web articles – copy/paste to Word and run the macro.

I'm currently reading "The 01100 step programme to reducing technological dependencies".

You can download the macro code here

Tuesday, August 05, 2008

Filtering Calendar List Web Part Entries

Not sure if this is a well known fact, but thought I'd post about it anyway. When you add a web part for a WSS 3.0 Calendar list onto a web part page, the default view automatically filters items to only show those with an end date great than or equal to today, and a start date that is less than 2 years from the current date. The time value is not used for filtering these items.

This means that all current and future events that start within 2 years will be shown.

Also, the description will be truncated after approximately the first 255 characters. Truncation will happen at the end of a word, not half way through one.

If you don't want to show 2 years worth of future events, you can use the following technique to reduce the time span:

  1. Add a new calculated column to your calendar list called Start Advertising.
  2. Set the formula to "=[Start Time] – 60". Change the number of days to whatever you want to use. In this case I'm saying that I want see events that are starting in less than 60 days from now.
  3. Set the data type for the formula result to Date and Time
  4. Update the Calendar web part – Edit the current view
  5. Add a filter for the Start Advertising field "is less than" [today]

Friday, August 01, 2008

Central Administration Regional Settings

Ever noticed that the timestamps within Central Administration are in US Date format? If you think in months, days and years, that's OK. But for the rest of us it can be a little confusing. Has it really been 4 months since the Usage Analysis timer job ran? Why would the last backup have occurred on the 13th month of the year? And unless you live around GMT -08:00, you may also scratch your head at the times that SharePoint displays.

To banish this confusion, just change the Regional Settings within Central Administration. This is normally a piece of cake: Site Actions -> Site Settings -> Regional Settings. The problem is, the Regional Settings link doesn't appear in Central Administration. If you are feeling adventurous, you can access the settings page by going to /_layouts/regionalsetng.aspx on your Central Administration site.

Maybe there are a number of people taking care of the Central Administration site, and you are scattered across multiple time zones. Not to worry, to change just your own regional settings, go to /_layouts/regionalsetng.aspx?Type=User in Central Administration.

Sunday, July 20, 2008

ISPA – Doing it for the community

The SharePoint Community around the world is made up of a lot of passionate, hard-working people. I've been lucky enough to meet my fair share of these people over the years. One of the most visible signs of this community are the various User Groups focussed on the SharePoint platform. Here in Australia you can find one in most State capitals at

Well, now there is a world-wide group set up to support and share experiences between these User Groups – the International SharePoint Professionals Association (ISPA). This will help strengthen and grow the existing groups here in Australia, and help any new SharePoint User Groups get up and running.

If you'd like to read more about this organisation, drop by their website at As a User Group leader, I'm looking forward to sharing experiences with others and learning what else we can do for our members. I've also signed up as an ISPA Regional Evangelist. This means that I'm making myself available to anyone out there interested in setting up a new SharePoint focused user group within Australia. Thankfully, I'm not the only one – Ed Richards in Melbourne and Ivan Brebner in Brisbane are also ISPA Regional Evangelists – it is a rather large country after all. I have yet to find out whether we get any badges or hats.

Saturday, July 19, 2008

Moving Site Collections between Databases

Microsoft has recently released an update to the Central Administration site that makes it easy to move a Site Collection between different Content Databases. The Batch Site Manager can be very handy if you need to break up your content across multiple Content Databases – possibly sitting on different SQL Servers. The same tool also allows you to lock and delete site collections:

Friday, July 18, 2008

An RSS feed for a View

One of my clients came across this neat trick while we were figuring out the easiest way to extract an XML representation of some list data. The default URL for the RSS feed on a list is in the format:


Where <guid> is a unique identifier for the list or library that you are interested in. How do you find this value? Easy – if you access the site settings page for the list, you will see the appropriate value in the web address in your web browser.

Our issue was that this didn't return the set of records that we wanted. The client noticed some other URLs that I was using (based on using the owssvr.dll url protocol) had a View parameter, so he added it to the ListFeed.aspx link – and it worked!

So you can target a specific view in the list to get your RSS feed from. This makes your URL format:


Now, to get the unique identifier for the View, just go to the Settings page for the list and click on the name of the View. The web address displayed in your browser will include the View property. Copy and paste the whole address line into Notepad to extract the appropriate value – it's messy trying to do this directly on the browser address line.

Wednesday, July 16, 2008

Breaking Point

I'm just back from the Sydney SharePoint User Group session where I presented on how our company uses WSS to run the business. I showed how we do everything from invoicing, timesheeting, expense tracking and project management from within WSS. Particularly when it came to the financial tracking aspects, a common refrain was "Why Bother"? There are so many off-the-shelf packages that do this for you, why would you try building it yourself within WSS?

The answer is that we wanted to see if WSS could handle this. We wanted to know what the pain points are in trying to do this in a real-world scenario, using ourselves as the lab rats. Most of the time we are advising clients how they should be using SharePoint, but we never have to use those systems day-in-day-out. We felt that the experience we would gain from immersing ourselves in the product would stand to us when working with clients.

So what has it been like using WSS as a financial accounting system? Well, we like it, but we are biased. There are some elements that are clunky, but we hope to automate these in the near future. Granted, right now our requirements are relatively simple. This was another point that came up during the session – what happens when we reach "breaking point"?

I find this question particularly interesting. Quite a few people felt that as our business (hopefully) grows, we will reach a point where our WSS financial system will fall apart. I don't disagree. I'm not sure what that breaking-point is, but I think finding it will be a very valuable lesson. I think the biggest danger is that we won't recognize when we have reached that point and will continue this "experiment" beyond its best-before date.

Right now this lab-rat needs to get back into the maze and find out if anyone has moved my cheese.

Saturday, July 12, 2008

Inside the Russian Dolls

The Sydney SharePoint User Group is having its July meeting on Tuesday the 15th. In addition to a Heroes Demo contest (details here), I'm going to be presenting on how our company has used Windows SharePoint Services.

When we set up SharePoint Gurus last year, we decided to try to run the whole business on WSS. This is a bit extreme, but we wanted to see what worked, what didn't – how far could we push the platform. So at the July User Group session I'll be demonstrating how we use SharePoint and discussing the benefits and pains.

If you are in town, come along to the Sydney Mechanics School of Arts at 280 Pitt Street. Doors open at 5:30pm and presentations begin at 17:45. For more information see

Thursday, July 03, 2008

CodePlex Project to create Sub Folders

I've just published a new CodePlex project. This is a utility application to create sub folders each month in a document library. You can schedule this to run each month against a particular document library. It will create a top-level folder with a name like YYYY-MM where YYYY is the current year and MM is the month (e.g. 2008-07). The year and month are based on the current date.

The application then reads an XML file to determine what subfolder structure to create underneath the Year-Month folder. This can include any number of folders and subfolders. You can also specify custom security for a particular folder. Here is an example of the contents within the XML file


<folder name="Music">


account="domain\my user name" access="contribute" />

account="domain\group name" access="read" />


name="Favourites" />

<folder name="Classics"/>


<folder name="Pictures">


account="domain\my user name" access="design" />



name="Videos" />



I'm interested to hear if others find this useful and whether people have suggestions on how the application can be improved. The project is available at Check out the other SharePoint related CodePlex projects – there is some fantastic stuff available here

Friday, June 13, 2008

New Microsoft White Paper – Data Protection and Recovery for MOSS

Microsoft has just released a new White Paper on data protection and recovery for Microsoft Office SharePoint Server. It's available here. This is a great guide on the various options for recovering content within your environment.

I was lucky enough to be able to review this during its final draft stages, which has earned me a mention on the acknowledgements section. Fame at last! Any errors or omissions in the white paper are the fault of the other reviewers.

June 08 Sydney User Group

The Sydney SharePoint User Group is on the move. We are now located at the Sydney Mechanics School of Arts (SMSA) at 280 Pitt Street. Map and details available from the User Group site.

The SMSA recently turned 175, which is pretty old for an Australian instituation. The SharePoint User Group is a young whipper-snapper in comparision, at almost 3 years old (our third birthday is on July 15th).

Still, I bet the SMSA doesn't have their whole back-catalogue of powerpoint presentations available online, now do they?

The SMSA's slogan is "Making a Difference through Learning". So I think we will feel right at home there.

Our first presenter at our Pitt Street location will be Alistair Speirs from Microsoft. His topic -
The Collaboration Spectrum: when should you use SharePoint, Groove, email or just pick up the phone?

Want to hear more? Come along to 280 Pitt Street at 5:30pm on Tuesday June 17th. Looking forward to seeing you.

For an e-mail update on the user group is meeting, sign up here, or subscribe to our RSS feed

While you are there - have a look at the new home page for the SharePoint Australian User Groups - what do you think?

Wednesday, May 21, 2008

Now available on video

The Sydney SharePoint Forum was held in Sydney on May 6th. You can now watch videos of some of the presentations from the event site. Go to the Resources page and click the View link for the relevant presentation. My session with Allyson Skene is here – Find it faster with MOSS 2007 Search. It's true what they say about the camera adding ten pounds – I'm much slimmer in real life.

Thursday, May 15, 2008

Tag – you’re it!

I was putting together an page that was retrieving information from a database. This page is going to be indexed by SharePoint. So to make sure that the search experience could be as good as possible, I wanted to make sure that the page includes useful metadata tags.

While trying to figure out the best way of setting the metadata, I came across the HtmlMeta class. This allows you to programmatically add your meta tags to your content:

HtmlMeta metaTag = new

HtmlHead head = (HtmlHead)Page.Header;

metaTag.Name = "DC.Title";

metaTag.Content = "Tag – you're it";



Neat, huh?

Tuesday, April 22, 2008

'Open Mike' session for SharePoint User Group

Would you like to find out;

  • How can you leverage Microsoft Office SharePoint technologies to provide a platform for collaboration, ECM, search, BI and social computing?
  • The interoperability with MOSS and other line of business applications such as SAP?
  • How SharePoint and Office can be the people friendly face of service oriented architecture?

Well we’ve got just the man to answer those burning questions... Microsoft’s Mike Fitzmaurice, Enterprise Technology Strategist and former Technical Product manager for WSS/MOSS, has kindly agreed to hold a lunch time ‘Open Mike’ session on May 5th during his Sydney visit.

We look forward to seeing you there! Please click here to register for this event.

Registration opens at 12:30pm and the Q&A session commence at 1:00pm. This special event will be held at Microsoft’s office, 1 Epping Road, North Ryde, Sydney.

Food & Refreshments will be provided.

‘Open Mike’ – Mike Fitzmaurice Q&A Date: Monday May 5th 2008 Time: 12:30-2:00pm

Visit for further information.

Wednesday, April 16, 2008

Problem with using a Calculated Field in a Lookup property

I've been playing around with using a calculated field as the source for a lookup column in a document library. I've run into a few annoying issues that I thought I'd share. Try this:

  1. Create a custom list
  2. Add some rows to your list. In my case I added values like "Quick Pick 1", "Quick Pick 2"…
  3. Add a calculated column with the formula of [Title]. Leave the calculated type as single line of text
  4. In your Shared Documents library, add a lookup column and point it to the calculated field you created in the previous step

I agree – not the most productive piece of SharePoint work you will do, but bear with me.

  1. When you edit the properties for a document via the browser, the Lookup field values display as expected:

  2. Now, edit a Word 2007 document in the library
  3. View the Word 2007 Document Information Panel

If your environment is anything like mine, this is what you will get:

I don't know why the "string;#" text is visible in the Document Information Panel view. I know that the Lookup column does store an ID along with the displayed value, but I definitely do not want this displayed in Word 2007.

It's a shame that this doesn't work. My search through the newsgroups and blogs didn't bring back any details about this specific issue, but there were some related questions about not being able to reference certain column types as lookup fields. I'd be interested to hear if anyone has found a fix for this. I can work around this issue by developing a simple event handler on my list to set the value of a text box to what I need. That way I can just use an out-of-the-box lookup column on a text field.

There was also another issue that I saw mentioned in relation to calculated lookup fields. If you try to use one of these in a collapsed Group By view, you will see a "Render Failed" message for each column when you expand the group:

My event-handler work-around will also avoid this issue. However, another alternative is to select the "Show groupings expanded" option for the view. You can then expand/collapse the views as you need.

Wednesday, March 19, 2008

MS Partner Training – On the road again

After appearing to sell-out crowds in 2007, the new and improved "Instructor-lead Chalk-talk to Presales and Business Analyst on the MOSS 2007 Platform" is about to hit the road again. And like all good shows, this time we have a special guest. Mick Badran of Breeze Training is going to attempt the daring feat of stepping into my shoes (spot the pun). I'm going to tackle Brisbane and Melbourne, while Mick will be wowing the crowds in Sydney.

Dates are:

  • Brisbane – April 3 & 4
  • Melbourne – April 7 & 8
  • Sydney – April 10 & 11

This two day session is an instructor lead "chalk-and-talk" training designed for Pre-Sales Technical Consultants, Technical Project Managers, Architects and Business Analysts. The content is level-200. You can find out more information and register for this event here

Saturday, February 23, 2008

Building a Windows 2008 x64 Laptop

My primary machine is a Dell XPS M1330 laptop. This has 4GB of memory and a dual core Intel T7300 2 GHz processor. Up until recently I have been running 32-bit Windows Vista as the main operating system. To be honest, I was disappointed with the performance. Considering the specifications, I was expecting the machine to be a bit quicker round the block. I found that I was waiting to switch between applications. Outlook was tediously slow some times.

Now this could be for a number of reasons – Dell pre-loads the application with many "performance enhancing utilities". Anyway, I decided it was time for a rebuild. Daniel Larson has been harping on how good Windows 2008 is, so I grabbed my installation disk and dived right in.

I wanted to take advantage of the whole 4 GB of memory I have, so I went with the 64-bit version (under 32-bit Windows only sees about 3.4 GB). I reckon that going 64-bit should also give me a performance boost too. The challenge is that I would have to make sure all the various software and hardware that I use would still run under 64-bit. There was only one way to find out for real.

I was also keen to see what Hyper-V was all about. This is Microsoft's new version of Virtual Server. The idea is that it takes advantage of features in your processor to run more efficiently. I wasn't 100% sure if my processor supported these capabilities, but I was willing to give it a shot.

I was getting tired of doing development work within a VPC and transferring files between the guest and host operating systems. I liked the idea of running SharePoint 2007 directly on my main operating system. No more booting up a VPC to check exactly where a configuration option was. I would be able to code directly on the host. Now VPCs aren't that much of a pain, and they have their own advantages, but I was keen to see what it would be like to run MOSS natively.

Finally, by going Windows 2008, I can run 64-bit virtual machines. Yes – I could also do this with VMWare on Vista, but since I was going to get all the other benefits with Windows 2008, this was an extra bonus. This may become more important later this year. I suspect that Microsoft will start to release early betas of SharePoint vNext before the year is out. If this is only going to run on 64-bit (just like Exchange), I want to be set up so that I can install them.

Right – so now that I convinced myself, it was time to begin. My first mistake was to back up all my content using Vista backups. I had been running these for a while, so it seemed like a safe bet. The problem came later when I attempted to restore these from Windows 2008. The backup software is not the same between these platforms and I couldn't find any software that would read the Visa backups. I ended up restoring these to another Vista computer and then copying the files across. So I'd recommend just copying your Vista data files onto a separate hard drive.

Another hassle with the Vista backups is that it does not include executable files or help files by default. So even after the restore I had to download the MOSS and WSS SDK packages again. Not a big hassle, but something to be aware of.

As a belt-and-braces measure, I used Acronis TrueImage to take a snapshot of my entire computer. This was in case the exercise turned into an unmitigated disaster and I needed to roll back. My 130 GB of content got compressed down to a 85 GB file. Thankfully I haven't had to use this, so I can't say what the restore process is like.

Now for the risky part. I downloaded the Windows 2008 RTM from my MSDN subscription and created a DVD. I rebooted and walked through the process of deleting my existing partitions (eek!) and creating one new partition for the new install.

WARNING: If you are planning to use Hyper-V then make sure to leave the regional settings at US English during installation. I'm in Australia, so I thought I would change these during the installation process. It turns out that the current (beta) release of Hyper-V does not like this, and I ended up having to re-install from scratch. Note that you can't just revert to the US English regional settings if you experience this problem. You can only change to your correct locale AFTER Hyper-V has been enabled. I'm sure this will get fixed soon.

Apart from that hiccup, the process was straightforward. My Bluetooth mouse worked from the moment the installation commenced. I think the installation process took about 30 minutes before I was booting into my new desktop.

After getting the bare bones installation up and running, here are the configuration changes that I've made:

1. Configured my BIOS to enable Virtualisation support

2. Enabled the following server roles:
  • File Server (including the Windows Search Service)
  • Hyper-V
  • Web Server (including, and IIS 6 Management)
3. Enabled the following server features:
  • .Net Framework 3.0
  • Desktop Experience – includes Media Player
  • Wireless LAN Service – you need this to connect to your WiFi LAN
4. Disabled the shutdown prompt by updating my local group policy
  • Start->Run->"gpedit.msc" -> Administrative Template ->System-> Display Shutdown event tracked -> Disable
5. Configured my Hyper-V network so that I can easily share files between my host and client machines (Bryant Likes's blog)

6. Installed the Synaptic x64 Fingerprint reader driver

7. Installed the Dell x64 sound card drivers

Now I'm very content with my setup. Response time is much faster than my old build. Hyper-V is very slick. VPCs seem to run more efficiently. There are a few hassles though:

  • Sleep mode is gone – I think this is due to Hyper-V
  • Battery life seems to be worse, probably because the power management seems less sophisticated than Vista.
  • Even though my Bluetooth mouse worked, I couldn't connect to my Bluetooth mobile phone (a Nokia N73). I did try to install the Dell x64 Bluetooth drivers, but that didn't help. In fact, now my Bluetooth mouse no longer works :(
  • Picasa won't install (photo management software)
  • Microsoft Shared View beta installs, but won't log in

On balance though, I'm happy. The performance boost is great and I'll now get some experience poking around the new OS. I've just gotten MOSS 2007 up and running, so I can see what it's like to develop straight on the laptop.

Here are some of the links I found useful when doing my installation:

Monday, January 28, 2008

A SharePoint site by any other name...

There are quite a few situations where you want your SharePoint Web Application available to different sets of users, using different web addresses. For example, our internal users may use http://XYZ to access our web application, but our external clients may have to enter

SharePoint allows you to assign up to five different "end-user addresses" for each of your Web Applications. These "end-user addresses" are ones that people will type into their browser to access your site. SharePoint uses a feature called Alternate Access Mapping (AAM) to make sure that the web application is available through different addresses while still ensuring that the links in the page sent back to the user are formatted correctly.

For a standard, non-SharePoint web site, this is relatively easy. Microsoft's IIS web server allows an administrator to specify as many addresses as they want for a single web site. These are called "host headers". If you are careful and make sure that all the internal links in your standard web site are written without a domain (e.g. /contactus.aspx), then the end user will always get the correct links based on the address they have used to access the website.

So why doesn't SharePoint work the same way? Well, part of the reason is that there are some scenarios where SharePoint will receive requests using one address, but it needs to translate these to another address before sending the final page to the end user. More on this later.

The end result is that IIS is responsible for accepting the page requests and passing them to SharePoint. It is then SharePoint's job to figure out which Web Application on the server farm the user is trying to access, and what "end user address" it should use when creating the output page.

So this is where Alternate Access Mapping comes into play. However, I got to say, it must be one of the most confusing user interfaces in the whole Central Administration. Even the Search Managed Properties is easier to figure out than this one. Here is my attempt to explain its workings. There is also a great set of MSDN blog articles from Troy Starr, and some screen webcasts from Bob Fox

What I have been referring to as "end user addresses" SharePoint calls Public Zone URLs. We have five different zones:

  1. Default
  2. Intranet
  3. Extranet
  4. Custom
  5. Internet

They all work the same way, the names just reflect common uses, feel free to use each one as you please. The Default zone is set up for you when you create the Web Application. This zone is given the address that you specified during the "Create Web Application" process. It's up to you to set up the remaining four if you need them.

The easiest way to set these up is to use Edit Public Zone URLs from the Central Administration - Operations - Alternate Access Mapping page:


You need to make sure that you have the correct Alternate Access Mapping Collection specified at the top of the page. This is the Web Application that we want to configure "end user addresses" for. You might find the term "Public URLs" confusing. This does not mean that these are URLs that will be available outside your firewall. It refers to the URLs that your end-users will use to access your site. Some of these may be available outside your firewall, others will only be available internally.

In my example above, I am going to make my Web Application available on all five possible zones. The default name may reflect the machine that my web application is running on. My internal users will go to http://Intranet, but when they are out of the office they will use Finally, I will allow clients to access certain information on the same web application at

Once we click Save, SharePoint creates one entry in the AAM for each of our Public URLs. I would also update my IIS configuration at this stage to include host headers in my web site for each of these addresses.


But what does the Internal URL section of the table refer to? And how come it is identical to the Public URL? For me, it would have been better if Internal URLs were called Incoming URLs and Public URL was called Out-Going. Basically what happens is that SharePoint looks at the request for a page that it receives from IIS to determine which Public URL to use when creating the final page for the user.

For our example above, this is very straight-forward. If one of our road-warrior salespeople accesses from their browser, SharePoint will know that they are in the Custom zone, so any URLs on the page that refer to the web application should use the prefix of on the page it sends to the user. So simple, it almost sounds useless.

However, there are situations when the request that SharePoint receives does not match the address that the user entered. For example, we may have a Reverse Proxy server (such as Microsoft ISA 2006) that receives all the page requests from our external users and then forwards them to our server farm using the SharePoint server name. In this case, we want our our Internal URL to be something like http://AppServer01 but we still want the page sent to the user to use for any links to other content on the Web Application.

To configure this we use the Add Internal URLs button. This will allow us to specify another address that SharePoint should listen on for requests for our Web Application. By setting the zone to Custom we let SharePoint know what format we want the Web Application links written as.


This will create a 6th entry on our Alternate Access Mapping Collection. Note that we now have two entries for the Custom zone, both with different Internal URLs. We can add as many Internal URLs as we need for each of the zones. However, each Internal URL must be unique across the collection - otherwise SharePoint would not know which Public URL to use to generate the page for the end user.


In our example above, we might think of getting rid of the Custom Zone entry that defines as a valid Internal URL. After all, SharePoint will never receive requests directly with this URL (only our Proxy Server will). However, this is one of the quirks of the AAM interface - you must have an entry where the Internal and Public URL match. If you do delete this entry, then SharePoint will assign the Default Zone URL to the remaining Custom entry. Just accept that they need to be there.

If you haven't defined a Public URL for one of the zones, you can either use the Edit Public URLs or the Add Internal URLs button to configure it. Confusing, but the end result is the same - a new entry set up in your Web Application's AAM Collection that uses the same URL for both the internal and Public URL.

Similarly, when you use the Edit Public URLs screen to clear one of the Zones, SharePoint will remove the entry from the Collection that uses the same Internal and External URL. If there are any other entries in the collection for that Zone, SharePoint will reconfigure it to use the the Default Public URL.

Finally, here's a graphic to illustrate what is happening. Each zone can have many Internal URLs. SharePoint translates these to the appropriate Public URL based on the Web Application's AAM settings.


Sunday, January 27, 2008

Free Wifi from Sydney and Melbourne Cafes

A while back, I was grumbling to myself about the lack of free wireless internet access from cafes in Sydney. OK - you could pay the equivalent of 4 cups of coffee for an hour's access from the national telco, but who wants to do that?

These days I use my mobile phone as a bluetooth modem to access the 3G network from my laptop. Coverage and speeds are sufficient, and my mobile carrier offers 500 MB per month for the price of 8 coffees.

However, I'm please to see that Unwired are setting up free wireless hotspots in a number of cafes in Sydney and Melbourne. I tried out one of these from a cafe near St Peters station in Sydney. Setup was simple and the access was reasonable. The service is branded as uConnect. Keep an eye out for it. The map on the UnWired website shows a number of locations, but not all (map).

Update: McDonalds now offer free WiFi in many of their "restaurants". I took the time to read through their terms and conditions and didn't find anything offensive. At the time of writing, they had 439 stores with free Wifi in Australia. Go to to find out if your local spot is wified yet.