Well this is something I think I can help you. I have made a so called "FilterableDTODataSource". As I do also show Master Child Relations within my reports I do put all my SubReports (as JasperReport Objects) and all its CustomDataSources (as FilterableDTODataSource Objects) in a container object that holds these SubReports and DataSources. In the design I made following SubReport-Expression: Code:$P{DataContainer}.getSubReportByName("MyNeededSubReportNumber1"«») this method at my DataContainer returns a JasperReport Object by the name that I've given it before. the DataSourceExpression looks like this: Code:[code]$P{DataContainer}.getDataSourceByName("MyNeededDataSourceNumber1","NameOf TheMatchingFieldInChildDataSourceLikeParentId",$F{Id}) This method returns my FilterableDTODataSource that does following things before returning: gets the datasource from the list in the container make a clone of this (because of reuse in nested subreports) if needed call the method "moveFirst" to the cloned datasource set the attribute "filterFieldName" to the given Name (in my sample "NameOfTheMatchingFieldInChildDataSourceLikeParentId" set the attribute "filterValue" to the value that is passed into (in my sample the Value of the field "Id" from parent master datasource) return this FilterableDTODataSource[/ol] the "next" Method in this FilterableDTODataSource filters out the records that fullfill the filter criteria (filterFieldName + filterValue) so I do work up to 13 SubReports with its related SubDataSources... and I do even have nested SubReports that reuse the same DataSource that the upper SubReports already loops through... works great since 2 years with our Server Client Enterprise Application. finally: every a thing of your creativity - JasperReports is therefor the best choice!!! ;) hth + good Luck C-Box