Skip to content

Storage and retention reference

This reference describes ePT 7.6.21 storage and cleanup implementation. Software defaults are not an approved programme retention or disposition policy.

Storage locations

Paths are relative to the installation unless stated otherwise.

Location Contents Recovery or confidentiality concern
MySQL database Accounts, participants, shipments, responses, settings and queue records Requires a database backup and tested restore
application/configs/application.ini Runtime configuration and connection secrets Requires restricted backup and preserved settings
application/configs/.env Environment secrets where configured Requires restricted backup
public/uploads/ Uploaded files and application-generated supporting files Must be included in file backup scope
public/uploads/track-api/ Compressed API request and response bodies May contain credentials or tokens
downloads/ Generated report outputs Recovery must preserve or deliberately regenerate required outputs
public/temporary/ Temporary exports and scratch files Subject to cleanup
logs/ Application logs May contain operational and account information
backups/ Default database archive destination Same-host storage alone does not protect against host loss
backups/config/ Snapshots of application.ini Contains secrets and is not a full configuration backup

Report-specific locations are described in scheme architecture. Actual configured paths and off-host destinations belong in the deployment record.

Scheduled operations

The schedule uses the configured application timezone and depends on a functioning cron/Crunz runner. Definitions alone do not prove that jobs execute successfully.

Operation Defined schedule Source
Database backup Daily 00:45 scheduled-jobs/ScheduledTasks.php
Configuration snapshot Sunday 01:00 bin/backup-config.php --quiet
Housekeeping Daily 03:30 bin/housekeeping.php --quiet
Binary-log purge Daily 04:05, with a 7-day argument db-tools purge-binlogs --days=7

The default database archive retention in db-tools.php is 15 archives. Configuration snapshots default to retaining 26 copies with a minimum-keep setting of 4. The snapshot tool skips unchanged files.

Housekeeping rules

Target Eligibility Retention cutoff
track_api_requests Request metadata rows 90 days by requested_on
temp_mail Terminal statuses sent, failed, failure, fail 30 days by available sent, updated or queued timestamp
push_notification Status is null or is not pending 90 days by created_on
audit_log Older recorded activity 730 days before the table's newest created_on
user_login_history Older login activity 730 days before the table's newest login timestamp
logs/*.log Matching top-level log files 30 days by modification time
public/temporary/ Temporary filesystem entries 7 days by modification time

Audit cutoffs use the newest row in each table, not the current date. An idle installation therefore retains its final activity window. The housekeeping targets do not include PT response tables or generated report directories. Removal of API request metadata does not remove the corresponding tracking payload files.

Policy decisions outside the code

The data owner supplies retention periods for PT records, reports, account information, API payloads, backups and audit evidence. The policy also needs legal-hold handling, disposal authorization, deletion verification and treatment of off-host copies.

Recovery procedures are in backup and migration. The handover guide records owners and recovery targets.