diff --git a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessageBean.java b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessageBean.java
index f76a1abade9414f1a5b385b1c8334d688fd4c8d5..224b0bfc5ec745ae3ec38f24ee89384c99c18b6a 100644
--- a/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessageBean.java
+++ b/gazelle-proxy-jar/src/main/java/net/ihe/gazelle/proxy/gui/MessageBean.java
@@ -4,6 +4,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.net.URLEncoder;
 import java.sql.Timestamp;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -34,6 +35,7 @@ import org.apache.commons.httpclient.methods.multipart.PartSource;
 import org.apache.commons.lang.StringEscapeUtils;
 import org.apache.commons.lang.StringUtils;
 import org.apache.log4j.Logger;
+import org.jboss.seam.Component;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.In;
 import org.jboss.seam.annotations.Name;
@@ -63,6 +65,8 @@ public class MessageBean {
 
 	private AbstractMessage message;
 
+	private String permanentLink;
+
 	public AbstractMessage getMessage() {
 		return message;
 	}
@@ -179,14 +183,14 @@ public class MessageBean {
 		}
 		return messageIndex;
 	}
-	
+
 	public Integer getMessageIndexMax() {
 		AbstractMessage message = getMessage();
 		if (message != null && message.getConnection() != null && message.getConnection().getMessages() != null) {
 			List<AbstractMessage> messages = message.getConnection().getSortedMessages();
 			int i = 1;
 			for (AbstractMessage abstractMessage : messages) {
-				messageIndexMax=i++;
+				messageIndexMax = i++;
 			}
 		}
 		return messageIndexMax;
@@ -257,7 +261,8 @@ public class MessageBean {
 		return "<pre>" + result + "</pre>";
 	}
 
-	public void validate() {
+	public void validate(String proxyId) {
+
 		// First send the file to EVSClient
 		HttpClient client = new HttpClient();
 		PostMethod filePost = new PostMethod(Preferences.getProperty("evsclient.url") + "upload");
@@ -282,7 +287,9 @@ public class MessageBean {
 				String encodedKey = URLEncoder.encode(key, "UTF-8");
 
 				HttpServletResponse response = (HttpServletResponse) extCtx.getResponse();
-				String url = Preferences.getProperty("evsclient.url") + "validate.seam?file=" + encodedKey;
+				// String url = Preferences.getProperty("evsclient.url") + "validate.seam?file=" + encodedKey;
+				String url = Preferences.getProperty("evsclient.url") + "validate.seam?file=" + encodedKey
+						+ "&proxyId=" + (getMessage().getId() + 1);
 
 				response.sendRedirect(url);
 			} catch (IOException e) {
@@ -291,6 +298,36 @@ public class MessageBean {
 		}
 	}
 
+	public void intResult() {
+		Map<String, String> urlParams = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
+		permanentLink = null;
+		message = getMessage();
+
+		if (urlParams != null && !urlParams.isEmpty()) {
+			if (urlParams.containsKey("permanentLink")) {
+				String url = urlParams.get("permanentLink");
+				if (urlParams.containsKey("oid")) {
+					String oid = urlParams.get("oid");
+					permanentLink = url + "&oid=" + oid;
+					ArrayList<String> pLinkList = new ArrayList<String>();
+					if (message.getPermanentLink() != null) {
+						pLinkList = message.getPermanentLink();
+					}
+					if (!(pLinkList.contains(permanentLink))) {
+						pLinkList.add(new String(permanentLink));
+						message.setPermanentLink(pLinkList);
+
+						EntityManager entityManager = (EntityManager) Component.getInstance("entityManager");
+						message = entityManager.merge(message);
+						entityManager.flush();
+					} else {
+						log.error("This permanentLink is already saved !");
+					}
+				}
+			}
+		}
+	}
+
 	public String redirectToMessage(AbstractMessage message) {
 		if (message.getId() == null) {
 			return null;