code: @Override
      public void collect(FeatureCollector collector) {
          logBanner(featureSettings.getJiraBaseUrl());
  
          String proxyUrl = featureSettings.getJiraProxyUrl();
          String proxyPort = featureSettings.getJiraProxyPort();
  
          if (!StringUtils.isEmpty(proxyUrl) && !StringUtils.isEmpty(proxyPort)) {
              System.setProperty("http.proxyHost", proxyUrl);
              System.setProperty("https.proxyHost", proxyUrl);
              System.setProperty("http.proxyPort", proxyPort);
              System.setProperty("https.proxyPort", proxyPort);
          }
  
          try {
              long startTime = System.currentTimeMillis();
              long diff = TimeUnit.MILLISECONDS.toHours(startTime - collector.getLastRefreshTime());
              LOGGER.info("JIRA Collector is set to work in " + collector.getMode() + " mode");
              if (diff > featureSettings.getRefreshTeamAndProjectHours()) {
                  LOGGER.info("Hours since last run = " + diff + ". Collector is about to refresh Team/Board information");
                  List<Team> teams = updateTeamInformation(collector);
                  Set<Scope> scopes = updateProjectInformation(collector);
                  if (collector.getLastExecuted() > 0) {
                      if (featureSettings.isCollectorItemOnlyUpdate()) {
                          refreshValidIssues(collector, getBoardList(collector.getId()), getScopeList(collector.getId()));
                      } else {
                          refreshValidIssues(collector, teams, scopes);
                      }
                  }
  
                  collector.setLastRefreshTime(System.currentTimeMillis());
                  featureCollectorRepository.save(collector);
                  LOGGER.info("Collected " + teams.size() + " teams and " + scopes.size() + " projects");
              } else {
                  LOGGER.info("Hours since last run = " + diff + ". Collector is only collecting updated/new issues.");
              }
              updateStoryInformation(collector);
              log("Finished", startTime);
          } catch (Exception e) {
              // catch exception here so we don't blow up the collector completely
              LOGGER.error("Failed to collect jira information", e);
          }
      }
docs: The collection action. This is the task which will run on a schedule to
  gather data from the feature content source system and update the
  repository with retrieved data.