// Token: 0x06005DA2 RID: 23970 RVA: 0x00142FC3 File Offset: 0x001411C3 public TenantOrganizationPresentationObject(ExchangeConfigurationUnit dataObject) : base(dataObject) { this.PopulateTaskPopulatedProperties(); }
protected bool MustScopeToSharedConfiguration(ExchangeConfigurationUnit configUnit) { return(this.SharedTenantConfigurationMode == SharedTenantConfigurationMode.Static || (this.SharedTenantConfigurationMode == SharedTenantConfigurationMode.Dehydrateable && configUnit.IsDehydrated)); }
private static bool ShouldCreateTenantTemplate(string programId, string offerId, PartitionId partitionId, out ExchangeConfigurationUnit sctConfigUnit) { sctConfigUnit = null; ADDriverContext processADContext = ADSessionSettings.GetProcessADContext(); if (processADContext == null || processADContext.Mode != ContextMode.Setup) { return(true); } ADPagedReader <ExchangeConfigurationUnit> adpagedReader = TemplateTenantConfiguration.FindAllTempateTenants(programId, offerId, partitionId); foreach (ExchangeConfigurationUnit exchangeConfigurationUnit in adpagedReader) { if (exchangeConfigurationUnit.SharedConfigurationInfo != null && ((IComparable)TemplateTenantConfiguration.RequiredTemplateTenantVersion).CompareTo(exchangeConfigurationUnit.SharedConfigurationInfo.CurrentVersion) <= 0) { sctConfigUnit = exchangeConfigurationUnit; return(false); } } return(true); }
private static bool ShouldCreateSharedConfiguration(string programId, string offerId, PartitionId partitionId, out ExchangeConfigurationUnit sctConfigUnit) { sctConfigUnit = null; ADDriverContext processADContext = ADSessionSettings.GetProcessADContext(); if (processADContext == null || processADContext.Mode != ContextMode.Setup) { return(true); } SharedConfigurationInfo sci = SharedConfigurationInfo.FromInstalledVersion(programId, offerId); sctConfigUnit = SharedConfiguration.FindOneSharedConfiguration(sci, partitionId); return(sctConfigUnit == null); }
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(); }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (this.isRelocationComplete) { ITenantConfigurationSession tenantConfigurationSession = this.CreateAllTenantsScopedConfigSession(this.DataObject.OrganizationId); ITenantRecipientSession recipientSession = this.CreateRecipientSession(this.DataObject.OrganizationId.OrganizationalUnit); Container container = tenantConfigurationSession.Read <Container>(this.DataObject.OrganizationId.ConfigurationUnit.Parent); ADOrganizationalUnit adorganizationalUnit = null; bool useConfigNC = tenantConfigurationSession.UseConfigNC; try { tenantConfigurationSession.UseConfigNC = false; adorganizationalUnit = tenantConfigurationSession.Read <ADOrganizationalUnit>(this.DataObject.OrganizationId.OrganizationalUnit); } finally { tenantConfigurationSession.UseConfigNC = useConfigNC; } if (adorganizationalUnit != null) { this.CleanupRecipients(this.DataObject.OrganizationId.OrganizationalUnit, recipientSession); tenantConfigurationSession.DeleteTree(adorganizationalUnit, null); } if (container != null) { this.RemoveExternalDirOrgIdFromCU(tenantConfigurationSession, this.DataObject.OrganizationId.ConfigurationUnit); tenantConfigurationSession.DeleteTree(container, null); } if (!this.DeprovisionedTarget) { ITenantConfigurationSession tenantConfigurationSession2 = this.CreateAllTenantsScopedConfigSession(this.DataObject.TargetOrganizationId); ExchangeConfigurationUnit exchangeConfigurationUnit = tenantConfigurationSession2.Read <ExchangeConfigurationUnit>(this.DataObject.TargetOrganizationId.ConfigurationUnit); exchangeConfigurationUnit.RelocationSourceForestRaw = null; exchangeConfigurationUnit.RelocationStatusDetailsRaw = RelocationStatusDetails.NotStarted; exchangeConfigurationUnit.TenantRelocationCompletionTargetVector = null; tenantConfigurationSession2.Save(exchangeConfigurationUnit); } } else { ITenantConfigurationSession tenantConfigurationSession3 = this.CreateAllTenantsScopedConfigSession(this.DataObject.TargetOrganizationId); if (this.DataObject.TargetOrganizationId != null) { if (!TenantRelocationStateCache.IgnoreRelocationTimeConstraints() && !this.WaitForReplicationConvergenceInTargetForest(this.DataObject.TargetOriginatingServer, new TimeSpan(0, 5, 0))) { base.WriteError(new ReplicationNotCompleteException(this.DataObject.TargetForest, this.DataObject.TargetOriginatingServer), ErrorCategory.InvalidOperation, this.DataObject.Identity); } ITenantRecipientSession recipientSession2 = this.CreateRecipientSession(this.DataObject.TargetOrganizationId.OrganizationalUnit); Container container2 = tenantConfigurationSession3.Read <Container>(this.DataObject.TargetOrganizationId.ConfigurationUnit.Parent); ADOrganizationalUnit adorganizationalUnit2 = null; if (this.DataObject.TargetOrganizationId.OrganizationalUnit != null) { bool useConfigNC2 = tenantConfigurationSession3.UseConfigNC; try { tenantConfigurationSession3.UseConfigNC = false; adorganizationalUnit2 = tenantConfigurationSession3.Read <ADOrganizationalUnit>(this.DataObject.TargetOrganizationId.OrganizationalUnit); } finally { tenantConfigurationSession3.UseConfigNC = useConfigNC2; } } if (adorganizationalUnit2 != null) { this.CleanupRecipients(this.DataObject.TargetOrganizationId.OrganizationalUnit, recipientSession2); tenantConfigurationSession3.DeleteTree(adorganizationalUnit2, null); } if (container2 != null) { this.RemoveExternalDirOrgIdFromCU(tenantConfigurationSession3, this.DataObject.TargetOrganizationId.ConfigurationUnit); tenantConfigurationSession3.DeleteTree(container2, null); } } this.DataObject.RelocationSyncStartTime = null; this.DataObject.LockdownStartTime = null; this.DataObject.RetiredStartTime = null; this.DataObject.TransitionCounter = null; this.DataObject.TargetForest = null; this.DataObject.SafeLockdownSchedule = null; this.DataObject[TenantRelocationRequestSchema.RelocationStatusDetailsRaw] = null; this.DataObject[TenantRelocationRequestSchema.RelocationSourceForestRaw] = null; this.DataObject[TenantRelocationRequestSchema.TenantRelocationFlags] = 0; base.InternalProcessRecord(); } TaskLogger.LogExit(); }