November 2006 - Posts
I wrote some time ago about
CTP7 requirments. Today I receive some answers from Hila Lahav (Life Cycle Technoogy Specialist from MS Israel). So here it goes:
- "Visual Studio Team Suite required for CTP7 installation. You can use trial (180 day) version from here; or retail copy. For many clients this change can prevent evaluation. I can not see how client replace retailed VSTE Developer Edition with Team Suite trial. Bad call."
Hila: We do not provide a Trial for any of the Editions but the Suit. Hence, a user with retailed Developer edition that would like to Test the Tester or Architect Edition on her own working station, will have to install the Suit on top of it. This is the only Trial version we enable.
I have no problem at all with trial version. The question is why you cannot install DB Dude upon licensed copy of Visual Studio Developer, Tester or Architect addition? This is still does not make any sense to me.
- "CTP7 require MS SQL 2005 Developer or Enterprise version local installation. Sql Express can not be used any more, nether remote server. For many organisations with strong security policies it will be showstopper even before cost considerations"
Hila: Tom Paton's answer from tonight" I believe CTP7 does in fact support SQLExpress. CTP6 didn’t. Maybe he got confused on the versions. In any case, RTM will support SQLExpress"
I was unable to install CTP7 on machine without SQL2K5 Developer Edition (tried with SQL Express without any success). I can live with this just fine as long as I know that RTM will support SQL Express again. We have one day left for RTM release, so I guess we'll know tomorrow
It is finally going public. After some delay, the main Israel developer event of the year is scheduled for 31/01/2007. Vista, Office 2007, .NET Framework 3.0 are some of the topics, but...
It will not be introduction-presale event. It should be built from solid, real life, deeply technical lectures. We will try to present "How To" sessions instead of features overview.
And of cause Team System is important enough to talk about (including DB Dude). The lectures are far to be closed and ready, so any suggestions are more then welcome.
See you there!
Working with Team Foundation Server we have to perform various repeating task related to user declaration and permission setting. I already wrote about TFS permission and tools. Managing permissions is complicated, and from time to time quite frustrating. I've decided that it would be a better use of my time to assemble such a tool than just manually applying permissions again and again...

Using this tool you can:
- Add or remove TFS group membership, Reporting Services role membership and SharePoint role membership
- Set Server and Project-level permissions
- Set AreaPath and Source Control permissions
- Create new TFS users with permissions identical to those of specified existing user
- Save user permissions as template and use it later to create new or update existing users.
TFS Permission Manager v1.0 is finally out. You can download it from here. I hope this utility will be useful.
As usual, I'll be happy to get any feedback.
I used recently one of our custom administration utilities to set email notification for TFS users. Suddenly I received error for one of users, saying that filter expression is invalid. It was a little odd. There was nothing different in this user definition at first sight, our utility was working fairly well till this moment. After short research the problem was found. The unfortunate user had apostrophe in his name. A moment before diving into my code to look for the bug, I tried to set mail notification for the same user from Team Explorer (Team>Project Alerts...). Surprise, surprise it throw exception as well. OK my friends O'Hara and O'Connor, no emails from Team System for you...
So where is the problem? Since RC, TFS uses Display Name instead active directory User Name to identify users. As you can guess, notification uses XPath expression to filter events. Part of it looks like this:
"CoreFields/StringFields/Field[ReferenceName='System.AssignedTo']/OldValue" = '<user name>' OR "CoreFields/StringFields/Field[ReferenceName='System.AssignedTo']/NewValue\" = '<user name>'
Replacing <user name> with actual apostrophe containing name is not a very good idea from the XPath point of view.
The good news are that my utility fix was very simple. All I had to do was to replace apostrophe with quote mark (").
The bad news - there is no way (as far as I know) to do it from Team Explorer. If you don't have better administration tool, you will have to use BisSubscribe command line utility to fix notification for some Irish guys. The complete command you will need to set Work Item change notification (just replace values in angular brackets) is:
BisSubscribe /eventType WorkItemChangedEvent /address <user@email.com> /deliveryType EmailHtml /server <server name> /filter "\"PortfolioProject\" = '<project name>' AND (\"CoreFields/StringFields/Field[ReferenceName='System.AssignedTo']/OldValue\" = \"<user display name>\" OR \"CoreFields/StringFields/Field[ReferenceName='System.AssignedTo']/NewValue\" = \"<user display name>\") AND \"CoreFields/StringFields/Field[ReferenceName='System.AuthorizedAs']/NewValue\" <> \"<user display name>\""
One of VSTS source control features that is hard to explain to clients that are used to VSS is a new Check Out behavior. In VSTS (in opposite to VSS) Check Out action does not perform Get Latest Version. Such a behavior is very useful in some scenarios, but is very annoying in others (for example when team members use exclusive check out). Following users feedback,
Get Latest on Check Out feature planned for the next VSTS release. It will allow us to configure VSTS to mimic previous VSS behavior (automatically get latest version before checking files out).
Team System for Database Professionals Release date was announced at TechEd Barcelona. It will be out at November 30. Believe it or not, despite the problems and concerns, we are already leading couple of projects involving DB Dude.
2 weeks for RTM!
We got a phone call from one of our customers the other day, saying that they cannot run the reports.
When we get these kinds of complaints, the best thing to do is go through the Warehouse Troubleshooting Guide, unfortunately, nothing helped and each time we tried to process the cube we got error messages indicating something is wrong in the TODAY dimension:
The member '[31/10/2006]' was not found in the cube when the string, [Date].[Date].[Date].[31/10/2006], was parsed.
The END SCOPE statement does not match the opening SCOPE statement.
We thought that we had solved the problem when we realized that the regional settings were changed, and that the server is run with different locale from the one that was used upon TFS installation. But, this did work either. Help came from the guy writing this blog
Apparently, changing the locale is not enough, since on a Win2003 you have to make sure the change is applicable to all users (regional settings --> advances --> apply all settings to the current user account) or just log in with the account running the cube processing service (Usually TFSService) and then changing the locale. Afterward we run TFSWarehouse and the cube was finely processed.
Thanks Dudu!!!
TFS Installation Guide and TFS Administration Guide were updated. It is strongly advised to use linked version instead of those found on installation media.
Team System has a built-in, extendable alerting mechanism. It is based on SQL Server 2005 Notification Services. Microsoft SQL Server Notification Services is a platform for developing and deploying applications that generate and send notifications to subscribers.
This walkthrough will help you understand the notification mechanism and provide you the knowledge needed to apply them.
Events on Team System
TFS can process the following predefined events:
|
Event |
Description |
|
AclChangedEvent |
Raised when an access control list has been changed |
|
Branchmovedevent |
Raised when a branch has been moved |
|
BuildCompletionEvent |
Raised when team build has been completed |
|
BuildStatusChangeEvent |
Raised when a team build status has been changed |
|
CheckInEvent |
Raised when a check in operation has been occurred |
|
DataChangedEvent |
Raised when a data has been changed |
|
IdentityChangedEvent |
Raised when an identity has been changed |
|
IdentityCreatedEvent |
Raised when an identity has been created |
|
IdentityDeletedEvent |
Raised when an identity has been deleted |
|
MembershipChangedEvent |
Raised when a group membership has been changed |
|
WorkItemChangedEvent |
Raised when a work item data has been changed |
Each event is passing xml data as a parameter to its subscribers. The schema of xml parameters differs from one event to another.
You can find type definitions for TFS events parameters in this folder:
[C:]\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\Web Services\Services\v1.0\Transforms
Subscription types
Notifications can be delivered either in the form of an email notification or of a SOAP Endpoint (a Web Service).
Query your current subscriptions
To view a list of your current subscriptions, you have to run a query on:
Databse: TfsIntegration
Table: tbl_subscription
Query: SELECT * FROM tbl_subscription
Web service listener implementation:
Each web contains one method called "Notify". The method accepts one parameter eventXml that contains the event data based on the event's schema.
To implement the web service, use the following signature:
[SoapDocumentMethod(Action = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03/Notify", RequestNamespace = "http://schemas.microsoft.com/TeamFoundation/2005/06/Services/Notification/03")]
[WebMethod]
public void Notify(string eventXml)
{
Enter your code here…
}
You can download TFS Notification Web Service project template from here
Subscription tool for notifications
To subscribe to one of the events, you should use the BisSubscribe.exe tool.
You can find it at: [C]:\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\TF Setup
Usage:
BisSubscribe /eventType /address [/deliveryType EmailHtml|EmailPlaintext|Soap] [/server ] [/filter ] [/tag ]
BisSubscribe /unsubscribe /id [/server ]
where:
eventType: The name of the event. (Case sensitive)
filter: A filter expression. default = none
address: The email address or webmethod URL for the subscriber.
server: The Team Foundation Server name.
tag: A field to later use to identify this subscription. default = none deliveryType: EmailHtml|EmailPlaintext|Soap indicating the preferred format. default = Soap
id: The integer id for the subscription to be deleted when unsubscribing.
You can also check out open source TFS Even Subscriber GUI utility
Another way to subscribe is through the API. See this post.
Troubleshooting
(Thanks to Naren)
VSTE for Database Professionals (aka DB Dude) CTP7 was released about a week ago. You can download it from here. It should be last CTP before final release. There are some new features in addition to more then 200 bug fixes in this version. Read this post for complete description.
Two changes disturb me:
1. Visual Studio Team Suite required for CTP7 installation. You can use trial (180 day) version from here or retail copy. For many clients this change can prevent evaluation. I can not see how client replace retailed VSTE Developer Edition with Team Suite trial. Bad call.
2. CTP7 require MS SQL 2005 Developer or Enterprise version local installation. Sql Express can not be used any more, nether remote server. For many organisations with strong security policies it will be showstopper even before cost considerations.