Serverless application for tracking and allocating Atlassian and ServiceNow license costs across TP ICAP business units
Automatically identifies all Atlassian (Jira, Confluence) and ServiceNow licensed users across TP ICAP, matches them to HR data (division, department, cost centre), and presents an interactive dashboard for license cost allocation, usage reporting, and license removal management.
┌─────────────────────────────────────────────────────────────────────┐ │ DATA COLLECTION (Your Machine — Scheduled Task, every 4 hours) │ └──────────────────────────┬──────────────────────────────────────────┘ │ ┌────────────────┼────────────────┐ ▼ ▼ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │ Atlassian │ │ Quarterback │ │ Atlassian Site │ │ Org Admin │ │ HR API │ │ Group Members │ │ API │ │ │ │ API │ └──────┬───────┘ └──────┬───────┘ └────────┬─────────┘ │ │ │ │ 9,000 org │ 6,776 HR │ External users │ users │ records │ (GMEX, etc.) ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────────────┐ │ Refresh_Data.ps1 — Match, Merge, Build JSON │ └──────────────────────────┬──────────────────────────────────────┘ │ POST /upload (API Key auth) │ ┌──────────────────────────┼──────────────────────────────────────────┐ │ AWS (eu-west-1) ▼ │ │ ┌────────────────────────────┐ │ │ │ API Gateway (HTTP API) │ │ │ │ h7larzbbb6 │ │ │ └────────────┬───────────────┘ │ │ ▼ │ │ ┌────────────────────────────┐ ┌───────────────────┐ │ │ │ Lambda │───▶│ S3 Bucket │ │ │ │ chargeback-dashboard │◀───│ tpicap-chargeback │ │ │ │ Node.js 20 │ │ -data │ │ │ └────────────────────────────┘ └───────────────────┘ │ │ │ └────────────────────────────────────────────────────────────────────┘ │ GET / (HTML) GET /chargeback (JSON) │ ▼ ┌──────────────────┐ │ Browser │ │ D3 Bubble Chart │ │ + Drill-down │ └──────────────────┘
| Resource | Name | Purpose |
|---|---|---|
| Lambda | chargeback-dashboard | Serves dashboard HTML, JSON data, and accepts uploads. Node.js 20, 512MB, 120s timeout |
| API Gateway | chargeback-api (h7larzbbb6) | HTTP API. Routes: GET / (HTML), GET /chargeback (JSON), GET /servicenow (JSON), POST /upload, /upload-sn, /removal-log. Custom domain configured |
| Custom Domain | sail-chargeback.dev.sail.tpicapcloud.com | ACM cert + Route 53 alias in dev.sail.tpicapcloud.com hosted zone |
| S3 | tpicap-chargeback-data | Stores chargeback-data.json and dashboard.html |
| IAM Role | chargeback-devops-lambda-role | S3 read/write + Lambda execution + CloudWatch logs |
| Lambda | ~$0.00 (free tier) |
| API Gateway | ~$0.00 (free tier) |
| S3 | ~$0.01 |
| Secrets Manager | ~$0.80 (2 secrets, reference only) |
| CloudWatch Logs | ~$0.01 |
| Total | < $1/month |