Index: asterisk-22.8.2/apps/app_queue.c
===================================================================
--- asterisk-22.8.2.orig/apps/app_queue.c
+++ asterisk-22.8.2/apps/app_queue.c
@@ -6886,10 +6886,10 @@ static void handle_blind_transfer(void *
 			(long) (queue_data->starttime - queue_data->holdstart),
 			(long) (time(NULL) - queue_data->starttime), queue_data->caller_pos);
 
-	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
-			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, TRANSFER);
 	update_queue(queue_data->queue, queue_data->member, queue_data->callcompletedinsl,
 			queue_data->starttime);
+	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
+			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, TRANSFER);
 	remove_stasis_subscriptions(queue_data);
 }
 
@@ -6944,10 +6944,10 @@ static void handle_attended_transfer(voi
 	ast_debug(3, "Detected attended transfer in queue %s\n", queue_data->queue->name);
 	log_attended_transfer(queue_data, atxfer_msg);
 
-	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
-			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, TRANSFER);
 	update_queue(queue_data->queue, queue_data->member, queue_data->callcompletedinsl,
 			queue_data->starttime);
+	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
+			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, TRANSFER);
 	remove_stasis_subscriptions(queue_data);
 }
 
@@ -7150,10 +7150,10 @@ static void handle_hangup(void *userdata
 		(long) (queue_data->starttime - queue_data->holdstart),
 		(long) (time(NULL) - queue_data->starttime), queue_data->caller_pos);
 
-	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
-			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, reason);
 	update_queue(queue_data->queue, queue_data->member, queue_data->callcompletedinsl,
 			queue_data->starttime);
+	send_agent_complete(queue_data->queue->name, caller_snapshot, member_snapshot, queue_data->member,
+			queue_data->holdstart, queue_data->starttime, queue_data->caller_uniqueid, queue_data->queue->wrapuptime, reason);
 	remove_stasis_subscriptions(queue_data);
 }
 
