Published links to office client applications do not show up in file open or save dialogs

Ever run into a problem where your published links for office client applications do not show up in My SharePoint sites Link in Office applications? If so, read through…

First, the basics. Ensure it is configured right. This feature works only with Office 2007 client applications. The published links you create will appear on Office client applications of all users whose personal sites are stored within the same SSP. The mechanism that makes this work is a client side “pull”. The Office client application will request the Published Links when it starts by sending a POST to /personal/username_vti_bin/publishedlinksservice.asmx. You can catch this via Fiddler. The response code must be 200.

  1. Browse to SharePoint Central Administration site.
  2. In the Quick Launch Window in the left pane, click on your SSP under Shared Services Administration
  3. Under User Profiles and My Sites, click on Published Links to Office client applications.
  4. Click on New and enter the link, description and select the Type of link.
  5. Click OK

The next step is to open a browser Window on the client machine and browse to the library or link that you just published. Then click on the MySite Link on the top right corner of the web page. If your MySite has not been created yet, then it will be created for you. Just below Site Actions Link, you will find a link “Set as default My Site”. Click on that link. You should now be prompted with a message:

---------------------------
Configure My Site for Microsoft Office
---------------------------
Microsoft Office can remember your My Site to synchronize documents stored here in Outlook and to show it when opening and saving files. Do you want Office to remember this site ('<link>')? Only select 'yes' if you trust this site.
---------------------------
Yes No
---------------------------

Click Yes. What this does is update registry key called PersonalSiteURL located at:

HKEY_CURRENT_USER\Software\AppDataLow\Microsoft\Office\12.0\Common\Portal (Vista)
HKEY_CURRENT_USER\Software\AppDataLow\Microsoft\Office\12.0\Common\Portal (XP)

Next, open an Office application such as Excel and select Save As OR File, Open. At this moment, the Office application will access the String value of property Url under the registry key: HKEY_CURRENT_USER\Software\Policies\Microsoft\Office\12.0\Common\Portal\Link Providers\MySiteHost to determine which is your MySite host. It then makes a POST to the web service, Publishedlinksservice.asmx, hosted on SSP of your SharePoint server is performed. If you used fiddler, check out the user agent that indicates what application is making the request. User-Agent: Microsoft Office/12.0 (Windows NT 6.1; Microsoft Office Word 12.0.6425; Pro)

The server then sends a response as XML, which includes various <ServerLink> XML which has the published links. Eg:

Request:

HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Set-Cookie: WSS_KeepSessionAuthenticated=100; path=/
Persistent-Auth: true
MicrosoftSharePointTeamServices: 12.0.0.6421

Response:

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="https://www.w3.org/2001/XMLSchema"><soap:Body><GetLinksResponse xmlns="Your'>https://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService"><GetLinksResult><ServerLink><Title>Your Site Documents</Title><Url>https://yoursite:80/sites/site1/shared%20documents</Url><LinkType>33554432</LinkType><IsMember>false</IsMember><IsPublished>true</IsPublished></ServerLink><ServerLink><Title>My Site</Title><Url>https://yoursite:100/personal/username/</Url><LinkType>2</LinkType><IsMember>true</IsMember><IsPublished>true</IsPublished></ServerLink><ServerLink><Title>Profile Site</Title><Url>https://yoursite:100/Person.aspx?user=</Url><LinkType>72057594037927936</LinkType><IsMember>false</IsMember><IsPublished>true</IsPublished></ServerLink></GetLinksResult></GetLinksResponse></soap:Body></soap:Envelope>

After calling the web service, the Office Client application then makes an HTTP request to the personal site link that is specified under the <ServerLink> xml. If you are able to get a successful response (HTTP 200 – Verify using Fiddler or Netmon) for that link, you should see it come up in the Save As dialog box when you select “My SharePoint Sites” link. If you cannot, then you will not see that link because the Office Application will delete that link. The Office application then updates the registry key by creating 2 new keys under:

HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Server Links\Published

BTW, If you are using Windows 2008 or R2 as your client machine, then you need to enable WebDav and Desktop Experience support to make this work. Desktop Experience installs the WebDav redirector which is required for this functionality to work properly

[Update]

Microsoft released a new WebDAV extension module that was completely re-written for IIS 7.0 on Windows Server 2008. I tested a SharePoint site running in Classic mode and the response to the web service requests to SSP sites was a 405. At this time I am not 100% sure if that is expected but a resolution I found to making it work is to remove the WebDAV module for the SSP web application.

  1. In IIS manager, select your SSP Web application and then double click the Modules icon.
  2. Right click on WebDAVModule and select Remove.
  3. Recycle your SSP application pool.
  4. On your client machine, open the system registry and locate the registry key: HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\Portal
  5. Remove the entry LinkPublishingTimestamp.
  6. Restart your office application and test