private static IEnumerable <T> GetRecipients <T>(IRecipientSession session, QueryFilter filter, Func <string, LocalizedException> recipientNotFoundExceptionCallback, Func <string, LocalizedException> invalidRecipientTypeExceptionCallback, string debugContext) where T : class { Util.ThrowOnNullArgument(session, "session"); Util.ThrowOnNullArgument(filter, "filter"); ADRecipient[] recipients = null; MigrationHelperBase.DoAdCallAndTranslateExceptions(delegate { recipients = session.Find(null, QueryScope.SubTree, filter, null, 0); }, true, debugContext); if (recipients == null || recipients.Length < 1) { string arg = string.Format("Could not find {0} using filter {1} with scoped session for {2}", typeof(T), filter, debugContext); throw recipientNotFoundExceptionCallback(arg); } foreach (ADRecipient recip in recipients) { T recipient = recip as T; if (recipient == null) { string arg2 = string.Format("Found an AD recipient that's not a {0} using filter {1} with scoped session for {2}", typeof(T), filter, debugContext); throw invalidRecipientTypeExceptionCallback(arg2); } yield return(recipient); } yield break; }
public static bool GetFlagValue(string flagName, bool defaultValue, bool overrideTestIntegrationEnabled) { if (!overrideTestIntegrationEnabled && !MigrationHelperBase.TestIntegrationEnabled) { return(defaultValue); } bool result; using (RegistryKey registryKey = MigrationHelperBase.OpenTestKey(false)) { if (registryKey == null) { result = defaultValue; } else { object value = registryKey.GetValue(flagName); if (value == null || !(value is int)) { result = defaultValue; } else { int num = (int)value; result = (num != 0); } } } return(result); }
public static IEnumerable <string> GetMigrationMailboxLegacyDN(TenantPartitionHint tenantPartitionHint, string localServer, QueryFilter optionalFilter = null) { IRecipientSession recipientSession = MigrationHelperBase.CreateRecipientSession(tenantPartitionHint); string connectionInformation = string.Format("Accessing migration mailboxes for organization: {0}", tenantPartitionHint); List <QueryFilter> filters = new List <QueryFilter>(3); filters.Add(OrganizationMailbox.OrganizationMailboxFilterBase); filters.Add(new ComparisonFilter(ComparisonOperator.Equal, ADRecipientSchema.RawCapabilities, OrganizationCapability.Migration)); if (optionalFilter != null) { filters.Add(optionalFilter); } IEnumerable <ADUser> users = MigrationHelperBase.GetRecipients <ADUser>(recipientSession, QueryFilter.AndTogether(filters.ToArray()), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), connectionInformation); foreach (ADUser user in users) { string serverName = null; if (user.Database != null) { serverName = MigrationHelperBase.GetServerFqdn(user.Database.ObjectGuid); } if (string.Equals(serverName, localServer, StringComparison.OrdinalIgnoreCase)) { yield return(user.LegacyExchangeDN); } } yield break; }
public static ExDateTime?GetExDateTimeProperty(IPropertyBag item, PropertyDefinition propertyDefinition) { object obj = item[propertyDefinition]; ExDateTime?dateTimeValue = obj as ExDateTime?; if (dateTimeValue == null) { throw new InvalidDataException("Property error : " + propertyDefinition, null); } return(MigrationHelperBase.GetValidExDateTime(dateTimeValue)); }
public static void GetManagementMailboxData(TenantPartitionHint tenantPartitionHint, out string mailboxLegacyDN, out string serverName) { IRecipientSession session = MigrationHelperBase.CreateRecipientSession(tenantPartitionHint); string connectionInformation = string.Format("Accessing management mailbox for organization: {0}", tenantPartitionHint); ADUser recipient = MigrationHelperBase.GetRecipient <ADUser>(session, MigrationHelperBase.ManagementMailboxFilter, (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MultipleMigrationMailboxesFoundException>(connectionInformation), (string msg) => MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation), connectionInformation); serverName = null; if (recipient.Database != null) { serverName = MigrationHelperBase.GetServerFqdn(recipient.Database.ObjectGuid); } mailboxLegacyDN = recipient.LegacyExchangeDN; if (serverName == null) { throw MigrationHelperBase.CreatePermanentExceptionWithInternalData <MigrationMailboxNotFoundException>(connectionInformation); } }
public static T GetRecipient <T>(IRecipientSession session, QueryFilter filter, Func <string, LocalizedException> recipientNotFoundExceptionCallback, Func <string, LocalizedException> ambiguousRecipientExceptionCallback, Func <string, LocalizedException> invalidRecipientTypeExceptionCallback, string debugContext) where T : class { IEnumerable <T> recipients = MigrationHelperBase.GetRecipients <T>(session, filter, recipientNotFoundExceptionCallback, invalidRecipientTypeExceptionCallback, debugContext); T[] array = null; if (recipients != null) { array = recipients.ToArray <T>(); } if (array.Length > 1) { string arg = string.Format("found multiple ({0}) {1} using filter {2} with scoped session for {3}", new object[] { array.Length, typeof(T), filter, debugContext }); throw ambiguousRecipientExceptionCallback(arg); } return(array[0]); }
public static string GetParamValueStr(string valueName, string defaultValue) { if (!MigrationHelperBase.TestIntegrationEnabled) { return(defaultValue); } string result; using (RegistryKey registryKey = MigrationHelperBase.OpenTestKey(false)) { object value = registryKey.GetValue(valueName); if (value == null || !(value is string)) { result = defaultValue; } else { result = (string)value; } } return(result); }