Audit & Activity Logs
Role Required: SUPER_ADMIN / TNCHS_ADMIN
Navigation: Sidebar → Audit Logs
Last Updated: March 2026 | Portal Version: 1.0
Overview
The audit system provides a complete, immutable trail of every critical action taken on the platform. As Super Admin, you have cross-society querying capabilities that let you search, filter, and export audit data across all societies, users, and entity types.
How Auditing Works
Every entity decorated with the [Auditable] attribute is automatically tracked by the AuditSaveChangesInterceptor. When a tracked entity is created, updated, or deleted, the system records:
- Who performed the action (user ID, name, role)
- What changed (entity type, entity ID, old values, new values)
- When it happened (UTC timestamp)
- Where from (IP address, user agent, API endpoint)
- Why (human-readable change summary)
Audited Entities
The following entities are automatically tracked:
| Entity | Severity | Data Classification |
|---|---|---|
| User | WARNING | PII |
| Society | INFO | INTERNAL |
| Layout | INFO | INTERNAL |
| Plot | INFO | INTERNAL |
| PlotBooking | INFO | INTERNAL |
| Payment | WARNING | CONFIDENTIAL |
| PaymentRefund | WARNING | CONFIDENTIAL |
| Installment | INFO | INTERNAL |
| AgreementDocument | INFO | CONFIDENTIAL |
| KycDocument | WARNING | PII |
| MembershipTransaction | INFO | INTERNAL |
| Notification | INFO | INTERNAL |
| SocietyAmenity | INFO | INTERNAL |
| SocietyPaymentGatewayConfig | WARNING | CONFIDENTIAL |
Audit Log Fields
Each audit log entry contains:
| Field | Description |
|---|---|
| ID | Unique log entry ID |
| Correlation ID | Links related entries (e.g., bulk operations) |
| Entity Type | Type of entity (Layout, Plot, Booking, etc.) |
| Entity ID | ID of the affected entity |
| Action | CREATE, UPDATE, DELETE, STATUS_CHANGE, BULK_CREATE, PRICING_UPDATE |
| User ID | Who performed the action |
| User Name | User's name at the time |
| User Role | User's role at the time |
| Old Values | Previous state (JSON) |
| New Values | New state (JSON) |
| Change Summary | Human-readable description |
| IP Address | Client IP |
| User Agent | Client browser/app |
| Request Path | API endpoint that triggered the change |
| Society ID | Tenant-scoped filter |
| Source | MANUAL (explicit), INTERCEPTOR (auto-captured), SYSTEM (background job) |
| Severity | INFO, WARNING, CRITICAL |
| Data Classification | PUBLIC, INTERNAL, CONFIDENTIAL, PII |
| Is Archived | Whether archived by retention policy |
| Timestamp | UTC timestamp |
Querying Audit Logs
Advanced Search
- Navigate to Audit Logs
- Use the filter panel:
| Filter | Description |
|---|---|
| Search | Full-text search across entity types, IDs, change summaries |
| Entity Type | Filter by entity (Layout, Plot, Booking, Payment, etc.) |
| Action | CREATE / UPDATE / DELETE / STATUS_CHANGE |
| Society | Filter by specific society |
| User | Filter by specific user |
| Severity | INFO / WARNING / CRITICAL |
| Source | MANUAL / INTERCEPTOR / SYSTEM |
| Date Range | Start and end date |
- Results are paginated (up to 200 entries per page)
My Activity
View all actions you performed:
- Navigate to Audit Logs → My Activity
- Shows your complete action history sorted by most recent first
Summary Statistics
The audit summary provides aggregated counts:
- By Action: How many CREATEs, UPDATEs, DELETEs, etc.
- By Entity Type: Which entities are most frequently changed
- By Severity: Distribution of INFO/WARNING/CRITICAL events
- Top 10 Users: Most active users by audit entry count
Running a Summary
- Navigate to Audit Logs → Summary
- Apply optional filters (entity type, date range, severity)
- The dashboard shows aggregated statistics
Exporting Audit Logs
Export filtered audit logs as a CSV file (up to 10,000 rows):
- Set your desired filters
- Click Export CSV
- The file includes all fields: ID, Timestamp, EntityType, EntityId, Action, Severity, UserId, UserName, UserRole, SocietyId, IpAddress, Source, ChangeSummary
- Filename format:
audit-logs-YYYY-MM-DD.csv
Retention Policy
The platform enforces a data lifecycle:
| Stage | Timeframe | What Happens |
|---|---|---|
| Active | 0–90 days | Fully accessible, searchable |
| Archived | 90–365 days | Marked as archived, still queryable |
| Purged | > 365 days | Permanently deleted |
- Retention job runs daily at 2:00 AM UTC
- Retention statistics are viewable at Audit Logs → Retention Stats
Checking Retention Stats
Navigate to Audit Logs → Retention Stats to see:
- Total audit entries
- Active entries (< 90 days)
- Archived entries (90–365 days)
Audit System Configuration
View the full system configuration at Audit Logs → Config:
- Interceptor: Enabled/disabled, capture mode (automatic via
[Auditable]attribute) - Retention Policy: Archive/purge schedule
- Statistics: Total/active/archived counts, tracked entity types, tracked actions
- Auditable Entities: Complete list of tracked entities with severity and data classification
Monitoring Critical Events
High-Priority Monitoring
Focus on these event types for security and compliance:
| What to Watch | Filter |
|---|---|
| Payment changes | Entity Type = Payment, Severity = WARNING |
| Refund processing | Entity Type = PaymentRefund |
| User account changes | Entity Type = User, Severity = WARNING |
| KYC document changes | Entity Type = KycDocument, Data Classification = PII |
| Payment gateway config | Entity Type = SocietyPaymentGatewayConfig |
Investigating an Incident
- Set the date range to the incident window
- Filter by the relevant entity type or society
- Look at the Correlation ID — bulk operations share the same ID
- Check Old Values vs New Values for exactly what changed
- Note the User, IP Address, and Request Path for tracing
- Export the filtered results for your investigation report
Common Scenarios
"Who modified this society's settings?"
- Filter: Entity Type =
Society, Entity ID = the society ID - The log shows every change with who, when, and what changed
"I need audit data for a regulatory review"
- Set date range to the review period
- Export all entries (or filter by relevant entity types)
- The CSV includes all compliance-relevant fields including Data Classification and Severity
"A payment looks suspicious"
- Filter: Entity Type =
Payment, Entity ID = the payment ID - Review the full change history
- Check the user who created/modified it
- Check their IP address and the API endpoint used
- Cross-reference with the OfflinePayment or Booking entity logs using Correlation ID
"I need to verify that the audit system is capturing everything"
- Go to Audit Logs → Config
- Review the list of auditable entities
- Verify the interceptor is enabled
- Check retention stats to ensure logs are being generated
Related Pages
- Dashboard — Platform metrics overview
- Financial Oversight — Financial reports
- User Management — User operations that generate audit entries
- Society Management — Society operations tracking