JiraService does not follow the same patterns as other project services
Project services define supported events (push, tag_push, issue, confidential_issue, merge_request, wiki_page) and override Service#execute method to handle these events.
This is not the case for JiraService. For JiraService we explicitly call JiraService#execute from Issues::CloseService#close_issue and JiraService#create_cross_reference_note from SystemNoteService#cross_reference.
The first iteration of the clean up will be handled here - gitlab-ce#24967, because the current situation creates confusion, leads to bugs and unnecessary background jobs being scheduled.
This issue was created to discuss some further refactoring. Should we refactor JiraService to respond correctly to events instead of calling JiraService directly? Will it help us with adding new features to our JIRA integration?