Since Team Foundation Server (TFS) uses SQL Server Analysis Services (SSAS) as its repository for all kinds of info, people are interested to expose the data through Excel or SQL Server Reporting Services (SSRS). SSAS doesn't expose itself through the HTTP protocol by default, but this can be configured using this paper. I didn't created the complete document myself but used this paper from Edward Melomed as start. The paper on Microsoft TechNet uses SSAS 2005 and Windows Server 2003. Both products are still widely used, but 2008 is the magic word nowadays. By the way, I can't wait till his new book Microsoft SQL Server 2008 Analysis Services Unleashed is released.

Summary:  This paper is intended for anyone who is interested in providing access to SQL Server 2008 Analysis Services through HTTP protocol.The paper explains the steps required to set up HTTP access and discusses different performance and security settings. All the instructions in this paper are specific to the Microsoft Windows® Server™ 2008 operating system.


Microsoft® SQL Server™ 2008 Analysis Services uses the same architecture for providing HTTP access as did SQL Server 2005 Analysis Services.

The pump component is loaded into IIS (Internet Information Services) and serves as an ISAPI extension, pumping data from the client to an Analysis Services server and back.

This white paper walks you through the process of setting up HTTP access to Analysis Services when using Microsoft Windows Server™ 2008.


Figure 1 provides a high-level overview of the component architecture.

Getting binaries

To get binaries:

Copy the contents of the %Installation folder%OLAPbinisapi directory into the folder you would like to become the base for the virtual directory in IIS.

In this example, we are going to copy all the files from the C:Program FilesMicrosoft SQL ServerMSAS10.MSSQLSERVEROLAPbinisapi folder into the C:inetpubwwwrootolap directory.

Notes:  To take advantage of the full set of security settings, it is important to make sure that the folder to become the base for the virtual directory is located on the drive formatted for the NTFS file system.

Due to IIS limitations, the path to your directory should not contain spaces.

If you are planning to run the HTTP pump on a different server than the Analysis Services server, please make sure that you also install OLEDB for Analysis Redistributable package.

Creating an application pool

To create an application pool:


To open the Computer Management console, open Control Panel, then Administrative Tools, then Computer Management.

(Or, right-click the My Computer icon and select Manage on the shortcut menu.)


In the Computer Management console, expand the Roles node and then the Web Server (IIS) and Internet Information Services node.

If you can’t find the Internet Information Services node, IIS is probably not installed on your machine. To install it, open Add or Remove Programs in Control Panel. Select Add/Remove Windows Components. Then add IIS to Windows.


Right-click the Application Pools to open the shortcut menu and select Add Application Pool...


Name the application pool. In this example, we call it OLAP. (See Figure 2.)

Figure 2

Setting up an application

To use the application pool:


To open the Computer Management console, open Control Panel, then Administrative Tools, then Computer Management.

(Or, right-click the My Computer icon and select Manage on the shortcut menu.)


In the Computer Management console, expand the Roles node and then the Web Server (IIS) and Internet Information Services node.

If you can’t find the Internet Information Services node, IIS is probably not installed on your machine. To install it, open Add or Remove Programs in Control Panel. Select Add/Remove Windows Components. Then add IIS to Windows.


Right-click the OLAP directory in your Web site to open the shortcut menu and select Convert to Application. Choose the application pool as one you’ve just created. (See Figure 3.)

Figure 3

Setting up directory properties

To set properties for the directory:


Click your virtual directory node and select Handler Mappings from the menu. (See Figure 4.)

Figure 4

2. Make sure the directory has Read and Script permissions. This can be checked by clicking the "Edit Feature Permissions..." in

the top right corner of the Handler Mappings screen as shown in Figure 5.

Figure 5


In the top right corner of the Handler Mappings screen click the option " Add Script Map...".


Enter *.dll in the Request path text box.

In the Executable option, enter the full path name to msmdpump.dll. In this example, it would be: C:wwwrootolapmsmdpump.dll


Name the Script Map. In this example, we call it OLAP.

Your screen should look something like the dialog box shown in Figure 6.

Figure 6


Click the OK button to accept the settings.


When you hit OK to add the script mapping you will be prompted if you want to enable the ISAPI extension. (See Figure 7.)

Figure 7


Click the Yes button to accept the settings.

9. The configuration of this decision can be found under ISAPI and CGI Restrictions of the server. (See Figure 8.)

Figure 8

10. Search for your extension and name it as shown in Figure 9.

Figure 9


Click the OK button to accept the settings.

Selecting security settings

To select security settings:


Click your virtual directory node and select Autentication from the menu. (See Figure 10.)

Figure 10


You are presented with three options. Choose one of them. (See Figure 11)

Figure 11

This section briefly describes these options, citing the advantages, disadvantages, and security concerns of each one. All other options are not discussed in the paper. You can use Help for IIS to read more about it.

Anonymous access

When this mode is selected, the pump (msmdpump.dll) is running with credentials; in our case, these are the credentials of IUSR_MACHINENAME user. Therefore, every connection to Analysis Services is opened as IUSR user. When this mode is selected, there is no distinction between which user is connecting to IIS and which to Analysis Services. There is no way to distinguish between users.

This mode is to be used when the security infrastructure does not take advantage of the security functionality of Analysis Services. This is most likely an extremely controlled environment, where users are given or denied access to the virtual directory.

Windows authentication

This is the most secure and the recommended mode.

It requires that IIS Server be able to access user domain credentials. This could be done using Microsoft Active Directory® or another mechanism. It is beyond the scope of this paper to discuss all the possible configurations.

Basic authentication

This mode requires that the user enter a user name and password. The user name and password are transmitted over the HTTP connection to IIS. IIS will try to impersonate the user using the provided credentials.

Please note that it is absolutely imperative for anyone building a system where the password is transmitted to have ways of securing the communication channel. IIS provides a great set of tools for setting up and requiring that all communications be encrypted using HTTPS protocol.

3. For configuring anonymous authentication right-click Anonymous Authentication and then click Edit. You will see a dialog box similar to the one in Figure 12 Here you can configure a specific account which will be used to logon SSAS.

Figure 12

Selecting the target Analysis Services server

As you can see in the architectural diagram in Figure 1, every pump component uses its own configuration file.

Open the msmdpump.ini file located in your folder and take a look at the contents of this file. It should look like the following:

    1 <ConfigurationSettings>

    2     <ServerName>localhost</ServerName>

    3     <SessionTimeout>3600</SessionTimeout>

    4     <ConnectionPoolSize>100</ConnectionPoolSize>

    5     <MinThreadPoolSize>0</MinThreadPoolSize>

    6     <MaxThreadPoolSize>0</MaxThreadPoolSize>

    7     <MaxThreadsPerClient>4</MaxThreadsPerClient>

    8 </ConfigurationSettings>

The only setting you are interested in at this point is <ServerName>.

If the Analysis Services instance that you need to provide access to is located on the local machine and installed as a default instance, there is no reason to change this setting. Otherwise, you need to specify the machine name and instance name ( mymachineinst1).

It is also possible to specify a pointer to the virtual directory on another IIS server that is set up for HTTP access to Analysis Services.

For example, you could have <ServerName>http://secondmachine/olap/msmdpump.dll</ServerName>

Getting it all together

At this point you should have configured your HTTP pump and should be ready to connect from your application.

If your application provides you with a way to specify the server name, all you need to do is to substitute your server name with the path to your virtual directory concatenated with “msmdpump.dll”.

As in SQL Server 2005 Analysis Services, the MSOLAP OLEDB provider will understand that the server name includes an URL path and will automatically start using HTTP protocol.

For example, to connect to “MyMachine” from the MDX sample application, you should be able to connect to the Analysis Services server using “http://MyMachine/olap/msmdpump.dll” as a server name.


1 Comment

Since Holland is kicked out of Euro 2008, I found myself some extra time to investigate Visual Studio Team System "Rosario" CTP 12. It's been a couple of months ago Microsoft released this fantastic platform, but almost nobody blogged about it. Of course three of the most interesting VSTS bloggers (Willy-Peter Schaub's, Mickey Gousset and Grant Holiday) commented a lot about it, but that's almost everything you find on the net. Naturally almost every self respecting blogger blogged about the release of this CTP, but in my opinion that's not what blogging is all about.

After starting the virtual machine and opening Visual Studio, I immediately focused on the new Process Templates and the Work Item structure of it. In Rosario there are two new Process Templates:

  • VSTS Process for Agile Software Development v1.0
    • Bug - Describes a divergence between required and actual behavior, and tracks the work done to correct the defect and verify the correction.
    • Shared Step Set - Server-side data for reusable set of test steps.
    • Task - Tracks work that needs to be done.
    • Test Case - Server-side data for a set of steps to be tested.
    • User Story - Tracks an activity the user will be able to perform with the product
    • Issue - Tracks an obstacle to progress.
  • MSF for CMMI Process Improvement - Rosario
    • Bug - Includes information to track the work to resolve the bug and to verify its resolution
    • Task - Includes information to track the task through the MSF for CMMI Process Improvement life cycle.
    • Issue - Includes information to track changes through the MSF for CMMI Process Improvement life cycle.
    • Change Request - Includes information to track changes through the MSF for CMMI Process Improvement life cycle
    • Risk - Includes information to track the work to mitigate a risk.
    • Requirement - Includes information to track the requirement through the MSF for CMMI Process Improvement life cycle
    • Review - This work item tracks reviews and the results.
    • Test Case - Server-side data for a set of steps to be tested.
    • Shared Step Set - Server-side data for reusable set of test steps.
    • Feature - Includes information to track the feature through the MSF for CMMI Process Improvement life cycle
    • Business Objective - Includes information to track the business objective through the MSF for CMMI Process Improvement life cycle

Work Item Structure
In the VSTS Process they removed Risk and replaced Scenario by User Story. This is a good decision because the Risk implementation in MSF Agile is one of the worst implementation of Risk Analysis I ever seen. Didn't the guys who developed this read the specs of MSF Risk Management. CMMI has a better risk implementation but still it could be better. The other two Work Items are for test purposes only. A Test Case describes a test and the steps to reproduce it. In some cases you will repeat a lot of the same steps. For Example: 1. open Internet Explorer, 2. open the Web Application, 3. Log on to the app. These steps are probably used in all Test Cases. To use shared steps you must use the Shared Step Set Work Item.

Work Items

Work Item Link Types
As you can see, the screen layout is completely rearranged to show more controls on one single screen. Furthermore the buttons to Open, Add, Edit and Delete links are redecorated. All this styling will create a synoptic layout.

Link Types

They also added a couple of new Link Types to a Work Item. The nice thing about the Link Types is you can filter it for a specific control. For example: You only want to allow links to create a hierarchy for parent and child relations. Your WIT control specification could look like this. Watch closely to LinkFilters sections.

<Control Type="LinksControl" Name="Hierarchy" Label="Parent and &amp;Child Links:" LabelPosition="Top">
        <WorkItemLinkFilters FilterType="include">
            <Filter LinkType="System.LinkTypes.Hierarchy"  />
        <ExternalLinkFilters FilterType="excludeAll"/>
            <LinkColumn RefName="System.ID" />
            <LinkColumn RefName="System.WorkItemType" />
            <LinkColumn RefName="System.Title" />
            <LinkColumn RefName="System.AssignedTo" />
            <LinkColumn RefName="System.State" />
            <LinkColumn LinkAttribute="System.Links.Comment" />

Work Item Custom Controls
Besides extensions in the XML definition of a Work Item there are two Custom Controls added to Rosario which can be found in C:Documents and SettingsAll UsersApplication DataMicrosoftTeam FoundationWork Item TrackingCustom Controls9.0. Check this blog for all Custom Control locations.

  • ReproStepsControl.wicc
  • TestStepsControl.wicc

The latter is showed in the screen below.

<?xml version="1.0"?>
<CustomControl xmlns:xsi="" 

With this custom control you can create you're own test steps including parameters which can be data bound. A brief explanation about this steps can be found in the November Rosario CTP - Planning A Testing Effort with Camano from Grant Holiday.

Custom Controls

For more information about Custom Controls check a community by Naren Datha (Unfortunately he left the TFS Team): and Mathias Olausson: One of their coolest controls is the Screenshot control.

Work Item Queries
One of the superb new features of Work Items is you can now query on links. Depending on the type of query it will not only give you an other result, but also another icon in the Team Explorer. In this examples I added a Work Breakdown structure to the CTP12-Agile Team Project. Creating a structure like this is easy. Just select the Query on links checkbox, select Tree as Type of query and add Child as Link Type. Not only you good create Work Breakdown structures using this concept, Backlogs are created as easily as well.

Work Item Queries

It's good to see Microsoft is listening to its customers. More and more people are asking for a better Agile template and they will get it. Other people asked for work breakdown support as you can read in one of my older posts and the will get it. I'm very anxious they will not support these new features in the old Team Explorer for Visual Studio 2005. I still hope they will because a lot of companies are willing to upgrade to a new server environment but to upgrade to a new client upgrade is a complete other story. And yes I know you could install another Team Explorer instance besides it, but that's not a solution. VSTS Dev Team keep up the good work and maybe it's still a good idea to also include the old MSF Agile Process Template because a lot of companies have adopted this structure.



Lately I've been asked to install Team System Web Access on the same machine containing WSS 3.0. Officious I configured their SharePoint using a fully qualified domain name (FQDN). This gives them the ability to open the TFS sites from outside their environment and on Internet as well. Since MS is advising to install Web Access on a separate Web Site it probably will be hard to configure it they way I want it. When I installed Web Access on the WSS site as a virtual directory and added a new URL mapping to the web.config it gave me this error. The web.config can be found in your VSTS Web Access directory in Program Files. e.g. %Program Files%Microsoft Visual Studio 2008 Team System Web AccessWeb

    <urlMappings enabled="true">

<!-- Become-->

    <urlMappings enabled="true">
<add url="~/" mappedUrl="~/Index.aspx" />


The trusted callers error exists because SharePoint runs in a kind of a sandbox. We need to upscale the trust level of Web Access. This can be done by using the following statements. I haven't tested any other kind of trust level but you're free to do so.

    <compilation debug="false" batch="false" />

<!-- Become-->

    <compilation debug="false" batch="false" />
<trust level="Full" originUrl="" />


Who hasn't seen this error before 'Object reference not set to an instance of an object.' After a bit of reverse engineering I discovered it's depending on sessions. Sessions can be supported in SharePoint but is turned off by default. Not only it must be enabled to use sessions, it must be handled as well. All other unnecessary modules will be removed for optimal performance.

    <pages validateRequest="false" enableEventValidation="false" />

<!-- Become-->

    <pages validateRequest="false" enableEventValidation="false" enableSessionState="true" />


        <add name="CompressionModule" type="Microsoft.TeamFoundation.WebAccess.CompressionModule"/>

<!-- Become-->

        <clear />
        <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
        <add name="CompressionModule" type="Microsoft.TeamFoundation.WebAccess.CompressionModule"/>


The last problem is a security issue which can be easily solved by changing these two properties. The nice thing about this change its configuring your WSS site and your VSTA site to let you logon using one single user account. So we have a kind of Single Sign-On where you can open VSTA from your WSS site without a new logon form. With automatic Logon in fully qualified domain name (FQDN) environment all your customers will be really satisfied and doesn't have to logon at all.

    <authentication mode="None"/>
    <identity impersonate="false"/>

<!-- Become-->

    <authentication mode="Windows"/>
    <identity impersonate="true"/>


I hope this article will help you to set up an environment such as described above. Sometimes when you open a Work Item this will give you an error where Microsoft.TeamFoundation.WorkItemTracking.Controls was not found. I had to track it down in %Program Files%Microsoft Visual Studio 9.0Common7IDEPrivateAssemblies and copy it to %Program Files%Microsoft Visual Studio 2008 Team System Web AccessWebbin. Normally the TSWA installation copies that file over from the privateassemblies directory. As you can see in my images I'm not only still using XP, I'm using Internet Explorer 8.0 as well. This tool rocks and performs like hell. Haven't seen such a boost since Opera arrived. I really like the activities and advice you all to use it event though it's still beta.


1 Comment

The latest Project Server to TFS Connector was just released on CodePlex. This release of the PS2007 VSTS Connector is targeted to work with Team Foundation Server 2008 and resolves several bugs that were reported in the first two releases. They've done their best to ensure that this Connector is easy to install and well documented.

Unfortunately Team System 2008 isn't fully ready for Hierarchical Work Items. With the Hierarchical Work Items you can create a Work Breakdown structure. This structure is needed when you want full support for MS Project and Project Server. What can we expect of the future releases of Team System. In this example the new query “Work Breakdown” of Team System Rosario shows how “Tasks” are child items of “Features”.


When  you try to open this in MS Project using the current CTP of Team System Rosario, it will flatten the structure.


Future versions of Team System will have native integration with Project Server, in the meantime this Connector solution is the best way to integrate the two Microsoft products. Hopefully this MS Project integration will work better in the next Rosario CTP so we can really start using work items the way we supposed to do. We still have a 'long' way to go, but as with most products of MS, the third version of a product really rocks.



Since almost everyone wanted to upgrade TFS V1 to use WSS 3.0, Microsoft added two guides to MSDN in which they explain how to update. In this guide I'll explain how to update your WSS 2.0 sites to use the newly delivered WSS 3.0 templates. This guide can also be used for people and companies who updated their TFS 2005 to a TFS 2008 / WSS 3.0 environment.


Take advantage of new WSS 3.0 functionality.
In order to best take advantage of new WSS 3.0 functionality on the new version of your team project portal sites you may wish to reset the site look and feel of your migrated sites to surface WSS 3.0 features. This step will optionally need to be performed on existing team project portal sites you have migrated from WSS 2.0, but will not need to be performed on new team project portal sites you create moving forward.

  1. Open the WSS 3.0 team project portal you would like to upgrade. (e.g. http:// myATserver:81/sites/MyTeamProject)

  2. Click Site Settings.

  3. On the Site Settings page, click Reset to site definition under the Look and Feel column.
  4. On the Reset Page to Site Definition Version page, you can choose to either reset an individual page within the site collection or to reset all of the pages within a site collection. Once you have made your decision, click Reset then click OK in the confirmation dialog.
    Note: As you will note in the warning dialogs, certain customizations to your team project portal will be lost after performing this reset. Therefore it is recommended that you take care to understand what functionality you need to retain in your team project portal prior to performing this optional reset.
  5. On the Site Settings page, click Top link bar under the Look and Feel column.
    Delete all links
  6. On the Site Settings page, click Quick Launch under the Look and Feel column.
    Remove all headings and links except those from documents
    Add The following headings and links
      • Heading -> Process Guidance
      • Heading -> Reports
      • Link -> Bug Rates
      • Link -> Builds
      • Link -> Quality Indicators
      • Link -> Project Velocity
      • Link -> Issues List
        _layouts/tfsredirect.aspx?IsReport=1&ReportName=Work+Items&rs:toolbar=true&rs:Command=Render&IssueParam=[Work Item].[Microsoft_VSTS_Common_Issue].[Yes]
      • Link -> Exit Criteria Status
        _layouts/tfsredirect.aspx?IsReport=1&ReportName=Work+Items&rs:toolbar=true&rs:Command=Render&IssueParam=[Work Item]. [Microsoft_VSTS_Common_ExitCriteria].[Yes]
  7. On the Site Settings page, click Master Pages under the Galleries column.
    Obtain the default.master (included with this release)
    Click Upload and browse for default.master
    Make sure you check Add as a new version to existing files.
  8. Replace the current CORE.CSS
      • Obtain the CORE.CSS (included with this release).
      • Open the uploaded default.master from SharePoint Designer and edit one of the CSS Properties. The confirmed customizations are reflected in the new local version of the style sheet, which is stored in a new folder named _styles that is created automatically in the Folder List of your site.

        MasterPage Editing

      • Overwrite the CORE.CSS in /_styles/ using SharePoint Designer.
  9. Add additional images
      • Obtain the VSTS images (included with this release)
      • Copy header_agile.gif, header_formal.gif, header_vsts_logo.gif and header-bg.jpg to  /_styles/. This can also be done using SharePoint Designer.
  10. As you can see in the picture below both the default.master as the core.css are unghosted and modified only for this site. These changes will result in a new look and feel for your TFS Sites.

    SharePoint Designer 

As many of you I updated my TFS sites to WSS 3.0. My newly created sites got a different look than the one I created before the upgrade. This is by design. MS will leave your previously created sites untouched and keeps the look and feel. With this guide you can change this behavior.


Christmas comes early this year. Microsoft is releasing cool tools by the day. One of these tools is the TFS to TFS Migration Tool. With this tool you're able to migrate your work items and source from one TFS server to another. Since a lot of my customers started with TFS as soon as it was available, they started putting code in it. But before you can add code to the Version Control of TFS, you have a process as well. Most of my customers chose MSF Agile, but in time they changed, chose another one or deleted some of its features. In some cases you just want to start all over again, but nobody is willing to offer the history of their sources.


Check for the full details. Download it today and tomorrow you can rearrange all you projects. Keep in mind this tool will work for the same server as well on other servers. When you migrate on the same server, your sources won't be destroyed since TFS 2005 doesn't support such a feature. You sources will deleted but still be visible for users who wants to see deleted files.


This tool was built using the Migration and Sync Toolkit, so it should prove to be useful for anyone that is writing a custom migration tool.  We have received some comments in the past about the WSS to TFS sample tools containing too much WSS specific code that makes it hard to understand the toolkit.  Although this tool has plenty of TFS specific code, it will probably more closely resemble a tool built to integrate with another version control or work item tracking system.  There is also a GUI built on top of the tool to make configuration easier, which also serves as a good example of how to build a configuration layer for a custom migration tool.


Technorati Tags: ,


As you can read in my previous post I received a request from Yogita Manghnani to share my experiences. This is the second post concerning options I struggle with in TFS. Almost all people where I introduce TFS come up with the same question "Can I relate my Work Items?" and I always have to reply "Yes you can, but there is no hierarchy." Personally I think relationship between Work Items is the base of good project, especially if it contains a hierarchy. Hierarchy is in all projects and most tools which contain project management i.e. Look at MS Project. Of course you can almost use TFS without this notion and use Areas and Iterations, but it is harder to manage your projects if you can’t relate your Work Items with a true relationship.

Loïc Baumann created the tool for relating all your Work Items in TFS. After installing the MSI and configuring your Web Server and Work Items you're able to relate as you can see in this screen dump. Every Work Item Type can have its own icon which is pretty handy.


What is this all about? There are two simple answers to this question:

- WICreator is a standalone application that let a Team System user to create Work Items in a hierarchical way. You also have the ability to send existing one to a “Recycle Bin” to get rid of them (useful as you can’t delete Work Items).

- WINetwork is a web service triggered by the TFS Alert System when a Work Item has a field change.
The main purpose of WINetwork is to analyze the changes regarding to their environment, and then respond by modifying fields of surrounding Work Items. (E.g. when a child Work Item turned to Active, then WINetwork will turn the parent from Proposed to Activate)

Work Item Creator and WINetwork are both available in codeplex:

Customize Work Items
Before you use those tools you need to some customization of the Work Item Types. To enable the hierarchy you have to add custom fields in your Work Item Types definition. Use the Process Templates Editor from Imaginet Resources or the one shipped with the latest Team System Power Tools.

Add the following three fields:

Name Type RefName Name Description
ParentWI integer Cegedim.ParentWI 0 Relation between child and parent
FirstChildWI integer Cegedim.FirstChildWI 0 First child to display beneath a parent
NextWI integer Cegedim.NextWI 0 Order of Work Item, Relation between siblings

What a nice tool. I could only dream of such a solution, but Loïc managed to build one. It will cost you some time to setup, even with the document and the use of Team System Power Tools, but when you finally manage to do so you can easily see how your Work Item is related in your project. One of the downsides is, it doesn't integrate in Team Explorer (VSTS) even I like his Click Once thought and the other is, the hierarchy can't be related to MS Project or Excel yet. Furthermore it would be nice if there was a relation between the hours of all items and the ability to only start a new work item if previous work items are finished. So it's up to us TFS lovers or MSFT'ers to support Loïc. For the record it's only downloaded 17 times. Shame on you TFS gurus out there.



This week I received an email from Yogita Manghnani, a Program Manager in the TFS Office Integration team who requested me to share my experiences with TFS. Since the beginning of TFS I'm one of those people who really adore TFS, but unfortunately not everything is implemented the way I like it. Two options I constantly struggle with are comparing Office files and the hierarchy of Work Items.

In this blog post I will discuss how I resolved my problem with comparing Office files. Still it isn't the best solution; my hope is on Microsoft to solve this problem completely. In one of my latest blogs I talked about using TFS for other IT related projects. We are using TFS to setup training material which consist of slide decks in PowerPoint, practicum description in Word and depending on the training examples and solutions in Visual Studio .NET. The best thing Source Control can do when you try to compare two Office files is displaying a message "Binary files differ". I know Microsoft is targeting on SharePoint for Office files and I'm a great admirer of SharePoint, but since I want to branch and compare the documents it isn't suitable for me and I hoped Source Control could do better.

So it's up to me to find a proper solution. I haven't check out what the possibilities are to extend Source Control so I first setup VS.NET to use another program to see the differences between Office files.

In Tools menu select Options

Within the tree follow this exact path

Source Control -> Visual Studio Team Foundation Server -> Configure User Tools ...


As you can see I wanted to let Word or PowerPoint decide what the differences are, but this is not possible. These two programs doesn't support the proper command-line switches. To check all command-line switches of the preferred Office tools, click these links:

Document-Comparison-Thumb2We're now in the stage of testing Diff Doc to this job. 'Diff Doc' is a powerful yet easy to use folder/file compare and remediation utility. You can use it to compare files of all types including MS Word/Excel/PowerPoint, PDF, RTF, Text, HTML, XML, WordPerfect and more.

When comparing to PowerPoint files it will result in the following screen dumps. 



And as you can see I'm now able to show if my branched Office files differs from the original. After this simple differ check I still want to use Word and PowerPoint to do the real compare and merge to both files. Within Word 2003 / 2007 it isn't a problem at all. Word supplies a great feature to see all differences, not only text, but also styles. Besides this it has a perfect interface to merge the two files.


PowerPoint 2007 on the other hand, has removed its feature to 'Compare and Merge Presentations', as you can see in the picture below. Who is responsible for such an act? I wonder how and when this is decided. Somebody had to say something like this. "You know what, since nobody complained about we forgot the 'Compare and Merge Presentations' feature in the 2007 beta phase, we'll just leave it out. And if we’re trying to release Office 2010 we'll mark it as a new feature again. This is a win/win situation. We got less to program now and add it as an additional feature in Office 2010." And all people of the Microsoft Office Team replied "You're the man".


So we're back to PowerPoint 2003 again which still contain this feature. To support 2007 File Formats in Office 2003 you'll need the Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint 2007 File Formats. See After installing this Pack which becomes almost a must for every old-fashioned Office user, we can compare PowerPoint Decks which we created in PowerPoint 2007.


What have you done Microsoft? How could you remove the astonishing compare function on PowerPoint files? You're absolutely not the man. Furthermore why doesn't Office give us the opportunity to compare two files using a command-line options. Please VSTS Team and Office Team talk to each other. Make your customers happier than they now are and please people respond if you've found another solution, I keep myself recommended.


1 Comment

This question keeps me awake the last couple of nights. What kind of IT related projects can be supported by TFS and what's in it for the teams. From the beginning of TFS, Microsoft is pushing TFS to be used in development projects and not for other IT related projects. I did the same and used it for Application projects (Burn an app on a CD, like Office), Web projects (Deploy an app on a web server, like and BI projects (Data Warehouse and reporting). All these projects are related to Visual Studio .NET or Business Intelligence Development Studio (which is exactly the same product, but has a different name. Probably to make BI'ers think their developing at a higher level ;-)). But can you use TFS for other IT related projects which do not use Visual Studio. NET, I think you can. In the next paragraphs I'll explain how we want to setup TFS so we could use it for creating training material.

I work at a company called Class-A and we do all kinds of trainings and coaching about Microsoft development products and technologies. This varies from .NET 1.0 to Orcas, from MSF to TFS, from SQL BI to SharePoint. As a knowledge provider you have to be up to date with all content and we can't wait until Microsoft will release a training about .NET 3.5, because our customers want to here all about it now. So we started to investigate if TFS can help us for for creating our training material. The first thing we came up was to determine our branching strategy. I read the complete Team Foundation Server Branching Guidance, which is written by the three amigos (John Jacob, Mario Rodriquez, and Graham Barry) but I didn't find the correct branching strategy for our projects.

To understand why I couldn't use a branching strategy from the document, I'll explain our vision about creating training material. A training can be divided in two types: Standard or Custom. Before I tell the differences about the two types of training, I'll introduce a third type. This type isn't a training but is our source for creating a training. The Source as I'll call this type contains all information about a specific part of a product or technology. A source can contain a slide deck in PowerPoint, practicum description in Word and depending on the training examples and solutions in Visual Studio .NET. E.g. A source can contain all information about ASP.NET Security (Authentication, Authorization, Impersonation, Role and Membership management). 

A standard training, a training for our main courses, contains the latest relevant version of the source, is numbered to show where it fits in the training and can be versioned by product or technology. E.g. An ASP.NET 1.0 training will contain everything about ASP.NET Security but doesn't contain slides about role and membership management. A custom training, a training made for a special occasion or customer, can contain a part of the source or can even be split in two parts. E.g. For Customer X we have created a custom training where ASP.NET Security is split in a basic and advanced part. The context above will create the following branching strategy.

Working with TFS and this branching strategy we hope to make it possible to do more team development, reuse material instead of recreating it and keep track of changes.

So even if you don't do parallel development, branching can be very interesting to help you in your development process. As long as you understand your business needs, I think you can use TFS for all IT related projects. Just create your own branching strategy and TFS can help you big time. In this article I was only focusing on source control, but imagine if you customize the process guidance as well. So in our case special training workitems (e.g. tasks for adding sources, defining trainings, creating new branches, etc.), reports and spreadsheets. I must say TFS can be used for all IT related projects. If you think otherwise or also have examples how you used TFS for other projects, please post a comment. Not only I'm interested, I think the MS VSTS team is interested too.


Technorati tags: ,


Since Brian Keller and Brian Harry requested me to test Configuring Visual Studio 2005 Team Foundation Server with Windows SharePoint Services 3.0, I came up with the following testing strategies to test all kind of options and see if it's still serviceable.

  • Team Foundation Server -> Upgrade WSS 3.0 -> Service Pack 1 -> Repair option Add/Remove
  • Team Foundation Server SP 1-> Upgrade WSS 3.0 -> Repair
  • Team Foundation Server SP 1 / SSL-> Upgrade WSS 3.0 -> Repair
  • Team Foundation Server SP 1 / FQDN -> Upgrade WSS 3.0 -> Repair

For the latter I wanted to use my own blog posts, but other people referred to me to use the FQDN post of Buck Hodges. Buck explains in just three points, for answering the question "Is there a way to configure TFS to use fully-qualified domain names (FQDN, e.g., for TFS, WSS, and Reporting Services?"  I asked myself the question "Could it be so simple?". The answer to this is NO. By the way I know the original answer was provided by Bill Essary (Software Architect for Team Foundation Server), so I don't blame you Buck 😉

I shall explain in this post why I like to request Microsoft to create a How To on MSDN. Maybe another great project for Brian and his team ;-). 
The post starts in the middle of setting up your server, because before you can use a FQDN you have to create one. To setup a FQDN and use this on a Web Site read my first post about FQDN. See

The post describes to use TFSAdminUtil for registering a FQDN. Although TFSAdminUtil is a great utility, it misses some parameters for ActivateAT. Microsoft thinks when you setup a FQDN, you will use this hostname for all three Web Sites (SharePoint, SharePoint Admin, Team Foundation Server). Personally I think you separate SharePoint and TFS and probably the Admin site as well (e.g., What does ActivateAT do and how can you use it. Mainly it changes everything below to be used for a single FQDN. I added some remarks to it. This way I want to show it is advisable to add some additional parameters to the TFSAdminUtil. (Suggested parameters: TFSAT, WSSAT, SSRSAT, WSSAAT.) I divided the tool in which actions it does to update TFS.

  1. Changes all address rows in the tbl_subcription table of the TFSIntegration database to use the new application server name. (All address rows uses links to the TFS web site)
  2. Changes all type 3 & 4 url rows in the tbl_service_interface table of the TFSIntegration database to use the new application server name. 

        A) ReportsService (SharePoint web site or separated Report Server web site)
        B) BaseReportUrl (SharePoint web site or separated Report Server web site)
        C) DataSourceServer (Why does MS changes this?, It would be better to use the NetBIOSName)
        D) WssAdminService (SharePoint Admin web site)
        E) BaseServerUrl (SharePoint web site)
        F) BaseSiteUrl (SharePoint web site)
        G) BaseSiteUnc (UNC path, so use NetBIOSName as well)

  3. Changes the value rows in the tbl_registration_extended_attributes of the TFSIntegration database to use the new application server name. 

        A) ATMachineName
        B) ATNetBIOSName

    These registration attributes are used by the TFSAdminUtil to determine if the user gets a question to change its Application Server.

  4. Restart IIS

The post continued to mention "After using the TFSAdminUtil you must update the registry for ReportServer and *.config of the Web Services and NT Services."

What are we missing here.

  1. As seen in my post you have to enable Reporting Services again to be used as a standalone server ( See
  2. If you upgraded to WSS 3.0 and I bet you did if your read Brian's blog, you must change the Alternate Access Mappings. See
  3. For some extra info about the Registry update and the *.config check some other blog posts:
    Hosting Team Foundation Server on a fully qualified domain name (FQDN)
    Hosting Team Foundation Server on a fully qualified domain name (FQDN) Part II
    Automatic Logon in fully qualified domain name (FQDN) environment

I hope I explained why it's so important to have a proper guide about how to setup TFS for a FDQN. Besides this Microsoft is delivering some tools which are great to use for a single FQDN, but since most of my customers want to use a separated FQDN for each Web Site, I'm not happy with it. Luckily most of the configuration are stored in the database, config's, and the registry so it isn't hard to find corresponding keys. I know Microsoft like to refer to TFSReg, but since I'm a data dude and the given connections configuration XML file on MSDN contains some rubbish (http://DTMachineName/ReportServer/ReportService.asmx [I prefer to use the ATMachineName], RosettaService/ReportService.asmx [doesn't exist], http://ATMACHINE:4554/_vti_adm/admin.asmx [wrong port number, talking about serviceable]) I update directly in the database.

Maybe it's a good moment to poll if people are interested in FQDN for TFS guide. Maybe you can post a comment, for requesting one.


Technorati tags: , ,