internal static int GetMailboxCount(ExchangeUpgradeBucket bucket)
        {
            int num = 0;
            List <ADObjectId> list = new List <ADObjectId>(bucket.Organizations.Count);

            foreach (ADObjectId adobjectId in bucket.Organizations)
            {
                int?mailboxCountFromCache = UpgradeBucketTaskHelper.MailboxCountCache.GetMailboxCountFromCache(adobjectId);
                if (mailboxCountFromCache != null)
                {
                    num += mailboxCountFromCache.Value;
                }
                else
                {
                    ADObjectIdResolutionHelper.ResolveDN(adobjectId);
                }
            }
            list.Sort((ADObjectId x, ADObjectId y) => x.PartitionGuid.CompareTo(y.PartitionGuid));
            ADObjectId adobjectId2 = null;
            ITenantConfigurationSession tenantConfigurationSession = null;

            foreach (ADObjectId adobjectId3 in list)
            {
                if (adobjectId2 == null || !adobjectId2.PartitionGuid.Equals(adobjectId3.PartitionGuid))
                {
                    tenantConfigurationSession = DirectorySessionFactory.Default.CreateTenantConfigurationSession(ConsistencyMode.PartiallyConsistent, ADSessionSettings.FromAllTenantsObjectId(adobjectId3), 59, "GetMailboxCount", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\Deployment\\UpgradeBucketTaskHelper.cs");
                }
                ExchangeConfigurationUnit exchangeConfigurationUnit = tenantConfigurationSession.Read <ExchangeConfigurationUnit>(adobjectId3);
                if (exchangeConfigurationUnit != null)
                {
                    int mailboxCount = UpgradeBucketTaskHelper.MailboxCountCache.GetMailboxCount(exchangeConfigurationUnit.OrganizationId, tenantConfigurationSession);
                    num += mailboxCount;
                }
                adobjectId2 = adobjectId3;
            }
            return(num);
        }
Example #2
0
 // Token: 0x06000B05 RID: 2821 RVA: 0x00023ABD File Offset: 0x00021CBD
 public ExchangeUpgradeBucketIdParameter(ExchangeUpgradeBucket upgradeBucket) : base(upgradeBucket.Id)
 {
 }
        internal static void ValidateOrganizationVersion(ExchangeConfigurationUnit configurationUnit, ExchangeUpgradeBucket exchangeUpgradeBucket, Task.ErrorLoggerDelegate errorLogger)
        {
            string text = configurationUnit.IsUpgradingOrganization ? exchangeUpgradeBucket.TargetVersion : exchangeUpgradeBucket.SourceVersion;

            if (!UpgradeBucketTaskHelper.ValidateExchangeObjectVersion(configurationUnit.AdminDisplayVersion, text))
            {
                errorLogger(new RecipientTaskException(Strings.ExchangeUpgradeBucketInvalidOrganizationVersion(configurationUnit.AdminDisplayVersion.ToString(), text)), ExchangeErrorCategory.Client, null);
            }
        }
 internal static void ValidateOrganizationAddition(ITopologyConfigurationSession configSession, OrganizationId organizationId, ExchangeUpgradeBucket exchangeUpgradeBucket, Task.ErrorLoggerDelegate errorLogger)
 {
     if (!exchangeUpgradeBucket.MaxMailboxes.IsUnlimited && !exchangeUpgradeBucket.Organizations.Contains(organizationId.ConfigurationUnit))
     {
         int mailboxCount  = UpgradeBucketTaskHelper.MailboxCountCache.GetMailboxCount(organizationId, configSession);
         int mailboxCount2 = UpgradeBucketTaskHelper.GetMailboxCount(exchangeUpgradeBucket);
         int num           = exchangeUpgradeBucket.MaxMailboxes.Value - mailboxCount2;
         if (mailboxCount > num)
         {
             errorLogger(new RecipientTaskException(Strings.ExchangeUpgradeBucketNotEnoughCapacity(exchangeUpgradeBucket.ToString(), num.ToString(), mailboxCount.ToString())), ExchangeErrorCategory.Client, organizationId);
         }
     }
 }
Example #5
0
        protected override IConfigurable PrepareDataObject()
        {
            TaskLogger.LogEnter();
            ExchangeConfigurationUnit exchangeConfigurationUnit = (ExchangeConfigurationUnit)base.PrepareDataObject();

            if (base.Fields.IsModified(OrganizationSchema.DefaultMovePriority))
            {
                exchangeConfigurationUnit.DefaultMovePriority = this.DefaultMovePriority;
            }
            if (base.Fields.IsModified("TenantSKUCapability"))
            {
                CapabilityHelper.SetTenantSKUCapabilities(this.PersistedCapabilities, exchangeConfigurationUnit.PersistedCapabilities);
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeMessage))
            {
                exchangeConfigurationUnit.UpgradeMessage = this.UpgradeMessage;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeDetails))
            {
                exchangeConfigurationUnit.UpgradeDetails = this.UpgradeDetails;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeConstraints))
            {
                exchangeConfigurationUnit.UpgradeConstraints = this.UpgradeConstraints;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeStage))
            {
                exchangeConfigurationUnit.UpgradeStage = this.UpgradeStage;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeStageTimeStamp))
            {
                exchangeConfigurationUnit.UpgradeStageTimeStamp = this.UpgradeStageTimeStamp;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeE14RequestCountForCurrentStage))
            {
                exchangeConfigurationUnit.UpgradeE14RequestCountForCurrentStage = this.UpgradeE14RequestCountForCurrentStage;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeE14MbxCountForCurrentStage))
            {
                exchangeConfigurationUnit.UpgradeE14MbxCountForCurrentStage = this.UpgradeE14MbxCountForCurrentStage;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeLastE14CountsUpdateTime))
            {
                exchangeConfigurationUnit.UpgradeLastE14CountsUpdateTime = this.UpgradeLastE14CountsUpdateTime;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeConstraintsDisabled))
            {
                exchangeConfigurationUnit.UpgradeConstraintsDisabled = this.UpgradeConstraintsDisabled;
            }
            if (base.Fields.IsModified(OrganizationSchema.UpgradeUnitsOverride))
            {
                exchangeConfigurationUnit.UpgradeUnitsOverride = this.UpgradeUnitsOverride;
            }
            if (base.Fields.IsModified(OrganizationSchema.MaxAddressBookPolicies))
            {
                exchangeConfigurationUnit.MaxAddressBookPolicies = new int?(this.MaxAddressBookPolicies);
            }
            if (base.Fields.IsModified(OrganizationSchema.MaxOfflineAddressBooks))
            {
                exchangeConfigurationUnit.MaxOfflineAddressBooks = new int?(this.MaxOfflineAddressBooks);
            }
            if (this.RemoveSharedConfigurations)
            {
                exchangeConfigurationUnit.SupportedSharedConfigurations.Clear();
            }
            if (base.Fields.IsModified(OrganizationSchema.SupportedSharedConfigurations))
            {
                if (this.ClearPreviousSharedConfigurations)
                {
                    exchangeConfigurationUnit.SupportedSharedConfigurations.Clear();
                }
                foreach (ExchangeConfigurationUnit exchangeConfigurationUnit2 in this.SharedConfigurationUnits)
                {
                    if (!exchangeConfigurationUnit.SupportedSharedConfigurations.Contains(exchangeConfigurationUnit2.OrganizationId.ConfigurationUnit))
                    {
                        exchangeConfigurationUnit.SupportedSharedConfigurations.Add(exchangeConfigurationUnit2.Identity);
                    }
                }
            }
            if (base.Fields.IsModified(OrganizationSchema.EnableAsSharedConfiguration))
            {
                exchangeConfigurationUnit.EnableAsSharedConfiguration = this.EnableAsSharedConfiguration;
            }
            if (base.Fields.IsModified(OrganizationSchema.ImmutableConfiguration))
            {
                exchangeConfigurationUnit.ImmutableConfiguration = this.ImmutableConfiguration;
            }
            if (base.Fields.IsModified(OrganizationSchema.IsDehydrated))
            {
                exchangeConfigurationUnit.IsDehydrated = this.IsDehydrated;
            }
            if (base.Fields.IsModified(OrganizationSchema.IsStaticConfigurationShared))
            {
                exchangeConfigurationUnit.IsStaticConfigurationShared = this.IsStaticConfigurationShared;
            }
            if (base.Fields.IsModified(OrganizationSchema.IsUpdatingServicePlan))
            {
                exchangeConfigurationUnit.IsUpdatingServicePlan = this.IsUpdatingServicePlan;
            }
            if (base.Fields.IsModified(ExchangeConfigurationUnitSchema.ProgramId))
            {
                exchangeConfigurationUnit.ProgramId = this.ProgramId;
            }
            if (base.Fields.IsModified(ExchangeConfigurationUnitSchema.OfferId))
            {
                exchangeConfigurationUnit.OfferId = this.OfferId;
            }
            if (base.Fields.IsModified(ExchangeConfigurationUnitSchema.ServicePlan))
            {
                exchangeConfigurationUnit.ServicePlan = this.ServicePlan;
            }
            if (base.Fields.IsModified(ExchangeConfigurationUnitSchema.TargetServicePlan))
            {
                exchangeConfigurationUnit.TargetServicePlan = this.TargetServicePlan;
            }
            if (!exchangeConfigurationUnit.HostingDeploymentEnabled && Datacenter.IsPartnerHostedOnly(false))
            {
                exchangeConfigurationUnit.HostingDeploymentEnabled = true;
            }
            if (base.Fields.IsModified(OrganizationSchema.ExcludedFromBackSync))
            {
                exchangeConfigurationUnit.ExcludedFromBackSync = this.ExcludedFromBackSync;
            }
            if (base.Fields.IsModified(OrganizationSchema.ExcludedFromForwardSyncEDU2BPOS))
            {
                exchangeConfigurationUnit.ExcludedFromForwardSyncEDU2BPOS = this.ExcludedFromForwardSyncEDU2BPOS;
            }
            if (base.Fields.IsModified(ExchangeConfigurationUnitSchema.ExchangeUpgradeBucket))
            {
                if (this.ExchangeUpgradeBucket != null)
                {
                    ExchangeUpgradeBucket exchangeUpgradeBucket = (ExchangeUpgradeBucket)base.GetDataObject <ExchangeUpgradeBucket>(this.ExchangeUpgradeBucket, base.GlobalConfigSession, null, new LocalizedString?(Strings.ErrorExchangeUpgradeBucketNotFound(this.ExchangeUpgradeBucket.ToString())), new LocalizedString?(Strings.ErrorExchangeUpgradeBucketNotUnique(this.ExchangeUpgradeBucket.ToString())));
                    UpgradeBucketTaskHelper.ValidateOrganizationVersion(exchangeConfigurationUnit, exchangeUpgradeBucket, new Task.ErrorLoggerDelegate(base.WriteError));
                    UpgradeBucketTaskHelper.ValidateOrganizationAddition(base.GlobalConfigSession, exchangeConfigurationUnit.OrganizationId, exchangeUpgradeBucket, new Task.ErrorLoggerDelegate(base.WriteError));
                    exchangeConfigurationUnit.ExchangeUpgradeBucket = (ADObjectId)exchangeUpgradeBucket.Identity;
                }
                else
                {
                    exchangeConfigurationUnit.ExchangeUpgradeBucket = null;
                }
            }
            if (base.Fields.IsModified(OrganizationSchema.MailboxRelease))
            {
                exchangeConfigurationUnit.MailboxRelease = this.MailboxRelease;
            }
            if (base.Fields.IsModified(OrganizationSchema.PreviousMailboxRelease))
            {
                exchangeConfigurationUnit.PreviousMailboxRelease = this.PreviousMailboxRelease;
            }
            if (base.Fields.IsModified(OrganizationSchema.PilotMailboxRelease))
            {
                exchangeConfigurationUnit.PilotMailboxRelease = this.PilotMailboxRelease;
            }
            if (base.Fields.IsModified("AddRelocationConstraint"))
            {
                RelocationConstraint      constraintToAdd = new RelocationConstraint((RelocationConstraintType)this.RelocationConstraintType, DateTime.UtcNow.AddDays((double)this.RelocationConstraintExpirationInDays));
                RelocationConstraintArray persistedRelocationConstraints = SetOrganization.PopulateRelocationConstraintsList(exchangeConfigurationUnit.PersistedRelocationConstraints, this.RelocationConstraintType, constraintToAdd);
                exchangeConfigurationUnit.PersistedRelocationConstraints = persistedRelocationConstraints;
            }
            else if (base.Fields.IsModified("RemoveRelocationConstraint"))
            {
                RelocationConstraintArray persistedRelocationConstraints2 = SetOrganization.PopulateRelocationConstraintsList(exchangeConfigurationUnit.PersistedRelocationConstraints, this.RelocationConstraintType, null);
                exchangeConfigurationUnit.PersistedRelocationConstraints = persistedRelocationConstraints2;
            }
            OrganizationStatus organizationStatus;

            if (exchangeConfigurationUnit.IsModified(ExchangeConfigurationUnitSchema.OrganizationStatus) && exchangeConfigurationUnit.TryGetOriginalValue <OrganizationStatus>(ExchangeConfigurationUnitSchema.OrganizationStatus, out organizationStatus))
            {
                if (OrganizationStatus.Active == exchangeConfigurationUnit.OrganizationStatus && (OrganizationStatus.Suspended == organizationStatus || OrganizationStatus.LockedOut == organizationStatus))
                {
                    exchangeConfigurationUnit.IsTenantAccessBlocked = false;
                }
                else if ((OrganizationStatus.Suspended == exchangeConfigurationUnit.OrganizationStatus || OrganizationStatus.LockedOut == exchangeConfigurationUnit.OrganizationStatus) && OrganizationStatus.Active == organizationStatus)
                {
                    exchangeConfigurationUnit.IsTenantAccessBlocked = true;
                }
            }
            if (base.Fields.IsModified(OrganizationSchema.IsLicensingEnforced))
            {
                exchangeConfigurationUnit.IsLicensingEnforced = this.IsLicensingEnforced;
            }
            TaskLogger.LogExit();
            return(exchangeConfigurationUnit);
        }