public async Task Run()
        {
            _logger.Info($"Starting Indexer Service Run");

            _runtimer.Start();
            try
            {
                var subSites = GetSubsites();

                foreach (var subSite in subSites)
                {
                    var siteUri      = new Uri(subSite.Value);
                    var siteManifest = _manifests.FirstOrDefault(x => x.Resources.Any(y => y.ServiceIdentity == subSite.Key));


                    _queryTimer.Stop();

                    if (string.IsNullOrWhiteSpace(subSite.Value))
                    {
                        _logger.Info($"Site Manifest: at Uri: {siteUri} not found or has no BaseUrl configured");
                        continue;
                    }

                    _logger.Info(
                        $"Site Manifest: Uri: {subSite.Value ?? "Missing Url"} # Challenges: {siteManifest.Challenges?.Count() ?? 0} # Resources: {siteManifest.Resources?.Count() ?? 0}");

                    var resourcesToIndex = siteManifest.Resources?.Where(x =>
                                                                         !string.IsNullOrWhiteSpace(x.SearchItemsUrl) &&
                                                                         !string.IsNullOrWhiteSpace(subSite.Value) &&
                                                                         x.SearchCategory != SearchCategory.None).ToList();

                    if (resourcesToIndex == null)
                    {
                        continue;
                    }

                    foreach (var resource in resourcesToIndex)
                    {
                        _logger.Info($"Processing Resource: Key: {resource.ResourceKey} Title: {resource.ResourceTitle} SearchUri: {resource.SearchItemsUrl ?? "not set"}");

                        var baseUri = new Uri(subSite.Value);

                        await _indexResourceProcessor.ProcessResource(baseUri, resource);
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Exception while running indexer");
            }
            finally
            {
                _runtimer.Stop();
                _logger.Info($"Ending Indexer Service Run Elapsed Time {_runtimer.Elapsed}");
            }
        }