Implement automated deletion of expired reservation requests per data retention policy#332
Draft
Implement automated deletion of expired reservation requests per data retention policy#332
Conversation
- Extended Cellix framework to support Azure Functions Timer triggers - Added getExpiredClosed() method to read repository for finding CLOSED requests older than 6 months - Added requestDelete() domain method with canDeleteRequest permission - Created deleteExpiredReservationRequests application service with OpenTelemetry tracing - Registered daily timer trigger (2 AM UTC) for automated cleanup - Per SRD data retention policy: CLOSED reservation requests deleted after 6 months Co-authored-by: dani-vaibhav <182140623+dani-vaibhav@users.noreply.github.com>
- Added unit tests for deleteExpiredReservationRequests application service - Added BDD test scenario for getExpiredClosed repository method - Tests verify 6-month expiration logic and batch deletion flow - Tests include error handling and edge cases Co-authored-by: dani-vaibhav <182140623+dani-vaibhav@users.noreply.github.com>
- Created comprehensive documentation for timer trigger feature - Documented architecture, configuration, and observability - Added troubleshooting guide and references - Included code examples and monitoring queries Co-authored-by: dani-vaibhav <182140623+dani-vaibhav@users.noreply.github.com>
- Fix date arithmetic in getExpiredClosed() to use milliseconds instead of setMonth() - Add comment explaining system passport behavior in timer handler - Update schedule comment to clarify NCRONTAB format - Improve JSDoc example to show system passport usage Co-authored-by: dani-vaibhav <182140623+dani-vaibhav@users.noreply.github.com>
Copilot
AI
changed the title
[WIP] Implement automatic deletion of expired reservation requests
Implement automated deletion of expired reservation requests per data retention policy
Jan 6, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Per SRD/BRD data retention policy, CLOSED reservation requests must be deleted after 6 months. This implements automated cleanup via daily Azure Functions timer trigger.
Changes
Cellix Framework Extension
registerAzureFunctionTimerHandler()to support timer triggers alongside HTTP handlershttp|timer)Domain & Persistence
ReservationRequest.requestDelete()withcanDeleteRequestpermission (system passport only)ReservationRequestReadRepository.getExpiredClosed()query:state='Closed' AND updatedAt < (now - 182.5 days)Application Service
deleteExpiredReservationRequests()with OpenTelemetry tracingreservation_requests.expired.count,reservation_requests.deleted.countTimer Trigger
0 0 2 * * *)forRequest()without auth headerTesting
getExpiredClosed()repository queryapps/docs/docs/data-retention-reservation-requests.mdNotes
Follows same pattern as issue #199 (Listing deletion). System passport grants deletion permission for automated cleanup only.
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.