public async Task OchestrateSubscriptionCleanUp([OrchestrationTrigger] IDurableOrchestrationContext context)
        {
            var logger = context.CreateReplaySafeLogger(_logger);

            if (context is null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            logger.LogDebug("Getting resource groups");
            var resourceGroupNames = await context.CallActivityAsync <IEnumerable <string> >(nameof(GetResourceGroupNames), null).ConfigureAwait(true);

            var deletedResourceGroupNames = new List <string>();

            foreach (var name in resourceGroupNames)
            {
                logger.LogDebug("Calling delete function on {resourceGroupName}", name);
                if (await context.CallActivityAsync <bool>(nameof(DeleteIfNotLocked), name).ConfigureAwait(true))
                {
                    deletedResourceGroupNames.Add(name);
                }
            }

            var slackContext = new SlackReportingContext
            {
                DeletedResourceGroups = deletedResourceGroupNames
            };
            await context.CallActivityAsync(nameof(ReportToSlack), slackContext).ConfigureAwait(true);
        }
        public async Task ReportToSlack([ActivityTrigger] SlackReportingContext slackReportingContext)
        {
            if (slackReportingContext is null)
            {
                throw new ArgumentNullException(nameof(slackReportingContext));
            }

            var context = new MessageUtil.MessageContext
            {
                DeletedResourceGroups = slackReportingContext.DeletedResourceGroups,
                WasSimulated          = _cleanupConfiguration.Simulate
            };
            var message = MessageUtil.CreateDeleteInformationMessage(_cleanupConfiguration.SlackChannel, context);
            await _slackClient.PostMessage(message).ConfigureAwait(false);
        }