Zoomed Image

Affinity vs Requirements: How Licenses Are Chosen

Software Asset Management Guide
Concepts

Affinity vs Requirements: How Licenses Are Chosen

When more than one license could cover an install, the engine has to choose. It uses two different mechanisms — requirements and affinity — and they work in very different ways.

Understanding the difference matters because it explains why the engine sometimes picks a license you would not have picked yourself, and what to do about it when that happens.

Requirements

A requirement is a rule that must be satisfied. If a license fails a requirement, it cannot be used to cover the consumption — the engine excludes it from consideration entirely.

The built-in requirement is location:

Requirement: Consumption.LocationID within License.LocationID

The consumption's location must be within (or equal to) the license's location.

Consumption Location License Location Result
London Floor 2 London Floor 2 Eligible (exact match)
London Floor 2 London Eligible (within hierarchy)
Bath London Excluded
(any) (no location set) Eligible (no requirement when license is unscoped)

Requirements are how you enforce policies that say "Adobe licenses purchased by the London office can only cover London assets." A license in London simply will not be considered for a Bath asset, regardless of what else is true.

Affinity

Affinity rules do not exclude — they score. Each rule that matches a license-consumption pair adds points to a total. The engine computes the total for every eligible license and picks the highest score. If the chosen license is at capacity, the engine moves down the list.

The default affinity rules and their weights:

Rule Exact Match Hierarchy Match
Department +3000 +1500
Location +800 +400
Cost Centre +300 +200
Custodian +1000 n/a
CPU Cores exact match +1500 n/a
Big server prefers Processor license +1000 n/a
Small server prefers Core license +1000 n/a

"Hierarchy match" means the consumption's value is a child of the license's value (e.g., "London Floor 2" is within "London"). Exact match always beats hierarchy match.

A Worked Example

A consumption needing a license:

  • Asset: DONNA-PC
  • Department: Accounts Payable Dept (child of Accounts Dept)
  • Location: Bath
  • Cost Centre: Accounts Payable
  • Custodian: Donna Hambly

Two candidate licenses, both eligible (no location requirement broken):

License A — Location: Bath, Department: Accounts Payable Dept, Cost Centre: Accounts Payable, Custodian: Donna Hambly

Rule Match Points
Department exact +3000
Department hierarchy +1500
Location exact +800
Cost Centre exact +300
Cost Centre hierarchy +200
Custodian exact +1000
Total 6800

License B — same as License A but no Custodian assigned

Rule Match Points
Department exact +3000
Department hierarchy +1500
Location exact +800
Cost Centre exact +300
Cost Centre hierarchy +200
Custodian exact 0
Total 5800

License A wins by 1000 points (the custodian rule broke the tie).

Tie-Breaking

If two licenses score identically, the lower AssetID wins. In practice this means the license that was created first wins ties. The behaviour is deterministic — recalculations produce the same result every time.

Capacity Always Applies

Affinity decides which licence to prefer; capacity decides whether the engine can actually grant. If the highest-scoring license is at capacity, the engine moves to the next-highest. If no license has capacity, the consumption is left in deficit — it appears in the position as an outstanding requirement.

Why This Matters

Two practical consequences:

  1. You may see allocations you would not have made manually. If a Bath asset has no Bath license available but a London license has free seats, the engine grants from London (assuming no location requirement is broken). That is correct — you bought the right; the asset needs it; the engine does its job. Affinity nudges toward the "right" license but never excludes a feasible one.

  2. You can change the behavior. Both the rules and their weights are editable through the Calculate → Configure dialog. See Customizing the Calculation. Common changes: making department a hard requirement for specific publishers (Adobe), boosting the weight on cost centre, adding new affinity dimensions.

Direct Assignment Overrides Affinity

If you want to force an allocation regardless of affinity scoring, you can directly assign a license to a computer. Direct assignments are processed first, before affinity-based allocation runs. See Allocation: Direct Assignment.