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 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 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); }