Thursday, 10 July 2008

Installing Team Foundation Server 2008 and eScrum 1.0

I've been getting into Agile methods quite a bit recently, especially Scrum, which I am finding an excellent approach for managing projects and teams. We began initially using excel spreadsheets for the product and sprint backlogs, which worked quite well, but I'd heard about eScrum (process template for TFS) and, from what I'd read and seen at various seminars, looked to be a promising tool for providing a nice integrated tool for managing the various Scrum artifacts and processes.

Secondly, for some time I've been meaning to investigate TFS 2008 for team portal features, version control, item tracking and management of our builds.

We were about to start a new phase of a project so we discussed the pros/cons of piloting both TFS and eScrum, and decided this would be a good opportunity to try them both out. Were we biting off more than we could chew? Would it all be painful and a massive waste of resource?

This first post is all about the install and set up. Feedback on experience of using the tools can come in a later post ;-)

Installation of TFS

Top essential (and I mean essential) tip: read and follow the supplied TFSInstall.chm install guide file. This is key - if you are new to the TFS install and do not follow the supplied "checklists" for your chosen set up, you will endure pain, agony and spend many (mostly avoidable) dark hours in MSDN forums and KBs. We've all been there and it's not nice.

I pretty much tried to follow the install guide by the book, but below points out some specifics of our set up and the issues I came across.

Installation - What I did

Note, as this was a pilot, the install I chose was the (free) workgroup based Single Server TFS Install (i.e. TFS, SQL server, sharepoint and eScrum all installed on one box). TFS example project name in this case was called os-env, on a VM with hostname KSGV-TFS.

  1. Created a VMWare virtual machine hosted (based on a previous web windows 2003 server VM we have) on a VM hosting box. VM was called KSGV-TFS. Allocated 1.5 gig of RAM. C: system drive 20 gig. F@ drive data 60Gig.
  2. Disabled indexing service via computer management.
  3. Installed .Net 2 and 3 framework. IIS was already present on this VM image, tested and working. Uninstalled front page extensions (otherwise, as I found out (see in a bit), it halted the TFS install later).
  4. Ran windows update etc to bring the OS up to date.
  5. Installed FProt virus scanner v6 (old version had expired) and set to auto-update daily.
  6. Downloaded en_visual_studio_team_system_2008_team_foundation_server_workgroup_x86_x64wow_dvd_X14-29253.iso from MSDN subscription and extracted the files.
  7. IMPORTANT: then followed the instructions "Checklist: Single Server TFS Installation" EXACTLY as indicated in the TFSInstall.chm file in TFS install dir. Note I went for the single server installation (rather than separate front and back end servers) as for our 5 developer team on this pilot project, this seemed the logical and simplest route for the trial.
  8. Did not set up the admin user (TFSSETUP). As we were using local accounts and were using workgroup edition of TFS, the help recommends using your own user account (needs admin privs) instead of the TFSSETUP account as this uses up one of the valuable 5 free developers allowed in this free set up. So I set up and used local account dave.t.clarke (admin).
  9. TFSSERVICE, TFSREPORTS accounts were created and put in the Users group.
  10. Next followed the instructions to install SQL Server 2005 standard ed (again noted in TFSInstall.chm). I used a default SQL instance.
  11. Once installed, verified the SQL installation as indicated in the instructions, to check all necessary services were running.
  12. Installed SQL 2005 SP2. Then repeated step 10 (verify).
  13. Rebooted
  14. Installed TFS 2008 (I chose the option which would install Sharepoint too). Came across the infamous “front page extensions must not be installed” error during health check (despite having uninstalled it in step 2!). I love stuff like this... you know, you uninstall a component but it hasn't really gone. Great. A known error… in the KBs found out you can edit the metabase and remove IISFilters and IISFilter sections manually, which still contained refs to Front Page Ext. Uninstaller worked well there then... ugh.
  15. TFS health checks worked fine now
  16. When prompted entered the TFSSERVICE and TFSREPORTS accounts as applicable.
  17. Entered my SMTP email info. FYI, this is stored in C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\Services\web.config if you need to change it at a later date.
  18. Let it all install….
  19. Ran windows update. Picked up an update for sharepoint 3.
  20. Rebooted.
  21. Next I installed the pre reqs for eSCRUM (to be installed later in step 24):
    1. Microsoft Anti-Cross Site Scripting Library v 1.5
    2. Microsoft ASP.NET 2.0 AJAX Extensions 1.0
    3. Visual Studio 2005 Team Explorer (the eScrum 1.0 installer will check for v2005!). Had to download this separately as an img file and extract the files.
  22. Rebooted (otherwise I found the next TE 2008 install hanged in the next step).
  23. Installed Team Explorer 2008 from TFS 2008 install media.
  24. Opened Team Explorer 2008 to ensure it connected OK etc.
  25. Installed eScrum 1.0, by carefully following this ref: eScrum Install for TFS 2008 instructions . Although originally for beta 2, it seems to work fine on the final release of TFS 2008. I also gave local Users group MODIFY access to local C: windows/temp dir as per eScrum instructions.
  26. I used os-env for the eScrum project name in the above step, so I thus tested the WSS 3 eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and tested the escrum web site using: http://ksgv-tfs:8080/escrum/.
  27. Both sites appeared to work fine at this point. Nice. Not as bad as I was expecting :-)

Setting up our Project in TFS and eScrum

I initially set the project up (see steps 24 and 25 above) using Team Explorer 2008 to create the project "os-env" in TFS and then added the entry manually (not ideal I know, but this is the way it works) into the eScrum RegisteredGroups.xml file, namely:

<?xml version="1.0"?>
<RegisteredGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<isflatGroupCollectionDirty>false</isflatGroupCollectionDirty>
<Server Name="KSGV-TFS" Uri="http://ksgv-tfs:8080/">
<Group Name="os-env" />
<Group Name="another-project-here-etc" />
</Server >

</RegisteredGroups>

Update: you can also add projects to this file via the (rather obscure) http://ksgv-tfs:8080/escrum/admin.aspx page. Very basic interface with poor feedback and no validation, and make sure the name you enter is identical to the TFS project name you created using Team Explorer.

Once set up you will see the project in WSS 3 eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and the escrum web site using: http://ksgv-tfs:8080/escrum/. See eScrum screenshot:

Setting up Basic Security

I then needed to set up the user security for our small pilot team. I opened up Team Explorer 2008 on the server, right clicked on our os-env project, selected Team Project Settings and added our relevant users to the groups Contributors and Project Administrators:

Both TFS and eScrum use these user lists for security (for example, on the eScrum web site you will not be able to add your team members to the "product team" list until these are set up).

I then needed to add the users to Sharepoint security (ie sharepoint site http://ksgv-tfs/site/os-env/, select site actions/site settings, people and groups) and also to SQL Reporting Services (http://ksgv-tfs/reports/, properties, security).

Check your security by testing the two sites (from another non-admin account machine) sharepoint eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and the eScrum web site using: http://ksgv-tfs:8080/escrum/. With the latter, ensure you also try running the reports on the eScrum Reports tab to ensure SQL Reporting services security is configured correctly.

Setting up your development client

As we wanted to use our existing Visual Studio Team System 2008 Dev Ed to access/integrate with TFS for source control, work items etc, I had to install Team Explorer 2008 on my laptop (I initially, incorrectly, assumed it would be pre-installed as part of the VS 2008 TS). I installed it via the TFS install media but you can also get Team Explorer 2008 directly here.

Once installed, fire up Visual Studio, go to tools/options, select source control, and you will see Team Foundation Server is now in the list. Select it and VS will use this for your source control.

If you are worried about breaking older projects still in VSS (Visual Source Safe), you can easily switch back and forth between version control systems using this approach without any (noticeable at least!) ill effects. Do this before you open your relevant project though.

I then created a test project in VS 2008 and successfully added a test project's source to the TFS project os-env, just to ensure all was connecting OK.

You can then also select Team Explorer from within VS 2008 (View/Team Explorer):

I'll talk more about its usage in a future post.

Reducing the delays of eScrum report updating

Although all was now working fine, I notice that when we updated sprint items etc we did not see the changes for what seemed an age! Clearly some caching or scheduled warehousing was going on. Digging around I discovered that the eScrum reporting does not query the main TFS 'real-time' data but instead queries the TFSWarehouse database, which gets updated every hour (!). I thus changed this by going to the web service: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=ChangeSetting and updating the RunIntervalSeconds settingID to 600 (i.e. to update every 10 mins). Note you must run this from the local TFS machine.

Restart the "Visual Studio Team Foundation Server Task Scheduler" via Services in windows to pick up the changes.

You will then still find the SQL Server Reporting Services reports only update every 30 mins. To rectify this:

  • Went to SQL Server Reporting Services via: http://localhost/Reports/
  • selected the project os-env
  • selected properties tab
  • then selected each report and chose properties/execution. I then disabled the caching completely:

All done. At worst, now all reports will be 10 mins out of date. Depending on your needs and number of users, you may wish to still cache reports.

I then monitored machine cpu/memory usage for a while but did not see any ill effect of disabling the reporting cache and reducing the TFS Task Scheduler to 10 mins. I'll keep an eye on it though especially as the project grows in size. If you get any issues, maybe gradually increase the warehouse refresh time.

Bug Integration

In eScrum you can create links to bugs from a sprint task. See screenshot below:

In order for the "Query Bugs" button to work, you need to define the query that pulls out the relevant bugs from the database. See the eScrum help for more but basically you end up with a query similar to below that you copy/paste into the product bug setting section on the Product page (to use the query below in your own project just change the "os-env" project name reference to your own):

SELECT [System.Id], [System.AreaPath], [System.AssignedTo], [Microsoft.VSTS.Common.Priority], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject] = 'os-env' AND [System.State] <> 'Deleted' AND [System.WorkItemType] = 'Bug' ORDER BY [System.State], [System.Id]

This will be run when you select "Query Bugs" in above screenshot.

Backups

With all our source code and product info going into TFS, I thought even for this pilot maybe backups would be a good idea ;-)

I took the approach of backing up the entire VM nightly to an external drive (and weekly to a network drive that is then backed up automatically by the standard corporate backup measures already in place). More on regularly backing up a VMWare VM in this post.

In Summary

Overall, the install all seemed to go fairly smoothly (especially considering all the pain I've read about on the net that others have gone through) and both TFS and eScrum appear to be working fine. I've created a Product, added team members etc, created a sprint and run some reports. Of course, the real test will be when we start to use this in anger over the next few weeks. The suspense is more than I can take...

It has to be said though, the installation experience is not the simplest - it is a manual process, with lots of jumping around in the help to see what to do next, manual config edits, lots of choices etc etc. However, if you are very careful and follow the supplied installation instructions, you will be rewarded :-)

Next post will be on usage and how we found both TFS and eScrum as day-to-day tools.

Summarised list of useful addresses

  • eScrum portal: http://ksgv-tfs:8080/escrum/
  • eScrum basic (very) admin page for adding a project: http://ksgv-tfs:8080/escrum/admin.aspx
  • Sharepoint project site: http://ksgv-tfs/sites/your-tfs-project-name/
  • SQL Server reporting Services: http://ksgv-tfs/reporting/
  • Web service to change the eScrum datawarehouse scheduler timing: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=ChangeSetting (note the TFS box localhost address)

And thanks to...

The above install was without a doubt aided by others sharing their valuable TFS install experiences (thank you guys, you saved me a considerable amount of pain):

10 comments:

Anonymous said...

Thanks!

I've been stuck in the official MS installation guide for a coupple of hours now. Your guide pretty much suits the way I want to install our TFS.

As note, i'm installing on Windows Web server 2008.

I skipped the eScrum parts, however it acutually looks pretty neet and I might give it a try at some point.

well ... again, thanks! You saved me hours!

/Thomas

Neil Robbins said...

Useful post, thanks. I haven't used the eScrum addin and wondered if you had tried the Conchango Scrum addin it's really, really good (IMO) and comes with a lot of guidance material (including videos) authored by Ken Schwaber. If you have seen both, any feelings on how they compare?

Dave Clarke said...

Hi Neil

I've not used the Conchango one but read up quite a bit on it before we chose eScrum. The big plus for me with eScrum was the web interface which we really like (despite being a bit shaky in places!). I see now that Scrum for Team System can also has a web interface in the form of Scrum Dashboard (http://www.codeplex.com/scrumdashboard) which could fit the bill nicely (especially combined with TFS's own Team Plain etc). Not sure if you have used the dashboard yet but if you have, a comment on what it is like would be much appreciated. Thaks. Dave

Unknown said...

Hey Dave, I have na issue regarding Daily Scrum. I have two domain users added in Contributors list.
When i wish to view my daily scrum it shows the sprint tasks of all the users and anyone of the two user could edit task.
Could you provide me a way that specfic user could view and edit its own tasks.
Note: I have configured escrum to work under trusted subsystem

Dave Clarke said...

Hi Ayush

I don't think (to my knowledge) that the eScrum web interface in itself will help you here. You might want to look at Team System Web Access too though, as there is a Work Item Web Access (WIWA) interface which only allows a user to update work items they have created. See:

http://blogs.msdn.com/bharry/archive/2008/04/15/updates-to-team-system-web-access.aspx

Your "limited users" may be able to use this.

Cheers
Dave

Carlos A. PĂ©rez said...

excellent contribution.

Timora said...

We are thinking about implementing TFS for upcoming projects. I have searched everywhere to get an answer on this, and it may just be a dumb question, but is TFS included with the Team Suite or do I need to purchase it seperately. Your explaination of the Team Explorer and the Development Client confused me a little. Did you install the explorer software to the Development client box or another machine? I am trying to figure this all out so I know exactly how much software I need to purchase. I have a development team of 5, 2 test engineers, a project manager, and a configuration manager. My intial thoughts were that I could purchase the TFS, the two managers would use an install of team explorer, the developers would use the development client's 5 licenses and the tester would use two licenses from the Test client software. My current understanding is that each software piece of this system has 5 client licenses, if thats incorect, PLEASE HELP! thanks

Dave Clarke said...

Hi TmoBetta

Yes TFS install and licensing could be clearer :-)

Here's what you need. If you have 5 people whom will be using TFS (either using a thick client like Team Explorer or the web interface Team System Web Access TSWA), you can use TFS workgroup edition for free and no CALs needed for MSDN premium subscribers. This is what we started out with.

You would need to install TFS workgroup edition on a server first (download separately via MSDN subscriber downloads). You then need to set up the clients and each user would then need to either:

a) Install Team Explorer on their Visual Studio Team System (VSTS) desktops. This acts as a plugin and will then integrate with VSTS. If VSTS is not already installed then it will simply install Team Explorer.
b) Use the web interface - Team System Web Access (TSWA).

Our end-user 'testers' and business users use TSWA as no install needed, and our developers use Team Explorer with VSTS.

If you need more than 5 users, then you need to buy the standard edition of TFS. This has no user limit but does need CALs for all users that access TFS (VSTS developers get a CAL as part of VSTS license anyway).

Hope this helps.

Cheers
Dave

Stuart Rivenbark said...

Here's one for anyone who might have an insight. After days of effort, I finally got TFS 2008 installed on a two-tier server structure. SQL Server 2005 was being used on the data server.

I used the product for about three weeks and before the server data ever got backed up, the data server completely crashed. So, I figured I would just completely un-install TFS and start over.

The problem is that because the data server is now gone, the installation program will not allow me to uninstall TFS, and it will not allow me to repair it - because the database cannot be connected to. Well, duh ! if I am trying to uninstall and the database cannot be connected to, then the uninstall should just proceed and assume the database is no longer available - which an uninstall should not care about anyway!

I'm thinking the only solution now is to completely rebuild the server and then start over with TFS. But, that will be a major ppain because this server is being used for some production processes.

Anyone have any thoughts?

Dave Clarke said...

Hi Stuart

I've never had to do this. Maybe someone else has some ideas?