Beispiel #1
0
        private void Process(bool archiveMailbox, out ExchangePrincipal exchPrincipal)
        {
            ExchangePrincipal exchangePrincipal = null;

            try
            {
                using (StoreRetentionPolicyTagHelper storeRetentionPolicyTagHelper = StoreRetentionPolicyTagHelper.FromMailboxId(base.DomainController, this.Mailbox, archiveMailbox, base.CurrentOrganizationId))
                {
                    exchangePrincipal = storeRetentionPolicyTagHelper.UserPrincipal;
                    ELCTaskHelper.VerifyIsInScopes(storeRetentionPolicyTagHelper.Mailbox, base.ScopeSet, new Task.TaskErrorLoggingDelegate(base.WriteError));
                    if (storeRetentionPolicyTagHelper.Mailbox.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2010))
                    {
                        base.WriteError(new InvalidOperationException(Strings.OptInNotSupportedForPre14Mailbox(ExchangeObjectVersion.Exchange2010.ToString(), storeRetentionPolicyTagHelper.Mailbox.Identity.ToString(), storeRetentionPolicyTagHelper.Mailbox.ExchangeVersion.ToString())), ErrorCategory.InvalidOperation, storeRetentionPolicyTagHelper.Mailbox.Identity);
                    }
                    if (storeRetentionPolicyTagHelper.Mailbox.RetentionPolicy == null && !storeRetentionPolicyTagHelper.Mailbox.ShouldUseDefaultRetentionPolicy)
                    {
                        base.WriteError(new ArgumentException(Strings.RetentionPolicyNotEnabled, "Mailbox"), ErrorCategory.InvalidArgument, null);
                    }
                    IConfigurationSession configurationSession = base.DataSession as IConfigurationSession;
                    configurationSession.SessionSettings.IsSharedConfigChecked = true;
                    List <StoreTagData> optionalStoreTags = SetRetentionPolicyTag.ResolveTags(configurationSession, this.OptionalInMailbox);
                    this.ProcessOptionalTags(storeRetentionPolicyTagHelper.TagData, optionalStoreTags, archiveMailbox);
                    storeRetentionPolicyTagHelper.Save();
                }
            }
            catch (ElcUserConfigurationException exception)
            {
                base.WriteError(exception, ErrorCategory.ResourceUnavailable, null);
            }
            exchPrincipal = exchangePrincipal;
        }
		internal static StoreRetentionPolicyTagHelper FromMailboxId(string domainController, MailboxIdParameter mailbox, OrganizationId organizationId)
		{
			return StoreRetentionPolicyTagHelper.FromMailboxId(domainController, mailbox, false, organizationId);
		}
Beispiel #3
0
        protected override void InternalProcessRecord()
        {
            TaskLogger.LogEnter();
            if (this.Mailbox != null)
            {
                try
                {
                    using (StoreRetentionPolicyTagHelper storeRetentionPolicyTagHelper = StoreRetentionPolicyTagHelper.FromMailboxId(base.DomainController, this.Mailbox, base.CurrentOrganizationId))
                    {
                        if (storeRetentionPolicyTagHelper.Mailbox.ExchangeVersion.IsOlderThan(ExchangeObjectVersion.Exchange2010))
                        {
                            base.WriteError(new InvalidOperationException(Strings.OptInNotSupportedForPre14Mailbox(ExchangeObjectVersion.Exchange2010.ToString(), storeRetentionPolicyTagHelper.Mailbox.Identity.ToString(), storeRetentionPolicyTagHelper.Mailbox.ExchangeVersion.ToString())), ErrorCategory.InvalidOperation, storeRetentionPolicyTagHelper.Mailbox.Identity);
                        }
                        IConfigurationSession configurationSession = base.DataSession as IConfigurationSession;
                        configurationSession.SessionSettings.IsSharedConfigChecked = true;
                        if (storeRetentionPolicyTagHelper.TagData != null && storeRetentionPolicyTagHelper.TagData.Count > 0)
                        {
                            foreach (Guid guid in storeRetentionPolicyTagHelper.TagData.Keys)
                            {
                                RetentionPolicyTag retentionTagFromGuid = this.GetRetentionTagFromGuid(guid, configurationSession);
                                StoreTagData       storeTagData         = storeRetentionPolicyTagHelper.TagData[guid];
                                if ((storeTagData.IsVisible || storeTagData.Tag.Type == ElcFolderType.All) && ((this.OptionalInMailbox && storeTagData.OptedInto) || !this.OptionalInMailbox) && retentionTagFromGuid != null)
                                {
                                    this.WriteResult(retentionTagFromGuid);
                                }
                            }
                        }
                        if (!this.OptionalInMailbox && storeRetentionPolicyTagHelper.DefaultArchiveTagData != null && storeRetentionPolicyTagHelper.DefaultArchiveTagData.Count > 0)
                        {
                            foreach (Guid guid2 in storeRetentionPolicyTagHelper.DefaultArchiveTagData.Keys)
                            {
                                RetentionPolicyTag retentionTagFromGuid2 = this.GetRetentionTagFromGuid(guid2, configurationSession);
                                if (retentionTagFromGuid2 != null)
                                {
                                    StoreTagData storeTagData2 = storeRetentionPolicyTagHelper.DefaultArchiveTagData[guid2];
                                    if (storeTagData2.Tag.Type == ElcFolderType.All)
                                    {
                                        this.WriteResult(retentionTagFromGuid2);
                                    }
                                }
                            }
                        }
                    }
                    goto IL_20A;
                }
                catch (ElcUserConfigurationException exception)
                {
                    base.WriteError(exception, ErrorCategory.ResourceUnavailable, null);
                    goto IL_20A;
                }
            }
            base.InternalProcessRecord();
IL_20A:
            TaskLogger.LogExit();
        }