internal static List <Guid> executeAttachmentsCopyBasedOnWebFileName(CrmServiceClient crmSource, CrmServiceClient crmTarget, List <CrmEntityContainer> source, List <CrmEntityContainer> target, bool includeNotes, string logPath) { List <Guid> result = new List <Guid>(); foreach (CrmEntityContainer enSource in source) { //get single web file with same name, skip if plural List <CrmEntityContainer> enTargets = target.Where(e => e.name == enSource.name).ToList(); if (ReferenceEquals(enTargets, null) || enTargets.Count == 0) { continue; } Entity latestAttacnment = getLattestAttachmentByEntity(crmSource, enSource.id, enSource.logicalName, includeNotes); if (ReferenceEquals(latestAttacnment, null)) { continue; } //copy to all found target webfiles foreach (CrmEntityContainer enTarget in enTargets) { try { Guid?newNote = CrmHelper.cloneAnnotationForSpecificID(crmTarget, latestAttacnment, enTarget.crmEntityRef); if (newNote.HasValue) { result.Add(newNote.Value); } } catch (Exception ex) { IOHelper.appendLogFile(logPath, ex.Message); continue; } } } return(result); }