public async Task Orchestrator( [OrchestrationTrigger] IDurableOrchestrationContext context) { var cIContext = context.GetInput <CIContext>(); // Get issues SearchIssue issues = await context.CallActivityAsync <SearchIssue>(nameof(CreatePRReviewDecorator) + "_GetIssues", cIContext); // Get issues that already created var pullRequestState = await context.CallActivityAsync <PullRequestState>("PullRequestStateUtility_GetPullRequestState", new PullRequestStateKey { PartitionKey = _repositoryContext.GetFullNameWithUnderscore(), RowKey = cIContext.PullRequestId }); string entityId = pullRequestState?.EntityId ?? context.NewGuid().ToString(); EntityStateResponse <PullRequestStateContext> response = await context.CallActivityAsync <EntityStateResponse <PullRequestStateContext> >( nameof(CreatePRReviewDecorator) + "_GetPullRequestStateContext", entityId); var pullRequestDetailContext = response.EntityState; pullRequestDetailContext = pullRequestDetailContext ?? new PullRequestStateContext() { PullRequestNumber = int.Parse(cIContext.PullRequestId) }; var unCommentedIssue = issues.issues.Where(issue => !pullRequestDetailContext.CreatedReviewComment.Contains(new CreatedReviewComment() { IssueId = issue.key })).ToList(); foreach (var issue in unCommentedIssue) { var issueContext = (cIContext, issue); var createdPrReviewComment = await context.CallActivityAsync <JObject>(nameof(CreatePRReviewDecorator) + "_CreatePRReviewComment", issueContext); if (createdPrReviewComment != null) { pullRequestDetailContext.Add(new CreatedReviewComment() { IssueId = issue.key, CommentId = (int)createdPrReviewComment["Id"], ProjectKey = cIContext.ProjectKey }); } } await context.CallEntityAsync <PullRequestStateContext>(new EntityId(nameof(PullRequestEntity), entityId), "update", pullRequestDetailContext); pullRequestState = pullRequestState ?? new PullRequestState(); pullRequestState.EntityId = entityId; pullRequestState.PartitionKey = pullRequestState.PartitionKey ?? _repositoryContext.Owner + "_" + _repositoryContext.Name; pullRequestState.RowKey = pullRequestState.RowKey ?? cIContext.PullRequestId; await context.CallActivityAsync("PullRequestStateUtility_CreateOrUpdatePullRequestState", pullRequestState); }