True-up arrives, the SAM Pro reconciliation says you are 240 licenses over and 90 short on a different product, and the procurement lead spends three weeks reverse-engineering why. The reconciliation engine does its job correctly; the entitlement model fed to it does not match the contract. Modeling entitlements is the part SAM Pro implementations tend to underbudget.
The contract is the source of truth
Every entitlement record in alm_license should trace back to a specific contract clause. Attach the executed contract PDF, the page reference, and the effective dates. Without this, reconciliation disputes turn into archeology. The discipline of “no entitlement without a contract reference” prevents 80% of true-up surprises.
Metric matters as much as quantity
A 1,000-user entitlement is meaningless without the metric — named users, concurrent users, processor cores, server instances, MIPS, raw devices. SAM Pro supports 30+ metrics; pick the one that matches the contract exactly. The most common modeling error is buying named-user but modeling as concurrent (or vice versa), which makes the consumption math wrong from day one.
Metric examples:
- "Named user" -> distinct users with software installed or accessed
- "Concurrent user" -> peak simultaneous sessions in measurement period
- "Processor core" -> sum of physical cores on hosting CIs
- "PVU" -> processor value units, vendor-specific table lookup
Bundles and suites need component modeling
A vendor bundle (Office, Adobe Creative Cloud, Oracle DB Enterprise) entitles multiple discrete products. Model the bundle as a parent entitlement with child entitlements for each component. Reconciliation runs against the components; the bundle is the procurement view. Skipping this and modeling only the bundle leaves you blind to component-level over-deployment.
Allocation vs consumption
Entitlement allocation is which entity (department, location, cost center) owns a slice of the entitlement pool. Consumption is which user or device is using it. The two should reconcile but often do not — IT bought the entitlement, finance allocated it to departments, and consumption follows neither. Build an allocation table (alm_license_allocation) keyed by department and run reconciliation per allocation, not just globally.
Software model versioning
A “Microsoft SQL Server” entitlement is too coarse. The contract distinguishes Standard, Enterprise, Developer, and Express; major versions; and in some cases minor patches. SAM Pro’s software model (cmdb_sam_sw_install) version normalization needs explicit rules per product family. The default normalization is reasonable for common products and lossy for everything else.
// Custom normalization rule
function normalizeOracleVersion(rawVersion) {
var match = rawVersion.match(/^(\d+)\.(\d+)/);
if (!match) return 'unknown';
return 'Oracle DB ' + match[1] + ' (' + match[1] + '.' + match[2] + ')';
}
Reclamation as a feedback loop
Discovery sees a user with 12 software installations; usage data says they have not opened 8 of them in 90 days. SAM Pro can flag reclamation candidates, but the workflow ends in inbox-bound emails that get ignored. Pipe reclamation candidates into a Service Catalog item that auto-uninstalls (where supported) or generates a request for the user to confirm need. The feedback loop is what makes entitlement modeling pay back.
Common failure modes
True-up modeled annually but consumption changing monthly — at minimum quarterly internal reconciliation, with a pre-true-up dry run 60 days out. License pools commingled across legal entities — separate pools by entity to avoid intra-company allocation disputes. Vendor audit notice handled by procurement alone — SAM Pro should be the system providing the audit response, not a side spreadsheet.
What changed in 2026
The Zurich SAM Pro release added native support for AI/ML licensing metrics (per-call, per-token, per-model-deployment) for vendors that have started shipping these terms. Older releases require custom metrics, which work but require manual reconciliation logic.
What to do this week: pick the three highest-cost vendors in alm_license and verify each entitlement has a contract reference and the correct metric — start there before any reclamation work.