diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
index 630c35553229d34bc6cfe02decbffd8380ab5b0c..4ecdb3412b1d16807e370483da025f57bf2672fb 100644
--- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
+++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/model/message/AbstractMessage.java
@@ -56,7 +56,7 @@ import org.slf4j.LoggerFactory;
 @Inheritance
 @DiscriminatorColumn(name = "pxy_abstract_message_type")
 @SequenceGenerator(name = "pxy_message_sequence", sequenceName = "pxy_message_id_seq", allocationSize = 1)
-public abstract class AbstractMessage {
+public abstract class AbstractMessage implements Comparable<AbstractMessage> {
 
 	private static Logger log = LoggerFactory.getLogger(AbstractMessage.class);
 
@@ -67,7 +67,7 @@ public abstract class AbstractMessage {
 	@NotNull
 	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "pxy_message_sequence")
 	private Integer id;
-
+	
 	@Temporal(TemporalType.TIMESTAMP)
 	@Column(name = "date_received")
 	private Date dateReceived;
@@ -314,6 +314,11 @@ public abstract class AbstractMessage {
 		return new ByteArrayPartSource(messageType, messageReceived);
 	}
 
+	@Override
+	public int compareTo(AbstractMessage o) {
+		return getDateReceived().compareTo(o.getDateReceived());
+	}
+	
 	@Override
 	public String toString() {
 		StringBuilder builder = new StringBuilder();