public async Task <int> Load(bool diffSupport)
        {
            var mapper = diffSupport ? ExtractDiffMapper.Instance : ExtractMapper.Instance;
            int count  = 0;

            try
            {
                const int take   = 1000;
                var       eCount = await _tempHtsClientsLinkageExtractRepository.GetCleanCount();

                var pageCount = _tempHtsClientsLinkageExtractRepository.PageCount(take, eCount);

                int page = 1;
                while (page <= pageCount)
                {
                    var tempHtsClientLinkages = await
                                                _tempHtsClientsLinkageExtractRepository.GetAll(QueryUtil.Linkage, page, take);

                    var batch = tempHtsClientLinkages.ToList();
                    count += batch.Count;
                    //Auto mapper
                    var extractRecords = mapper.Map <List <TempHtsClientLinkage>, List <HtsClientLinkage> >(batch);
                    foreach (var record in extractRecords)
                    {
                        record.Id = LiveGuid.NewGuid();
                    }
                    //Batch Insert
                    var inserted = _clientsLinkageExtractRepository.BatchInsert(extractRecords);
                    if (!inserted)
                    {
                        Log.Error($"Extract {nameof(HtsClientLinkage)} not Loaded");
                        return(0);
                    }
                    Log.Debug("saved batch");
                    page++;
                }
                DomainEvents.Dispatch(new HtsNotification(new ExtractProgress(nameof(HtsClientLinkage), "Loading...", Found, 0, 0, 0, 0)));
                return(count);
            }
            catch (Exception e)
            {
                Log.Error(e, $"Extract {nameof(HtsClientLinkage)} not Loaded");
                throw;
            }
        }