protected override void StampChangesOn(IConfigurable dataObject) { TaskLogger.LogEnter(); Organization organization = (Organization)dataObject; this.mergedCollection = new MultiValuedProperty <OrganizationSummaryEntry>(); foreach (OrganizationSummaryEntry organizationSummaryEntry in organization.OrganizationSummary) { if (organizationSummaryEntry.NumberOfFields >= 3 || OrganizationSummaryEntry.IsValidKeyForCurrentAndPreviousRelease(organizationSummaryEntry.Key)) { this.mergedCollection.Add(organizationSummaryEntry); } } this.microsoftExchangeRecipient = MailboxTaskHelper.FindMicrosoftExchangeRecipient(this.recipientSession, (IConfigurationSession)base.DataSession); if (this.microsoftExchangeRecipient != null) { organization.MicrosoftExchangeRecipientEmailAddresses = this.microsoftExchangeRecipient.EmailAddresses; organization.MicrosoftExchangeRecipientReplyRecipient = this.microsoftExchangeRecipient.ForwardingAddress; organization.MicrosoftExchangeRecipientEmailAddressPolicyEnabled = this.microsoftExchangeRecipient.EmailAddressPolicyEnabled; organization.MicrosoftExchangeRecipientPrimarySmtpAddress = this.microsoftExchangeRecipient.PrimarySmtpAddress; organization.ResetChangeTracking(); } if (base.Fields.IsModified("ExchangeNotificationRecipients")) { this.SetMultiValuedProperty <RecipientIdParameter, SmtpAddress>(this.ExchangeNotificationRecipients, organization.ExchangeNotificationRecipients, new SetOrganizationConfig.Resolver <RecipientIdParameter, SmtpAddress>(this.ResolveRecipients)); } if (base.Fields.IsModified(OrganizationSchema.RemotePublicFolderMailboxes)) { this.SetMultiValuedProperty <MailboxOrMailUserIdParameter, ADObjectId>(this.RemotePublicFolderMailboxes, organization.RemotePublicFolderMailboxes, new SetOrganizationConfig.Resolver <MailboxOrMailUserIdParameter, ADObjectId>(this.ResolveRemotePublicFolderMailboxes)); } base.StampChangesOn(dataObject); TaskLogger.LogExit(); }
private void UpdateUploadDate() { OrganizationSummaryEntry organizationSummaryEntry = new OrganizationSummaryEntry(OrganizationSummaryEntry.SummaryInfoUpdateDate, DateTime.UtcNow.ToString(), false); OrganizationSummaryEntry item; if (this.FindInMergedCollection(organizationSummaryEntry, out item)) { this.mergedCollection.Remove(item); } this.mergedCollection.Add(organizationSummaryEntry); }
private bool FindInMergedCollection(OrganizationSummaryEntry entry, out OrganizationSummaryEntry foundEntry) { foundEntry = null; foreach (OrganizationSummaryEntry organizationSummaryEntry in this.mergedCollection) { if (organizationSummaryEntry.Key.Equals(entry.Key)) { foundEntry = organizationSummaryEntry; return(true); } } return(false); }
private void MergeAdded(MultiValuedProperty <OrganizationSummaryEntry> summaryInfo) { foreach (OrganizationSummaryEntry organizationSummaryEntry in summaryInfo.Added) { if (!organizationSummaryEntry.Key.Equals(OrganizationSummaryEntry.SummaryInfoUpdateDate) && OrganizationSummaryEntry.IsValidKeyForCurrentRelease(organizationSummaryEntry.Key)) { OrganizationSummaryEntry organizationSummaryEntry2 = null; if (this.FindInMergedCollection(organizationSummaryEntry, out organizationSummaryEntry2)) { this.mergedCollection.Remove(organizationSummaryEntry2); this.mergedCollection.Add(new OrganizationSummaryEntry(organizationSummaryEntry2.Key, organizationSummaryEntry.HasError ? organizationSummaryEntry2.Value : organizationSummaryEntry.Value, organizationSummaryEntry.HasError)); } else if (!organizationSummaryEntry.HasError) { this.mergedCollection.Add(organizationSummaryEntry.Clone()); } } } }
protected override void WriteResult(IConfigurable dataObject) { TaskLogger.LogEnter(new object[] { dataObject.Identity, dataObject }); ADOrganizationConfig adorganizationConfig = dataObject as ADOrganizationConfig; if (adorganizationConfig != null) { int?num = this.RetrieveSCLJunkThreshold(adorganizationConfig.Id); if (num != null) { adorganizationConfig.SCLJunkThreshold = num.Value; } this.FillTaskPopulatedFields(adorganizationConfig); MultiValuedProperty <OrganizationSummaryEntry> multiValuedProperty = new MultiValuedProperty <OrganizationSummaryEntry>(); foreach (OrganizationSummaryEntry organizationSummaryEntry in adorganizationConfig.OrganizationSummary) { if (OrganizationSummaryEntry.IsValidKeyForCurrentRelease(organizationSummaryEntry.Key)) { multiValuedProperty.Add(organizationSummaryEntry.Clone()); } } multiValuedProperty.ResetChangeTracking(); adorganizationConfig.OrganizationSummary = multiValuedProperty; adorganizationConfig.ResetChangeTracking(); } ADSessionSettings sessionSettings; if (this.AccountPartition == null) { sessionSettings = ADSessionSettings.RescopeToSubtree(base.OrgWideSessionSettings); } else { PartitionId partitionId = RecipientTaskHelper.ResolvePartitionId(this.AccountPartition, new Task.TaskErrorLoggingDelegate(base.WriteError)); sessionSettings = ADSessionSettings.FromAccountPartitionRootOrgScopeSet(partitionId); } IRecipientSession tenantOrRootOrgRecipientSession = DirectorySessionFactory.Default.GetTenantOrRootOrgRecipientSession(base.DomainController, false, ConsistencyMode.PartiallyConsistent, sessionSettings, 109, "WriteResult", "f:\\15.00.1497\\sources\\dev\\Management\\src\\Management\\SystemConfigurationTasks\\organization\\GetOrganization.cs"); tenantOrRootOrgRecipientSession.UseConfigNC = true; ADMicrosoftExchangeRecipient admicrosoftExchangeRecipient = MailboxTaskHelper.FindMicrosoftExchangeRecipient(tenantOrRootOrgRecipientSession, (IConfigurationSession)base.DataSession); if (admicrosoftExchangeRecipient == null) { if (adorganizationConfig.SharedConfigurationInfo == null) { if (!this.IsOnlyGatewayServerRoleExist()) { this.WriteError(new InvalidOperationException(Strings.ErrorMicrosoftExchangeRecipientNotFound), ErrorCategory.ReadError, adorganizationConfig.Identity, false); } else { base.WriteVerbose(Strings.MicrosoftExchangeRecipientNotFoundOnGatewayServerRole); } } } else { ValidationError[] array = admicrosoftExchangeRecipient.Validate(); for (int i = 0; i < array.Length; i++) { this.WriteWarning(array[i].Description); } adorganizationConfig.MicrosoftExchangeRecipientEmailAddresses = admicrosoftExchangeRecipient.EmailAddresses; adorganizationConfig.MicrosoftExchangeRecipientReplyRecipient = admicrosoftExchangeRecipient.ForwardingAddress; adorganizationConfig.MicrosoftExchangeRecipientEmailAddressPolicyEnabled = admicrosoftExchangeRecipient.EmailAddressPolicyEnabled; adorganizationConfig.MicrosoftExchangeRecipientPrimarySmtpAddress = admicrosoftExchangeRecipient.PrimarySmtpAddress; adorganizationConfig.ResetChangeTracking(); } bool flag = !OrganizationId.ForestWideOrgId.Equals(adorganizationConfig.OrganizationId); if (flag) { MultiValuedProperty <string> multiValuedProperty2 = this.AcceptedDomainNamesGetter(adorganizationConfig); if (multiValuedProperty2 != null) { adorganizationConfig.AcceptedDomainNames = multiValuedProperty2; } } if (VariantConfiguration.InvariantNoFlightingSnapshot.Global.MultiTenancy.Enabled) { adorganizationConfig.HierarchicalAddressBookRoot = this.GetHierarchicalAddressBookRootFromOU(adorganizationConfig.OrganizationId.OrganizationalUnit); } base.WriteResult(new OrganizationConfig(adorganizationConfig, flag)); TaskLogger.LogExit(); }
private void MergeRemoved(MultiValuedProperty <OrganizationSummaryEntry> summaryInfo) { foreach (OrganizationSummaryEntry organizationSummaryEntry in summaryInfo.Removed) { OrganizationSummaryEntry item; if (!organizationSummaryEntry.Key.Equals(OrganizationSummaryEntry.SummaryInfoUpdateDate) && OrganizationSummaryEntry.IsValidKeyForCurrentRelease(organizationSummaryEntry.Key) && this.FindInMergedCollection(organizationSummaryEntry, out item)) { this.mergedCollection.Remove(item); } } }