private void RunWithPaging(DateTime updateMinUtc) { var startOfRun = DateTime.UtcNow; var page = 1; var pageSize = _config.PageSize; var updateMin = _instanceTimeZoneService.ToAcumaticaTimeZone(updateMinUtc); while (true) { if (_jobMonitoringService.DetectCurrentJobInterrupt()) { return; } var json = _customerClient.RetrieveCustomers(updateMin, page, pageSize); var customers = json.DeserializeFromJson <List <Customer> >(); if (customers.Count == 0) { break; } foreach (var customer in customers) { UpdateCustomerToPersist(customer); // Disaster recovery // AttemptToLinkCustomerWithExistingRecord() } page++; } var GetEnd = (startOfRun).AddAcumaticaBatchFudge(); _batchStateRepository.UpdateCustomersGetEnd(GetEnd); }