public IEnumerable <SearchSource> Convert(ISearchPolicy policy, IEnumerable <SearchSource> sources) { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert Sources:", sources); IConfigurationSession configurationSession = DirectorySessionFactory.Default.GetTenantOrTopologyConfigurationSession(ConsistencyMode.IgnoreInvalid, policy.RecipientSession.SessionSettings, 46, "Convert", "f:\\15.00.1497\\sources\\dev\\EDiscovery\\src\\MailboxSearch\\WebService\\External\\PublicFolderSourceConverter.cs"); using (PublicFolderDataProvider provider = new PublicFolderDataProvider(configurationSession, "Get-PublicFolder", Guid.Empty)) { foreach (SearchSource source in sources) { if (source.SourceType == SourceType.PublicFolder) { Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "PublicFolderSourceConverter.Convert Source:", source.ReferenceId, "PublicFolderSourceConverter.Type:", source.SourceType }); PublicFolder publicFolder = null; try { PublicFolderId publicFolderId2; if (this.IsPath(source.ReferenceId)) { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert From Path:", source.ReferenceId); publicFolderId2 = new PublicFolderId(new MapiFolderPath(source.ReferenceId)); } else { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert From StoreId:", source.ReferenceId); StoreObjectId storeObjectId = StoreObjectId.FromHexEntryId(source.ReferenceId); publicFolderId2 = new PublicFolderId(storeObjectId); } if (publicFolderId2 != null) { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert PublicFolderId:", publicFolderId2); publicFolder = (PublicFolder)provider.Read <PublicFolder>(publicFolderId2); } } catch (FormatException) { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert FormatException, Source:", source); } if (publicFolder != null) { yield return(this.GetSource(source, publicFolder)); } else { Recorder.Trace(5L, TraceType.InfoTrace, "PublicFolderSourceConverter.Convert Failed, Source:", source); yield return(source); } } else if (source.SourceType == SourceType.AllPublicFolders) { Recorder.Trace(5L, TraceType.InfoTrace, new object[] { "PublicFolderSourceConverter.Convert Source:", source.ReferenceId, "Type:", source.SourceType }); PublicFolderId publicFolderId = new PublicFolderId(MapiFolderPath.IpmSubtreeRoot); IEnumerable <PublicFolder> folders = provider.FindPaged <PublicFolder>(null, publicFolderId, true, null, 50); foreach (PublicFolder publicFolder2 in folders) { if (publicFolder2.FolderPath != MapiFolderPath.IpmSubtreeRoot) { yield return(this.GetSource(source, publicFolder2)); } } } } } yield break; }