protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains) { ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection(); foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains) { SmtpDomain smtpDomain; if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out smtpDomain)) { proxyAddressTemplateCollection.Add(proxyAddressTemplate); } } bool flag = false; foreach (SmtpDomain smtpDomain2 in domains) { SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain2.Domain, false); proxyAddressTemplateCollection.Add(item); if (!flag && !policy.NonAuthoritativeDomains.Contains(item)) { flag = true; } } if (!flag) { flag = (proxyAddressTemplateCollection.Count != policy.NonAuthoritativeDomains.Count); } if (flag) { UpdateEmailAddressPolicy.CheckEapVersion(policy); policy.NonAuthoritativeDomains = proxyAddressTemplateCollection; } }
protected override void InternalValidate() { TaskLogger.LogEnter(); base.InternalValidate(); OrganizationId organizationId = this.DataObject.OrganizationId; OrganizationalUnitIdParameter organizationalUnitIdParameter = null; if (base.Fields.IsModified("RecipientContainer")) { if (this.RecipientContainer == null) { this.DataObject.RecipientContainer = null; } else { organizationalUnitIdParameter = this.RecipientContainer; } } else if (this.DataObject.IsModified(AddressBookBaseSchema.RecipientContainer) && this.DataObject.RecipientContainer != null) { organizationalUnitIdParameter = new OrganizationalUnitIdParameter(this.DataObject.RecipientContainer); } if (organizationalUnitIdParameter != null) { if (base.GlobalConfigSession.IsInPreE14InteropMode()) { base.WriteError(new InvalidOperationException(Strings.ErrorCannotSetRecipientContainer), ErrorCategory.InvalidArgument, this.DataObject.Identity); } this.DataObject.RecipientContainer = NewAddressBookBase.GetRecipientContainer(organizationalUnitIdParameter, (IConfigurationSession)base.DataSession, organizationId, new NewAddressBookBase.GetUniqueObject(base.GetDataObject <ExchangeOrganizationalUnit>), new Task.ErrorLoggerDelegate(base.WriteError), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose)); } if (this.IsObjectStateChanged() && this.DataObject.HasMailboxManagerSetting) { base.WriteError(new InvalidOperationException(Strings.ErrorCanNotUpgradePolicyWithMailboxSetting(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Id); } if (this.IsObjectStateChanged() && this.DataObject.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2007)) { base.WriteError(new InvalidOperationException(Strings.ErrorObjectNotManagableFromCurrentConsole(this.Identity.ToString(), this.DataObject.ExchangeVersion.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity); } if (!base.HasErrors) { if (this.DataObject.IsChanged(EmailAddressPolicySchema.Priority) && this.DataObject.Priority != 0) { UpdateEmailAddressPolicy.PreparePriorityOfEapObjects(organizationId, this.DataObject, base.DataSession, new TaskExtendedErrorLoggingDelegate(this.WriteError), out this.affectedPolicies, out this.affectedPoliciesOriginalPriority); } if (!base.HasErrors && (this.DataObject.IsChanged(EmailAddressPolicySchema.RecipientFilter) || this.DataObject.IsChanged(EmailAddressPolicySchema.Priority) || this.DataObject.IsChanged(EmailAddressPolicySchema.RawEnabledEmailAddressTemplates) || this.DataObject.IsChanged(EmailAddressPolicySchema.DisabledEmailAddressTemplates) || this.DataObject.IsChanged(EmailAddressPolicySchema.NonAuthoritativeDomains) || this.DataObject.IsChanged(EmailAddressPolicySchema.RecipientContainer))) { this.DataObject[EmailAddressPolicySchema.RecipientFilterApplied] = false; } } if (this.domainValidator == null || !this.domainValidator.OrganizationId.Equals(organizationId)) { this.domainValidator = new UpdateEmailAddressPolicy.WritableDomainValidator(organizationId, this.ConfigurationSession, new Task.TaskErrorLoggingDelegate(base.WriteError)); } this.domainValidator.Validate(this.DataObject); TaskLogger.LogExit(); }
protected override IConfigurable PrepareDataObject() { TaskLogger.LogEnter(); IConfigurationSession configurationSession = (IConfigurationSession)base.DataSession; this.containerId = base.CurrentOrgContainerId.GetDescendantId(EmailAddressPolicy.RdnEapContainerToOrganization); this.DataObject = (EmailAddressPolicy)base.PrepareDataObject(); if (!base.HasErrors) { this.DataObject.SetId(this.containerId.GetChildId(base.Name)); if (!this.DataObject.IsModified(EmailAddressPolicySchema.Priority)) { this.DataObject.Priority = EmailAddressPolicyPriority.Lowest; } if (!base.HasErrors && (this.DataObject.Priority != 0 || !this.DataObject.IsModified(EmailAddressPolicySchema.Priority))) { UpdateEmailAddressPolicy.PreparePriorityOfEapObjects(base.OrganizationId ?? OrganizationId.ForestWideOrgId, this.DataObject, base.DataSession, new TaskExtendedErrorLoggingDelegate(this.WriteError), out this.affectedPolicies, out this.affectedPoliciesOriginalPriority); } OrganizationalUnitIdParameter organizationalUnitIdParameter = null; if (base.Fields.IsModified("RecipientContainer")) { if (this.RecipientContainer == null) { this.DataObject.RecipientContainer = null; } else { organizationalUnitIdParameter = this.RecipientContainer; } } else if (this.DataObject.RecipientContainer != null) { organizationalUnitIdParameter = new OrganizationalUnitIdParameter(this.DataObject.RecipientContainer); } if (organizationalUnitIdParameter != null) { if (base.GlobalConfigSession.IsInPreE14InteropMode()) { base.WriteError(new InvalidOperationException(Strings.ErrorCannotSetRecipientContainer), ErrorCategory.InvalidArgument, this.DataObject.Identity); } this.DataObject.RecipientContainer = NewAddressBookBase.GetRecipientContainer(organizationalUnitIdParameter, (IConfigurationSession)base.DataSession, base.OrganizationId ?? OrganizationId.ForestWideOrgId, new NewAddressBookBase.GetUniqueObject(base.GetDataObject <ExchangeOrganizationalUnit>), new Task.ErrorLoggerDelegate(base.WriteError), new Task.TaskVerboseLoggingDelegate(base.WriteVerbose)); } } TaskLogger.LogExit(); return(this.DataObject); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (base.IsProvisioningLayerAvailable) { base.UserSpecifiedParameters["DomainController"] = this.DataObject.OriginatingServer; try { OrganizationId organizationId = this.DataObject.OrganizationId; ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, organizationId, base.ExecutingUserOrganizationId, false); IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.TenantGlobalCatalogSession.DomainController, true, ConsistencyMode.PartiallyConsistent, sessionSettings, 287, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\RecipientPolicy\\UpdateEmailAddressPolicy.cs"); tenantOrRootOrgRecipientSession.UseGlobalCatalog = true; UpdateEmailAddressPolicy.UpdateRecipients(this.DataObject, this.DataObject.OrganizationId, base.DomainController, tenantOrRootOrgRecipientSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new WriteProgress(base.WriteProgress), this, this.FixMissingAlias.IsPresent); goto IL_1AF; } catch (DataSourceTransientException ex) { base.WriteError(new InvalidOperationException(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), this.DataObject.LdapRecipientFilter, ex.Message), ex), ErrorCategory.InvalidOperation, this.DataObject.Id); TaskLogger.Trace("Exception is raised while reading recipients: {0}", new object[] { ex.ToString() }); goto IL_1AF; } catch (DataSourceOperationException ex2) { base.WriteError(new InvalidOperationException(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), this.DataObject.LdapRecipientFilter, ex2.Message), ex2), ErrorCategory.InvalidOperation, this.DataObject.Id); TaskLogger.Trace("Exception is raised while reading recipients matching filter: {0}", new object[] { ex2.ToString() }); goto IL_1AF; } } base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null); IL_1AF: if (!this.DataObject.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2007)) { this.DataObject[EmailAddressPolicySchema.LastUpdatedRecipientFilter] = this.DataObject.RecipientFilter; this.DataObject[EmailAddressPolicySchema.RecipientFilterApplied] = true; } base.InternalProcessRecord(); TaskLogger.LogExit(); }
protected override void InternalValidate() { TaskLogger.LogEnter(); base.InternalValidate(); if (!base.HasErrors) { if (base.DataObject.Priority == EmailAddressPolicyPriority.Lowest) { this.WriteError(new InvalidOperationException(Strings.ErrorInvalidOperationOnLowestEap(this.Identity.ToString())), ErrorCategory.InvalidOperation, base.DataObject.Identity, false); } this.affectedPolicies = null; if (EmailAddressPolicySchema.Priority.ValidateValue(base.DataObject.Priority, false) == null) { base.DataObject.Priority = EmailAddressPolicyPriority.Lowest; UpdateEmailAddressPolicy.PreparePriorityOfEapObjects(base.DataObject.OrganizationId, base.DataObject, base.DataSession, new TaskExtendedErrorLoggingDelegate(this.WriteError), out this.affectedPolicies, out this.affectedPoliciesOriginalPriority); } } TaskLogger.LogExit(); }
protected override void HandleNonAuthoritativeDomains(EmailAddressPolicy policy, HashSet <SmtpDomain> domains) { ProxyAddressTemplateCollection proxyAddressTemplateCollection = new ProxyAddressTemplateCollection(); foreach (ProxyAddressTemplate proxyAddressTemplate in policy.NonAuthoritativeDomains) { SmtpDomain template; if (!UpdateEmailAddressPolicy.DomainValidator.TryGetDomain(proxyAddressTemplate, out template) || (!SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, template) && !SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, template))) { proxyAddressTemplateCollection.Add(proxyAddressTemplate); } } foreach (SmtpDomain smtpDomain in domains) { if (SetAcceptedDomain.DomainEditValidator.Conflict(this.newDomain, smtpDomain) || SetAcceptedDomain.DomainEditValidator.Conflict(this.oldDomain, smtpDomain)) { SmtpProxyAddressTemplate item = new SmtpProxyAddressTemplate("@" + smtpDomain.Domain, false); proxyAddressTemplateCollection.Add(item); } } UpdateEmailAddressPolicy.CheckEapVersion(policy); policy.NonAuthoritativeDomains = proxyAddressTemplateCollection; this.session.Save(policy); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); bool flag = this.affectedPolicies != null && this.affectedPolicies.Length > 0; List <EmailAddressPolicy> list = new List <EmailAddressPolicy>(); try { if (this.affectedPolicies != null) { for (int i = 0; i < this.affectedPolicies.Length; i++) { if (flag) { base.WriteProgress(Strings.ProgressEmailAddressPolicyPreparingPriority, Strings.ProgressEmailAddressPolicyAdjustingPriority(this.affectedPolicies[i].Identity.ToString()), i * 99 / this.affectedPolicies.Length + 1); } base.DataSession.Save(this.affectedPolicies[i]); this.affectedPolicies[i].Priority = this.affectedPoliciesOriginalPriority[i]; list.Add(this.affectedPolicies[i]); } } base.InternalProcessRecord(); if (!base.HasErrors) { list.Clear(); } if (base.IsProvisioningLayerAvailable) { base.UserSpecifiedParameters["DomainController"] = base.DataObject.OriginatingServer; } else { base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null); } } finally { for (int j = 0; j < list.Count; j++) { EmailAddressPolicy emailAddressPolicy = list[j]; try { if (flag) { base.WriteProgress(Strings.ProgressEmailAddressPolicyPreparingPriority, Strings.ProgressEmailAddressPolicyRollingBackPriority(emailAddressPolicy.Identity.ToString()), j * 99 / list.Count + 1); } base.DataSession.Save(emailAddressPolicy); } catch (DataSourceTransientException) { this.WriteWarning(Strings.VerboseFailedToRollbackPriority(emailAddressPolicy.Id.ToString())); } } } if (!base.HasErrors) { if (base.IsProvisioningLayerAvailable) { try { OrganizationId organizationId = base.DataObject.OrganizationId; ADSessionSettings sessionSettings = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, organizationId, base.ExecutingUserOrganizationId, false); IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.TenantGlobalCatalogSession.DomainController, true, ConsistencyMode.PartiallyConsistent, sessionSettings, 190, "InternalProcessRecord", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\RecipientPolicy\\RemoveEmailAddressPolicy.cs"); tenantOrRootOrgRecipientSession.UseGlobalCatalog = true; UpdateEmailAddressPolicy.UpdateRecipients(base.DataObject, base.DataObject.OrganizationId, base.DomainController, tenantOrRootOrgRecipientSession, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.TaskWarningLoggingDelegate(this.WriteWarning), new WriteProgress(base.WriteProgress), this); goto IL_2DE; } catch (DataSourceTransientException ex) { this.WriteWarning(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), base.DataObject.LdapRecipientFilter, ex.Message)); TaskLogger.Trace("Exception is raised while reading recipients: {0}", new object[] { ex.ToString() }); goto IL_2DE; } catch (DataSourceOperationException ex2) { this.WriteWarning(Strings.ErrorReadMatchingRecipients(this.Identity.ToString(), base.DataObject.LdapRecipientFilter, ex2.Message)); TaskLogger.Trace("Exception is raised while reading recipients matching filter: {0}", new object[] { ex2.ToString() }); goto IL_2DE; } } base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null); } IL_2DE: TaskLogger.LogExit(); }
internal static int PreparePriorityOfEapObjects(OrganizationId organizationId, EmailAddressPolicy policy, IConfigDataProvider session, TaskExtendedErrorLoggingDelegate writeError, out EmailAddressPolicy[] policiesAdjusted, out EmailAddressPolicyPriority[] originalPriorities) { policiesAdjusted = null; originalPriorities = null; try { QueryFilter queryFilter = new AndFilter(new QueryFilter[] { new ComparisonFilter(ComparisonOperator.LessThan, EmailAddressPolicySchema.Priority, EmailAddressPolicyPriority.Lowest), new ComparisonFilter(ComparisonOperator.GreaterThanOrEqual, EmailAddressPolicySchema.Priority, EmailAddressPolicyPriority.Highest) }); if (policy.ObjectState != ObjectState.New) { queryFilter = new AndFilter(new QueryFilter[] { queryFilter, new ComparisonFilter(ComparisonOperator.NotEqual, ADObjectSchema.Id, new ADObjectId(null, policy.Guid)) }); } IConfigurationSession configurationSession = (IConfigurationSession)session; ADPagedReader <EmailAddressPolicy> adpagedReader = configurationSession.FindPaged <EmailAddressPolicy>(EmailAddressPolicyIdParameter.GetRootContainerId(configurationSession, organizationId), QueryScope.OneLevel, queryFilter, new SortBy(EmailAddressPolicySchema.Priority, SortOrder.Ascending), 0); EmailAddressPolicy[] array = adpagedReader.ReadAllPages(); Array.Sort <EmailAddressPolicy>(array, EmailAddressPolicy.PriorityComparer); if (policy.Priority != EmailAddressPolicyPriority.Lowest) { if (policy.ObjectState == ObjectState.New) { if ((array.Length == 0 && policy.Priority != EmailAddressPolicyPriority.Highest) || (array.Length > 0 && policy.Priority > 1 + array[array.Length - 1].Priority)) { writeError(new ArgumentException(Strings.ErrorInvalidEapNewPriority(policy.Priority.ToString()), "Priority"), ErrorCategory.InvalidArgument, policy.Id, true); } } else if ((array.Length == 0 && policy.Priority != EmailAddressPolicyPriority.Highest) || (array.Length > 0 && policy.Priority > array[array.Length - 1].Priority)) { writeError(new ArgumentException(Strings.ErrorInvalidEapSetPriority(policy.Priority.ToString()), "Priority"), ErrorCategory.InvalidArgument, policy.Id, true); } } List <EmailAddressPolicy> list = new List <EmailAddressPolicy>(); List <EmailAddressPolicyPriority> list2 = new List <EmailAddressPolicyPriority>(); bool flag = false; for (int i = 0; i < array.Length; i++) { int num = i + (flag ? 1 : 0) + EmailAddressPolicyPriority.Highest; if (!flag && num == policy.Priority) { flag = true; num++; } EmailAddressPolicyPriority priority = array[i].Priority; UpdateEmailAddressPolicy.CheckEapVersion(array[i]); array[i].Priority = (EmailAddressPolicyPriority)num; if (array[i].IsChanged(EmailAddressPolicySchema.Priority)) { list.Add(array[i]); list2.Add(priority); } } if (!flag) { UpdateEmailAddressPolicy.CheckEapVersion(policy); policy.Priority = (EmailAddressPolicyPriority)(array.Length + EmailAddressPolicyPriority.Highest); } foreach (EmailAddressPolicy emailAddressPolicy in list) { ValidationError[] array2 = emailAddressPolicy.Validate(); int num2 = 0; while (array2.Length > num2) { writeError(new InvalidOperationException(Strings.ErrorInvalidOperationOnEapObject(emailAddressPolicy.Id.ToString(), array2[num2].Description)), ErrorCategory.InvalidData, policy.Id, array2.Length - 1 == num2); num2++; } } policiesAdjusted = list.ToArray(); originalPriorities = list2.ToArray(); return(list.Count); } catch (DataSourceTransientException exception) { writeError(exception, ErrorCategory.ReadError, policy.Id, true); } return(-1); }
private static void UpdateRecipients(EmailAddressPolicy eap, OrganizationId organizationId, string domainController, IRecipientSession globalCatalogSession, Task.TaskVerboseLoggingDelegate writeVerbose, Task.TaskWarningLoggingDelegate writeWarning, WriteProgress writeProgress, Task cmdlet, bool fixMissingAlias) { UpdateEmailAddressPolicy.AssertArgumentNotNull(eap, "eap"); UpdateEmailAddressPolicy.AssertArgumentNotNull(writeVerbose, "writeVerbose"); UpdateEmailAddressPolicy.AssertArgumentNotNull(writeWarning, "writeWarning"); UpdateEmailAddressPolicy.AssertArgumentNotNull(writeProgress, "writeProgress"); if (string.IsNullOrEmpty(eap.LdapRecipientFilter) && !fixMissingAlias) { return; } int num = 0; try { if (cmdlet != null && cmdlet.Stopping) { return; } IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(false, ConsistencyMode.PartiallyConsistent, globalCatalogSession.SessionSettings, 409, "UpdateRecipients", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\RecipientPolicy\\UpdateEmailAddressPolicy.cs"); tenantOrRootOrgRecipientSession.EnforceDefaultScope = false; IEnumerable <ADRecipient> enumerable = eap.FindMatchingRecipientsPaged(globalCatalogSession, organizationId, null, fixMissingAlias); string text = null; Hashtable hashtable = new Hashtable(); foreach (ADRecipient adrecipient in enumerable) { if (cmdlet != null && cmdlet.Stopping) { return; } if (!string.IsNullOrEmpty(domainController) && string.IsNullOrEmpty(text)) { try { string configurationDomainControllerFqdn = SystemConfigurationTasksHelper.GetConfigurationDomainControllerFqdn(domainController); int num2 = configurationDomainControllerFqdn.IndexOf("."); if (0 <= num2) { text = configurationDomainControllerFqdn.Substring(num2); } } catch (SocketException ex) { writeWarning(Strings.ErrorResolveFqdnForDomainController(domainController, ex.Message)); return; } } string text2 = adrecipient.Id.DomainId.DistinguishedName.ToLowerInvariant(); if (!hashtable.ContainsKey(text2)) { SystemConfigurationTasksHelper.PrepareDomainControllerRecipientSessionForUpdate(tenantOrRootOrgRecipientSession, adrecipient.Id, domainController, text); IEnumerable <ADRecipient> collection = eap.FindMatchingRecipientsPaged(tenantOrRootOrgRecipientSession, organizationId, adrecipient.Id, fixMissingAlias); List <ADRecipient> list = new List <ADRecipient>(); Exception ex2 = null; Exception ex3 = null; try { list.AddRange(collection); } catch (DataSourceOperationException ex4) { TaskLogger.Trace("Exception caught when re-read recipient from DC : {0}", new object[] { ex4.ToString() }); if (ex4.InnerException is ActiveDirectoryObjectNotFoundException || ex4.InnerException is AuthenticationException) { ex3 = ex4; } else { ex2 = ex4; } } catch (DataSourceTransientException ex5) { TaskLogger.Trace("Exception caught when re-read recipient from DC : {0}", new object[] { ex5.ToString() }); if (ex5.InnerException is ActiveDirectoryOperationException || ex5.InnerException is ActiveDirectoryServerDownException) { ex3 = ex5; } else { ex2 = ex5; } } if (ex3 != null) { hashtable.Add(text2, null); writeWarning(Strings.ErrorCannotUpdateRecipientOfDomain(DNConvertor.FqdnFromDomainDistinguishedName(text2), ex3.Message)); } else if (ex2 != null) { writeWarning(Strings.ErrorFailedToReadRecipientForUpdate(adrecipient.Id.ToString(), ex2.Message)); } else if (1 == list.Count) { ADRecipient adrecipient2 = list[0]; if (cmdlet != null && cmdlet.Stopping) { return; } num = num++ % 99 + 1; writeProgress(Strings.ProgressActivityUpdateRecipient, Strings.ProgressStatusUpdateRecipient(adrecipient2.Id.ToString()), num); writeVerbose(Strings.ProgressStatusUpdateRecipient(adrecipient2.Id.ToString())); try { if (fixMissingAlias && string.IsNullOrEmpty(adrecipient2.Alias)) { if (adrecipient2 is ADMicrosoftExchangeRecipient) { adrecipient2.Alias = RecipientTaskHelper.GenerateUniqueAlias(globalCatalogSession, adrecipient2.OrganizationId, ADMicrosoftExchangeRecipient.DefaultName, writeVerbose); } else if (adrecipient2 is ADSystemAttendantMailbox) { adrecipient2.Alias = RecipientTaskHelper.GenerateUniqueAlias(globalCatalogSession, adrecipient2.OrganizationId, (adrecipient2 as ADSystemAttendantMailbox).ServerName + "-SA", writeVerbose); } else { adrecipient2.Alias = RecipientTaskHelper.GenerateUniqueAlias(globalCatalogSession, adrecipient2.OrganizationId, adrecipient2.Name, writeVerbose); } writeWarning(Strings.WarningGeneratingMissingAlias(adrecipient2.Identity.ToString(), adrecipient2.Alias)); } if (!adrecipient2.IsReadOnly) { ProvisioningLayer.UpdateAffectedIConfigurable(cmdlet, RecipientTaskHelper.ConvertRecipientToPresentationObject(adrecipient2), true); } if (!adrecipient2.IsValid || adrecipient2.IsReadOnly) { writeWarning(Strings.ErrorCannotUpdateInvalidRecipient(adrecipient2.Id.ToString())); } else { if (cmdlet.IsVerboseOn && adrecipient2.ObjectState != ObjectState.Unchanged) { writeVerbose(TaskVerboseStringHelper.GetConfigurableObjectChangedProperties(adrecipient2)); } tenantOrRootOrgRecipientSession.Save(adrecipient2); } } catch (DataSourceTransientException ex6) { writeWarning(Strings.ErrorUpdateRecipient(adrecipient2.Id.ToString(), ex6.Message)); TaskLogger.Trace("Exception is raised while updating recipient '{0}': {1}", new object[] { adrecipient2.Id.ToString(), ex6.Message }); } catch (DataSourceOperationException ex7) { writeWarning(Strings.ErrorUpdateRecipient(adrecipient2.Id.ToString(), ex7.Message)); TaskLogger.Trace("Exception is raised while updating recipient '{0}': {1}", new object[] { adrecipient2.Id.ToString(), ex7.Message }); } catch (DataValidationException ex8) { writeWarning(Strings.ErrorUpdateRecipient(adrecipient2.Id.ToString(), ex8.Message)); TaskLogger.Trace("Exception is raised while updating recipient '{0}': {1}", new object[] { adrecipient2.Id.ToString(), ex8.Message }); } } } } } finally { if (cmdlet != null && cmdlet.Stopping) { ExManagementApplicationLogger.LogEvent(ManagementEventLogConstants.Tuple_RecipientsUpdateForEmailAddressPolicyCancelled, new string[] { eap.Identity.ToString(), eap.LdapRecipientFilter, ADRecipientSchema.EmailAddresses.Name }); } } if (num != 0) { writeVerbose(Strings.ProgressStatusFinished); writeProgress(Strings.ProgressActivityUpdateRecipient, Strings.ProgressStatusFinished, 100); } }
internal static void UpdateRecipients(EmailAddressPolicy eap, OrganizationId organizationId, string domainController, IRecipientSession globalCatalogSession, Task.TaskVerboseLoggingDelegate writeVerbose, Task.TaskWarningLoggingDelegate writeWarning, WriteProgress writeProgress, Task cmdlet) { UpdateEmailAddressPolicy.UpdateRecipients(eap, organizationId, domainController, globalCatalogSession, writeVerbose, writeWarning, writeProgress, cmdlet, false); }