internal static StoreRetentionPolicyTagHelper FromMailboxId(string domainController, MailboxIdParameter mailbox, bool isArchiveMailbox, OrganizationId orgId) { StoreRetentionPolicyTagHelper storeRetentionPolicyTagHelper = new StoreRetentionPolicyTagHelper(); storeRetentionPolicyTagHelper.user = StoreRetentionPolicyTagHelper.FetchRecipientFromMailboxId(domainController, mailbox, out storeRetentionPolicyTagHelper.recipientSession, orgId); storeRetentionPolicyTagHelper.isArchiveMailbox = isArchiveMailbox; StoreRetentionPolicyTagHelper.FetchRetentionPolicyTagDataFromMailbox(storeRetentionPolicyTagHelper); return storeRetentionPolicyTagHelper; }
protected override void InternalProcessRecord() { TaskLogger.LogEnter(); if (this.DataObject != null && SharedConfiguration.IsSharedConfiguration(this.DataObject.OrganizationId) && !base.ShouldContinue(Strings.ConfirmSharedConfiguration(this.DataObject.OrganizationId.OrganizationalUnit.Name))) { TaskLogger.LogExit(); return; } if (this.Mailbox != null) { ExchangePrincipal exchangePrincipal = this.ProcessPrimaryMailbox(); IRecipientSession recipientSession; ADUser user = StoreRetentionPolicyTagHelper.FetchRecipientFromMailboxId(base.DomainController, this.Mailbox, out recipientSession, exchangePrincipal.MailboxInfo.OrganizationId); if (exchangePrincipal != null && StoreRetentionPolicyTagHelper.HasOnPremArchiveMailbox(user)) { this.ProcessArchiveMailbox(); } } else { bool flag = this.DataObject.IsChanged(ADObjectSchema.Name); if (this.DataObject.IsChanged(RetentionPolicyTagSchema.RetentionId) && !this.Force && !base.ShouldContinue(Strings.WarningRetentionTagIdChange(this.DataObject.Identity.ToString()))) { return; } base.InternalProcessRecord(); if (this.contentSettingsObject.ObjectState == ObjectState.Changed) { if (flag) { ElcContentSettings elcContentSettings = this.DataObject.GetELCContentSettings().FirstOrDefault <ElcContentSettings>(); elcContentSettings.CopyChangesFrom(this.contentSettingsObject); this.contentSettingsObject = elcContentSettings; } base.DataSession.Save(this.contentSettingsObject); } } TaskLogger.LogExit(); }