private async Task <DialogTurnResult> FetchPullRequests(WaterfallStepContext stepContext, CancellationToken cancellationToken)
        {
            BitBucketConversationVariables = await GlobalVariablesService.GetBitBucketConversationVariables(stepContext.Context.Activity.Recipient.Id);

            if (BitBucketConversationVariables?.GlobalVariables == null)
            {
                await stepContext.Context.SendActivityAsync("No configuration found", cancellationToken : cancellationToken);

                return(await stepContext.NextAsync(null, cancellationToken));
            }
            await stepContext.Context.SendActivityAsync("Gathering info...", cancellationToken : cancellationToken);

            bool foundAnyPullRequest = false;

            foreach (var globalVariable in BitBucketConversationVariables.GlobalVariables)
            {
                foreach (var project in globalVariable.Projects)
                {
                    foreach (var repositoryName in project.RepositoryNames)
                    {
                        var pullRequestList = new List <PullRequest>();

                        try
                        {
                            pullRequestList.AddRange((await _bitbucketClient.FetchActivePullRequests(
                                                          globalVariable.BaseUrl,
                                                          project.ProjectName,
                                                          repositoryName,
                                                          globalVariable.PersonalAccessToken,
                                                          globalVariable.Password,
                                                          globalVariable.UserName)).FindAll(x => x.Open));

                            if (pullRequestList.Count > 0)
                            {
                                foundAnyPullRequest = true;
                            }
                        }
                        catch (Exception e)
                        {
                            await stepContext.Context.SendActivityAsync(
                                "Error was thrown during fetching data, maybe there in a wrong info provided for fetching information?",
                                cancellationToken : cancellationToken);

                            await stepContext.Context.SendActivityAsync(e.Message, cancellationToken : cancellationToken);
                        }

                        foreach (var pullRequest in pullRequestList)
                        {
                            var pullRequestCard = CreateAdaptiveCardAttachment(pullRequest, globalVariable.BaseUrl, project.ProjectName,
                                                                               repositoryName);
                            var response = MessageFactory.Attachment(pullRequestCard);
                            await stepContext.Context.SendActivityAsync(response, cancellationToken);
                        }
                    }
                }
            }

            if (!foundAnyPullRequest)
            {
                await stepContext.Context.SendActivityAsync("No active pull requests found", cancellationToken : cancellationToken);
            }

            return(await stepContext.NextAsync(null, cancellationToken));
        }