diff --git a/containers/backupchecks/src/backend/app/ticketing_utils.py b/containers/backupchecks/src/backend/app/ticketing_utils.py index 5d94691..d8411a9 100644 --- a/containers/backupchecks/src/backend/app/ticketing_utils.py +++ b/containers/backupchecks/src/backend/app/ticketing_utils.py @@ -235,7 +235,7 @@ def link_open_internal_tickets_to_run(*, run: JobRun, job: Job) -> None: pass # Strategy 2: Direct Autotask propagation (independent of internal ticket status) - # Find the most recent non-deleted Autotask ticket for this job and propagate it. + # Find the most recent non-deleted, non-resolved Autotask ticket for this job. try: prior = ( JobRun.query.filter(JobRun.job_id == job.id) @@ -245,6 +245,15 @@ def link_open_internal_tickets_to_run(*, run: JobRun, job: Job) -> None: .first() ) if prior and getattr(prior, "autotask_ticket_id", None): + # Check if the internal ticket is resolved (Autotask tickets are resolved via internal Ticket) + ticket_number = (getattr(prior, "autotask_ticket_number", None) or "").strip() + if ticket_number: + internal_ticket = Ticket.query.filter_by(ticket_code=ticket_number).first() + if internal_ticket and getattr(internal_ticket, "resolved_at", None): + # Ticket is resolved, don't propagate + return + + # Ticket is not deleted and not resolved, propagate it run.autotask_ticket_id = prior.autotask_ticket_id run.autotask_ticket_number = prior.autotask_ticket_number run.autotask_ticket_created_at = getattr(prior, "autotask_ticket_created_at", None) diff --git a/docs/changelog-claude.md b/docs/changelog-claude.md index 701402a..338da91 100644 --- a/docs/changelog-claude.md +++ b/docs/changelog-claude.md @@ -5,7 +5,7 @@ This file documents all changes made to this project via Claude Code. ## [2026-02-10] ### Fixed -- Fixed Autotask ticket not being automatically linked to new runs when internal ticket is resolved by implementing independent Autotask propagation strategy (now checks for most recent non-deleted Autotask ticket on job regardless of internal ticket status, ensuring PSA ticket reference persists across runs) +- Fixed Autotask ticket not being automatically linked to new runs when internal ticket is resolved by implementing independent Autotask propagation strategy (now checks for most recent non-deleted and non-resolved Autotask ticket on job regardless of internal ticket status, ensuring PSA ticket reference persists across runs until explicitly resolved or deleted) ## [2026-02-09]