What do we run?
Workday HR
- Lifecycle
- Active
- Criticality
- Critical
- Needed by
- 4 records, at any depth
- Data flows
- 2 out: Finance Ledger, Zoom Meetings
- Found in
- Entra ID, linked
Softwarden is the open-source system of record for the software, SaaS, integrations and AI agents your IT team runs. Every record has an owner and a review date. What is missing shows up as a named gap you can act on.
| Record | What needs doing | Status |
|---|---|---|
| Service Desk PortalApplication | No business ownerNo technical owner | Unreviewed |
| Zoom ProRenewal | Record a decision before the action deadline | Overdue |
| Nightly Payroll ExportComponent | Its link to Workday HR changed owner after it was confirmed | Needs verification |
| Invoice Triage AgentAI agent | No technical ownerNo human-in-loop decision | Unreviewed |
| Workday 2027R1 upgradeChange assessment | The affected set changed since the snapshot was taken | Stale snapshot |
| New Vendor PortalDiscovery, Entra ID | Link it to a record, create one or dismiss it | New |
The home screen. Each row says what is missing and what to do next.
The three questions every IT team gets asked. Softwarden keeps the answers in one place, and each record shows when someone last confirmed them.
Workday HR
Employee Timesheets
The gap puts the record in Needs attention until someone fills it.
Workday subscription
March 31 minus the two-month notice period. Entered and assumed deadlines are labelled the same way.
Records from the Contoso demo organization that ships with the seed data.
Each answer is a screen in the app, with its filters in the URL so a link shows the same view.
Dependencies to any depth, with loops marked and not followed twice. Save the affected set as a change assessment before an upgrade or a retirement; it says when its snapshot goes stale.
Dependencies, Map, Change assessments
Discovery reads Microsoft Entra ID: enterprise applications, app registrations, their owners and expiring secrets, and the sign-in logs for shadow IT. Findings wait in a queue. You link, create or dismiss, and curated data is never overwritten.
Discovery, Shadow IT
A register of agents, providers and models. Each agent has owners, a data access scope and a human-in-loop decision. An agent without them shows up as a gap.
AI agents, AI models
Contracts with lines split across the applications they cover, license pools with seats purchased and assigned, and renewals whose action deadline is worked out from the notice period. Each deadline says whether it was entered, calculated or assumed.
Contracts, License pools, Renewals
End-of-life dates from endoflife.date for each version you run. A risk file per vendor: assurance reports, the DPA and subprocessors, with reminders before documents expire.
End of life, Vendor risk
Integrations record the kinds of data they carry. The data-flow map flags personal data sent to a vendor with no signed DPA, flows with no authentication and flows classified above the record that receives them.
Data flows
Gaps are named, such as "No technical owner", and collected in one Needs attention queue. A daily digest goes out by email or Microsoft Teams.
Needs attention, Data quality
Every write goes through one path and records an audit event with the before and after values. Each record has its own history.
Audit log, History
The payroll chain from the demo data. Choose a record to see everything that depends on it, at any depth. A link that leads back to a record already on the path closes a loop: it is marked and not followed again. Data flows are drawn apart, since moving data is not an operational dependency.
If Workday HR changes
4 records depend on it. One link closes a loop and is marked, not followed again.
Data flows, not operational
Workday HR depends on nothing in this map.
One Compose file brings up the app, the worker, PostgreSQL 17 and Caddy. Secrets are generated on first start, so there is no settings file to write. The install guide takes a fresh Ubuntu VM to a signed-in Admin with backups running.
# the full stack at https://localhost
$ git clone https://github.com/Softwarden/softwarden
$ cd softwarden
$ docker compose up -d --build
# prints the setup address and a one-time token
$ docker compose exec app python manage.py bootstrap_adminMost of Softwarden is in the community edition. It is free, and the code is yours to run and change.
Free and open source, Apache 2.0
For larger teams and stricter environments