diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs index fb403a0a..deefb00d 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/ApplicationForm.cs @@ -164,34 +164,60 @@ namespace WebsitePanel.Import.Enterprise type = null; email = null; name = (string)child.Properties["name"].Value; + //account type typeProp = child.Properties["msExchRecipientDisplayType"]; + + int typeDetails = 0; + PropertyValueCollection typeDetailsProp = child.Properties["msExchRecipientTypeDetails"]; + if (typeDetailsProp != null) + { + if (typeDetailsProp.Value != null) + { + try + { + object adsLargeInteger = typeDetailsProp.Value; + typeDetails = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); + } + catch { } // just skip + } + } + switch (child.SchemaClassName) { case "user": email = (string)child.Properties["userPrincipalName"].Value; - if (typeProp == null || typeProp.Value == null) - { - type = "User"; - } - else - { - int mailboxType = (int)typeProp.Value; - switch (mailboxType) - { - case 1073741824: - type = "User Mailbox"; - break; - case 7: - type = "Room Mailbox"; - break; - case 8: - type = "Equipment Mailbox"; - break; - } - } + if (typeDetails == 4) + { + type = "Shared Mailbox"; + } + else + { + + if (typeProp == null || typeProp.Value == null) + { + type = "User"; + } + else + { + int mailboxType = (int)typeProp.Value; + + switch (mailboxType) + { + case 1073741824: + type = "User Mailbox"; + break; + case 7: + type = "Room Mailbox"; + break; + case 8: + type = "Equipment Mailbox"; + break; + } + } + } if (!string.IsNullOrEmpty(type)) { diff --git a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs index 72a5aebe..7044ddeb 100644 --- a/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs +++ b/WebsitePanel/Sources/Tools/WebsitePanel.Import.Enterprise/OrganizationImporter.cs @@ -781,12 +781,20 @@ namespace WebsitePanel.Import.Enterprise } int mailboxType = (int)type.Value; - PropertyValueCollection typeDetails = entry.Properties["msExchRecipientTypeDetails"]; int mailboxTypeDetails = 0; + PropertyValueCollection typeDetails = entry.Properties["msExchRecipientTypeDetails"]; if (typeDetails!=null) { if (typeDetails.Value != null) - mailboxTypeDetails = (int)typeDetails.Value; + { + try + { + object adsLargeInteger = typeDetails.Value; + mailboxTypeDetails = (Int32)adsLargeInteger.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, adsLargeInteger, null); + } + catch { } // just skip + + } } ExchangeAccountType accountType = ExchangeAccountType.Undefined; @@ -831,18 +839,16 @@ namespace WebsitePanel.Import.Enterprise if (emailAddress.ToLower().StartsWith("smtp:")) emailAddress = emailAddress.Substring(5); - - if (!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase)) + if (EmailAddressExists(emailAddress)) { - if (EmailAddressExists(emailAddress)) - { - Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress)); - continue; - } - // register email address - Log.WriteInfo(string.Format("Importing email {0}", emailAddress)); - AddAccountEmailAddress(userId, emailAddress); + if ((!emailAddress.Equals(defaultEmail, StringComparison.InvariantCultureIgnoreCase)) && (!emailAddress.Equals(email, StringComparison.InvariantCultureIgnoreCase))) + Log.WriteInfo(string.Format("Email address {0} already exists. Skipped", emailAddress)); + + continue; } + // register email address + Log.WriteInfo(string.Format("Importing email {0}", emailAddress)); + AddAccountEmailAddress(userId, emailAddress); } } Log.WriteEnd("User imported");