Report Available: Fixlet Compliance by Computer Group

(imported comment written by choro)

Hello,

I installed the report as specified but keep getting the “Loading…” and nothing happens.

We have WebReports installed on the E: not the C:, is this a problem?

(imported comment written by Lee Wei)

Hi Choro,

It is possible that the JavaScript libraries are not expanded into the right location.

The \ext directory goes under

C:\Program Files\BigFix Enterprise\BES Server\BESReportsServer\wwwroot\

You know the installation is correct if you can access files within the \ext folder by using using this URL:

http://<server_name>:<web_reports_port>/ext/ext-all.js

On my system, it would be:

http://corona:52312/ext/ext-all.js

You should see some copyright info for the JavaScript code.

Lee Wei

(imported comment written by choro)

Hello Lee,

I put the link in and replaced corona with our server and received the following info.

Looks like it is in the right place.

We are running BES v7.0.9.164 and have over 5k computers.

/*

*/

Ext.DomHelper=function(){var s=null,j=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,l= … etc…

(imported comment written by Lee Wei)

Choro,

Next we should make sure that the report is not just slow.

You should use a baseline with a few Fixlets, and a computer group with a few computers.

This will make sure that the report is not just being slow.

What browser are you using?

Note that IE7/8 is slow, IE6 is too slow. If performance is our issue, do consider trying this in FireFox.

Lee Wei

(imported comment written by choro)

Hi Lee,

I’m getting the “Loading…” before I run the report.

I go to “Reports”, click on the report and get “Loading…” before i select anything.

I’ve tried it on FireFox and have the same problem.

(imported comment written by jonaserlundhammarback91)

Hi Lee

I have two questions:

  1. Is it possible to exclude/hide fixlets and tasks in a report based on a Baseline? I have some administrative tasks in my baselines and these tasks are not relevant to show in a report.

  2. I only get “Loading…” in the pdf when i create a pdf with “Export to pdf”. Should i use the standard print function in Firefox instead?

/Jonas

(imported comment written by Lee Wei)

For Choro,

I worked with Choro and we find that the report does not work with BigFix version 7.0.9.164.

So I will update the requirements to indicate this, thanks Choro.

Lee Wei

(imported comment written by Lee Wei)

Hi Jonas,

  1. I am not familiar with the PDF export. I have to look into that at some point. So yes you are correct that please try the standard print function from within the browser. For each of the datagrid, you can also print the data.

  2. Yes, it is possible for you to write Session Relevance to hone in on all the Fixlets in a baseline minus some.

  • In the Content combo box, select the last item “Custom Relevance Expression”. This allows you to write a query to pull any number of Fixlets.

  • The query we want can start by identifying the Baseline, then filter out the admin tasks. Here is an example.

    source fixlets whose ( name of it does not contain
    "Project" ) of components of component groups of bes fixlets whose ( baseline flag of it =

    true and name of it contains
    "December 2009" )

In this case, “December 2009” identifies your original Baseline. “Project” is the word found in the admin tasks.

Lee Wei

(imported comment written by jonaserlundhammarback91)

Hi Lee

I tried to just cut and paste your code and replace “Project” and “December 2009” with my values, but I get this error message:

Error: The operator “operating system” is not defined.

The complete relevance statement is:

unique values of (id of it as string & “||” & ("" & name of it & “”) & “||” & (if (exists operating system of it) then (operating system of it) else (“Unknown”)) & “||” & (if (exists ip addresses of it) then (concatenation ("

“) of (ip addresses of it as string)) else (” ")) & “||” & ((year of it as string & “/” & month of it as two digits & “/” & day_of_month of it as two digits) of date(local time zone) of it & " "& (two digit hour of it as string & “:” & two digit minute of it as string & “:” & two digit second of it as string) of time (local time zone) of it) of last report time of it) of source fixlets whose ( name of it does not contain “Project” ) of components of component groups of bes fixlets whose ( baseline flag of it = true and name of it contains “December 2009” )

How should the code be if I also need to filter the computers in the report.

I have a set of custom properties I would like to filter on, “Customer” and “Group”

BR

Jonas

(imported comment written by Lee Wei)

Jonas,

Looks like you entered the Relevance into the “Computer Group” filter.

You need to enter it in the “Content” filter instead on the left.

The example statement is only for Fixlets.

To filter on the computers, you should create a Computer Group within the Console first. Then use the Computer Group in this report.

Lee Wei

(imported comment written by Leigh91)

Hi Lee, clicked on the FixletComplianceByComputerGroup.besrpt link on the first post and receive the following message:

Important Information

Loading…

Remaining screen is blank…no content, nadaa…

Report looks great, can’t wait to get it up and running…

(imported comment written by Lee Wei)

Hi Leigh,

You don’t just click on the link. Rather, we need to download the file FixletComplianceByComputerGroup.besrpt, then create a report from it.

Create the report by going to the Web Reports Create section.

Scroll to the bottom to find “Blank Report”, click next, and paste the content of the FixletComplianceByComputerGroup.besrpt report file.

Report name can be “Fixlet Compliance by Computer Group”.

Let me know if you are having problems.

Lee Wei

(imported comment written by Leigh91)

Lee,

Still having a problem viewing the content of FixletComplianceByComputerGroup.besrpt - see attached

Rgds

Leigh

(imported comment written by Lee Wei)

Leigh,

You cannot just click on the URL in the post to run the report, it has to be downloaded and loaded into WebReports.

Your screen shot shows the report going to my web site, it has to be run from your Web Reports Server.

You can follow these steps posted in the beginning to this thread.

If you still have problem, you can send me a private message with your contact info and I am happy to walk you through the steps.

Lee Wei

(imported comment written by SystemAdmin)

Lee Wei

  • In the Content combo box, select the last item “Custom Relevance Expression”. This allows you to write a query to pull any number of Fixlets.

The query we want can start by identifying the Baseline, then filter out the admin tasks. Here is an example.

source fixlets whose ( name of it does not contain
"Project" ) of components of component groups of bes fixlets whose ( baseline flag of it =

true and name of it contains
"December 2009" )

In this case, “December 2009” identifies your original Baseline. “Project” is the word found in the admin tasks.

Lee Wei

Lee,

I have been trying to incorporate the same logic within the report itself as we have a task that updates a global property we have called “Last Patch Date” in each of our patching baselines, so right now it shows “not compliant” where the task by itself should not be considered for the overall compliance against the baseline. The weird thing is that when I use “Custom Relevance Expression” and put the code in it works without an issue. When I put the code in fixlet_compliance.js it does not (see the portion of the file that I am modifying for it below - Type B). Is there something that I am missing? Thank you in advance.

if (type == 
'B') 
{ fixletFilter = 
'(source fixlets whose (name of it does not contain "MGTI - PROD - ALL - Update Last Patch Date") of components of component groups of bes fixlets whose (baseline flag of it = true and name of it = "' + contentName + 
'"))'; 
} 

else 

if (type == 
'S') 
{ fixletFilter = 
'(fixlets whose (fixlet flag of it = true) of bes sites whose (display name of it = "' + contentName + 
'"))'; 
} 

else 

if (type == 
'C') 
{ fixletFilter = 
'(bes fixlets whose (display name of site of it = "Patches for Windows (English)" and source severity of it as lowercase = "critical" and name of it as lowercase does not contain "corrupt patch" and name of it as lowercase does not contain "superseded"))'; 
} 

else 

if (type == 
'R') 
{ fixletFilter = textAreaFixlet.getValue(); 
} 

else 

if (type == 
'A') 
{ fixletFilter = 
'(bes fixlets whose (fixlet flag of it = true and display name of site of it = "Patches for Windows (English)" and name of it as lowercase does not contain "corrupt patch" and name of it as lowercase does not contain "superseded" and source release date of it >= date "' + patchTuesdayCurrent + 
'" and source release date of it <= date "' + patchTuesdayCurrentEnd + 
'"))'; 
} 

else 

if (type == 
'D') 
{ fixletFilter = 
'(bes fixlets whose (fixlet flag of it = true and display name of site of it = "Patches for Windows (English)" and name of it as lowercase does not contain "corrupt patch" and name of it as lowercase does not contain "superseded" and source release date of it >= date "' + patchTuesdayPrevious + 
'" and source release date of it <= date "' + patchTuesdayPreviousEnd + 
'"))'; 
} 

else 

if (type == 
'E') 
{ fixletFilter = 
'(bes fixlets whose (fixlet flag of it = true and display name of site of it = "Patches for Windows (English)" and name of it as lowercase does not contain "corrupt patch" and name of it as lowercase does not contain "superseded" and source release date of it >= date "' + patchTuesdayPrevious2 + 
'" and source release date of it <= date "' + patchTuesdayPrevious2End + 
'"))'; 
}

(imported comment written by Lee Wei)

ageorgiev,

The relevance statement that you modified looks correct.

What is the error that you are getting?

If you run the statement below, are you getting the results expected?

You can put “number of” or “names of” in front of you statement:

names of (source fixlets whose (name of it does not contain “MGTI - PROD - ALL - Update Last Patch Date”) of components of component groups of bes fixlets whose (baseline flag of it = true and name of it = “December 2009”))

or

number of (source fixlets whose (name of it does not contain “MGTI - PROD - ALL - Update Last Patch Date”) of components of component groups of bes fixlets whose (baseline flag of it = true and name of it = “December 2009”))

If you send me a private message, I would be happy to walk you through fixing this.

Lee Wei

(imported comment written by Lee Wei)

ageorgiev’s issue update.

I worked with ageorgiev, and we found that the Firefox browser was caching the Javascript file he modified, causing the results to be unexpected.

A proper refresh generates the correct output he expected.

Lee Wei

(imported comment written by jonaserlundhammarback91)

Hi Lee

I have implemented this in the report, and it’s working just fine. But we have grouped our customer machines by custom settings called “Customer” and “Patch Group”. How can I implement filtering on both the “Customer” and the “Patch Group” fields?

Would it be possible to add new drop down boxes for these fields?

I have also a question regarding the export to Excel. It’s possible to hide columns in the report view, but this does not reflect what’s exported. All columns are always exported to the Excel file.

Best Regards

Jonas

(imported comment written by MattBoyd)

Lee, this is very cool. Is there any way to group by Fixlet instead of computer so that you can see a list of computers that are missing a specific fixlet?

I’m going to have to check out Ext-JS.

(imported comment written by Lee Wei)

Hi boyd,

Yes, you can Group By the different fields in the grid.

Look for that little triangle control on the column headings.

Lee Wei