public ImportResponse ImportStart(ImportStartRequest request) { Logger.WriteLine("Import request received"); MAStatistics.StartOperation(MAOperationType.Import); ImportResponse response = new ImportResponse(); CachedImportRequest cachedRequest = new CachedImportRequest(); cachedRequest.Request = request; if (cachedRequest.Request.ImportType == OperationType.Delta) { this.ProcessOperationEvents(AcmaEventOperationType.DeltaImport); } else { this.ProcessOperationEvents(AcmaEventOperationType.FullImport); } byte[] watermark = ActiveConfig.DB.GetHighWatermarkMAObjectsDelta(); response.Watermark = watermark == null ? null : Convert.ToBase64String(watermark); cachedRequest.HighWatermark = watermark; Logger.WriteLine("Got delta watermark: {0}", response.Watermark); ResultEnumerator enumerator; if (cachedRequest.Request.ImportType == OperationType.Delta) { enumerator = ActiveConfig.DB.EnumerateMAObjectsDelta(watermark); } else { enumerator = ActiveConfig.DB.EnumerateMAObjects(cachedRequest.Request.Schema.Types.Select(t => t.Name).ToList(), null, null); } cachedRequest.Queue = new ConcurrentQueue <CSEntryChange>(); cachedRequest.Count = enumerator.TotalCount; this.StartProducerThread(enumerator, request.Schema, cachedRequest); response.Context = Guid.NewGuid().ToString(); this.AddToCache(response.Context, cachedRequest); this.GetResultPage(response, request.PageSize); return(response); }