Team Foundation creates alerts that notify users and/or web applications of certain events that have occurred. Some of these alerts are used internally by Team Foundation (e.g., notifying another TF component of an important change to group membership data). Most are used by end users to receive notification of work item changes, checkins, and build activitites.

Pete Sheill and others have discussed alerts in the past. Recently, we became aware of a problem that manifests itself through the Team Foundation eventing mechanism which includes alerts.

When the alert subject line is blank, this often means that one of the assemblies used to process alerts prior to sending isn't working properly. In some cases, these assemblies fail to load and an event log message will be written.

There are 3 assemblies that process alerts prior to sending to the subscribers

  • Microsoft.TeamFoundation.Build.Server.EventFilter.dll
  • Microsoft.TeamFoundation.VersionControl.Server.EventFilter.dll
  • Microsoft.TeamFoundation.VersionControl.WorkItemTracking.Server.EventFilter.dll

These assemblies are loaded by the Services web application when it starts. This web application matches events with subscription data created from Visual Studio or using the command line tool BisSubscribe

We've found that these assemblies do not load when the configuration settings for that web service have been changed using the ASP.NET tab of the web site properties. You can reach this by navigating to the Team Foundation web site from inetmgr, selecting Properties and then choosing the ASP.NET tab followed by selecting Edit Configuration.

This causes an attribute to be added to the config element of the corresponding web.config file. E.g., if you alter the Services configuration, installPath\Web Services\Services\Web.config is altered.

Before making the configuration change, the web.config files look like

<configuration>

<!-- Team Foundation/Web application values -->

</configuration>

Following a configuration change using  Edit Properties:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

<!-- settings -->

</configuration>

To restore behavior, use an editor or Notepad to remove the namespace attribute. Note that you do not need to run iisreset following this change.

The underlying problem is a known issue and is being addressed.