diff --git a/org.eclipse.osbp.report.feature/feature.xml b/org.eclipse.osbp.report.feature/feature.xml
index 87c958d..417ba46 100644
--- a/org.eclipse.osbp.report.feature/feature.xml
+++ b/org.eclipse.osbp.report.feature/feature.xml
@@ -4,7 +4,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.report">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.report/src/org/eclipse/osbp/report/ReportProvider.java b/org.eclipse.osbp.report/src/org/eclipse/osbp/report/ReportProvider.java
index 2140e22..283adc2 100644
--- a/org.eclipse.osbp.report/src/org/eclipse/osbp/report/ReportProvider.java
+++ b/org.eclipse.osbp.report/src/org/eclipse/osbp/report/ReportProvider.java
@@ -43,6 +43,7 @@
 import org.eclipse.osbp.report.pdfservice.PDFService;
 import org.eclipse.osbp.ui.api.datamart.DatamartFilter;
 import org.eclipse.osbp.ui.api.datamart.DatamartFilter.FilterType;
+import org.eclipse.osbp.ui.api.datamart.DatamartFilter.MultipleType;
 import org.eclipse.osbp.ui.api.datamart.IDataMart;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.report.IReportProvider;
@@ -182,7 +183,7 @@
 		IDataMart datamartInstance = instantiateDatamart(reportId, user, dslMetadataService, datamartId);
 		if(datamartInstance != null) {
 			datamarts.put(Utilities.getDataSetName(null, report.getDatamartRef()), datamartInstance);
-			datamartFilters.addAll(computeFilters(user, dslMetadataService, filters, datamartInstance));
+			datamartFilters.addAll(computeFilters(filters, datamartInstance));
 			
 			if(report.getDesign() instanceof ReportDesignTemplate) {
 				iterateReportForDatamarts(reportId, user, dslMetadataService, filters, ((ReportDesignTemplate)report.getDesign()).getDetail(), datamartFilters, datamarts);
@@ -279,7 +280,7 @@
 					IDataMart datamartSubInstance = instantiateDatamart(reportId, user, dslMetadataService, datamartSubId);
 					if(datamartSubInstance != null) {
 						datamarts.put(Utilities.getDataSetName(alias, ((DatamartTable)element).getDatamartRef()), datamartSubInstance);
-						datamartFilters.addAll(computeFilters(user, dslMetadataService, filters, datamartSubInstance));
+						datamartFilters.addAll(computeFilters(filters, datamartSubInstance));
 					}
 				}
 			} else if (element instanceof Container) {
@@ -294,8 +295,7 @@
 		}
 	}
 
-	private ArrayList<DatamartFilter> computeFilters(IUser user, IDSLMetadataService dslMetadataService,
-			Map<String, String> filters, IDataMart datamartInstance) {
+	private ArrayList<DatamartFilter> computeFilters(Map<String, String> filters, IDataMart datamartInstance) {
 		// transform filter
 		ArrayList<DatamartFilter> datamartFilters = datamartInstance.getFilters();
 		for(String inFilter:filters.keySet()) {
@@ -316,7 +316,7 @@
 			}
 			if(!found) {
 				// append remaining filters - should be of type id
-				datamartFilters.add(new DatamartFilter(dslMetadataService, user, FilterType.BY_ID, inFilter, filters.get(inFilter), false));
+				datamartFilters.add(new DatamartFilter(MultipleType.SINGLE, FilterType.BY_ID, inFilter, filters.get(inFilter), false));
 			}
 		}
 		datamartInstance.computeConditions();
