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));
        }