TenantOrganizationPresentationObjectWrapper IOrganizationOperation.GetOrganization(string tenantId)
        {
            TenantOrganizationPresentationObjectWrapper result;

            using (AnchorRunspaceProxy anchorRunspaceProxy = AnchorRunspaceProxy.CreateRunspaceForDatacenterAdmin(this.Context, "upgradehandlers"))
            {
                PSCommand pscommand = new PSCommand();
                pscommand.AddCommand("Get-Organization");
                pscommand.AddParameter("Identity", tenantId);
                TenantOrganizationPresentationObject tenant = null;
                try
                {
                    tenant = anchorRunspaceProxy.RunPSCommandSingleOrDefault <TenantOrganizationPresentationObject>(pscommand);
                }
                catch (Exception ex)
                {
                    this.Context.Logger.Log(MigrationEventType.Error, "MigrationPermanentException from GetOrganization '{0}'.{1}", new object[]
                    {
                        tenantId,
                        ex
                    });
                    if (ex.InnerException is ManagementObjectNotFoundException)
                    {
                        throw new OrganizationNotFoundException(tenantId, ex);
                    }
                    throw;
                }
                result = new TenantOrganizationPresentationObjectWrapper(tenant);
            }
            return(result);
        }
Example #2
0
        protected override void WriteResult(IConfigurable dataObject)
        {
            ExchangeConfigurationUnit            dataObject2 = (ExchangeConfigurationUnit)dataObject;
            TenantOrganizationPresentationObject dataObject3 = new TenantOrganizationPresentationObject(dataObject2);

            base.WriteResult(dataObject3);
        }
        protected override void InternalProcessRecord()
        {
            base.InternalProcessRecord();
            Version tenantVersion = null;

            if (this.tenantVersionRequired)
            {
                ExchangeConfigurationUnit dataObject = this.session.Read <ExchangeConfigurationUnit>(base.CurrentOrganizationId.ConfigurationUnit);
                Version installedVersion             = ConfigurationContext.Setup.InstalledVersion;
                TenantOrganizationPresentationObject tenantOrganizationPresentationObject = new TenantOrganizationPresentationObject(dataObject);
                tenantVersion = new Version(installedVersion.Major, installedVersion.Minor, tenantOrganizationPresentationObject.BuildMajor, tenantOrganizationPresentationObject.BuildMinor);
            }
            SupportedVersion supportedVersion = this.toolsData.GetSupportedVersion(this.Identity, tenantVersion);

            base.WriteObject(this.ConstructOutputObject(supportedVersion));
        }
Example #4
0
        protected override void WriteResult(IConfigurable dataObject)
        {
            ExchangeConfigurationUnit exchangeConfigurationUnit = (ExchangeConfigurationUnit)dataObject;

            if (exchangeConfigurationUnit.OrganizationStatus != OrganizationStatus.ReadyForRemoval && exchangeConfigurationUnit.OrganizationStatus != OrganizationStatus.SoftDeleted && exchangeConfigurationUnit.OrganizationStatus != OrganizationStatus.Active && exchangeConfigurationUnit.OrganizationStatus != OrganizationStatus.ReadOnly)
            {
                this.WriteWarning(Strings.ErrorNonActiveOrganizationFound(exchangeConfigurationUnit.Identity.ToString()));
            }
            TenantOrganizationPresentationObject tenantOrganizationPresentationObject = new TenantOrganizationPresentationObject(exchangeConfigurationUnit);

            if (exchangeConfigurationUnit.HasSharedConfigurationBL())
            {
                tenantOrganizationPresentationObject.IsSharingConfiguration = true;
                tenantOrganizationPresentationObject.ResetChangeTracking();
            }
            base.WriteResult(tenantOrganizationPresentationObject);
        }
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            if (this.CreateSharedConfiguration && !this.shouldCreateSCT)
            {
                if (this.sctConfigUnit != null)
                {
                    TenantOrganizationPresentationObject sendToPipeline = new TenantOrganizationPresentationObject(this.sctConfigUnit);
                    base.WriteObject(sendToPipeline);
                }
                return;
            }
            try
            {
                base.InternalProcessRecord();
            }
            catch (Exception)
            {
                this.CleanupOrganization(this.partition);
                throw;
            }
            bool flag = !base.HasErrors;

            if (flag)
            {
                ITenantConfigurationSession tenantConfigurationSession = this.WritableAllTenantsSession;
                tenantConfigurationSession.UseConfigNC = false;
                ADObjectId           childId = tenantConfigurationSession.GetHostedOrganizationsRoot().GetChildId("OU", this.Name);
                ADOrganizationalUnit adorganizationalUnit = tenantConfigurationSession.Read <ADOrganizationalUnit>(childId);
                tenantConfigurationSession.UseConfigNC = true;
                ExchangeConfigurationUnit            dataObject      = tenantConfigurationSession.Read <ExchangeConfigurationUnit>(adorganizationalUnit.ConfigurationUnit);
                TenantOrganizationPresentationObject sendToPipeline2 = new TenantOrganizationPresentationObject(dataObject);
                base.WriteObject(sendToPipeline2);
            }
            else
            {
                this.CleanupOrganization(this.partition);
            }
            TaskLogger.LogExit();
        }
Example #6
0
 public TenantOrganizationPresentationObjectWrapper(TenantOrganizationPresentationObject tenant)
 {
     this.Name                                  = tenant.Name;
     this.UpgradeStatus                         = tenant.UpgradeStatus;
     this.UpgradeRequest                        = tenant.UpgradeRequest;
     this.UpgradeMessage                        = tenant.UpgradeMessage;
     this.UpgradeDetails                        = tenant.UpgradeDetails;
     this.UpgradeConstraints                    = tenant.UpgradeConstraints;
     this.IsUpgradingOrganization               = tenant.IsUpgradingOrganization;
     this.IsPilotingOrganization                = tenant.IsPilotingOrganization;
     this.AdminDisplayVersion                   = tenant.AdminDisplayVersion;
     this.ServicePlan                           = tenant.ServicePlan;
     this.ExternalDirectoryOrganizationId       = tenant.ExternalDirectoryOrganizationId;
     this.IsUpgradeOperationInProgress          = tenant.IsUpgradeOperationInProgress;
     this.ProgramId                             = tenant.ProgramId;
     this.OfferId                               = tenant.OfferId;
     this.UpgradeStage                          = tenant.UpgradeStage;
     this.UpgradeStageTimeStamp                 = tenant.UpgradeStageTimeStamp;
     this.UpgradeE14MbxCountForCurrentStage     = tenant.UpgradeE14MbxCountForCurrentStage;
     this.UpgradeE14RequestCountForCurrentStage = tenant.UpgradeE14RequestCountForCurrentStage;
     this.UpgradeLastE14CountsUpdateTime        = tenant.UpgradeLastE14CountsUpdateTime;
     this.UpgradeConstraintsDisabled            = tenant.UpgradeConstraintsDisabled;
     this.UpgradeUnitsOverride                  = tenant.UpgradeUnitsOverride;
 }
 // Token: 0x06000AF4 RID: 2804 RVA: 0x00023550 File Offset: 0x00021750
 public OrganizationIdParameter(TenantOrganizationPresentationObject tenant) : base(tenant.DistinguishedName)
 {
 }
Example #8
0
 // Token: 0x06000B5D RID: 2909 RVA: 0x000242D5 File Offset: 0x000224D5
 public RecipientOrOrganizationIdParameter(TenantOrganizationPresentationObject tenant)
 {
     this.ResolvedSyncObjectId      = new SyncObjectId(tenant.ExternalDirectoryOrganizationId, tenant.ExternalDirectoryOrganizationId, DirectoryObjectClass.Company);
     this.ResolvedServiceInstanceId = tenant.DirSyncServiceInstance;
 }
        protected override void InternalValidate()
        {
            TaskLogger.LogEnter();
            base.InternalValidate();
            if (!string.IsNullOrEmpty(this.DataObject.TargetForest) || !string.IsNullOrEmpty(this.DataObject.RelocationSourceForestRaw))
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorTenantAlreadyBeingRelocated(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if ((this.DataObject.OrganizationStatus != OrganizationStatus.Active && this.DataObject.OrganizationStatus != OrganizationStatus.Suspended && this.DataObject.OrganizationStatus != OrganizationStatus.LockedOut) || this.DataObject.IsUpdatingServicePlan)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorTenantNotInActiveOrgState(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if (this.DataObject.EnableAsSharedConfiguration || this.DataObject.ImmutableConfiguration)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorSCTsCannotBeMigrated(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if (this.DataObject.AdminDisplayVersion.ExchangeBuild < ExchangeObjectVersion.Exchange2012.ExchangeBuild)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorOldTenantsCannotBeMigrated(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            this.sourceAccountPartitionId = this.DataObject.OrganizationId.PartitionId;
            this.sourceForestFqdn         = this.sourceAccountPartitionId.ForestFQDN;
            Organization rootOrgContainer = ADSystemConfigurationSession.GetRootOrgContainer(this.sourceForestFqdn, null, null);

            if (!rootOrgContainer.TenantRelocationsAllowed)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorTenantRelocationNotAllowed(this.Identity.ToString(), this.sourceForestFqdn)), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if (TopologyProvider.LocalForestFqdn.Equals(this.TargetAccountPartition.RawIdentity, StringComparison.OrdinalIgnoreCase))
            {
                this.targetAccountPartitionFqdn = PartitionId.LocalForest.ForestFQDN;
            }
            else
            {
                AccountPartition accountPartition = (AccountPartition)base.GetDataObject <AccountPartition>(this.TargetAccountPartition, DirectorySessionFactory.Default.CreateTopologyConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.SessionSettingsFactory.Default.FromRootOrgScopeSet(), 207, "InternalValidate", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Relocation\\NewTenantRelocationRequest.cs"), null, null, null);
                this.targetAccountPartitionFqdn = accountPartition.PartitionId.ForestFQDN;
            }
            if (this.targetAccountPartitionFqdn.IndexOf(PartitionId.LocalForest.ForestFQDN, StringComparison.InvariantCultureIgnoreCase) > 0)
            {
                this.targetAccountPartitionFqdn = PartitionId.LocalForest.ForestFQDN;
            }
            rootOrgContainer = ADSystemConfigurationSession.GetRootOrgContainer(this.targetAccountPartitionFqdn, null, null);
            if (!rootOrgContainer.TenantRelocationsAllowed)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorTenantRelocationNotAllowed(this.Identity.ToString(), this.targetAccountPartitionFqdn)), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if (!base.Fields.IsModified(TenantRelocationRequestSchema.AutoCompletionEnabled))
            {
                this.AutoCompletionEnabled = false;
            }
            if (this.AutoCompletionEnabled && base.Fields.IsModified(TenantRelocationRequestSchema.RelocationStateRequested))
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorRelocationStateRequestedIsNotAllowed(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            if (!this.AutoCompletionEnabled && !base.Fields.IsModified(TenantRelocationRequestSchema.RelocationStateRequested))
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorRelocationStateRequestedIsMandatory(this.Identity.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            ADUser[] array = OrganizationMailbox.FindByOrganizationId(this.DataObject.OrganizationId, OrganizationCapability.Management);
            if (array.Length != 1)
            {
                base.WriteError(new InvalidOperationException(Strings.ErrorOneManagementOrgMailboxIsRequired(this.Identity.ToString(), array.Length.ToString())), ErrorCategory.InvalidOperation, this.DataObject.Identity);
            }
            TenantOrganizationPresentationObject tenantOrganizationPresentationObject = new TenantOrganizationPresentationObject(this.DataObject);
            DateTime utcNow = DateTime.UtcNow;
            bool     config = TenantRelocationConfigImpl.GetConfig <bool>("IgnoreRelocationConstraintExpiration");

            foreach (RelocationConstraint relocationConstraint in tenantOrganizationPresentationObject.RelocationConstraints)
            {
                if (config || relocationConstraint.ExpirationDate > utcNow)
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorRelocationConstraintsPresent(this.Identity.ToString(), relocationConstraint.Name)), ErrorCategory.InvalidOperation, this.DataObject.Identity);
                }
            }
            this.externalDirectoryOrganizationId = Guid.Parse(this.DataObject.ExternalDirectoryOrganizationId);
            if (!NewTenantRelocationRequest.GLSRecordCheckDisabled() && GlsMServDirectorySession.GlsLookupMode != GlsLookupMode.MServOnly)
            {
                string    text;
                string    text2;
                string    text3;
                Exception ex;
                bool      flag = GetTenantRelocationRequest.TryGlsLookupByExternalDirectoryOrganizationId(this.externalDirectoryOrganizationId, out text, out text2, out text3, out ex);
                if (ex != null)
                {
                    base.WriteError(ex, ErrorCategory.InvalidOperation, this.DataObject.Identity);
                }
                if (!flag || string.IsNullOrEmpty(text2) || !text2.Equals(this.sourceForestFqdn, StringComparison.InvariantCultureIgnoreCase))
                {
                    base.WriteError(new InvalidOperationException(Strings.ErrorUnexpectedAccountForestValueInGls(this.Identity.ToString(), text2, this.sourceForestFqdn)), ErrorCategory.InvalidOperation, this.DataObject.Identity);
                }
            }
            TaskLogger.LogExit();
        }