private void InitProjectOnlineAccessService()
        {
            bool isProjectOnline = Boolean.Parse(ConfigurationManager.AppSettings["IsProjectOnline"]);

            projectOnlineAccessService = new ProjectOnlineAccessService(ConfigurationManager
                                                                        .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"],
                                                                        ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline, Guid.Empty);

            projectOnlineODataService = new ProjectOnlineODataService(ConfigurationManager
                                                                      .AppSettings["ProjectOnlineUrl"], ConfigurationManager.AppSettings["ProjectOnlineUserName"],
                                                                      ConfigurationManager.AppSettings["ProjectOnlinePassword"], isProjectOnline);

            projectOnlineAccessService.InitCache();
            projectOnlineODataService.InitCache();
        }
        private void OnTimerJiraTick(object state)
        {
            TimeSpan timeElapsed = DateTime.Now - lastCleanCache;

            logger.Info($"OnTimerJiraTick START lastCleanCache: {lastCleanCache}; " +
                        $"timeElapsed.TotalMilliseconds: {timeElapsed.TotalMilliseconds}");
            if (Monitor.TryEnter(lockObjectJira))
            {
                try
                {
                    if (timeElapsed.TotalMilliseconds >= periodCleanCache ||
                        ProjectOnlineCache.NeedInitCache())
                    {
                        projectOnlineAccessService.ClearCache();
                        projectOnlineAccessService.InitCache();
                        projectOnlineODataService.ClearCache();
                        projectOnlineODataService.InitCache();
                        lastCleanCache = DateTime.Now;
                    }
                    using (var unitOfWork = new UnitOfWork())
                    {
                        Guid winServiceIterationUid = Guid.NewGuid();
                        dbToProjectOnlineSync = new DbToProjectOnlineSync(unitOfWork, projectOnlineODataService, publishMax,
                                                                          stagingRecordLifeTime, projectsPerIteration, winServiceIterationUid);
                        dbToProjectOnlineSync.SynchronizeData(state);
                    }
                }
                catch (Exception exception)
                {
                    logger.Fatal(exception);
                }
                finally
                {
                    Monitor.Exit(lockObjectJira);
                }
            }
            logger.Info("OnTimerJiraTick END");
        }