The default software inventory filter is composed of "Filter Definitions" and "Cleaning Filters". Filter definitions will collect the value without checking if it's needed, then the module will pass the resulting list through the cleaning filters to clean the results from, as an example, too many version numbers or to clean it up from executables that do not have any product name, manufacturer or version set in their details.
1- Create a new software inventory filter:
- Hardware and software inventory filters can be edited and created in the sub node "Global Settings" > "Inventory Filters" > "Software Inventory"
- Right click on the sub-node or on the right window and select "Create filter"

Note that the new software filter (1) in the screenshot below will be a copy of the default software inventory filter.
2- Filter Definitions:
An application which matches a certain pattern set in the filter definitions will be collected first by the software inventory module when it will be scanning the path that is set in the device software module configuration or the one that has been set in the step used to scan the devices.
Important: The filter "Main Filter" must always be the last filter definition of the list. Filters which would collect dll, exe or ocx files that would be added after will not be taken into consideration.
The following uses the "Main Filter" to explain how this is used. The same applies to any existing or new filter definition that would be added.
2.1 The "General" tab
The name of the filter definition (2) is set and whether it accepts data gathered by this filter definition or rejects it:

If it's set to "Reject" it will reject the applications that matches the "MATCHFILE tag".
If it's set to "Accept" it will collect the application that matches the "MATCHFILE tag", then pass it on to the "Cleaning Filters"
2.2 The "MATCHFILE Tag" tab
Set what the filter is supposed to match on:

In this example, the filter collects all the exe, dll and ocx files it will scan (see the column "Value").
Important: the regexs used in the software inventory filter are PCRE. This website, as an example, can be used to test Matchfile tags: https://regex101.com/
2.3 The "CREATE Tag" tab
Set what should output when the "MATCHFILE tag" has matched on something:


For this example, the filter definition will set the following:
- read values from the executable details for the "Tag Names":
(1) "NAME" -> "FileDescription" -> "BMC Client Management Agent"
(2) "MANUFACTURER" -> "CompanyName" -> "BMC Software SAS"
(3) "VERSION" -> "Product Version" (or "FileVersion") -> "12.9.0.200124l" (this will most change when the cleaning filters will run)
- not write anything in the field "DESCRIPTION"
- set the type "Application" (4):This is not read from the exe, it is set statically.
3- Cleaning Filters:
Once the module has collected applications, it will start cleaning the results using these filters. This is useful to clean false positives (e.g application installers) but can also exclude applications or informations that are not required to appear in the devices software inventories, e.g:

Some cleaning filters won't exclude applications but they will clean some data out such as the number of digits in the application version numbers (see above). A lot of customers need to list more than two digits. As an example, the following Knowledge Article (KA) explains how to edit a cleaning filter so it keeps three digits instead of two: Client Management: How to only keep 3 first digit on software version. This should help understand the way cleaning filter work, and how to modify them.
Important: the regex's used in the software inventory filter are PCRE(Perl Compatible Regular Expressions).
This website, as an example, can be used to test Matchfile tags: https://regex101.com/
4- Deploy the new software inventory filter:
Once a new filter is created it must be assigned to the devices in order to replace the existing software inventory filter. The device not assigned to the new filter will keep using the older and therefore upload inventories that will not match the other devices.
It is best to assign the new software inventory to a dynamic group containing all devices, so every time any device is added in the device group it will be assigned automatically to the new filter:

5- Update the software inventory:
Once the new software inventory filter will have been successfully deployed to devices, a new software inventory must be requested to the devices. This is done either through a manual action or by waiting for the next automatic execution of the software inventory, according to what is set in Agent Configuration > Module Configuration > Software Inventory of the devices. More information on how to request software inventories in the following KA: Client Management: How to configure and run the software inventory on a device that runs an agent.
6- Troubleshoot
The following KA provides some practical examples of issues that may be encountered and how to solve them: Client Management: Troubleshooting -The Software Inventory Filter.
Notes:
- It is recommended to use the "Differential Upload" method to:
- lower bandwidth usage
- limit the growth of the table "InventoryHistory" in the database.
- Check the following KA to learn how to deploy this new filter to the next devices that will be deployed: Client Management: How to set a new inventory filter into rollout configuration.
- Software Inventory filters can also be used to gather other type of files, for example .accdb access database files, but the custom inventory would be preferred instead, for clarity of the software inventory.