License Pools
A license pool is a logical grouping of licenses that should be allocated together. Pools are useful when you have specific business rules — VIP allocations, dedicated environments, departmental ownership — that you want to enforce by license group rather than by individual record.
What a Pool Does
A pool is a tag on each license record indicating it belongs to the pool. Pools can be used for:
- Reporting — group licenses for per-pool seat counts and utilization
- Allocation grouping — combined with custom affinity or scoping rules, restrict pool licenses to pool-eligible consumptions
- Cost attribution — roll up license expenditure by pool
The pool itself is a lookup value (Software License Group); each license points at one pool via its Software License Group field.
Creating Pools
The standard workflow uses the Create License Group for Selected menu actions:
- Filter the Licenses query to the licenses you want to group.
- Select them.
- Use Create License Group for Selected from the menu.
- Provide a pool name.
The action sets the Software License Group field on each selected license. You can also set the field directly on individual license records via the editor.
Pool-Aware Allocation
By default, the engine does not enforce pool boundaries — pool is just a tag. Pool A's licenses will allocate to any consumption that matches by affinity, regardless of pool membership.
To make pools allocation-significant:
Option 1: Affinity rule. Add an affinity rule that scores higher when the pool matches:
Affinity Consumption.PreferredPool = License.SoftwareLicenseGroup, 2000
This requires a PreferredPool field on consumptions (typically derived from the asset's department, location, or a custom attribute). The rule prefers pool-matching but does not exclude.
Option 2: Scoping pattern. Use the per-product scoping pattern from Customizing the Calculation: Per-Product Scoping generalized to pools:
Set Consumption.PoolGate = IIF(Consumption.RestrictByPool = 1, Consumption.PreferredPool, -1)
Set License.PoolGate = IIF(License.RestrictByPool = 1, License.SoftwareLicenseGroup, -1)
Requirement Consumption.PoolGate = License.PoolGate
This restricts pool licenses to pool-matching consumptions when the flag is set, and behaves normally otherwise.
Both options are advanced — only adopt them if you have a clear business rule that needs enforcement and the simpler approaches (department/location scoping, direct assignment) cannot express it.
When Direct Assignment Is Better Than Pools
For small VIP allocations (5-10 specific users get pool-A licenses), direct assignment is simpler than pool-based scoping:
- Create the licenses normally.
- Direct-assign each pool license to its target user/computer.
- Done — no rule changes needed.
See Allocation: Direct Assignment. For larger pools or policies that scale across many licenses, the scoping pattern is cleaner.
Pool Reporting
Once pool tags are set, you can:
- Filter the Licenses query by Software License Group
- Group the Licensing Position by pool (via custom report configuration)
- Export per-pool seat counts for departmental chargeback
Related Reading
- Customizing the Calculation: Per-Product Scoping — generalized to pools
- Allocation: Direct Assignment — simpler alternative for small VIP groups
- Concepts: Affinity vs Requirements