UnavailableTaskException, AccessDeniedException {
UserRoles credentials = _authProvider.authenticate(participantToken);
Task task = dao.fetchTaskIfExists(taskID);
checkIsAvailable(taskID, task, credentials);
if (task instanceof ITaskWithOutput) {
ITaskWithOutput taskWithOutput = (ITaskWithOutput) task;
taskWithOutput.setOutput(output);
dao.updateTask(task);
dao.commit();
if (_logger.isDebugEnabled())
_logger.debug(credentials.getUserID() + " has set output for Workflow Task " + task);
} else