<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Clark Sell : TfsAlert</title><link>http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx</link><description>Tags: TfsAlert</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>TfsAlert and Security</title><link>http://blogs.msdn.com/csell/archive/2006/11/05/tfsalert-and-security.aspx</link><pubDate>Sun, 05 Nov 2006 18:12:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:976117</guid><dc:creator>csell</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/csell/comments/976117.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=976117</wfw:commentRss><description>&lt;p&gt;After releasing &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; 0.3.0.0 I realized I'd failed to mention how security works.&amp;nbsp; BIG OPPS, Sorry!!!&amp;nbsp; &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; will not get into the business of managing your user account.&amp;nbsp; Windows already provides such a facility and&amp;nbsp;I believe leveraging that is just a better&amp;nbsp;more secure choice.&amp;nbsp; However &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; will maintain knowledge about your TfsUserName.&amp;nbsp; It does so to&amp;nbsp;properly create the Tfs event subscription.&amp;nbsp; Having said that you still need to properly authenticate just to subscribe, no different than any of the other Tfs tools.&lt;/p&gt; &lt;p&gt;So how do we manage security?&amp;nbsp; Simple, we just add the &lt;em&gt;server\username \ password &lt;/em&gt;into &lt;em&gt;Control Panel -&amp;gt; User Accounts -&amp;gt; Manage User Accounts -&amp;gt; Advanced -&amp;gt; Manage Passwords.&amp;nbsp; &lt;/em&gt;I do realize this may be shut down by a companies GPO but if not we have found this to work very nicely.&amp;nbsp; If your one of those people ( like&amp;nbsp;I ) who use multiple Tfs servers at a variety of locations you would always be prompted for your credentials just to start up the IDE.&amp;nbsp; This all goes away once your account is loaded into that Windows facility.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=976117" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx">TfsAlert</category></item><item><title>TFS Event Filtering</title><link>http://blogs.msdn.com/csell/archive/2006/11/01/tfs-event-filtering.aspx</link><pubDate>Wed, 01 Nov 2006 22:07:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:925979</guid><dc:creator>csell</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/csell/comments/925979.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=925979</wfw:commentRss><description>&lt;p&gt;With today's release of &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; a question will no doubt get asked; what really is a Filter Expression?&amp;nbsp; Short answer, an expression to filter events sent from TFS. &lt;/p&gt; &lt;p&gt;Long answer.&lt;/p&gt; &lt;p&gt;Formally known as Visual Studio Event Filter Language or VSEFL, it feels very much like a SQL expression and/or like WIQL. These filters are added with the creation of the subscription itself.&amp;nbsp; This becomes really important when you're consuming any part of the TFS eventing system.&amp;nbsp; Let's use &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; for example.&amp;nbsp; It's 100% driven by the TFS eventing system and while&amp;nbsp;there are a number of events once can subscribe to lets just focus on two and further provide some concrete examples.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;CheckinEvent  &lt;li&gt;WorkItemChangedEvent&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Lets also assume you have a TFS server which has more than one TFS project and more than one person using it.&amp;nbsp; Given that&amp;nbsp;when you startup &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;TfsAlert&lt;/a&gt; without any subscription filters you're going to get a number of events, some of which I am sure you don't care about.&amp;nbsp; The following questions usually come next.&amp;nbsp; How can I&lt;/p&gt; &lt;ul&gt; &lt;li&gt;filter&amp;nbsp;a CheckinEvent for my set of team project(s)?  &lt;li&gt;filter&amp;nbsp;only WorkItems assigned to me across any TFS project?  &lt;li&gt;filter WorkItems for my area?&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;A typical CheckinEvent filter usually looks something like the following:&lt;/p&gt; &lt;blockquote&gt;&lt;pre&gt;" TeamProject = 'Project Name' "&lt;/pre&gt;&lt;pre&gt;" TeamProject MATCH 'Project Name A|Project Name B' "&lt;/pre&gt;&lt;/blockquote&gt;
&lt;p&gt;Those two expression actually answer that first question. The expression simply states we want to filter on TeamProject where the it either = 'Project Name' or MATCH all project which equal &lt;em&gt;Project Name A&lt;/em&gt; or &lt;em&gt;Project Name B.&lt;/em&gt; The "key" ( in this case TeamProject) is derived from that events schema.&amp;nbsp; So what operators are available?&lt;/p&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;= (equals)&lt;/td&gt;
&lt;td&gt;String, Int, Enum, Date, Bool&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt; (less than)&lt;/td&gt;
&lt;td&gt;Int, Enum, Date&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;lt;=&lt;/td&gt;
&lt;td&gt;Int, Enum, Date&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt; (greater than)&lt;/td&gt;
&lt;td&gt;Int, Enum, Date&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&amp;gt;= &lt;/td&gt;
&lt;td&gt;Int, Enum, Date&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Under (Quickly match file specs)&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Match (Regular Expression Match)&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Like (Simple match)&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;p&gt;Matching is pretty easy and all completed on the server side before the event is ever sent.&amp;nbsp; What you really need to understand is each particular events schema.&amp;nbsp; That events schema ultimately defines the actual event and what you have the ability to filter on.&amp;nbsp; When TFS installs you can find the default schemas @ %ProgramFiles%\Microsoft Visual Studio 2005 Team Foundation Server\Web Services\Services\v1.0\Transforms.&amp;nbsp; You can further create your own event types, but I will save that for another post.&lt;/p&gt;
&lt;p&gt;This release of TfsAlert will actually publish the message you've received to the event log just so you can easily look at it.&amp;nbsp; This will really help when you want to build some filter expressions.&amp;nbsp; This can also be turned off by setting the &lt;em&gt;value&lt;/em&gt; attribute from 3 to 0.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;switches&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&amp;nbsp; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;add&lt;/span&gt; &lt;span style="color: #ff0000"&gt;name&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"General"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;value&lt;/span&gt;=&lt;span style="color: #0000ff"&gt;"3"&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;switches&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Want to dive deeper, all the eventing information you ever wanted to know can be found @ &lt;a title="http://msdn2.microsoft.com/en-us/library/aa398965.aspx" href="http://msdn2.microsoft.com/en-us/library/aa398965.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa398965.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=925979" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx">TfsAlert</category></item><item><title>TfsAlert 0.3.0.0 Released</title><link>http://blogs.msdn.com/csell/archive/2006/11/01/tfsalert-0-3-0-0-released.aspx</link><pubDate>Wed, 01 Nov 2006 17:44:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:922961</guid><dc:creator>csell</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/csell/comments/922961.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=922961</wfw:commentRss><description>&lt;p&gt;Today we have released the initial TfsAlert release 0.3.0.0.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Prerequisites&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;.NET 3.0&lt;/b&gt; is required since this is built on top of WCF. If you’re running this from Vista you will not need to install the .NET 3.0 framework.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Installation Notes&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;This version runs under Windows XP. &lt;/p&gt; &lt;p&gt;If you would like to run on Vista you have to install to another location outside of %programFiles% so you the proper security to configure it. We are currently addressing Vista UAC compatibility.  &lt;p&gt;Once installed you &lt;b&gt;&lt;u&gt;HAVE TO&lt;/u&gt;&lt;/b&gt; properly configure it. This will be fixed in the next release. &lt;/p&gt;&lt;/blockquote&gt; &lt;ul&gt; &lt;li&gt;One the following %programfiles%\TfsAlert\TfsAlert.exe.config and set the following items: &lt;/li&gt; &lt;ul&gt; &lt;li&gt;&lt;b&gt;teamFoundationServer&lt;/b&gt;, your TFS server &lt;/li&gt; &lt;li&gt;&lt;b&gt;userId&lt;/b&gt;, your user id &lt;/li&gt; &lt;li&gt;&lt;b&gt;selected&lt;/b&gt;, select the events you would like to subscribe to. &lt;/li&gt; &lt;li&gt;&lt;b&gt;filterExpression&lt;/b&gt;, filter placed on that event&lt;/li&gt;&lt;/ul&gt; &lt;li&gt;Open port 9999 on your Windows Firewall. This is also configurable if you would like to listen on another port.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;What's New&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Base architecture with basic event notification.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;What's Next&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a title="http://www.codeplex.com/WorkItem/List.aspx?ProjectName=TfsAlert" href="http://www.codeplex.com/WorkItem/List.aspx?ProjectName=TfsAlert"&gt;http://www.codeplex.com/WorkItem/List.aspx?ProjectName=TfsAlert&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Contact Us&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;CodePlex: &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert&lt;/a&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=922961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/VSTS/default.aspx">VSTS</category><category domain="http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx">TfsAlert</category></item><item><title>TfsAlert Source Migrated To CodePlex</title><link>http://blogs.msdn.com/csell/archive/2006/10/23/tfsalert-source-migrated-to-codeplex.aspx</link><pubDate>Mon, 23 Oct 2006 18:03:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:863043</guid><dc:creator>csell</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/csell/comments/863043.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=863043</wfw:commentRss><description>&lt;p&gt;This weekend I was hard at work tidying up the TfsAlert source base, fixing Vista breaking changes.&amp;nbsp; This morning I finally migrated it to CodePlex.&amp;nbsp; Right now we are actively working on the package for an initial&amp;nbsp;release.&amp;nbsp; We should have that released later this week.&lt;/p&gt; &lt;p&gt;If you download the source there are a few things to note.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;The source base with all written TDD but using partial classes.&amp;nbsp; Our deployment package will strip out the tests but right now if you run you will need those testing assemblies.&lt;/li&gt; &lt;li&gt;We currently call the TFS OM directly to subscribe so you have to have those assemblies installed&amp;nbsp;.&amp;nbsp; This will be changed in a future release to call&amp;nbsp;the Web Service directly.&amp;nbsp;&lt;/li&gt; &lt;li&gt;Currently listens on port 9999.&amp;nbsp; You have to manually open the Windows Firewall so it can listen on that port.&lt;/li&gt; &lt;li&gt;You have to setup the config.&amp;nbsp; We don't have a UI screen for that yet.&amp;nbsp; There are just a few settings in the config file.&lt;/li&gt; &lt;ul&gt; &lt;li&gt;Add your TFS Server.&lt;/li&gt; &lt;li&gt;Add your User Id&lt;/li&gt; &lt;li&gt;Select the events you want to subscribe to, Selected == true / false&lt;/li&gt; &lt;li&gt;Add a filter expression for that event.&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt; &lt;p&gt;There is one critical bug we are currently addressing.&amp;nbsp; Right now if your network interface drops out and you are assigned a new IP we orphan that event subscription in TFS and don't get a chance to clean it up.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=863043" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx">TfsAlert</category></item><item><title>TfsAlert hits the streets!!!</title><link>http://blogs.msdn.com/csell/archive/2006/10/13/tfsalert-hits-the-streets.aspx</link><pubDate>Fri, 13 Oct 2006 23:00:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:822766</guid><dc:creator>csell</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/csell/comments/822766.aspx</comments><wfw:commentRss>http://blogs.msdn.com/csell/commentrss.aspx?PostID=822766</wfw:commentRss><description>&lt;p&gt;So just what is TfsAlert?&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;TfsAlert is a .Net 3.0 smart client which monitors for subscribed TFS notifications and will display a balloon window in the Windows TaskBar Notification Area.&amp;nbsp; It is built on top of&amp;nbsp;WCF&amp;nbsp;where you can subscribe&amp;nbsp;to any TFS event you feel fit.&amp;nbsp; It's initial focus is around Team Build management but will also include features around Work Item tracking.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;How about that for an official&amp;nbsp;party line!&lt;/p&gt; &lt;p&gt;I started TfsAlert back when TFS was in it's beta days.&amp;nbsp; I've used Cruise Control for many years and I just felt naked without the tray, so TfsAlert was born.&amp;nbsp; Yes I have copied some of the feature ideas.&amp;nbsp; So far it has been a great learning experience of not only .Net 3.0 but TFS integration.&amp;nbsp; I am excited about the expanded development and communities response.&lt;/p&gt; &lt;p&gt;A few minutes ago the &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert" target="_blank"&gt;TfsAlert&lt;/a&gt; &lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert" target="_blank"&gt;CodePlex&lt;/a&gt; how was created.&amp;nbsp; It's going to take me a few days just to get everything transferred over and get a build out, but it's high on&amp;nbsp;my list.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert" target="_blank"&gt;http://www.codeplex.com/Wiki/View.aspx?ProjectName=TfsAlert&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=822766" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/csell/archive/tags/TfsAlert/default.aspx">TfsAlert</category></item></channel></rss>