Automation Philosophy
- Compliance first - every automation protects against audit exposure
- Proactive alerts - notify before problems become critical
- Cost optimization - identify savings opportunities continuously
- Discovery integration - automate data flow from discovery tools
Compliance Position Calculation
Weekly Compliance Calculation
Calculate compliance position for each tracked product on a scheduled basis.
Processing Logic:
For each tracked Software Product:
- Sum Entitlements:
objectType = "Entitlement" AND Product = "{ProductKey}" AND Status = "Active"
Calculate: SUM(Quantity) grouped by Metric
- Count Deployed (Per User):
objectType = "Installation" AND Product = "{ProductKey}" AND Status = "Active"
Count unique Device.Primary User
- Calculate Gap:
Gap = Deployed Quantity - Entitled Quantity
- Determine Status:
If Gap <= 0: "Compliant"
If Gap < 0 AND Gap < -20% of Entitled: "Over-Licensed"
If Gap > 0: "Under-Licensed"
If Cannot Calculate: "Unknown"
Under-Licensing Alert
Under-Licensing Detection
Alert when compliance position changes to under-licensed.
Trigger:
Object updated - Compliance Position
Condition: "Compliance Status" = "Under-Licensed" AND Status = "Current"
Notification Tiers:
| Exposure | Recipients |
|---|---|
| < $10,000 | SAM Analyst |
| $10,000 - $100,000 | SAM Manager, Procurement Lead |
| > $100,000 | SAM Manager, Procurement Lead, Finance Controller |
Email Template:
License Harvesting
Unused Installation Detection
Identify installations with no recent usage for license reclamation.
Query:
objectType = "Installation" AND Status = "Active" AND "Last Used" < now(-90d) AND "Last Used" IS NOT EMPTY
Actions:
- Update Installation Status from "Active" to "Unused"
- Group results by Product, count harvesting candidates
- Calculate potential savings (count x Unit Cost)
- Send harvesting report to SAM Manager
Email Template:
Renewal Management
Agreement Expiration Tracking
Track agreement expirations and trigger renewal workflows.
Query - Agreements expiring in 180 days:
objectType = "License Agreement" AND Status = "Active" AND "End Date" < now(180d) AND "End Date" > now()
Processing Logic:
- Check if Renewal record exists for agreement
- If no Renewal exists, create one with Due Date = End Date - 90 days
- Update Agreement Status to "Expiring" when <= 90 days
Notification Schedule:
| Days Before Due | Recipients | Message |
|---|---|---|
| 120 days | Renewal Owner | Initial renewal planning notice |
| 90 days | Renewal Owner, SAM Manager | Renewal analysis should begin |
| 60 days | + Procurement Lead | Active negotiation should start |
| 30 days | + Finance Controller | Escalation - decision imminent |
| 14 days | All + CFO | Critical - decision required |
User Termination Reclamation
Automatic License Reclamation
Automatically reclaim licenses when users are terminated.
Trigger:
Object updated - User - Status changed to "Terminated"
Actions:
- Query user's assigned licenses:
objectType = "Installation" AND Device."Primary User" = "{{object.Key}}" AND Status = "Active"
- Update each Installation Status to "Uninstalled"
- Add Notes: "Auto-reclaimed due to user termination"
- Recalculate compliance positions for affected products
- Send reclamation summary
Email Template:
Over-Licensing Optimization
Monthly Optimization Report
Identify cost optimization opportunities from over-licensing.
Query:
objectType = "Compliance Position" AND "Compliance Status" = "Over-Licensed" AND Status = "Current"
Actions:
- For each over-licensed position, calculate waste: |Gap| x Unit Cost
- Total annual waste potential
- Generate optimization report
- Send to SAM Manager and Procurement Lead
Email Template:
Automation Schedule Summary
Daily Automations
| Automation | Time | Priority |
|---|---|---|
| Agreement Expiration Tracking | 08:00 | High |
| Discovery Import Monitoring | 06:00 | Medium |
Weekly Automations
| Automation | Day/Time | Priority |
|---|---|---|
| Compliance Position Calculation | Sunday 02:00 | Critical |
| Unused Installation Detection | Monday 06:00 | High |
| Product Normalization Review | Monday 08:00 | Medium |
Real-Time Automations
| Automation | Trigger | Priority |
|---|---|---|
| Under-Licensing Alert | Compliance Status = Under-Licensed | Critical |
| User Termination Reclamation | User Status = Terminated | High |
| Device Retirement Cleanup | Device Status = Retired | Medium |
Schema Forge