adjusted legal info, filter changes, historized

Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
index 6e952bd..2256cd8 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/BeanReferenceFieldPresentation.java
@@ -159,6 +159,9 @@
 				field.setDialog(true);
 			}
 			
+			field.addValueChangeListener(e -> {
+				String evt = e.toString();
+			});
 			applyCaptions();
 
 			initializeField(field);
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
index 33d05f6..33490ee 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/ComboBoxPresentation.java
@@ -151,6 +151,9 @@
 					combo.addStyleName(modelAccess.getCssClass());
 				}
 
+				combo.addValueChangeListener(e -> {
+					String evt = e.toString();
+				});
 				applyCaptions();
 
 				initializeField(combo);
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
index b0a8919..c94e208 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/SuggestTextFieldPresentation.java
@@ -12,6 +12,10 @@
  */
 package org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
 import java.util.Locale;
 
 import org.eclipse.core.databinding.Binding;
@@ -23,29 +27,50 @@
 import org.eclipse.emf.databinding.EMFObservables;
 import org.eclipse.osbp.ecview.core.common.editpart.IElementEditpart;
 import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableBindingEndpoint;
+import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableSelectionEndpoint;
 import org.eclipse.osbp.ecview.core.common.model.core.YEmbeddableValueEndpoint;
 import org.eclipse.osbp.ecview.core.common.notification.IReloadRequestService;
 import org.eclipse.osbp.ecview.core.extension.model.extension.ExtensionModelPackage;
 import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextField;
 import org.eclipse.osbp.ecview.core.extension.model.extension.YSuggestTextFieldEvents;
 import org.eclipse.osbp.ecview.core.ui.core.editparts.extension.ISuggestTextFieldEditpart;
+import org.eclipse.osbp.runtime.common.annotations.DtoUtils;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
+import org.eclipse.osbp.runtime.common.historized.UUIDHist;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.util.BeanUtils;
 import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.common.AbstractFieldWidgetPresenter;
 import org.eclipse.osbp.runtime.web.ecview.presentation.vaadin.internal.util.Util;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.BeanServiceLazyLoadingContainer;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchServiceFactory;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
 import org.eclipse.osbp.vaadin.addons.suggesttext.SuggestTextField;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.ibm.icu.text.DateFormat;
+import com.ibm.icu.text.SimpleDateFormat;
+import com.vaadin.data.Container;
+import com.vaadin.data.sort.SortOrder;
 import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.converter.Converter;
+import com.vaadin.data.util.filter.Compare;
+import com.vaadin.data.util.filter.Compare.Equal;
 import com.vaadin.server.ErrorMessage;
+import com.vaadin.shared.data.sort.SortDirection;
+import com.vaadin.ui.Alignment;
 import com.vaadin.ui.Component;
 import com.vaadin.ui.Component.Focusable;
 import com.vaadin.ui.ComponentContainer;
 import com.vaadin.ui.Field;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.Grid.Column;
+import com.vaadin.ui.Grid.SelectionMode;
+import com.vaadin.ui.NativeButton;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import com.vaadin.ui.Window;
 
-// TODO: Auto-generated Javadoc
 /**
  * This presenter is responsible to render a text field on the given layout.
  */
@@ -72,6 +97,10 @@
 
 	private boolean updateBinding;
 
+	private Equal histCurrentFilter;
+
+	private Binding dtoBinding;
+
 	/**
 	 * Constructor.
 	 * 
@@ -100,6 +129,12 @@
 			text.setImmediate(true);
 			text.setLimit(10);
 			text.setAutoHide(modelAccess.yField.isAutoHidePopup());
+			text.setShowHistoryDialogCallback(() -> showHistorizedDialog());
+
+			if (BeanUtils.isHistorized(modelAccess.yField.getType())) {
+				text.setHistorized(true);
+			}
+
 			setupComponent(text, getCastedModel());
 
 			associateWidget(text, modelAccess.yField);
@@ -110,7 +145,7 @@
 				text.setId(getEditpart().getId());
 			}
 
-			property = new ObjectProperty<String>(null, String.class);
+			property = new ObjectProperty<>(null, String.class);
 			text.getTextField().setPropertyDataSource(property);
 
 			text.addSelectionChangedListener(new SuggestTextField.SelectionChangedListener() {
@@ -132,6 +167,13 @@
 					text.setContainerDataSource(datasource);
 
 					text.setCaptionPropertyId(modelAccess.yField.getItemCaptionProperty());
+					text.setCaptionPropertyRetriever((dto) -> {
+						if (dto == null) {
+							return "";
+						}
+						return (String) DtoUtils.getValue(dto, modelAccess.yField.getItemCaptionProperty());
+					});
+
 					text.setFilterPropertyId(modelAccess.yField.getItemFilterProperty());
 
 					String uuidProp = modelAccess.yField.getItemUUIDProperty();
@@ -177,6 +219,10 @@
 		Util.applyCaptions(getI18nService(), modelAccess.getLabel(), modelAccess.getLabelI18nKey(), getLocale(), text);
 	}
 
+	protected void showHistorizedDialog() {
+		new DialogHandleImp().open();
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -204,6 +250,8 @@
 
 		if (bindableValue instanceof YEmbeddableValueEndpoint) {
 			return internalGetValueEndpoint();
+		} else if (bindableValue instanceof YEmbeddableSelectionEndpoint) {
+			return internalGetDtoEndpoint();
 		}
 		throw new IllegalArgumentException("Not a valid input: " + bindableValue);
 	}
@@ -213,12 +261,20 @@
 	 *
 	 * @return the i observable value
 	 */
+	@SuppressWarnings("rawtypes")
 	protected IObservableValue internalGetValueEndpoint() {
 		// return the observable value for text
 		return EMFObservables.observeValue(castEObject(getModel()),
 				ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE);
 	}
 
+	@SuppressWarnings("rawtypes")
+	protected IObservableValue internalGetDtoEndpoint() {
+		// return the observable value for the current dto
+		return EMFObservables.observeValue(castEObject(getModel()),
+				ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO);
+	}
+
 	/**
 	 * Creates the bindings for the given values.
 	 *
@@ -250,6 +306,15 @@
 			unregisterBinding(keyBinding);
 		}
 
+		if (dtoBinding != null) {
+			unregisterBinding(dtoBinding);
+		}
+
+		if (histCurrentFilter != null) {
+			IGlobalFilterable filterable = (IGlobalFilterable) field.getContainerDataSource();
+			filterable.removeGlobalContainerFilter(histCurrentFilter);
+		}
+
 		if (field == null) {
 			return;
 		}
@@ -261,6 +326,18 @@
 			field.setSuggestionEnabled(false);
 
 			if (modelAccess.yField.isUseSuggestions()) {
+
+				if (BeanUtils.isHistorized(modelAccess.yField.getType())) {
+					java.lang.reflect.Field histCurrentField = BeanUtils.getField(modelAccess.yField.getType(),
+							HistIsCurrent.class);
+					if (histCurrentField != null) {
+						histCurrentFilter = new Compare.Equal(histCurrentField.getName(), true);
+
+						IGlobalFilterable filterable = (IGlobalFilterable) field.getContainerDataSource();
+						filterable.addGlobalContainerFilter(histCurrentFilter);
+					}
+				}
+
 				// in suggest mode do not update from UI to model
 				keyBinding = createBindingsByAccessor(castEObject(getModel()),
 						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__KEYS, field, "keys",
@@ -270,6 +347,10 @@
 						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE, field.getTextField(),
 						new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
 						new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
+				dtoBinding = createBindingsByAccessor(castEObject(getModel()),
+						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO, field, "currentItemId",
+						new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+						new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
 			} else {
 				keyBinding = createBindingsByAccessor(castEObject(getModel()),
 						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__KEYS, field, "keys",
@@ -279,6 +360,10 @@
 						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__VALUE, field.getTextField(),
 						new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE),
 						new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
+				dtoBinding = createBindingsByAccessor(castEObject(getModel()),
+						ExtensionModelPackage.Literals.YSUGGEST_TEXT_FIELD__CURRENT_VALUE_DTO, field, "currentItemId",
+						new UpdateValueStrategy(UpdateValueStrategy.POLICY_NEVER),
+						new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE));
 			}
 
 			field.setSuggestionEnabled(modelAccess.yField.isUseSuggestions());
@@ -286,6 +371,7 @@
 			// create the model binding from model to ECView-model
 			registerBinding(valueBinding);
 			registerBinding(keyBinding);
+			registerBinding(dtoBinding);
 		} finally {
 			updateBinding = false;
 		}
@@ -328,8 +414,8 @@
 			// unbind all active bindings
 			unbind();
 
-			Component parent = ((Component) text.getParent());
-			if (parent != null && parent instanceof ComponentContainer) {
+			Component parent = text.getParent();
+			if (parent instanceof ComponentContainer) {
 				((ComponentContainer) parent).removeComponent(text);
 			}
 
@@ -402,6 +488,10 @@
 		}
 	}
 
+	protected void internalSetLastHistorizedSuggestion(Object itemId) {
+		internalSetLastSuggestion(itemId);
+	}
+
 	protected void internalSetLastSuggestion(Object itemId) {
 		IReloadRequestService service = getViewContext().getService(IReloadRequestService.class.getName());
 		if (service != null && itemId != null) {
@@ -489,6 +579,50 @@
 		}
 	}
 
+	// @SuppressWarnings("serial")
+	// class HistorizedWrapper extends CustomComponent {
+	//
+	// private final Class<?> type;
+	// private Component content;
+	// private CustomTextField textField;
+	//
+	// private HistorizedWrapper(Class<?> type) {
+	// this.type = type;
+	// init();
+	// }
+	//
+	// protected void init() {
+	// content = createContent();
+	// setCompositionRoot(content);
+	// setSizeFull();
+	// }
+	//
+	// protected Component createContent() {
+	//
+	// textField = new CustomTextField();
+	// Component content = null;
+	// if (BeanUtils.isHistorized(type)) {
+	// HorizontalLayout layout = new HorizontalLayout();
+	// content = layout;
+	// layout.addComponent(textField);
+	//
+	// Button button = new Button("H");
+	// button.setSizeUndefined();
+	// layout.addComponent(button);
+	// button.addClickListener((e) -> {
+	// showHistorizedDialog();
+	// });
+	//
+	// layout.setExpandRatio(textField, 1.0f);
+	// } else {
+	// content = textField;
+	// }
+	//
+	// return content;
+	// }
+	//
+	// }
+
 	/**
 	 * The Class CustomTextField.
 	 */
@@ -546,7 +680,7 @@
 				modelAccess.yField.setUseSuggestions(suggestionEnabled);
 			}
 		}
-		
+
 		public int getTabIndex() {
 			return tabIndex;
 		}
@@ -584,4 +718,141 @@
 			}
 		}
 	}
+
+	@SuppressWarnings("serial")
+	class DialogHandleImp {
+
+		private Window window;
+
+		@SuppressWarnings("unchecked")
+		public void open() {
+
+			if (modelAccess.yField.getCurrentValueDTO() == null) {
+				return;
+			}
+
+			window = new Window();
+			window.setClosable(true);
+			window.setModal(true);
+
+			VerticalLayout content = new VerticalLayout();
+			// content.setHeight("450px");
+			// content.setWidth("600px");
+			content.setMargin(true);
+			content.setSpacing(true);
+			content.setSizeFull();
+			window.setContent(content);
+
+			VerticalLayout renderTarget = new VerticalLayout();
+			renderTarget.setMargin(true);
+			renderTarget.setSpacing(true);
+			renderTarget.setSizeFull();
+			content.addComponent(renderTarget);
+			content.setExpandRatio(renderTarget, 1.0f);
+			UI ui = SuggestTextFieldPresentation.this.text.getUI();
+			ui.addWindow(window);
+
+			Grid grid = new Grid();
+			grid.setHeight("450px");
+			grid.setWidth("600px");
+			grid.setSelectionMode(SelectionMode.SINGLE);
+			renderTarget.addComponent(grid);
+			renderTarget.setExpandRatio(grid, 1.0f);
+
+			IBeanSearchServiceFactory factory = getViewContext().getService(IBeanSearchServiceFactory.class.getName());
+			ISharedStateContext sharedState = getViewContext().getService(ISharedStateContext.class.getName());
+			@SuppressWarnings("rawtypes")
+			BeanServiceLazyLoadingContainer<?> datasource = new BeanServiceLazyLoadingContainer(
+					factory.createService(modelAccess.yField.getType(), true), modelAccess.yField.getType(), sharedState);
+
+			Object currentSelected = modelAccess.yField.getCurrentValueDTO();
+			java.lang.reflect.Field idField = DtoUtils.getIdField(currentSelected.getClass());
+			String idProperty = idField.getName();
+			String validFromProperty = "validFrom";
+			Object idValue = DtoUtils.getIdValue(currentSelected);
+			if (idValue instanceof UUIDHist) {
+				UUIDHist histIdValue = (UUIDHist) idValue;
+				idValue = histIdValue.id;
+				validFromProperty = idProperty + ".validFrom";
+				idProperty = idProperty + ".id";
+			}
+
+			// add the validFrom from UUIDHist as nested property
+			datasource.addNestedContainerProperty(validFromProperty);
+
+			Container.Filter filter = new Compare.Equal(idProperty, idValue);
+			datasource.addGlobalContainerFilter(filter);
+
+			grid.setContainerDataSource(datasource);
+
+			java.lang.reflect.Field domainKeyField = DtoUtils.getDomainKeyField(modelAccess.yField.getType());
+			java.lang.reflect.Field domainDescField = DtoUtils.getDomainDescriptionField(modelAccess.yField.getType());
+
+			// prepare columns to show
+			//
+			List<String> columnsToShow = new ArrayList<>();
+			if (domainKeyField != null) {
+				columnsToShow.add(domainKeyField.getName());
+			}
+			columnsToShow.add(validFromProperty);
+			if (domainDescField != null) {
+				columnsToShow.add(domainDescField.getName());
+			}
+			columnsToShow.add("histCurrent");
+
+			grid.setColumns(columnsToShow.toArray());
+
+			Column valFromColumn = grid.getColumn(validFromProperty);
+			valFromColumn.setConverter(new Converter<String, Long>() {
+
+				DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
+
+				@Override
+				public Long convertToModel(String value, Class<? extends Long> targetType, Locale locale)
+						throws Converter.ConversionException {
+					throw new IllegalStateException();
+				}
+
+				@Override
+				public String convertToPresentation(Long value, Class<? extends String> targetType, Locale locale)
+						throws Converter.ConversionException {
+					return df.format(new Date(value));
+				}
+
+				@Override
+				public Class<Long> getModelType() {
+					return Long.class;
+				}
+
+				@Override
+				public Class<String> getPresentationType() {
+					return String.class;
+				}
+
+			});
+
+			grid.setSortOrder(Collections.singletonList(new SortOrder(validFromProperty, SortDirection.DESCENDING)));
+
+			// create a button to use the current selection
+			//
+			NativeButton useBotton = new NativeButton("select version");
+			renderTarget.addComponent(useBotton);
+			useBotton.setEnabled(true);
+			renderTarget.setComponentAlignment(useBotton, Alignment.BOTTOM_RIGHT);
+
+			useBotton.addClickListener(e -> {
+				Object dto = grid.getSelectedRow();
+				internalSetLastHistorizedSuggestion(dto);
+				close();
+			});
+
+			window.setHeight("450px");
+			window.setWidth("600px");
+			window.center();
+		}
+
+		public void close() {
+			window.close();
+		}
+	}
 }
diff --git a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
index 2c562c5..17de654 100644
--- a/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
+++ b/org.eclipse.osbp.runtime.web.ecview.presentation.vaadin/src/org/eclipse/osbp/runtime/web/ecview/presentation/vaadin/internal/services/WidgetAssocationsService.java
@@ -21,6 +21,7 @@
 import org.eclipse.osbp.ecview.core.common.model.core.YFocusable;
 import org.eclipse.osbp.ecview.core.common.services.AbstractWidgetAssocationsService;
 import org.eclipse.osbp.ecview.core.extension.model.extension.YPanel;
+import org.eclipse.osbp.ecview.core.extension.model.extension.YTabSheet;
 
 import com.vaadin.ui.Component;
 
@@ -50,7 +51,7 @@
 		synchronized (associations) {
 			for (Map.Entry<Component, YElement> entry : associations.entrySet()) {
 				YElement yElement = entry.getValue();
-				if (yElement instanceof YFocusable && !(yElement instanceof YPanel)) {
+				if (yElement instanceof YFocusable && !(yElement instanceof YPanel) && !(yElement instanceof YTabSheet)) {
 					int yElementLayoutIdx = ((YFocusable) yElement).getLayoutIdx();
 					if (layoutIdx == yElementLayoutIdx) {
 						return yElement;
diff --git a/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml b/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
index 4922c01..46eec6b 100644
--- a/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin/feature.xml
@@ -17,7 +17,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.runtime.web.ecview.presentation.vaadin">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml b/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
index 3e1e2ed..a9c92c1 100644
--- a/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.testbase/feature.xml
@@ -1,69 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-    <!--#=======================================================================
-        --><!--#
-        Copyright
-        (c)
-        2011,
-        2016
-        -
-        Loetz
-        GmbH&Co.KG
-        (69115
-        Heidelberg,
-        Germany)
-        --><!--#
-        All
-        rights
-        reserved.
-        This
-        program
-        and
-        the
-        accompanying
-        materials
-        --><!--#
-        are
-        made
-        available
-        under
-        the
-        terms
-        of
-        the
-        Eclipse
-        Public
-        License
-        v1.0
-        --><!--#
-        which
-        accompanies
-        this
-        distribution,
-        and
-        is
-        available
-        at
-        --><!--#
-        http://www.eclipse.org/legal/epl-v10.html
-        --><!--#
-        --><!--#
-        Contributors:
-        --><!--#
-        
-        
-        
-        
-        Christophe
-        Loetz
-        (Loetz
-        GmbH&Co.KG)
-        -
-        initial
-        API
-        and
-        implementation
-        --><!--#=======================================================================
-        --><feature id="org.eclipse.osbp.runtime.web.feature.testbase" label="%featureName" version="0.9.0.qualifier" provider-name="%providerName">
+<feature id="org.eclipse.osbp.runtime.web.feature.testbase" 
+	label="%featureName" 
+	version="0.9.0.qualifier" 
+	provider-name="%providerName"
+	plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
index a14f3a3..58dbac5 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.addon.osgi/feature.xml
@@ -17,7 +17,7 @@
 	label="%featureName" 
 	version="0.9.0.qualifier" 
 	provider-name="%providerName"
-	plugin="org.eclipse.osbp.runtime.web.vaadin.osgi">
+	plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
index 05c0ace..247ed35 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.common/feature.xml
@@ -17,7 +17,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.runtime.web.vaadin.common">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
index a2ff89f..ac26e3c 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.components/feature.xml
@@ -17,7 +17,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.runtime.web.vaadin.components">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
index 20b1490..b730bad 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.databinding/feature.xml
@@ -17,7 +17,7 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.runtime.web.vaadin.databinding">
+		plugin="org.eclipse.osbp.license">
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml b/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
index 04f3fe3..44a44a0 100644
--- a/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
+++ b/org.eclipse.osbp.runtime.web.feature.vaadin.osgi/feature.xml
@@ -17,7 +17,8 @@
         label="%featureName"
         version="0.9.0.qualifier"
         provider-name="%providerName"
-		plugin="org.eclipse.osbp.runtime.web.vaadin.osgi">
+   	    plugin="org.eclipse.osbp.license">
+
         
     <description>
         %description
diff --git a/org.eclipse.osbp.runtime.web.target/.project b/org.eclipse.osbp.runtime.web.target/.project
deleted file mode 100644
index 3060072..0000000
--- a/org.eclipse.osbp.runtime.web.target/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.osbp.runtime.web.target</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.m2e.core.maven2Builder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.m2e.core.maven2Nature</nature>
-	</natures>
-</projectDescription>
diff --git a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs b/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs
deleted file mode 100644
index 99f26c0..0000000
--- a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.core.resources.prefs
+++ /dev/null
@@ -1,2 +0,0 @@
-eclipse.preferences.version=1
-encoding/<project>=UTF-8
diff --git a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs b/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs
deleted file mode 100644
index f897a7f..0000000
--- a/org.eclipse.osbp.runtime.web.target/.settings/org.eclipse.m2e.core.prefs
+++ /dev/null
@@ -1,4 +0,0 @@
-activeProfiles=
-eclipse.preferences.version=1
-resolveWorkspaceProjects=true
-version=1
diff --git a/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target b/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target
deleted file mode 100644
index 1c8de48..0000000
--- a/org.eclipse.osbp.runtime.web.target/org.eclipse.osbp.runtime.web.target.kepler.target
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target includeMode="feature" name="org.eclipse.osbp.runtime.web.target.kepler" sequenceNumber="36">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.httpcomponents.httpcore.source" version="4.1.4.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpcore" version="4.1.4.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpcore.nio" version="4.1.0.v201101201700"/>
-<unit id="org.apache.httpcomponents.httpcore.nio.source" version="4.1.0.v201101201700"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.httpcomponents.httpclient" version="4.1.2.v201203221030"/>
-<unit id="org.apache.httpcomponents.httpclient.source" version="4.1.2.v201203221030"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.0.1.201406272004"/>
-<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.equinox.sdk.feature.group" version="3.9.0.v20140221-1852"/>
-<unit id="org.eclipse.platform.sdk" version="4.3.2.M20140221-1700"/>
-<unit id="org.eclipse.emf.sdk.feature.group" version="2.9.2.v20140203-1126"/>
-<repository location="http://download.eclipse.org/releases/kepler"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.junit.source" version="4.10.0.v4_10_0_v20120426-0900"/>
-<unit id="org.junit" version="4.10.0.v4_10_0_v20120426-0900"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.security.shiro.feature.group" version="1.2.2"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.0.1.201405120903"/>
-<unit id="org.eclipse.osbp.dependencies.feature.assert-utilities.feature.group" version="1.2.2"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.0.1.201405120903"/>
-<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.1.9"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.apache.commons.math" version="2.1.0.v201105210652"/>
-<unit id="org.apache.commons.lang" version="2.6.0.v201205030909"/>
-<unit id="org.apache.commons.collections" version="3.2.0.v201005080500"/>
-<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20120526062928/repository"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dsl.feature.entities.headless.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.dto.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.entities.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.common.headless.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.common.headless.source.feature.group" version="0.0.1.201406261127"/>
-<unit id="org.eclipse.osbp.dsl.feature.dto.headless.feature.group" version="0.0.1.201406261127"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/kepler/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="slicer" includeSource="false" type="InstallableUnit">
-<unit id="org.eclipse.xtext.redist.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.ui.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.runtime.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.xbase.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.examples.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.sdk.feature.group" version="2.6.1.v201406120726"/>
-<unit id="org.eclipse.xtext.docs.feature.group" version="2.6.1.v201406120726"/>
-<repository location="http://download.eclipse.org/modeling/tmf/xtext/updates/composite/releases"/>
-</location>
-</locations>
-</target>
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
index ca93392..b68e858 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/BeanServiceLazyLoadingContainer.java
@@ -29,7 +29,6 @@
 import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent;
 import org.eclipse.osbp.runtime.common.event.EventDispatcherEvent.EventDispatcherDataTag;
 import org.eclipse.osbp.runtime.common.event.IEventDispatcher;
-import org.eclipse.osbp.runtime.common.filter.IDatamartService;
 import org.eclipse.osbp.runtime.common.filter.SortBy;
 import org.eclipse.osbp.runtime.common.filter.SortOrder;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
@@ -62,7 +61,7 @@
 public class BeanServiceLazyLoadingContainer<BEANTYPE> extends AbstractContainer
 		implements Filterable, Indexed, SimpleFilterable, ILazyRefreshFilterable, Sortable, ValueChangeListener,
 		Container.ItemSetChangeNotifier, Container.PropertySetChangeNotifier, IClearable, INestedPropertyAble<BEANTYPE>,
-		IAlreadyLoadedItemIdProvider<BEANTYPE>, IEventDispatcher.Receiver {
+		IAlreadyLoadedItemIdProvider<BEANTYPE>, IEventDispatcher.Receiver, IGlobalFilterable {
 
 	/** The Constant LOGGER. */
 	private static final Logger LOGGER = LoggerFactory.getLogger(BeanServiceLazyLoadingContainer.class);
@@ -75,6 +74,14 @@
 	/** The sort order. */
 	private SortOrder sortOrder = new SortOrder();
 
+	/**
+	 * These filters are not automatically removed by
+	 * removeAllContainerFilters.<br>
+	 * Eg, they are used by Historized DTOs to filter only their current
+	 * version.
+	 */
+	private List<Filter> globalFilters = new ArrayList<Filter>();
+
 	/** The filters. */
 	private List<Filter> filters = new ArrayList<Filter>();
 
@@ -719,6 +726,36 @@
 		fireItemSetChange();
 	}
 
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable#addGlobalContainerFilter(com.vaadin.data.Container.Filter)
+	 */
+	@Override
+	public void addGlobalContainerFilter(Filter filter) throws UnsupportedFilterException {
+		if (!globalFilters.contains(filter)) {
+			globalFilters.add(filter);
+		}
+		if (!filters.contains(filter)) {
+			filters.add(filter);
+			clearCache();
+		}
+
+		fireItemSetChange();
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable#removeGlobalContainerFilter(com.vaadin.data.Container.Filter)
+	 */
+	@Override
+	public void removeGlobalContainerFilter(Filter filter) throws UnsupportedFilterException {
+		globalFilters.remove(filter);
+		
+		if (filters.remove(filter)) {
+			clearCache();
+
+			fireItemSetChange();
+		}
+	}
+
 	/**
 	 * Clear cache.
 	 */
@@ -752,6 +789,10 @@
 		boolean hadFilters = !filters.isEmpty();
 
 		filters.clear();
+		
+		// but add the globalFilters again
+		filters.addAll(globalFilters);
+		
 		clearCache();
 
 		if (hadFilters) {
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
index 9efbf59..77ea39f 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactory.java
@@ -15,7 +15,6 @@
 
 package org.eclipse.osbp.runtime.web.vaadin.common.data;
 
-// TODO: Auto-generated Javadoc
 /**
  * This factory is exposed as an OSGi service and will return new bean search
  * service instances for the given bean type.
@@ -33,5 +32,16 @@
 	 * @return the i bean search service&lt; bea n&gt;
 	 */
 	<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> type);
+	
+	/**
+	 * Returns the {@link IBeanSearchService} for the given type. If no proper
+	 * implementation could be found, an in memory service will be returned.
+	 *
+	 * @param <BEAN>            the generic type
+	 * @param type            the type
+	 * @param ignoreHistorizedFilter the historized filter is ignored
+	 * @return the i bean search service&lt; bea n&gt;
+	 */
+	<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> type, boolean ignoreHistorizedFilter);
 
 }
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
index 615c299..bfc34c8 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IBeanSearchServiceFactoryDelegate.java
@@ -15,7 +15,6 @@
 
 package org.eclipse.osbp.runtime.web.vaadin.common.data;
 
-// TODO: Auto-generated Javadoc
 /**
  * Implementations are factories used by the {@link IBeanSearchServiceFactory}.
  * Delegates are hooked up by {@link IBeanSearchServiceFactory} and requests for
@@ -35,4 +34,14 @@
 	 */
 	<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean);
 
+	/**
+	 * Returns the {@link IBeanSearchService} for the given type. If no proper
+	 * implementation could be found, <code>null</code> must be returned.
+	 *
+	 * @param <BEAN> the generic type
+	 * @param bean the bean
+	 * @param ignoreHistorizedFilter the historized filter should be ignored
+	 * @return the i bean search service
+	 */
+	<BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter);
 }
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java
new file mode 100644
index 0000000..91d33bc
--- /dev/null
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/IGlobalFilterable.java
@@ -0,0 +1,28 @@
+package org.eclipse.osbp.runtime.web.vaadin.common.data;
+
+import com.vaadin.data.Container.Filter;
+import com.vaadin.data.util.filter.UnsupportedFilterException;
+
+/**
+ * Allows to add global filters which are not automatically be removed.
+ *
+ */
+public interface IGlobalFilterable {
+
+	/**
+	 * Adds a global filter which will never be removed automatically.
+	 * 
+	 * @param filter
+	 * @throws UnsupportedFilterException
+	 */
+	void addGlobalContainerFilter(Filter filter) throws UnsupportedFilterException;
+
+	/**
+	 * Removes a global filter which will never be removed automatically.
+	 * 
+	 * @param filter
+	 * @throws UnsupportedFilterException
+	 */
+	void removeGlobalContainerFilter(Filter filter) throws UnsupportedFilterException;
+
+}
\ No newline at end of file
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
index 2603af0..a71f641 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchService.java
@@ -34,16 +34,22 @@
 	private final LFilterConverter converter = new LFilterConverter();
 	private final IDTOService<BEAN> delegate;
 	private final Class<BEAN> type;
+	private boolean ignoreHistorizedFilter = false;
 
 	public StatefulDelegatingDtoSearchService(IDTOService<BEAN> delegate, Class<BEAN> type) {
+		this(delegate, type, false);
+	}
+
+	public StatefulDelegatingDtoSearchService(IDTOService<BEAN> delegate, Class<BEAN> type, boolean ignoreHistorizedFilter) {
 		this.delegate = delegate;
 		this.type = type;
-
+		this.ignoreHistorizedFilter = ignoreHistorizedFilter;
+		
 		if (delegate == null) {
 			LOGGER.error("Delegate could not be found for " + type);
 		}
 	}
-
+	
 	private boolean checkDelegate() {
 		if (delegate == null) {
 			LOGGER.error("Delegate could not be found for " + type);
@@ -57,8 +63,10 @@
 		if (!checkDelegate()) {
 			return 0;
 		}
-
-		return delegate.size(createQuery(filters));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		int size = delegate.size(createQuery(filters));
+		delegate.setIgnoreHistorizedFilter(false);
+		return size;
 	}
 
 	/**
@@ -91,8 +99,10 @@
 		if (!checkDelegate()) {
 			return false;
 		}
-
-		return delegate.contains(bean, createQuery(filters));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		boolean result = delegate.contains(bean, createQuery(filters));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -100,7 +110,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getNext(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.getNext(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -108,7 +121,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getPrevious(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.getPrevious(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -116,7 +132,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getFirst(createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.getFirst(createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -124,7 +143,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getLast(createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.getLast(createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -132,7 +154,10 @@
 		if (!checkDelegate()) {
 			return false;
 		}
-		return delegate.isFirst(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		boolean result = delegate.isFirst(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -140,7 +165,10 @@
 		if (!checkDelegate()) {
 			return false;
 		}
-		return delegate.isLast(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		boolean result = delegate.isLast(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -148,7 +176,10 @@
 		if (!checkDelegate()) {
 			return 0;
 		}
-		return delegate.indexOf(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		int result = delegate.indexOf(bean, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -156,7 +187,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getByIndex(index, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.getByIndex(index, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -164,7 +198,10 @@
 		if (!checkDelegate()) {
 			return null;
 		}
-		return delegate.getByIndex(startIndex, numberOfItems, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		List<BEAN> result = delegate.getByIndex(startIndex, numberOfItems, createQuery(filters, sortOrder));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 
 	@Override
@@ -172,6 +209,9 @@
 		if (bean == null) {
 			return null;
 		}
-		return delegate.get(DtoUtils.getIdValue(bean));
+		delegate.setIgnoreHistorizedFilter(ignoreHistorizedFilter);
+		BEAN result = delegate.get(DtoUtils.getIdValue(bean));
+		delegate.setIgnoreHistorizedFilter(false);
+		return result;
 	}
 }
diff --git a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
index 12f725e..b4f5c33 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.common/src/org/eclipse/osbp/runtime/web/vaadin/common/data/StatefulDelegatingDtoSearchServiceFactoryDelegate.java
@@ -19,17 +19,21 @@
 /**
  * Tries to create a bean search service backed by a DTO-Service.
  */
-@SuppressWarnings("restriction")
 @Component
 public class StatefulDelegatingDtoSearchServiceFactoryDelegate implements
 		IBeanSearchServiceFactoryDelegate {
 
 	@Override
 	public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean) {
+		return createService(bean, false);
+	}
+
+	@Override
+	public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter) {
 		// if a service that delegates to the database could be found, use it.
 		IDTOService<BEAN> service = DtoServiceAccess.getService(bean);
 		if (service != null) {
-			return new StatefulDelegatingDtoSearchService<BEAN>(service, bean);
+			return new StatefulDelegatingDtoSearchService<BEAN>(service, bean, ignoreHistorizedFilter);
 		}
 		return null;
 	}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
index 2c9b649..f5ed097 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/container/DatasourceServiceFactoryDelegate.java
@@ -15,6 +15,7 @@
 import org.eclipse.osbp.runtime.common.datasource.IDataSourceService;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchService;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchServiceFactoryDelegate;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.StatefulInMemoryBeanSearchService;
 import org.osgi.framework.BundleContext;
 import org.osgi.framework.FrameworkUtil;
@@ -33,10 +34,15 @@
 	private static final Logger LOGGER = LoggerFactory
 			.getLogger(DatasourceServiceFactoryDelegate.class);
 
+
+	@Override
+	public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(Class<DataSourceInfo> type) {
+		return createService(type, false);
+	}
+
 	@SuppressWarnings("unchecked")
 	@Override
-	public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(
-			Class<DataSourceInfo> type) {
+	public <DataSourceInfo> IBeanSearchService<DataSourceInfo> createService(Class<DataSourceInfo> type, boolean ignoreHistorizedFilter) {
 		if (type != IDataSourceService.DataSourceInfo.class) {
 			return null;
 		}
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
index 79766da..96bcbb6 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanReferenceField.java
@@ -13,9 +13,12 @@
 package org.eclipse.osbp.runtime.web.vaadin.components.fields;
 
 import org.eclipse.core.databinding.Binding;
+import org.eclipse.osbp.runtime.common.annotations.HistIsCurrent;
 import org.eclipse.osbp.runtime.common.state.ISharedStateContext;
+import org.eclipse.osbp.runtime.common.util.BeanUtils;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.BeanServiceLazyLoadingContainer;
 import org.eclipse.osbp.runtime.web.vaadin.common.data.IBeanSearchService;
+import org.eclipse.osbp.runtime.web.vaadin.common.data.IGlobalFilterable;
 import org.eclipse.osbp.runtime.web.vaadin.components.widget.LazyLoadingComboBox;
 import org.eclipse.osbp.ui.api.metadata.IDSLMetadataService;
 import org.eclipse.osbp.ui.api.themes.IThemeResourceService;
@@ -24,6 +27,8 @@
 import com.vaadin.data.Container.Filter;
 import com.vaadin.data.Property;
 import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.filter.Compare;
+import com.vaadin.data.util.filter.Compare.Equal;
 import com.vaadin.server.Resource;
 import com.vaadin.server.ThemeResource;
 import com.vaadin.shared.ui.combobox.FilteringMode;
@@ -149,6 +154,19 @@
 		if (filter != null) {
 			container.addContainerFilter(filter);
 		}
+		
+		if (BeanUtils.isHistorized(type)) {
+			java.lang.reflect.Field histCurrentField = BeanUtils.getField(type,
+					HistIsCurrent.class);
+			if (histCurrentField != null) {
+				Equal histCurrentFilter = new Compare.Equal(histCurrentField.getName(), true);
+
+				IGlobalFilterable filterable = (IGlobalFilterable) container;
+				filterable.addGlobalContainerFilter(histCurrentFilter);
+			}
+		}
+		
+		
 		comboBox.setContainerDataSource(container);
 		comboBox.setFilteringMode(FilteringMode.CONTAINS);
 
diff --git a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
index ad9110b..baf85be 100644
--- a/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
+++ b/org.eclipse.osbp.runtime.web.vaadin.components/src/org/eclipse/osbp/runtime/web/vaadin/components/fields/BeanSearchServiceFactory.java
@@ -35,10 +35,15 @@
 
 	@Override
 	public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean) {
+		return createService(bean, false);
+	}
+
+	@Override
+	public <BEAN> IBeanSearchService<BEAN> createService(Class<BEAN> bean, boolean ignoreHistorizedFilter) {
 
 		synchronized (delegates) {
 			for (IBeanSearchServiceFactoryDelegate delegate : delegates) {
-				IBeanSearchService<BEAN> service = delegate.createService(bean);
+				IBeanSearchService<BEAN> service = delegate.createService(bean, ignoreHistorizedFilter);
 				if (service != null) {
 					return service;
 				}
@@ -59,4 +64,5 @@
 		delegates.remove(delegate);
 	}
 
+
 }
diff --git a/setup/target-luna.target b/setup/target-luna.target
deleted file mode 100644
index 248464e..0000000
--- a/setup/target-luna.target
+++ /dev/null
@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?pde version="3.8"?><target includeMode="feature" name="org.eclipse.osbp.xtext.builder.target.luna" sequenceNumber="105">
-<locations>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.apache.commons.lang3" version="3.1.0.v201403281430"/>
-<unit id="org.apache.commons.collections.source" version="3.2.0.v2013030210310"/>
-<unit id="org.apache.commons.beanutils.source" version="1.8.0.v201205091237"/>
-<unit id="org.apache.commons.beanutils" version="1.8.0.v201205091237"/>
-<unit id="org.apache.commons.lang3.source" version="3.1.0.v201403281430"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location path="${eclipse_home}" type="Profile"/>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.atmosphere.feature.group" version="2.1.2.vaadin3"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.xbase.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.jvmtypes.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.dependencies.feature.vaadin.feature.group" version="7.2.5"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.types.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.dependencies.feature.jetty.websockets.feature.group" version="8.1.14"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.common.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.components.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.source.feature.group" version="0.7.1.201407011710"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.jvmtypes.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.types.source.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.feature.common.feature.group" version="0.7.1.201407011710"/>
-<unit id="org.eclipse.osbp.xtext.builder.feature.service.xbase.feature.group" version="0.8.2.201408121142"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.ecview.presentation.vaadin.source.feature.group" version="0.0.1.201408110750"/>
-<unit id="org.eclipse.osbp.runtime.web.feature.vaadin.databinding.source.feature.group" version="0.0.1.201408110750"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.apache.commons.collections.source" version="3.2.0.v2013030210310"/>
-<unit id="javax.xml.bind" version="2.2.0.v201105210648"/>
-<unit id="org.apache.commons.collections" version="3.2.0.v2013030210310"/>
-<unit id="javax.xml.stream" version="1.0.1.v201004272200"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="javax.activation.source" version="1.1.0.v201211130549"/>
-<unit id="javax.activation" version="1.1.0.v201211130549"/>
-<repository location="http://download.eclipse.org/tools/orbit/downloads/drops/R20140525021250/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.feature.group" version="0.7.0"/>
-<unit id="org.eclipse.emf.ecp.ecview.feature.core.source.feature.group" version="0.7.0"/>
-<repository location="http://lun.lunifera.org/downloads/p2/ecview/nightly/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="true" includeMode="slicer" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.osbp.dependencies.feature.security.shiro.feature.group" version="1.2.3"/>
-<repository location="http://lun.lunifera.org/downloads/p2/lunifera/luna/latest/"/>
-</location>
-</locations>
-</target>