I am trying to change a Status and assignee of a completed task using HistoricTaskService. Is it even possible?
No, not through the API. The idea is that history, once created, is never changed (because of audit purposes).
If you really want to do it, you will need to execute a custom Command (fetching the task through the HistoricTaskInstanceEntityManager and updating the assignee) through the managementService#executeCommand method.
@joram Can we reopen a completed Task?
May be you can draw the situation in workflow in which you would like to bring execution back to the completed task.
Like a user task, followed by exclusive gateway, giving out to paths, one forward and one backward depending on given situation.
Reoping a task indeed can only be done as describe by @akki above. Otherwise, you will have to resort to using a custom Command (see first response).