protected override IConfigurable ResolveDataObject() { ADRecipient adrecipient = (ADRecipient)base.ResolveDataObject(); MailboxTaskHelper.BlockRemoveOrDisableIfLitigationHoldEnabled((ADUser)adrecipient, new Task.ErrorLoggerDelegate(base.WriteError), true, this.IgnoreLegalHold.ToBool()); MailboxTaskHelper.BlockRemoveOrDisableIfDiscoveryHoldEnabled((ADUser)adrecipient, new Task.ErrorLoggerDelegate(base.WriteError), true, this.IgnoreLegalHold.ToBool()); MailboxTaskHelper.BlockRemoveOrDisableIfJournalNDRMailbox((ADUser)adrecipient, this.TenantLocalConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), true); MailboxTaskHelper.ValidateNoOABsAssignedToArbitrationMailbox((ADUser)adrecipient, this.DisableArbitrationMailboxWithOABsAllowed.ToBool(), new Task.ErrorLoggerDelegate(base.WriteError), Strings.ErrorDisableArbitrationMailboxWithOABsAssigned(this.Identity.ToString())); if (MailboxTaskHelper.ExcludeArbitrationMailbox(adrecipient, this.Arbitration) || MailboxTaskHelper.ExcludePublicFolderMailbox(adrecipient, this.PublicFolder) || MailboxTaskHelper.ExcludeMailboxPlan(adrecipient, false)) { base.WriteError(new ManagementObjectNotFoundException(base.GetErrorMessageObjectNotFound(this.Identity.ToString(), typeof(ADUser).ToString(), (base.DataSession != null) ? base.DataSession.Source : null)), ErrorCategory.InvalidData, this.Identity); } if (ComplianceConfigImpl.JournalArchivingHardeningEnabled) { MailboxTaskHelper.BlockRemoveOrDisableMailboxIfJournalArchiveEnabled(base.DataSession as IRecipientSession, this.ConfigurationSession, (ADUser)adrecipient, new Task.ErrorLoggerDelegate(base.WriteError), true); } return(adrecipient); }
protected override void InternalValidate() { TaskLogger.LogEnter(); this.isToInactiveMailbox = false; this.isDisconnectInactiveMailbox = false; if (this.Identity != null) { base.InternalValidate(); this.isToInactiveMailbox = this.IsToInactiveMailbox(); this.isDisconnectInactiveMailbox = this.IsDisconnectInactiveMailbox(); if (!this.isToInactiveMailbox && !this.isDisconnectInactiveMailbox) { MailboxTaskHelper.BlockRemoveOrDisableIfLitigationHoldEnabled(base.DataObject, new Task.ErrorLoggerDelegate(base.WriteError), false, this.IgnoreLegalHold.ToBool()); MailboxTaskHelper.BlockRemoveOrDisableIfDiscoveryHoldEnabled(base.DataObject, new Task.ErrorLoggerDelegate(base.WriteError), false, this.IgnoreLegalHold.ToBool()); } MailboxTaskHelper.BlockRemoveOrDisableIfJournalNDRMailbox(base.DataObject, this.TenantLocalConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), false); if (ComplianceConfigImpl.JournalArchivingHardeningEnabled && !this.skipJournalArchivingCheck) { MailboxTaskHelper.BlockRemoveOrDisableMailboxIfJournalArchiveEnabled(base.DataSession as IRecipientSession, this.ConfigurationSession, base.DataObject, new Task.ErrorLoggerDelegate(base.WriteError), false); } if (base.DataObject.RecipientTypeDetails == RecipientTypeDetails.ArbitrationMailbox && this.ArbitrationMailboxUsageValidationRequired) { ADUser dataObject = base.DataObject; Task.ErrorLoggerDelegate writeError = new Task.ErrorLoggerDelegate(base.WriteError); TIdentity identity = this.Identity; MailboxTaskHelper.ValidateNotBuiltInArbitrationMailbox(dataObject, writeError, Strings.ErrorRemoveArbitrationMailbox(identity.ToString())); ADUser dataObject2 = base.DataObject; IRecipientSession tenantGlobalCatalogSession = base.TenantGlobalCatalogSession; Task.ErrorLoggerDelegate writeError2 = new Task.ErrorLoggerDelegate(base.WriteError); TIdentity identity2 = this.Identity; MailboxTaskHelper.ValidateArbitrationMailboxHasNoGroups(dataObject2, tenantGlobalCatalogSession, writeError2, Strings.ErrorRemoveMailboxWithAssociatedApprovalRecipents(identity2.ToString())); ADUser dataObject3 = base.DataObject; bool overrideCheck = this.RemoveArbitrationMailboxWithOABsAllowed.ToBool(); Task.ErrorLoggerDelegate writeError3 = new Task.ErrorLoggerDelegate(base.WriteError); TIdentity identity3 = this.Identity; MailboxTaskHelper.ValidateNoOABsAssignedToArbitrationMailbox(dataObject3, overrideCheck, writeError3, Strings.ErrorRemoveArbitrationMailboxWithOABsAssigned(identity3.ToString())); ADUser dataObject4 = base.DataObject; IRecipientSession tenantGlobalCatalogSession2 = base.TenantGlobalCatalogSession; ADObjectId rootOrgContainerId = base.RootOrgContainerId; bool isPresent = this.RemoveLastArbitrationMailboxAllowed.IsPresent; Task.ErrorLoggerDelegate writeError4 = new Task.ErrorLoggerDelegate(base.WriteError); TIdentity identity4 = this.Identity; MailboxTaskHelper.ValidateNotLastArbitrationMailbox(dataObject4, tenantGlobalCatalogSession2, rootOrgContainerId, isPresent, writeError4, Strings.ErrorCannotRemoveLastArbitrationMailboxInOrganization(identity4.ToString())); } if (this.AuditLog) { if (base.DataObject.RecipientTypeDetails != RecipientTypeDetails.AuditLogMailbox) { LocalizedException exception = new RecipientTaskException(Strings.ErrorSpecifiedMailboxShouldBeAuditLogMailbox(base.DataObject.Identity.ToString())); ExchangeErrorCategory category = ExchangeErrorCategory.Context; TIdentity identity5 = this.Identity; base.WriteError(exception, category, identity5.ToString()); } } else if (base.DataObject.RecipientTypeDetails == RecipientTypeDetails.AuditLogMailbox) { LocalizedException exception2 = new RecipientTaskException(Strings.ErrorAuditLogMailboxShouldBeDeletedWithAuditLogSpecified(base.DataObject.Identity.ToString())); ExchangeErrorCategory category2 = ExchangeErrorCategory.Context; TIdentity identity6 = this.Identity; base.WriteError(exception2, category2, identity6.ToString()); } } else { this.InternalValidateStoreMailboxIdentity(); try { this.mailboxStatistics = (MailboxStatistics)base.GetDataObject <MailboxStatistics>(this.StoreMailboxIdentity, this.mapiSession, MapiTaskHelper.ConvertDatabaseADObjectToDatabaseId(this.database), new LocalizedString?(Strings.ErrorStoreMailboxNotFound(this.StoreMailboxIdentity.ToString(), this.Database.ToString())), new LocalizedString?(Strings.ErrorStoreMailboxNotUnique(this.StoreMailboxIdentity.ToString(), this.Database.ToString())), ExchangeErrorCategory.Client); MailboxTaskHelper.ValidateMailboxIsDisconnected(base.TenantGlobalCatalogSession, this.mailboxStatistics.MailboxGuid, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerDelegate(base.WriteError)); this.mailboxStatistics.Database = this.database.Identity; } catch (DataSourceTransientException exception3) { base.WriteError(exception3, ExchangeErrorCategory.ServerTransient, this.StoreMailboxIdentity); } } if (this.PublicFolder) { Organization orgContainer = this.TenantLocalConfigurationSession.GetOrgContainer(); if (orgContainer.DefaultPublicFolderMailbox.HierarchyMailboxGuid == Guid.Empty && !this.Force) { LocalizedException exception4 = new RecipientTaskException(Strings.ErrorPrimaryPublicFolderMailboxNotFound); ExchangeErrorCategory category3 = ExchangeErrorCategory.Context; TIdentity identity7 = this.Identity; base.WriteError(exception4, category3, identity7.ToString()); } if (this.currentOrganizationId == null || this.currentOrganizationId != base.DataObject.OrganizationId) { this.currentOrganizationId = base.DataObject.OrganizationId; TenantPublicFolderConfigurationCache.Instance.RemoveValue(base.DataObject.OrganizationId); } MailboxTaskHelper.RemoveOrDisablePublicFolderMailbox(base.DataObject, Guid.Empty, this.tenantLocalConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), false, this.Force); } TaskLogger.LogExit(); }