Skip to main content
Version: 10.2

Feature Set Mapping

Introduction

The core aspect of any chargeback/Pay-Per-Use system revolves around normalizing the data to enable comparison between usage and purchasing information.

For certain applications, there is no one-to-one match between the licenses (features) used and the application. Often, several applications can share a license, making it difficult to pinpoint which application used it.

Feature set mapping maps the licenses back to applications (feature sets), primarily considering cost. It aims to identify the cheapest possible combination of feature sets that include all features checked out at any given time.

This is applicable for all data types with featureset classification.

warning

Apply the configurations shown in the Open iT Core Server.

Feature Set Mapping Guide

The feature set configuration consists of the DEFAULT, GROUP, and UNMAPPED blocks.

Sample featureset.map
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all

GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"

GROUP "ANSYS CFD Pro"
@count=99999
@cost=4
general:
featureset="ANSYS CFD Pro"
elements:
feature="cfd_base"
feature="cfd_solve_level1"

UNMAPPED
general:
featureset=unmapped
used_licenses=1
licenses=1

DEFAULT

Use the DEFAULT block to set common attributes, rules, and general assignments. There should be only one DEFAULT block in a featureset.map file and it should be identical to all such files:

DEFAULT
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all

As you noticed, the DEFAULT block consists of two sections: rules and general.

Specify the rules as methods with additional details.

DEFAULT
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
ExampleDescription
ignore used_licenses < 1Use this to specify the number of license use to ignore. By default, it is set to ignore any record without actual license use. Other available operators are <=, >, >=, ==, and !=.
count used_licensesUse this to specify the record field that holds the feature count.
DEFAULT: Rules

The general sub-block lists a set of assignments of values to record fields. There should be only one assignment of value per line, following the format <name>=<value>.

DEFAULT
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all

The record fields are indexed by the following names:

NameDescription
used_licensesThis specifies the licenses in use.
licensesThis specifies the maximum available licenses.
featureset_versionThis specifies the feature set version.
DEFAULT: General Assignments

A value can either be a fixed value or a variable. Variable names must be enclosed in %.

ExampleDescription
%count%The number of instances of the group in the current combination.
%totalcount%The count value defined for each group (i.e., maximum possible group instances).
DEFAULT: Possible Values for General Assignments

Optionally, you can add the configuration-override sub-block under DEFAULT to override the method used to generate feature sets.

Sample method override
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
configuration-override:
method=complete
Note

By default, the method used is defined in the filter's XML configuration file. Specifying a method in the featureset.map file overrides the default configuration.

MethodsDescription
completeThis method produces optimal results but operates at a slow pace. This approach checks for every possible constellation of groups and then picks the optimal one.
cheapest-firstThis method produces sub-optimal results but operates at a fast pace. This approach picks the cheapest groups first and fills them up as much as possible.
expensive-firstThis method produces sub-optimal results. It is not as fast as cheapest-first but has better results. This approach figures out which groups to include (cannot avoid), picks the most expensive first, and then fills it up as much as possible. We're then left with fewer features for the next most expensive group and so on.
autoThis automatically selects between complete or expensive-first depending on the data size.
DEFAULT: Possible Values for Method

Note

By default, method is set to expensive-first.

The expensive-first method comes with a configurable find-largest algorithm that fills up all the groups at the same (high) cost, then picks the one containing the most features. The result is better but can take more time to complete. This is inactive by default.

To enable this functionality, add expensive-first.find-largest=true under configuration-override:

Enable find-largest
DEFAULT
rules:
ignore used_licenses < 1
count used_licenses
general:
used_licenses=%count%
licenses=%totalcount%
feature_version=all
configuration-override:
expensive-first.find-largest=true

Here are some reminders when using configuration-override:

  • Since method=expensive-first is the default, there's no need to specify an override for this method.
  • The expensive-first.find-largest entry applies only when method=expensive-first, so there is no point in overriding it when any other method is used.
  • For the above reasons, it's typically unnecessary to specify both entries in a feature set map file. You can either specify a different method or use find-largest with the default method=expensive-first.

GROUP

GROUP blocks are the definition of each feature set.

GROUP
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"

This is where you define the attributes, such as the count, cost, and validity of the feature set; general details, such as the featureset name; and the elements that lists the individual features, vendor licenses, etc..

Note

Values defined in the DEFAULT block can be overridden by those specified in individual GROUPs.

Attributes are values defined by a keyword (attribute name), and each keyword is preceded by @.

Attributes
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
AttributeDescription
countThis specifies the maximum number of instances allowed for the group.
costThis specifies the cost for the group.
valid_from (e.g., @valid_from=2010-01-01)This specifies that the group cannot be used before this date (if not specified, then the group is valid from any date).
expires (e.g., @expires=2012-01-01)This specifies that the group cannot be used on or after this date (if not specified, then there is no expiration).
GROUP: Possible Attributes

Similar to the DEFAULT block, the general sub-block allows you to list general details about the feature set. Refer to the GROUP: General Assignments table below for the available record fields.

general
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"

The elements sub-block lists the record indices where the value must match to be eligible for the group.

elements
GROUP "ANSYS Startup Program - Structural and Fluids Bundle"
@count=99999
@cost=6
general:
featureset="ANSYS Startup Program - Structural and Fluids Bundle"
elements:
feature="anshpc_pack"
feature="cfd_base"
feature="cfd_solve_level1"
feature="cfd_solve_level2"
IndexDescription
featureThis specifies the license feature name.
feature_versionThis specifies the feature version.
featuresetThis specifies the feature set name.
featureset_versionThis specifies the feature set version.
productThis specifies the vendor license name.
packageThis specifies the license package name.
GROUP: General Assignments

Each line defines a unique value set where all values must match. If a record matches any line, then it is eligible.

Example
elements:
feature="Concentric Circles" feature_version=3.14
feature=Squares
product=Geometry

With the example above, if a record's feature name is Concentric Circles and its version is 3.14, or its feature name is Squares, or its vendor license name is Geometry, then it is eligible for this group.

UNMAPPED

Any feature eligible for a feature set but is not actually assigned to a set will be assigned to the UNMAPPED set.

Example
UNMAPPED
general:
featureset=unmapped
used_licenses=1
licenses=1

Configuring Feature Set Mapping

  1. Open featureset.map in the Configuration directory, which is by default in C:\Program Files\OpeniT\Core\Configuration.

    Notice that it contains instructions on how to edit the file.

  2. Modify the mapping file. Refer to the Feature Set Mapping Guide above.

    Note

    Values containing spaces and/or tabs must be enclosed in double quotes ".

    Empty lines are allowed — any line beginning with # as the first non-white character is considered a comment.

  3. Save the changes.

This mapping may affect the following data types:

Next Steps?

Proceed with data regeneration after configuring all the necessary mapping files to apply the changes in the real-time and historical reports.

For real-time reports:

For historical reports: