public ClientTask Create(UserTask userTask) { // UT.<Type>.<ResultKey>.<Qualifier> var type = userTask.GetClientTaskType(); var resultKey = userTask.GetResultKey(); var label = userTask.Configuration.FormFields.ToList().Find(f => f.Id.Equals(resultKey))?.Label ?? throw new ArgumentException($"No form field for result key ({resultKey}) found"); var error = userTask.Tokens[0].Payload.GetPayload <TaskError>(); var resultTemplate = userTask.Configuration.FormFields .ToDictionary(f => f.Id, f => f.ParseValue()); var payload = CreatePayload(userTask, type).Result; resultTemplate.Add("taskId", userTask.Id); return(new ClientTask(userTask.Id, type, resultKey, label, error, payload, resultTemplate)); }