The Flexera Community is currently in maintenance mode to prepare for the upcoming launch of the new community. Click here for more information.
Being able to meter the usage of applications is very helpful to understand where applications are deployed but not used, where applications may be able to be uninstalled to reclaim licenses, where applications are being used heavily, and more. Recently our team has spent some time reviewing and confirming a range of details about application usage metering using the FlexNet inventory agent. I thought I'd share some of the learnings and insights here.
With that in mind, this post covers the following questions:
If you have further questions that are not answered here, post a comment on this post or in the FlexNet Manager forum!
On Windows, usage can be metered for processes running executables that meet one or more the following conditions:
Process can be metered if its executable… |
Notes |
…is identified as the "key" file of a "component" in a Windows Installer (MSI) package that has been installed for all users. |
Usage is not tracked for executables that are installed by a Windows Installer package but that are not identified as a "key" file of a "component" in that package. Usage is also not tracked for files in Windows Installer packages that are not installed for all users. |
…is located under a directory identified by any of the following entries in the "local machine" 32-bit Add/Remove Programs registry settings: InstallLocation, DisplayIcon, UninstallString ...except that if the WindowsInstaller registry entry for the package is set to 1 and an agent version before 17.0 (release 2021 R1) is being used, then usage is not tracked. |
These registry settings appear in child keys under the HKEY_LOCAL_MACHINE\SOFTWARE\ WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall key. |
…is located under a directory identified by any of the following entries in the "local machine" 64-bit Add/Remove Programs registry settings: InstallLocation, DisplayIcon, UninstallString ...except that if the WindowsInstaller registry entry for the package is set to 1 and an agent version before 17.0 (release 2021 R1) is being used, then usage is not tracked. |
This requires the FlexNet inventory agent version 14.2 (from release 2019 R2.2) or later. These registry settings appear in child keys under the HKEY_LOCAL_MACHINE\SOFTWARE\ Microsoft\Windows\CurrentVersion\Uninstall key. |
…is explicitly configured for metering in the application usage component's "manual mapper" configuration settings |
See the question "What are "manual mapper" configuration settings?" for more details. |
On Unix-like operating systems, usage can be metered for any process that is running an executable included in the list of files installed by the native packaging technology for the operating system (RPM for Linux, llp for AIX, etc.)
General recommendations are:
The following configuration settings can be set to control which processes are metered by the application usage component:
Setting |
Description |
Disabled |
Set to "TRUE" (the default) to turn off all usage metering. Set to "FALSE" to turn on usage metering. Other configuration settings further control which processes are metered. |
UseMSI |
Set to "TRUE" (the default) to meter usage of processes running executables installed by a Windows Installer (MSI) package that is installed for all users. Set to "FALSE" to turn off this metering. This setting applies only to Windows. |
UseAddRemove |
Set to "TRUE" to meter usage of processes running executables that are under installation directories identified in the "local machine" Add/Remove Programs registry settings. Set to "FALSE" (the default) to turn off this metering. This setting applies only to Windows. FlexNet inventory agent version 14.2 (from release 2019 R2.2) or later must be used to include 64-bit Add/Remove Programs entries. All versions of the agent include 32-bit entries. |
UserProcessesOnly |
Set to "TRUE" (the default) to only meter processes running as users other than SYSTEM (on Windows devices) or root (on UNIX-like devices). When set to "FALSE", processes running as any user are metered. |
UseManualMapper |
Set to "TRUE" to enable the use of "manual mapper" configuration settings. Set to "FALSE" (the default) to ignore any manual mapper settings that may be configured. See the question "What are "manual mapper" configuration settings?" for more details. |
A typical set of configuration setting values used for tracking metering is as follows:
Setting |
Value |
Is this the default value? |
Disabled |
FALSE |
No |
UseMSI |
TRUE |
Yes |
UseAddRemove |
TRUE |
No |
UserProcessesOnly |
TRUE |
Yes |
UseManualMapper |
FALSE |
Yes |
For the FlexNet inventory agent running on Windows operating systems, configuration settings appear under the HKLM\SOFTWARE\WOW6432Node\ManageSoft Corp\ManageSoft\Usage Agent\CurrentVersion registry key. For example:
For the FlexNet inventory agent running on UNIX-like operating systems, configuration settings are stored in the file /var/opt/managesoft/etc/config.ini which can be modified by running the mgsconfig command as described on the following page: Agent third-party deployment: Updating config.ini on a UNIX Device.
You may have tools available in your organization that can be used to set registry entries on Windows computers, or run the mgsconfig command to configure settings on UNIX-like operating systems. If so, using those tools to set these values may be an effective approach for you.
Alternatively, FlexNet Manager Suite provides a few options for setting these registry entries:
[Usage Agent]
desc0 = Disabled
val0 = False
desc1 = UseAddRemove
val1 = True
-- The value of @TargetName should be set to one 'Target__windows',
-- 'Target__osx' or 'Target__unix' to set policy settings for computers
-- running the identified type of operating system.
--
-- To target multiple types of operating systems, change the value and
-- re-run this script multiple times.
DECLARE @TargetName NVARCHAR(100)
SET @TargetName = 'Target__windows' -- or 'Target__osx' or 'Target__unix'
EXEC dbo.BeaconTargetPutByNameInternal
@Name = @TargetName,
@Internal = 1,
@Description = NULL,
@Visible = 0
-- Get the ID of the target to have settings applied
DECLARE @btid INT
SELECT @btid = BeaconTargetID
FROM dbo.BeaconTarget
WHERE Name = @TargetName
-- Add Disabled=false setting to agent policy for computers
-- covered by the above target
EXEC dbo.BeaconTargetPropertyValuePutByKeyNameBeaconTargetID
@KeyName = 'CUsageAgentDisabled',
@BeaconTargetID = @btid,
@Value = 'false'
-- Add UseAddRemove=true setting to agent policy for computers
-- covered by the above target
EXEC dbo.BeaconTargetPropertyValuePutByKeyNameBeaconTargetID
@KeyName = 'CUsageAgentUseAddRemove',
@BeaconTargetID = @btid,
@Value = 'true'
-- Force beacons to update to get latest settings containing the above changes
EXEC dbo.BeaconPolicyUpdateRevision
The value of the @KeyName parameter used when calling the BeaconTargetPropertyValuePutByKeyNameBeaconTargetID stored procedure should be the name of the setting to be configured appended to "CUsageAgent" (for example, "CUsageAgentUseAddRemove", "CUsageUserProcessesOnly", etc).
"Manual mapper" configuration settings can be set for situations where use of an executable you are interested in is not otherwise being metered. This technique primarily applies to Windows computers.
To use manual mapper configuration settings, you must first arrange to set the UseManualMapper configuration setting to "TRUE" on each computer running the FlexNet inventory agent. (See the question "How can the values of configuration settings be changed?" for suggestions on how to do this.)
Executable files to meter usage for can then be configured by creating registry entries similar to the following (this example is to meter usage of javaw.exe processes):
For each executable to be metered, create a registry key with a name of your choice under HKLM\SOFTWARE\WOW6432Node\ManageSoft Corp\ManageSoft\Usage Agent\CurrentVersion\Manual Mapper. Then configure the following REG_SZ registry entries in the key you have created:
Registry settings are discussed here must be configured using tools and processes available within your organization to deploy the relevant setting values to your client computers. Agent policy or the FlexNet Manager Suite UI cannot be used to configure these settings.
Low level details of metering data gathered by the FlexNet inventory agent can be found on the Discovery & Inventory > Raw Software Usage page. For example:
Recognized installations have "Used" and "Last used date" fields which are populated according to imported metering data. These fields are available in many parts of the UI where details of an installation are shown. For example, when viewing installation details on the Devices tab of an installation record:
A recognized installation of an application on an inventory device in FlexNet Manager Suite is flagged as "used" when:
Minimum thresholds for identifying an installation of an application as used are shown on the Usage tab when viewing the application record in the FlexNet Manager Suite UI (the settings shown in this screenshot are the defaults for all applications unless changed):
Metered usage data from the FlexNet inventory agent is aggregated by week (starting on Mondays) to optimize storage and data processing resource consumption. Hence last used dates of usage should be interpreted to referring to the week when usage occurred, not a specific day.
This indicates that the FlexNet inventory agent did meter some usage of the identified executable, but it was unable to definitively associate the executable with a specific installed software package. An example of why this may be the case is because the executable exists under a directory that is identified as the installation directory for multiple packages (which is not uncommon with some Microsoft Office and Adobe products).
In this situation, a file evidence recognition rule (rather than an installer evidence recognition rule) will be required on the appropriate application in the Application Recognition Library in order to identify installations of the software as used.
For UNIX-like platforms, is not possible or meaningful to effectively identify when an application is "active". For Windows platforms, security improvements after Windows XP removed the capability to identify when a window is active. Therefore the "Total active type" column on the "Raw Software Usage" page only displays a non-zero value when you are tracking usage for applications running on Windows XP or earlier versions of the operating system.
Logging from the FlexNet inventory agent's application usage component can be found in the following files:
These logs contain details of executables where usage will be metered, processes where usage has been metered. Here is an example of logging as it may appear:
[1/15/2020 1:01:26 PM (G, 0)] {8724} Adding product 'Self-service Plug-in' (priority 10) to product cache
[1/15/2020 1:01:26 PM (G, 0)] {8724} Adding file 'C:\Program Files (x86)\Citrix\Online Plugin\SelfServicePlugin\SelfServicePlugin.exe' to product 'Self-service Plug-in'
[...]
[1/17/2020 2:06:55 PM (G, 0)] {8724} Session logging: KNOWN PRODUCT Session start (Path: C:\Program Files (x86)\Citrix\Online Plugin\SelfServicePlugin\SelfService.exe, Product: Self-service Plug-in, Product version: 4.9.6000.5) Session will be added to cache on completion
[...]
[1/17/2020 2:08:56 PM (G, 0)] {8724} Session logging: KNOWN PRODUCT Session end (Path: C:\Program Files (x86)\Citrix\Online Plugin\SelfServicePlugin\SelfService.exe, Product: Self-service Plug-in, Product version: 4.9.6000.5, Run time: 120.341248400 seconds) Session was added to cache.
Here are some known limitations and issues related to usage metering to be aware of:
Description | Affected versions |
Processes from executables that don't meet the conditions described in the section "What processes can the FlexNet inventory agent meter usage for?" are not metered. As one example, metering will typically not be done for applications that are installed on a "per-user" basis on Windows computers (unless manual mapper configuration settings are explicitly used to identify such executables). |
All |
Usage data for .exe files metered by the FlexNet agent with a file version value longer than 32 characters may be ignored by import process (IOJ-1890554) | All |
User's domain may be reported as the computer's domain in usage metered by the FlexNet agent (IOJ-1899773) | All |
Usage .mmi files may fail to import if any software names end with a digit or special character and contain a "\" after the last space (IOJ-2181551) | All |
Usage MMI files containing "?" characters in application details may fail to import (IOJ-2240193) | All |
Usage agent preference settings are reverted to default values when the FlexNet inventory agent is upgraded on Windows (IOJ-2239172) | All |
Usage that occurs after the last MMI file is generated in a week is reported in the following week (IOK-1059439) | All |
Usage installer evidence may not be imported when the installer evidence name includes the version number (IOK-1007093) |
FlexNet Manager Suite on-premises server versions prior to 2023 R1 This problem does not affect FlexNet Manager Suite Cloud |
Usage files may not be generated and uploaded from Windows computers which are not turned on for at least 24 hours (IOJ-1902994) | Agent versions before 2023 R1 (release 20.1) |
Usage agent on Linux generates excessive logging related to the Docker monitor daemon (IOJ-2249304) | Agent versions before 2022 R1 (release 18.0) |
usageagent.log does not rotate until usage agent is restarted, potentially leading to log files growing very large over time (IOJ-2243344) | Agent versions before 2022 R1 (release 18.0) |
AgentID may be obtained from agent history instead of AgentUniqueID causing usage data to fail to be associated with the expected computer record (IOJ-2233432) | Agent versions before 2021 R1.4 (release 17.4) |
Used application details may be represented as "????" in usage MMI files if application details contains multi-byte Unicode characters (IOJ-2227649) | Agent versions before 2021 R1.3 (release 17.3) |
Usage is not tracked for executable files in the installation directory of a Windows Installer package that are not identified as an MSI component key file, even if UseAddRemove preference is set to true (IOJ-2203434) | Agent versions before 2021 R1 (release 17.0) |
Massive usage active time values may be reported by the FlexNet inventory agent from computers that are in a suspended state at 12am on Monday mornings (IOJ-1719198)</> | Agent versions before 2020 R2.5 (release 16.5) |
Usage agent on Windows generates excessive logging related to the Docker monitor service (IOJ-2181680) | Agent versions before 2020 R2.1 (release 16.1) |
FlexNet inventory agent may return an blank AgentID value in usage data, leading to data associated with unrelated computers being merged (IOJ-2158685) | Agent versions before 2020 R2.1 (release 16.1) |
Software usage data from different devices are merged to a single computer record usage files have a blank AgentID value (IOJ-2158680) |
FlexNet Manager Suite on-premises server versions from 2019 R2 to 2020 R2 This problem does not affect FlexNet Manager Suite Cloud |
Usage may not be metered for executables under installation directories identified in 64-bit Add/Remove Programs registry settings (IOJ-2111789) | Agent versions before 2019 R2.2 (release 14.2) |
Usage may be reported against the wrong application if multiple applications have the same install directory identified in Add/Remove Programs registry settings (IOJ-2111792) | Agent versions before 2019 R2.2 (release 14.2) |
Usage of 64-bit applications and applications with a non-unique install path may not be tracked when agent UseAddRemove preference is "true" (IOJ-1664037) | Agent versions before 2019 R2.2 (release 14.2) |
An installation may not be shown as used based on metering by the FlexNet agent if usage recognition depends on a file evidence recognition rule (IOJ-2114072) |
FlexNet Manager Suite on-premises server versions from 2015 to 2019 R2 This problem does not affect FlexNet Manager Suite Cloud |
Installations of suite applications may not be reported as used when component applications have been used (IOJ-1771160) |
FlexNet Manager Suite on-premises server versions prior to 2021 R1 This problem does not affect FlexNet Manager Suite Cloud |
The following resources may be useful for more information: