public override void UpdateItems(List <DataCompareItem> items, IDataSynchronizationStatus status) { if (items != null && items.Count > 0) { int currentItem = 0; foreach (var item in items) { if (!status.ContinueProcessing) { break; } try { var itemInvariant = new DataCompareItemInvariant(item); var filename = itemInvariant.GetTargetIdentifier <string>(); Automation?.BeforeUpdateItem(this, itemInvariant, filename); if (itemInvariant.Sync) { #region Update Item //Get the Target Item Data Dictionary <string, object> targetItem = UpdateItemToDictionary(Mapping, itemInvariant); string tmpFile = System.IO.Path.Combine(Utility.GetTempPath(), $"{Guid.NewGuid()}.tmp"); try { System.IO.File.WriteAllBytes(tmpFile, SourceReader.GetBlobData(itemInvariant.ToDataCompareItem(), 0)); if (targetItem.TryGetValue("DateModified", out object value)) { System.IO.File.SetLastWriteTimeUtc(tmpFile, DataSchemaTypeConverter.ConvertTo <DateTime>(value).ToUniversalTime()); } Session.PutFiles(tmpFile, filename, false, new TransferOptions { OverwriteMode = OverwriteMode.Overwrite, PreserveTimestamp = true, TransferMode = TransferMode.Binary }).Check(); } catch (Exception e) { Automation?.ErrorItem(this, itemInvariant, filename, e); throw; } finally { if (System.IO.File.Exists(tmpFile)) { System.IO.File.Delete(tmpFile); } } Automation?.AfterUpdateItem(this, itemInvariant, filename); #endregion } ClearSyncStatus(item); //Clear the Sync Flag on Processed Rows } catch (SystemException e) { HandleError(status, e); } finally { status.Progress(items.Count, ++currentItem); //Update the Sync Progress } } } }