protected override void PrepareUserObject(ADUser user) { TaskLogger.LogEnter(); if (base.WindowsLiveID == null && base.SoftDeletedObject == null && VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.WindowsLiveID.Enabled&& !RecipientTaskHelper.SMTPAddressCheckWithAcceptedDomain(this.ConfigurationSession, user.OrganizationId, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache)) { base.WriteError(new RecipientTaskException(Strings.ErrorWindowsLiveIdRequired(user.Name)), ExchangeErrorCategory.Client, null); } if (base.WindowsLiveID != null && base.WindowsLiveID.SmtpAddress != SmtpAddress.Empty) { if (this.ExternalEmailAddress == null) { user.ExternalEmailAddress = ProxyAddress.Parse(base.WindowsLiveID.SmtpAddress.ToString()); } user.UserPrincipalName = base.WindowsLiveID.SmtpAddress.ToString(); base.IsSetRandomPassword = (base.SoftDeletedObject == null || base.IsSetRandomPassword); } if (string.IsNullOrEmpty(user.UserPrincipalName)) { user.UserPrincipalName = RecipientTaskHelper.GenerateUniqueUserPrincipalName(base.TenantGlobalCatalogSession, user.Name, this.ConfigurationSession.GetDefaultAcceptedDomain().DomainName.Domain, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose)); } if (base.SoftDeletedObject == null) { if (base.Fields.IsModified(MailUserSchema.RemotePowerShellEnabled)) { user.RemotePowerShellEnabled = this.RemotePowerShellEnabled; } else { user.RemotePowerShellEnabled = true; } MailUserTaskHelper.ValidateExternalEmailAddress(user, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache); } if (base.Fields.IsChanged(ADRecipientSchema.MailboxProvisioningConstraint)) { user.MailboxProvisioningConstraint = this.MailboxProvisioningConstraint; } if (base.Fields.IsChanged(ADRecipientSchema.MailboxProvisioningPreferences)) { user.MailboxProvisioningPreferences = this.MailboxProvisioningPreferences; } if (user.MailboxProvisioningConstraint != null) { MailboxTaskHelper.ValidateMailboxProvisioningConstraintEntries(new MailboxProvisioningConstraint[] { user.MailboxProvisioningConstraint }, base.DomainController, delegate(string message) { base.WriteVerbose(new LocalizedString(message)); }, new Task.ErrorLoggerDelegate(base.WriteError)); } if (user.MailboxProvisioningPreferences != null) { MailboxTaskHelper.ValidateMailboxProvisioningConstraintEntries(user.MailboxProvisioningPreferences, base.DomainController, delegate(string message) { base.WriteVerbose(new LocalizedString(message)); }, new Task.ErrorLoggerDelegate(base.WriteError)); } base.PrepareUserObject(user); TaskLogger.LogExit(); }
protected override void InternalValidate() { base.InternalValidate(); if (this.DataObject.IsModified(MailPublicFolderSchema.Contacts)) { foreach (ADObjectId adObjectId in this.DataObject.Contacts.Added) { this.GetRecipientIdentityAndValidateTypeForContacts(new RecipientIdParameter(adObjectId), new Task.ErrorLoggerDelegate(base.WriteError)); } } if (this.DataObject.IsModified(MailPublicFolderSchema.ForwardingAddress) && this.DataObject.ForwardingAddress != null) { this.GetRecipientIdentityAndValidateTypeForFwd(new RecipientIdParameter(this.DataObject.ForwardingAddress), new Task.ErrorLoggerDelegate(base.WriteError)); } if (base.Fields.IsModified(MailPublicFolderSchema.ExternalEmailAddress)) { this.DataObject.ExternalEmailAddress = this.ExternalEmailAddress; MailUserTaskHelper.ValidateExternalEmailAddress(this.DataObject, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache); } ADObjectId adobjectId = null; if (base.Fields.IsModified(MailPublicFolderSchema.EntryId) && this.IsValidToUpdateEntryId(this.EntryId, out adobjectId)) { this.DataObject.EntryId = this.EntryId; if (adobjectId != null) { this.DataObject.ContentMailbox = adobjectId; } } }
protected override void PrepareRecipientObject(ref ADUser user) { TaskLogger.LogEnter(); ProxyAddressCollection emailAddresses = user.EmailAddresses; base.PrepareRecipientObject(ref user); if (this.PreserveEmailAddresses) { user.EmailAddresses = emailAddresses; } if (this.BypassModerationCheck.IsPresent) { user.BypassModerationCheck = true; } if (base.ParameterSetName == "Archive") { if (user.RecipientType == RecipientType.MailUser) { this.CreateArchiveIfNecessary(user); TaskLogger.LogExit(); return; } RecipientIdParameter recipientIdParameter = new RecipientIdParameter((ADObjectId)user.Identity); base.WriteError(new RecipientTaskException(Strings.ErrorInvalidArchiveRecipientType(recipientIdParameter.ToString(), user.RecipientType.ToString())), ErrorCategory.InvalidArgument, recipientIdParameter); } if (base.ParameterSetName != "Archive") { user.ExternalEmailAddress = this.ExternalEmailAddress; user.UsePreferMessageFormat = this.UsePreferMessageFormat; user.MessageFormat = this.MessageFormat; user.MessageBodyFormat = this.MessageBodyFormat; user.MacAttachmentFormat = this.MacAttachmentFormat; user.UseMapiRichTextFormat = UseMapiRichTextFormat.UseDefaultSettings; user.RecipientDisplayType = new RecipientDisplayType?(RecipientDisplayType.RemoteMailUser); user.RecipientTypeDetails = RecipientTypeDetails.MailUser; MailUserTaskHelper.ValidateExternalEmailAddress(user, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache); } if (this.JournalArchiveAddress != SmtpAddress.Empty) { user.JournalArchiveAddress = this.JournalArchiveAddress; } }
protected override IConfigurable PrepareDataObject() { TaskLogger.LogEnter(); ADUser aduser = (ADUser)base.PrepareDataObject(); if (aduser.IsChanged(MailUserSchema.WindowsLiveID)) { SmtpAddress value = (SmtpAddress)aduser.GetOriginalObject()[MailUserSchema.WindowsLiveID]; if (value != SmtpAddress.Empty && !aduser.EmailAddresses.Contains(ProxyAddress.Parse("smtp", value.ToString()))) { aduser.EmailAddresses.Add(ProxyAddress.Parse("smtp", value.ToString())); } } if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.MultiTenancy.Enabled) { if (aduser.IsChanged(ADRecipientSchema.ExternalEmailAddress)) { MailUserTaskHelper.ValidateExternalEmailAddress(aduser, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache); } if (VariantConfiguration.GetSnapshot(MachineSettingsContext.Local, null, null).Global.WindowsLiveID.Enabled) { if (aduser.WindowsLiveID != SmtpAddress.Empty && !aduser.WindowsLiveID.Equals(aduser.UserPrincipalName)) { aduser.UserPrincipalName = aduser.WindowsLiveID.ToString(); } } else if (!aduser.IsModified(ADUserSchema.UserPrincipalName)) { aduser.UserPrincipalName = aduser.PrimarySmtpAddress.ToString(); } if (this.DataObject.IsSoftDeleted && this.DataObject.IsModified(MailUserSchema.ExchangeGuid)) { SoftDeletedTaskHelper.UpdateExchangeGuidForMailEnabledUser(this.DataObject); } if ((aduser.IsChanged(ADUserSchema.LitigationHoldEnabled) && aduser.LitigationHoldEnabled) || (aduser.IsChanged(ADRecipientSchema.InPlaceHoldsRaw) && aduser.IsInLitigationHoldOrInplaceHold) || (aduser.IsChanged(ADUserSchema.ElcMailboxFlags) && aduser.LitigationHoldEnabled)) { RecoverableItemsQuotaHelper.IncreaseRecoverableItemsQuotaIfNeeded(aduser); } } TaskLogger.LogExit(); return(aduser); }
protected override void PrepareRecipientObject(ADPublicFolder publicFolder) { this.DataObject = publicFolder; if (MapiTaskHelper.IsDatacenter) { publicFolder.OrganizationId = base.CurrentOrganizationId; } publicFolder.StampPersistableDefaultValues(); if (this.Name.Contains("\n")) { this.Name = this.Name.Replace("\n", "_"); } if (this.Name.Length > 64) { publicFolder.Name = this.Name.Substring(0, 64); } else { publicFolder.Name = this.Name; } publicFolder.DisplayName = publicFolder.Name; publicFolder.Alias = RecipientTaskHelper.GenerateUniqueAlias(this.RecipientSession, OrganizationId.ForestWideOrgId, this.Alias, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose)); if (this.WindowsEmailAddress != SmtpAddress.Empty) { publicFolder.WindowsEmailAddress = this.WindowsEmailAddress; } else { publicFolder.WindowsEmailAddress = publicFolder.PrimarySmtpAddress; } publicFolder.HiddenFromAddressListsEnabled = this.HiddenFromAddressListsEnabled; publicFolder.SendModerationNotifications = TransportModerationNotificationFlags.Never; publicFolder.RecipientTypeDetails = RecipientTypeDetails.PublicFolder; publicFolder.ObjectCategory = this.ConfigurationSession.SchemaNamingContext.GetChildId(publicFolder.ObjectCategoryCN); publicFolder.LegacyExchangeDN = PublicFolderSession.ConvertToLegacyDN("e71f13d1-0178-42a7-8c47-24206de84a77", this.EntryId); ADObjectId adobjectId; if (base.CurrentOrganizationId == OrganizationId.ForestWideOrgId) { adobjectId = base.CurrentOrgContainerId.DomainId.GetChildId("Microsoft Exchange System Objects"); } else { adobjectId = base.CurrentOrganizationId.OrganizationalUnit; } ADObjectId childId = adobjectId.GetChildId(publicFolder.Name); ADRecipient adrecipient = this.RecipientSession.Read(childId); if (adrecipient != null) { Random random = new Random(); childId = adobjectId.GetChildId(string.Format("{0} {1}", publicFolder.Name, random.Next(100000000).ToString("00000000"))); } publicFolder.SetId(childId); if (base.IsProvisioningLayerAvailable) { base.WriteVerbose(Strings.VerboseInvokingRUS(publicFolder.Identity.ToString(), publicFolder.GetType().Name)); ADPublicFolder adpublicFolder = new ADPublicFolder(); adpublicFolder.CopyChangesFrom(publicFolder); ProvisioningLayer.UpdateAffectedIConfigurable(this, RecipientTaskHelper.ConvertRecipientToPresentationObject(adpublicFolder), false); publicFolder.CopyChangesFrom(adpublicFolder); } else { base.WriteError(new InvalidOperationException(Strings.ErrorNoProvisioningHandlerAvailable), ErrorCategory.InvalidOperation, null); } if (this.ExternalEmailAddress != SmtpAddress.Empty) { publicFolder.ExternalEmailAddress = ProxyAddress.Parse(this.ExternalEmailAddress.ToString()); } else { publicFolder.ExternalEmailAddress = ProxyAddress.Parse(publicFolder.WindowsEmailAddress.ToString()); } MailUserTaskHelper.ValidateExternalEmailAddress(publicFolder, this.ConfigurationSession, new Task.ErrorLoggerDelegate(base.WriteError), base.ProvisioningCache); if (this.EmailAddresses != null) { foreach (ProxyAddress proxyAddress in this.EmailAddresses) { if (proxyAddress != null && !publicFolder.EmailAddresses.Contains(proxyAddress)) { publicFolder.EmailAddresses.Add(proxyAddress); } } } adrecipient = this.RecipientSession.FindByProxyAddress(ProxyAddress.Parse("X500:" + publicFolder.LegacyExchangeDN)); if (adrecipient != null) { base.WriteError(new InvalidOperationException(Strings.ErrorObjectAlreadyExists("ADPublicFolder object : ", this.Name)), ErrorCategory.InvalidData, null); } publicFolder.EmailAddresses.Add(ProxyAddress.Parse("X500:" + publicFolder.LegacyExchangeDN)); RecipientTaskHelper.ValidateEmailAddressErrorOut(this.RecipientSession, publicFolder.EmailAddresses, publicFolder, new Task.TaskVerboseLoggingDelegate(base.WriteVerbose), new Task.ErrorLoggerReThrowDelegate(this.WriteError)); }