diff --git a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java
index b281a7409915fe17e47e3e7fa5160e48b370ef0c..feaf463514f46a61c108d198e5359d1a59ffd47b 100644
--- a/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java
+++ b/gazelle-proxy-ejb/src/main/java/net/ihe/gazelle/proxy/dao/MessageFilterStep.java
@@ -2,8 +2,10 @@ package net.ihe.gazelle.proxy.dao;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collections;
 import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -17,8 +19,12 @@ import net.ihe.gazelle.proxy.model.tm.Step;
 import net.ihe.gazelle.proxy.model.tm.TestInstance;
 
 import org.apache.commons.lang.StringEscapeUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class MessageFilterStep<T extends AbstractMessage> implements MessageFilter<T> {
+	
+	private static Logger log = LoggerFactory.getLogger(MessageFilterStep.class);
 
 	private Step step;
 	private boolean filterPathReceiver = true;
@@ -279,19 +285,21 @@ public class MessageFilterStep<T extends AbstractMessage> implements MessageFilt
 				Crit oneOfPath = new CritLogical(false, pathsArray);
 				criterions.add(oneOfPath);
 			}
-			
+
 			if (filterPersoDate) {
-				if (endDate.before(startDate)){
-					endDate=startDate;
+				if (endDate.before(startDate)) {
+					endDate = startDate;
 				}
-				
+
 				criterions.add(new CritSimple("dateReceived", "date", startDate, CritSimpleType.GE));
 				criterions.add(new CritSimple("dateReceived", "date", endDate, CritSimpleType.LE));
 			}
 
 			if (filterDates) {
 				startDate = getStartDate(testInstance);
-				endDate = step.getDate();
+				// For the moment the end date is the last modification of TI
+				endDate = getLastModifDate(testInstance);
+				// endDate = step.getDate();
 
 				criterions.add(new CritSimple("dateReceived", "date", startDate, CritSimpleType.GE));
 				criterions.add(new CritSimple("dateReceived", "date", endDate, CritSimpleType.LE));
@@ -321,11 +329,44 @@ public class MessageFilterStep<T extends AbstractMessage> implements MessageFilt
 		if (indexOf == 0) {
 			startDate = testInstance.getDate();
 		} else {
-			startDate = steps.get(indexOf - 1).getDate();
+			// for the moment the start date is always the date of TI creation
+			startDate = testInstance.getDate();
+			// startDate = steps.get(indexOf - 1).getDate();
 		}
 		return startDate;
 	}
 
+	private Date getLastModifDate(TestInstance testInstance) {
+		Date lastModifDate = null;
+		List<Step> steps = testInstance.getSteps();
+		int indexOf = steps.indexOf(step);
+		if (indexOf > 0) {
+			lastModifDate = steps.get(indexOf - 1).getDate();
+		}
+
+		for (int i = 0; i < steps.size();) {
+			for (int j = 1; j < steps.size();) {
+				log.info(""+steps.get(i).getDate());
+				log.info(""+steps.get(j).getDate());
+				if (steps.get(i).getDate().compareTo(steps.get(j).getDate()) >= 0) {
+					if (lastModifDate==null || lastModifDate.compareTo(steps.get(i).getDate()) <= 0) {
+						lastModifDate = steps.get(i).getDate();
+					}
+				}
+				j++;
+			}
+			i++;
+		}
+		if (lastModifDate == null || startDate.after(lastModifDate)) {
+			lastModifDate.equals(startDate);
+			Calendar cal = new GregorianCalendar();
+			cal.setTime(lastModifDate);
+			cal.set(Calendar.YEAR, 1);
+			lastModifDate = cal.getTime();
+		}
+		return lastModifDate;
+	}
+
 	public boolean isFilterPathReceiver() {
 		return filterPathReceiver;
 	}