Zoomed Image

Recalculation Behavior

Software Asset Management Guide
Licensing Position

Recalculation Behavior

When you recalculate, the engine deletes transactions from the start date forward and rebuilds them. This page goes deeper on the behavior, the operational implications, and the patterns that keep historical reporting stable.

What Gets Deleted

A recalculation starting at date X deletes every transaction with ApplyDate >= X. That includes:

  • Consumptions for assets whose service date is on or after X (or had changes affecting the current consumption)
  • License evidence records dated on or after X
  • Grants whose apply date is on or after X
  • Reversals dated on or after X

After deletion, the engine rebuilds based on current state of assets, licenses, and rules.

What Stays

Transactions with ApplyDate < X are untouched. This means:

  • Consumptions posted in earlier periods stay
  • Grants from earlier periods stay
  • Historical reports for periods before X reproduce identically

This is what makes "recalculate the current period only" a safe operational pattern.

A Worked Example

Starting state at end of March:

Period Transactions
January Consumption + Grant for SQL01 (apply Jan 15)
February Consumption + Grant for SQL02 (apply Feb 10)
March Consumption + Grant for SQL03 (apply Mar 5), Reversal for SQL01 (apply Mar 20, asset disposed)

Now you recalculate from March 1 (Start Date = 01-Mar):

  1. Delete: All transactions with apply date ≥ Mar 1 — that is the SQL03 consumption + grant, and the SQL01 reversal.
  2. Re-post: The engine looks at current state and re-posts what should exist for March:
    • SQL03 still in service → consumption + grant get re-posted with apply date = SQL03's service date (which is in March, so the new transactions appear in March)
    • SQL01 still disposed (the disposal happened in March, before the recalculation Start Date does not move it) → reversal re-posted

End state: identical to before, but the March transactions are technically new (different transaction IDs).

This is a no-op recalculation — nothing changed in the underlying data, so the rebuild produces the same result.

Now imagine you also imported a new license on March 25 (after the original end-of-March calculation but before this recalculation). When you recalculate from March 1:

  • The new license's evidence transaction is posted with apply date Mar 25
  • Grants for any consumptions that the new license can cover are added
  • The position for March now includes the new license

This is the expected behavior — recalculating the current period picks up the new license's contribution.

Same-Period Delete vs Different-Period Reverse

Changes processed within the same period that originally posted a grant cause that grant to be deleted outright (because recalculation starts by deleting everything from the start date forward). Changes processed in a later period post reversals instead, preserving the historical position.

Example A — same-period change, grant deleted:

Same-period recalculation deletes the original grant Three October events: original grant from License A on Oct 1; SQL4 moved Oct 10; recalculation Oct 20 deletes the License A grant and posts a new grant from License B. No reversal is created. October period — recalculated within itself Grant from License A Oct 1: calculate later deleted SQL4 moves London → Bath Oct 10: data change New grant from License B Oct 20: recalculate Oct Result License B grant only — no reversal

Example B — different-period change, reversal posted:

Different-period recalculation posts a reversal October grant for DONNA preserved as historical record. November calculation posts a reversal with apply date Oct 20 matching the disposal. Net rights are zero across two transactions, both preserved. October — closed period November — current period Grant for DONNA, +1 Oct 15: original grant preserved as history Reversal posted, −1 Nov 5: calculate Nov (DONNA disposed Oct 20) Result Net = 0, two transactions historical position intact

This is why the recommended operational pattern is to recalculate the current open period only. Routine recalculation produces stable historical reports because reversals are used for cross-period changes; full historical recalculation rewrites everything via deletion and rebuild, which is sometimes what you want but should be a deliberate choice.

When Recalculation Changes Historical Numbers

Three scenarios where recalculation visibly changes the past:

1. You set a Start Date in the past. Going back to last year's start date will delete a year of transactions and rebuild them. Any data quality fixes, license corrections, or rule changes you have made in the meantime will affect how the past is rebuilt.

2. You change the calculation rules and recalculate. The new rules apply to whatever period you recalculate. Historical periods recalculated under new rules may produce different allocations than before.

3. You change a catalog entry's License Type. Consumptions are re-metered with the new type. A product previously per-computer becomes per-core, and the consumption counts for cores instead of devices.

In all three cases, the recalculation is doing exactly what you asked. The implication is just to be aware before doing it.

The Safe Pattern

For routine operations:

Start Date: first of current month (or current quarter)
End Date:   today

This recalculates the open period only. Historical periods stay stable. Reports you generated yesterday still reproduce.

For rule changes (see Customizing the Calculation: Testing Rule Changes):

Start Date: first of current month
End Date:   today

Same pattern. The new rules apply going forward; history is preserved.

When You Genuinely Need to Recalculate History

Reason Approach
Historical data was wrong (e.g., a license was missed) Recalculate from the date the missing license was effective
New rules should apply retroactively for a known period Recalculate that exact period; document why
Auditor wants the position recomputed under current rules for a past period Recalculate that period; understand previously-shared reports may not reproduce

For each, document the event so future audits know what happened. The transaction-level audit trail is preserved (every transaction has an apply date), but the rationale for any recalculation event lives outside the transaction data.

Frequency of Recalculation

Pattern Frequency
Production environment with regular discovery Nightly (off-peak)
Smaller environments or weekly discovery Weekly
Pre-audit verification On demand, with the audit's exact period
After bulk license import Once, immediately after the import
After catalog change Once, after the change is committed

Scheduled nightly is the most common production pattern. See Operations: Scheduling and Monitoring for setting that up.