Downloads
44778.zip

In "Office and SharePoint: Better Together," December 2004, InstantDoc ID 44156, I discuss how you can enhance Microsoft Office 2003 by calling on the services offered by Windows SharePoint Services (WSS). The article mainly concentrates on those areas that help with document collaboration. But WSS (in conjunction with Microsoft SharePoint Portal Server—SPS—2003) offers many other collaboration capabilities because it supports XML Web services. Let's take a closer look at how this support is possible and how Microsoft Office Outlook 2003 takes advantage of it.

WSS Web Services
You can use many WSS Web services to search and access site content such as lists, libraries, and document and meeting workspaces. Developers can build solutions that work with both WSS and SPS through the Simple Object Access Protocol (SOAP) interfaces used in these services. Using the Web services interface and the server-side WSS and SPS objects, developers can write solutions that remotely call services. Remotely calling services removes the need to install any software on the physical server running WSS and SPS, which can deter IT pros from implementing proposed solutions because of their reluctance to install extra software on top of a smoothly running system.

Web services provide their functionality through the _vti_bin virtual directory, which maps to the \Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\ISAPI physical directory on the local drive of the server running WSS and SPS. Figure 1 shows an example of the content you'll find in the ISAPI directory. This directory includes the .asmx files that implement Web services. Web Table 1 (http://www.windowsitpro.com/microsoftexchangeoutlook, InstantDoc ID 44778) summarizes the major Web services delivered with WSS and SPS. Some of these Web services are documented in the SPS software development kit (SDK). For those Web services, you can enter a Web service's URL into your browser to see the methods that the service supports. For example, to see the Administration (admin.asmx) Web service's methods, you enter http://virtual_server:port_number/_vti_adm/Admin.asmx (where virtual_server is the name of your server and port_number is the port number for your Administration service). Doing so reveals that the Administration service supports four methods: GetLanguages, CreateSite, RefreshConfigCache, and DeleteSite.

Collaboration in Outlook 2003
WSS raises the bar for Outlook 2003 from an application for personal use to an application for personal use and team collaboration. One crucial area for administrators is ensuring that users can work with personal and team items in as seamless a way as possible.

Fortunately, Outlook 2003 and the WSS Web services combine to provide a shared view of personal and team contacts and calendars. As Figure 2 shows, Outlook 2003 lets users view multiple calendars side by side. WSS lets users link an event list in a team site to an Outlook folder. After a list has been linked, Outlook 2003 keeps the event list and folder synchronized.

When users navigate to a WSS contact or event list, a Link to Outlook option appears in the button bar, as Figure 2 shows. This option is controlled by an ActiveX object called SharePoint.StssyncHandler, which is automatically installed when you install Office 2003. The first time a user clicks the Link to Outlook option, WSS checks to see whether Outlook 2003 is enabled for SharePoint integration. By default, this option is enabled because it's necessary for collaboration. However, if necessary, you can disable it by adding the HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\11.0\Outlook\Preferences\DisallowSTS registry subkey and setting its value to 1. When you specify a value of 1, users receive a warning dialog box if they click the Link to Outlook option in WSS.

When Outlook 2003 is enabled for SharePoint integration, WSS creates a special kind of personal file folder (PST) in the user's Windows profile. Note that WSS creates one PST per Messaging API (MAPI) profile, so if a user has more than one MAPI profile, you'll end up with multiple PSTs named SharePoint Folders.pst, SharePoint Folders(2).pst, and so on. After the PST is in place, a new folder is created inside it and the URL of the WSS list is associated with that folder.

To help distinguish SharePoint folders, the Outlook 2003 object model includes a new property for the MAPIFolder object: the IsSharePointFolder property. This Boolean property returns a value of True for SharePoint folders and False for other types of folders.

Although SharePoint Folders.pst appears like other Outlook PSTs, it's effectively read-only, which introduces some drawbacks:

  • Users can't update WSS items from the Outlook folder. However, you can write an Outlook extension that writes changes to items in a WSS list. One way to write such an extension is to use the Microsoft Office 2003 Web Services Toolkit, which you can download from the Microsoft Download Center (http://www.microsoft.com/downloads). The toolkit lets you use Visual Basic for Applications (VBA) to access Web services.
  • Users can't use the Outlook UI to create folders in SharePoint Folders.pst. However, they can drag and drop items from SharePoint Folders.pst into other Outlook folders.
  • Although users can move WSS folders out of SharePoint Folders.pst, synchronization occurs only when they're inside SharePointFolders.pst. (Moving a folder results in the IsSharePointFolder property being set to False.) Thus, users can't store a WSS list in a public folder. This functionality would have been useful for global sharing of WSS lists.

One-way synchronization from WSS to Outlook 2003 automatically occurs every 20 minutes and on demand when the user clicks the folder in Outlook. You can change the synchronization frequency by editing the HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\11.0\Outlook\Preferences\STSSyncInterval subkey. You specify how often you want synchronization to occur in minutes. If you specify a value of 0, synchronization doesn't occur at timed intervals.

Another noteworthy item is a slight problem with time zones. Outlook will always use the current time zone that's set on the client's OS to display times. However, each WSS site has a regional time-zone setting on the server, which is used when the site is viewed through the WSS browser. Thus, if a client's time zone differs from the WSS site's time zone, users who view items through the synchronized Outlook folder will see different times from users who view items through the WSS browser.

The synchronization process uses the Lists (lists.asmx) Web service's GetListItemChanges method to pull any updates from the WSS list into the Outlook folder. The URL for the WSS list item is stored in the body of the Outlook item, which provides a quick way to link back to the WSS item through the browser. In addition, this setup lets an Outlook VBA macro or COM add-in programmatically access the item. If you're interested in this capability, check out the Office 2003 Web Services Toolkit. I have used this toolkit, for example, to add a button to Outlook that uses the Lists Web service's UpdateListItems method to write the currently selected appointments from my personal calendar into a WSS events list.

Add Collaborative Features to Your Applications
Because of the support for XML Web services, WSS and SPS offer collaborative features that any application can take advantage of. I've shown you how Outlook 2003 does just that to give users a consolidated view of personal and team information.