@@ -77,7 +77,14 @@ public override string DefaultCrmModule
7777
7878 protected override void SaveItem ( Outlook . ContactItem olItem )
7979 {
80- olItem . Save ( ) ;
80+ try
81+ {
82+ olItem . Save ( ) ;
83+ }
84+ catch ( System . Exception any )
85+ {
86+ Log . Error ( $ "Error while saving contact { olItem ? . Email1Address } ", any ) ;
87+ }
8188 }
8289
8390 /// <summary>
@@ -87,7 +94,7 @@ protected override void SaveItem(Outlook.ContactItem olItem)
8794 /// <param name="crmModule">The module to snychronise with.</param>
8895 protected override void SyncFolder ( Outlook . MAPIFolder folder , string crmModule )
8996 {
90- Log . Info ( $ "ContactSyncing.SyncFolder: '{ folder } '") ;
97+ Log . Info ( $ "ContactSyncing.SyncFolder: '{ folder . FolderPath } '") ;
9198 try
9299 {
93100 if ( this . permissionsCache . HasExportAccess ( ) )
@@ -219,29 +226,19 @@ private bool ShouldSyncFlagChanged(Outlook.ContactItem olItem, EntryValue crmIte
219226
220227 this . SetOutlookItemPropertiesFromCrmItem ( crmItem , olItem ) ;
221228
222- var newState = new ContactSyncState
223- {
224- OutlookItem = olItem ,
225- OModifiedDate = DateTime . ParseExact ( crmItem . GetValueAsString ( "date_modified" ) , "yyyy-MM-dd HH:mm:ss" , null ) ,
226- CrmEntryId = crmItem . GetValueAsString ( "id" ) ,
227- } ;
228- ItemsSyncState . Add ( newState ) ;
229-
230- LogItemAction ( newState . OutlookItem , "AppointmentSyncing.AddNewItemFromCrmToOutlook, saved item" ) ;
231-
232- return newState ;
229+ return this . AddOrGetSyncState ( olItem ) ;
233230 }
234231
235232 /// <summary>
236233 /// Log a message regarding this Outlook item, with detail of the item.
237234 /// </summary>
238235 /// <param name="olItem">The outlook item.</param>
239236 /// <param name="message">The message to be logged.</param>
240- protected override void LogItemAction ( Outlook . ContactItem olItem , string message )
237+ internal override void LogItemAction ( Outlook . ContactItem olItem , string message )
241238 {
242239 try
243240 {
244- Outlook . UserProperty olPropertyEntryId = olItem . UserProperties [ "SEntryID" ] ;
241+ Outlook . UserProperty olPropertyEntryId = olItem . UserProperties [ CrmIdPropertyName ] ;
245242 string crmId = olPropertyEntryId == null ?
246243 "[not present]" :
247244 olPropertyEntryId . Value ;
@@ -280,7 +277,7 @@ private bool ShouldSyncContact(EntryValue crmItem)
280277 /// <returns>True if either of these propertyies differ between the representations.</returns>
281278 private bool CrmItemChanged ( EntryValue crmItem , Outlook . ContactItem olItem )
282279 {
283- Outlook . UserProperty dateModifiedProp = olItem . UserProperties [ "SOModifiedDate" ] ;
280+ Outlook . UserProperty dateModifiedProp = olItem . UserProperties [ ModifiedDatePropertyName ] ;
284281
285282 return ( dateModifiedProp . Value != crmItem . GetValueAsString ( "date_modified" ) ||
286283 ShouldSyncFlagChanged ( olItem , crmItem ) ) ;
@@ -298,7 +295,7 @@ private bool CrmItemChanged(EntryValue crmItem, Outlook.ContactItem olItem)
298295 if ( ! itemSyncState . IsDeletedInOutlook )
299296 {
300297 Outlook . ContactItem olItem = itemSyncState . OutlookItem ;
301- Outlook . UserProperty dateModifiedProp = olItem . UserProperties [ "SOModifiedDate" ] ;
298+ Outlook . UserProperty dateModifiedProp = olItem . UserProperties [ ModifiedDatePropertyName ] ;
302299 Outlook . UserProperty shouldSyncProp = olItem . UserProperties [ "SShouldSync" ] ;
303300 this . LogItemAction ( olItem , "ContactSyncing.UpdateExistingOutlookItemFromCrm" ) ;
304301
@@ -490,8 +487,8 @@ protected override string ConstructAndDespatchCrmItem(Outlook.ContactItem olItem
490487 return new ContactSyncState
491488 {
492489 OutlookItem = oItem ,
493- CrmEntryId = oItem . UserProperties [ "SEntryID" ] ? . Value . ToString ( ) ,
494- OModifiedDate = ParseDateTimeFromUserProperty ( oItem . UserProperties [ "SOModifiedDate" ] ? . Value . ToString ( ) ) ,
490+ CrmEntryId = oItem . UserProperties [ CrmIdPropertyName ] ? . Value . ToString ( ) ,
491+ OModifiedDate = ParseDateTimeFromUserProperty ( oItem . UserProperties [ ModifiedDatePropertyName ] ? . Value . ToString ( ) ) ,
495492 } ;
496493 }
497494
@@ -530,6 +527,12 @@ internal override string GetOutlookEntryId(Outlook.ContactItem olItem)
530527 return olItem . EntryID ;
531528 }
532529
530+ protected override string GetCrmEntryId ( Outlook . ContactItem olItem )
531+ {
532+ return olItem ? . UserProperties [ CrmIdPropertyName ] ? . Value . ToString ( ) ;
533+ }
534+
535+
533536 internal override Outlook . OlSensitivity GetSensitivity ( Outlook . ContactItem item )
534537 {
535538 return item . Sensitivity ;
0 commit comments