public async Task <string> PostAsync(
            CustomBuildDefinitionPayload payload)
        {
            try
            {
                var client = await _azureClient.GetBuildClientAsync();

                var definition = new BuildDefinition
                {
                    Name       = $"{payload.ApplicationName}-{payload.BuildTemplate}-{payload.Branch}",
                    Path       = payload.Path,
                    Repository = new BuildRepository
                    {
                        DefaultBranch = payload.Branch,
                        Name          = payload.Repository,
                        Type          = "TfsGit",
                    },
                    Queue = new AgentPoolQueue
                    {
                        Name = payload.QueuePool,
                        Pool = new TaskAgentPoolReference
                        {
                            Name = payload.QueuePool
                        }
                    }
                };

                await _variableGroupService.AddVariableGroups(definition, payload);

                await _taskGroupService.AddTaskGroupSteps(definition, payload);

                _variableService.AddVariables(definition, payload);
                _triggersService.AddTriggers(definition, payload);

                var result = await client
                             .CreateDefinitionAsync(definition, payload.Project);

                await _tagsService.AddTags(result, payload);

                return($"{payload.Project}@@@{result.Id.ToString()}");
            }
            catch (Exception e)
            {
                throw new Exception(
                          "Error: Something went wrong when calling the AzureDevOps API", e);
            }
        }