To move a Jira issue to a new status, fetch its available transitions first and then call the transition by id. Setting the status field directly is a no-op, and hardcoding transition names is fragile, so resolve the id from the transitions endpoint at runtime.

Context: Stack Overflow #19945179 (accepted answer, 32 votes): the asker tried issue.update(status=Closed) with python-jira and nothing happened. The accepted answer explains the model: Jira issues move through workflows, so you never set the status field directly. You list the available transitions for the issue and apply one with transition_issue, passing the transition id (or name, though the id is more stable since names can change).