FIX: Summary information for the Top Overridden URLs table and for the Top Rule Override Users table display incorrect information in a Forefront Threat Management Gateway 2010 environment


Consider the following scenario:
  • You configure Microsoft Forefront Threat Management Gateway 2010 to use the User override for blocked categories feature that was introduced in Microsoft Forefront Threat Management Gateway 2010 Service Pack 1 (SP1).
  • You configure Forefront Threat Management Gateway 2010 to generate reports so that you can monitor which users are overriding the deny rules.

In this scenario, you may find that the summary information for the Top Overridden URLs table and for the Top Rule Override Users table display incorrect information and the values seem much larger than expected.


This issue occurs because the stored procedure for summarizing this information incorrectly accumulates the values so that previous day's values are rolled into the next day's values.


To resolve this issue, install the hotfix package that is described in the following Microsoft Knowledge Base article:
2649961 Rollup 1 for Forefront Threat Management Gateway (TMG) 2010 Service Pack 2
To enable this fix, run the FixSoftBlockSummaries.js script on one of the Forefront Threat Management Gateway servers. You can run this script on any Forefront Threat Management Gateway server, an array node, or an Enterprise Management Server.

Note The script enumerates all available arrays and corrects the stored procedure so that the summary information is created correctly. You may have to run the script again if new arrays are added to the storage.

To have us enable this fix for you, go to the "Fix it for me" section. If you prefer to enable this fix yourself, go to the "Let me fix it myself" section.

Fix it for me

To enable this fix automatically, click the Fix it button or link. Then click Run in the File Download dialog box, and follow the steps in the Fix it wizard.

  • Install hotfix that is described in Microsoft Knowledge Base (KB) article 2649961 before you run this Fix it solution.
  • This wizard may be in English only. However, the automatic fix also works for other language versions of Windows.
  • If you are not on the computer that has the problem, save the Fix it solution to a flash drive or a CD and then run it on the computer that has the problem.

Then, go to the "Did this fix the problem?" section.

Let me fix it myself

  1. Start Notepad. To start Notepad, click Start, click Run, type notepad.exe in the Open box and then click OK.
  2. Paste the following script into a new Notepad file.
    var guidGenerator = new ActiveXObject("Scriptlet.TypeLib");
    var fpcRoot = new ActiveXObject("FPC.Root");
    WScript.Echo("Enumerating arrays:");
    var arraysCollection = new Enumerator(fpcRoot.Arrays);
    for (; !arraysCollection.atEnd(); arraysCollection.moveNext())
    var array = arraysCollection.item();
    var found = false;
    WScript.Echo(" " + array.Name);
    var sumDefsCollection = new Enumerator(array.Reports.ReportSummaryDefinitions);
    for(; !sumDefsCollection.atEnd(); sumDefsCollection.moveNext())
    var sumDef = sumDefsCollection.item();
    if(sumDef.Name != "spTrimArraySoftBlockSummary")

    if (sumDef.AggregationStatement.indexOf("@ToDate AS [Date]") < 0)
    WScript.Echo("---- spTrimArraySoftBlockSummary.AggregationStatement already contains fix, skipping array");

    found = true;
    WScript.Echo("Found summary definition " + sumDef.Name + ", will fix the AggregationStatement");
    WScript.Echo("---- Old version start");
    WScript.Echo("---- Old version end");
    sumDef.AggregationStatement = sumDef.AggregationStatement.replace(/@ToDate AS \[Date\]/g, "@FromDate AS [Date]");
    WScript.Echo("---- New version start");
    WScript.Echo("---- New version end");
    if (found)
    WScript.Echo("Updating configuration ID...");
    WScript.Echo("Old configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);
    array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId = guidGenerator.Guid;
    WScript.Echo("New configuration ID:" + array.Reports.ReportingServicesProperties.ReportingServicesConfigurationId);

    WScript.Echo("Saving the current configuration...");
    WScript.Echo("Waiting for configuration reload...");
    catch (err)
    WScript.Echo("An error occurred. Error Decscription: " + err.description);
    WScript.Echo("Try running the script as an administrator");
    catch (err)
    WScript.Echo("An error occurred. Error Decscription: " + err.description);
    WScript.Echo("Try running the script as an administrator");
  3. Save the file as FixSoftBlockSummaries.js, and then exit Notepad.
  4. On a server, open an administrative command prompt.
  5. Run the script by using the following command:
    cscript.exe FixSoftBlockSummaries.js
Wait for the script to complete and the configuration to synchronize. After this, information about users who have overridden the deny rules is created correctly. The script cannot fix this problem for previous summary data.

Did this fix the problem?

  • Check whether the problem is fixed. If the problem is fixed, you are finished with this section. If the problem is not fixed, you can contact support.
  • We would appreciate your feedback. To provide feedback or to report any issues with this solution, please leave a comment on the "Fix it for me" blog or send us an email.


Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.


For more information about software update terminology, click the following article number to view the article in the Microsoft Knowledge Base:
824684 Description of the standard terminology that is used to describe Microsoft software updates


Article ID: 2653669 - Last Review: Jun 5, 2012 - Revision: 1