Exemple #1
0
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            OrganizationId organizationId = OrganizationTaskHelper.ResolveOrganization(this, this.Identity, base.RootOrgContainerId, Strings.ErrorOrganizationIdentityRequired);

            if (this.Identity == null)
            {
                this.Identity = new OrganizationIdParameter(organizationId.OrganizationalUnit.Name);
            }
            ADSessionSettings sessionSettings = ADSessionSettings.FromAllTenantsPartitionId(organizationId.PartitionId);

            this.adSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession((base.ServerSettings == null) ? null : base.ServerSettings.PreferredGlobalCatalog(organizationId.PartitionId.ForestFQDN), false, ConsistencyMode.PartiallyConsistent, sessionSettings, 262, "InternalValidate", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\RemoveOrganization.cs");
            this.tenantOU  = OrganizationTaskHelper.GetOUFromOrganizationId(this.Identity, this.adSession, new Task.TaskErrorLoggingDelegate(base.WriteError), false);
            if (this.tenantOU == null)
            {
                base.WriteError(new OrganizationDoesNotExistException(Strings.ErrorOrganizationNotFound(this.Identity.ToString())), ErrorCategory.InvalidArgument, null);
            }
            this.adSession.UseConfigNC = true;
            this.exchangeConfigUnit    = this.adSession.Read <ExchangeConfigurationUnit>(this.tenantOU.ConfigurationUnit);
            if (!OrganizationTaskHelper.CanProceedWithOrganizationTask(this.Identity, this.adSession, RemoveOrganization.ignorableFlagsOnStatusTimeout, new Task.TaskErrorLoggingDelegate(base.WriteError)))
            {
                base.WriteError(new OrganizationPendingOperationException(Strings.ErrorCannotRemoveNonActiveOrganization(this.Identity.ToString())), ErrorCategory.InvalidArgument, null);
            }
            ServicePlan servicePlanSettings = ServicePlanConfiguration.GetInstance().GetServicePlanSettings(this.exchangeConfigUnit.ProgramId, this.exchangeConfigUnit.OfferId);

            base.InternalLocalStaticConfigEnabled      = !servicePlanSettings.Organization.AdvancedHydrateableObjectsSharedEnabled;
            base.InternalLocalHydrateableConfigEnabled = !servicePlanSettings.Organization.CommonHydrateableObjectsSharedEnabled;
            base.InternalCreateSharedConfiguration     = (this.exchangeConfigUnit.SharedConfigurationInfo != null);
            ADSessionSettings sessionSettings2 = ADSessionSettings.FromOrganizationIdWithoutRbacScopes(base.RootOrgContainerId, this.tenantOU.OrganizationId, base.ExecutingUserOrganizationId, false);

            this.recipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession((base.ServerSettings == null) ? null : base.ServerSettings.PreferredGlobalCatalog(organizationId.PartitionId.ForestFQDN), true, ConsistencyMode.PartiallyConsistent, sessionSettings2, 314, "InternalValidate", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\RemoveOrganization.cs");
            IConfigurationSession    tenantOrTopologyConfigurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession((base.ServerSettings == null) ? null : base.ServerSettings.PreferredGlobalCatalog(organizationId.PartitionId.ForestFQDN), true, ConsistencyMode.PartiallyConsistent, sessionSettings2, 320, "InternalValidate", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\RemoveOrganization.cs");
            TransportConfigContainer transportConfigContainer             = tenantOrTopologyConfigurationSession.FindSingletonConfigurationObject <TransportConfigContainer>();

            if (transportConfigContainer != null)
            {
                this.organizationFederatedMailboxAlias = transportConfigContainer.OrganizationFederatedMailbox.Local;
            }
            if (!this.Force && this.GetUserMailboxCount(2) > 0)
            {
                base.WriteError(new OrganizationValidationException(Strings.RemoveOrganizationFailWithExistingMailboxes), ErrorCategory.InvalidOperation, this.Identity);
            }
            if (ExchangeConfigurationUnit.RelocationInProgress(this.exchangeConfigUnit))
            {
                base.WriteError(new OrganizationValidationException(Strings.RemoveOrganizationFailRelocationInProgress), (ErrorCategory)1000, this.Identity);
            }
            if (this.exchangeConfigUnit.EnableAsSharedConfiguration)
            {
                base.WriteError(new OrganizationValidationException(Strings.RemoveOrganizationFailWithoutSharedConfigurationParameter), (ErrorCategory)1000, this.Identity);
            }
            if (OrganizationTaskHelper.IsSharedConfigLinkedToOtherTenants(organizationId, this.adSession))
            {
                base.WriteError(new OrganizationValidationException(Strings.RemoveOrganizationFailWithSharedConfigurationBacklinks), (ErrorCategory)1000, this.Identity);
            }
            if (base.IsMSITTenant(organizationId))
            {
                this.authoritativeOnly = true;
            }
            TaskLogger.LogExit();
        }