protected Guid GetUuid(string localId, string uuidString)
        {
            if (String.IsNullOrEmpty(localId))
            {
                return(Guid.Empty);
            }

            CorrelatedResSyncInfo[] results = _correlatedResSyncInfoStore.GetByLocalId(_resourceKindString, new string[] { localId });
            if (results.Length > 0)
            {
                return(results[0].ResSyncInfo.Uuid);
            }
            Guid result;

            if (string.IsNullOrEmpty(uuidString))
            {
                result = Guid.NewGuid();
            }
            else
            {
                try
                {
                    GuidConverter converter = new GuidConverter();
                    result = (Guid)converter.ConvertFromString(uuidString);
                    if (Guid.Empty.Equals(result))
                    {
                        result = Guid.NewGuid();
                    }
                }
                catch (Exception)
                {
                    result = Guid.NewGuid();
                }
            }

            ResSyncInfo           newResSyncInfo = new ResSyncInfo(result, _originApplication, 0, string.Empty, DateTime.Now);
            CorrelatedResSyncInfo newCorrelation = new CorrelatedResSyncInfo(localId, newResSyncInfo);

            _correlatedResSyncInfoStore.Put(_resourceKindString, newCorrelation);
            return(result);
        }
        private void PersistRelations(List <TransactionResult> transactions)
        {
            GuidConverter guidConverter = new GuidConverter();

            foreach (TransactionResult transaction in transactions)
            {
                if (transaction.Status == TransactionStatus.Success)
                {
                    SupportedResourceKinds resourceKind = GetSupportedResourceKind(transaction.EntityName);
                    if (resourceKind == SupportedResourceKinds.None)
                    {
                        continue;
                    }

                    string uuidString = transaction.CRMID;
                    Guid   uuid       = Guid.Empty;
                    try
                    {
                        uuid = (Guid)guidConverter.ConvertFromString(uuidString);
                    }
                    catch
                    {
                        continue;
                    }
                    if (uuid == Guid.Empty)
                    {
                        continue;
                    }

                    string      localId     = transaction.ID;
                    ResSyncInfo resSyncInfo = new ResSyncInfo(uuid, _context.DatasetLink + resourceKind.ToString(), -1, "", DateTime.Now);

                    CorrelatedResSyncInfo correlatedResSyncInfo = new CorrelatedResSyncInfo(localId, resSyncInfo);

                    // store the new correlation to the sync store
                    _correlatedResSyncInfoStore.Put(resourceKind.ToString(), correlatedResSyncInfo);
                }
            }
        }