3.1.0 Release candidate 1
diff --git a/CHANGELOG b/CHANGELOG
index 44b606e..bd7ff96 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -66,6 +66,8 @@
     * [OPENMEETINGS-1334] - It's impossible to invite om user to the my rooms
     * [OPENMEETINGS-1335] - Screen sharing icons and favicon need to be updated
     * [OPENMEETINGS-1336] - User can not enter to group room
+    * [OPENMEETINGS-1338] - Screen sharing application failed to connect to the server
+    * [OPENMEETINGS-1340] - Moderator can't kick user from the conference room
 
 ** Improvement
     * [OPENMEETINGS-794] - Add a possibility to enter brief name for users with same invitation url (grouped mail)
diff --git a/LICENSE b/LICENSE
index 66fe460..9973839 100644
--- a/LICENSE
+++ b/LICENSE
@@ -310,23 +310,20 @@
 
 webapps/openmeetings/WEB-INF/lib/api-all-1.0.0-M33.jar
 webapps/openmeetings/WEB-INF/lib/asterisk-java-1.0.0.jar
-webapps/openmeetings/WEB-INF/lib/avalon-framework-api-4.3.1.jar
-webapps/openmeetings/WEB-INF/lib/avalon-framework-impl-4.3.1.jar
-webapps/openmeetings/WEB-INF/lib/batik-anim-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-awt-util-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-bridge-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-css-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-dom-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-ext-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-gvt-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-js-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-parser-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-script-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-svg-dom-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-svggen-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-transcoder-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-util-1.7.jar
-webapps/openmeetings/WEB-INF/lib/batik-xml-1.7.jar
+webapps/openmeetings/WEB-INF/lib/batik-anim-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-awt-util-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-bridge-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-css-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-dom-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-ext-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-gvt-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-parser-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-script-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-svg-dom-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-svggen-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-transcoder-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-util-1.8.jar
+webapps/openmeetings/WEB-INF/lib/batik-xml-1.8.jar
 webapps/openmeetings/WEB-INF/lib/bndlib-2.3.0.jar
 webapps/openmeetings/WEB-INF/lib/commons-cli-1.3.1.jar
 webapps/openmeetings/WEB-INF/lib/commons-collections4-4.1.jar
@@ -334,22 +331,21 @@
 webapps/openmeetings/WEB-INF/lib/commons-lang-2.4.jar
 webapps/openmeetings/WEB-INF/lib/commons-pool2-2.4.2.jar
 webapps/openmeetings/WEB-INF/lib/commons-transaction-1.2.jar
-webapps/openmeetings/WEB-INF/lib/cxf-core-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-bindings-soap-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-bindings-xml-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-databinding-jaxb-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-jaxrs-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-jaxws-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-simple-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-rs-extension-providers-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-transports-http-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-ws-addr-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-wsdl-3.1.4.jar
-webapps/openmeetings/WEB-INF/lib/cxf-rt-ws-policy-3.1.4.jar
+webapps/openmeetings/WEB-INF/lib/cxf-core-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-bindings-soap-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-bindings-xml-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-databinding-jaxb-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-jaxrs-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-jaxws-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-frontend-simple-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-rs-extension-providers-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-transports-http-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-ws-addr-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-wsdl-3.1.5.jar
+webapps/openmeetings/WEB-INF/lib/cxf-rt-ws-policy-3.1.5.jar
 webapps/openmeetings/WEB-INF/lib/derby-10.12.1.1.jar
 webapps/openmeetings/WEB-INF/lib/derbyclient-10.12.1.1.jar
 webapps/openmeetings/WEB-INF/lib/dom4j-1.6.1.jar
-webapps/openmeetings/WEB-INF/lib/fop-0.94.jar
 webapps/openmeetings/WEB-INF/lib/geronimo-jms_1.1_spec-1.1.1.jar
 webapps/openmeetings/WEB-INF/lib/geronimo-jta_1.1_spec-1.1.1.jar
 webapps/openmeetings/WEB-INF/lib/groovy-all-2.3.2.jar
@@ -357,7 +353,7 @@
 webapps/openmeetings/WEB-INF/lib/guava-18.0.jar
 webapps/openmeetings/WEB-INF/lib/httpclient-4.4.jar
 webapps/openmeetings/WEB-INF/lib/httpcore-4.4.jar
-webapps/openmeetings/WEB-INF/lib/jettison-1.3.5.jar
+webapps/openmeetings/WEB-INF/lib/jettison-1.3.7.jar
 webapps/openmeetings/WEB-INF/lib/joda-time-2.7.jar
 webapps/openmeetings/WEB-INF/lib/jqplot4java-1.3.0.jar
 webapps/openmeetings/WEB-INF/lib/jqplot-7.2.0.jar
@@ -395,11 +391,10 @@
 webapps/openmeetings/WEB-INF/lib/wicket-webjars-0.5.3.jar
 webapps/openmeetings/WEB-INF/lib/woodstox-core-asl-4.4.1.jar
 webapps/openmeetings/WEB-INF/lib/wsdl4j-1.6.3.jar
-webapps/openmeetings/WEB-INF/lib/xalan-2.6.0.jar
+webapps/openmeetings/WEB-INF/lib/xalan-2.7.0.jar
 webapps/openmeetings/WEB-INF/lib/xbean-asm5-shaded-3.17.jar
 webapps/openmeetings/WEB-INF/lib/xml-apis-1.0.b2.jar
 webapps/openmeetings/WEB-INF/lib/xml-apis-ext-1.3.04.jar
-webapps/openmeetings/WEB-INF/lib/xmlgraphics-commons-1.2.jar
 webapps/openmeetings/WEB-INF/lib/xml-resolver-1.2.jar
 webapps/openmeetings/WEB-INF/lib/xmlschema-core-2.2.1.jar
 
@@ -478,6 +473,7 @@
 activation-1.1.jar
 jsr311-api-jar-1.1.1.jar
 plugins/el-api.jar
+webapps/openmeetings/WEB-INF/lib/javax.mail-1.5.5.jar
 
 
 COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
diff --git a/openmeetings-core/pom.xml b/openmeetings-core/pom.xml
index b96f1c1..9a186cf 100644
--- a/openmeetings-core/pom.xml
+++ b/openmeetings-core/pom.xml
@@ -31,6 +31,7 @@
 	<description>TODO</description>
 	<properties>
 		<smslib.version>3.5.4</smslib.version>
+		<mail.version>1.5.5</mail.version>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 		<skip.site.copy>false</skip.site.copy>
 	</properties>
@@ -106,6 +107,11 @@
 			<artifactId>api-all</artifactId>
 			<version>1.0.0-M33</version>
 		</dependency>
+		<dependency>
+			<groupId>com.sun.mail</groupId>
+			<artifactId>javax.mail</artifactId>
+			<version>${mail.version}</version>
+		</dependency>
 		<!-- Test dependencies -->
 		<dependency>
 			<groupId>org.red5</groupId>
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/BatikMethods.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/BatikMethods.java
index 192f1aa..658bf8d 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/BatikMethods.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/record/BatikMethods.java
@@ -32,7 +32,7 @@
 
 import javax.swing.JTextArea;
 
-import org.apache.batik.dom.svg.SVGDOMImplementation;
+import org.apache.batik.anim.dom.SVGDOMImplementation;
 import org.apache.batik.svggen.SVGGraphics2D;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
 import org.apache.openmeetings.util.OpenmeetingsVariables;
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
index ca86917..b88fc70 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
@@ -31,10 +31,12 @@
 import java.util.Properties;
 
 import javax.activation.DataHandler;
+import javax.mail.Authenticator;
 import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
+import javax.mail.PasswordAuthentication;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
@@ -48,14 +50,12 @@
 import org.apache.openmeetings.db.entity.basic.MailMessage;
 import org.apache.openmeetings.db.entity.basic.MailMessage.Status;
 import org.apache.openmeetings.util.mail.MailUtil;
-import org.apache.openmeetings.util.mail.SmtpAuthenticator;
+import org.apache.wicket.util.string.Strings;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.core.task.TaskExecutor;
 
-import com.sun.mail.util.MailSSLSocketFactory;
-
 /**
  * 
  * @author swagner
@@ -75,6 +75,7 @@
 	private TaskExecutor taskExecutor;
 	@Autowired
 	private MailMessageDao mailMessageDao;
+	
 	private String smtpServer;
 	private String smtpPort;
 	private String from;
@@ -97,6 +98,16 @@
 		smtpTimeOut = cfgDao.getConfValue("mail.smtp.timeout", Integer.class, "30000");
 	}
 	
+	public void init(String smtpServer, String smtpPort, String from, String mailAuthUser, String mailAuthPass, boolean mailTls, boolean mailAddReplyTo) {
+		this.smtpServer = smtpServer;
+		this.smtpPort = smtpPort;
+		this.from = from;
+		this.mailAuthUser = mailAuthUser;
+		this.mailAuthPass = mailAuthPass;
+		this.mailTls = mailTls;
+		this.mailAddReplyTo = mailAddReplyTo;
+	}
+	
 	protected MimeMessage appendIcsBody(MimeMessage msg, MailMessage m) throws Exception {
 		log.debug("setMessageBody for iCal message");
 		// -- Create a new message --
@@ -131,8 +142,12 @@
 	}
 	
 	private MimeMessage appendBody(MimeMessage msg, MailMessage m) throws MessagingException, IOException {
+		return appendBody(msg, m.getBody());
+	}
+	
+	public MimeMessage appendBody(MimeMessage msg, String body) throws MessagingException, IOException {
 		// -- Set the subject and body text --
-		msg.setDataHandler(new DataHandler(new ByteArrayDataSource(m.getBody(), "text/html; charset=\"utf-8\"")));
+		msg.setDataHandler(new DataHandler(new ByteArrayDataSource(body, "text/html; charset=\"utf-8\"")));
 
 		// -- Set some other header information --
 		msg.setHeader("X-Mailer", "XML-Mail");
@@ -141,7 +156,7 @@
 		return msg;
 	}
 	
-	private MimeMessage getBasicMimeMessage() throws Exception {
+	public MimeMessage getBasicMimeMessage() throws Exception {
 		log.debug("getBasicMimeMessage");
 		if (smtpServer == null) {
 			init();
@@ -150,24 +165,23 @@
 
 		props.put("mail.smtp.host", smtpServer);
 		props.put("mail.smtp.port", smtpPort);
-		
+		if (mailTls) {
+			props.put("mail.smtp.starttls.enable", "true");
+		}
 		props.put("mail.smtp.connectiontimeout", smtpConnectionTimeOut); 
 		props.put("mail.smtp.timeout", smtpTimeOut);
 
-		if (mailTls) {
-			props.put("mail.smtp.starttls.enable", "true");
-			MailSSLSocketFactory sf = new MailSSLSocketFactory();
-		    sf.setTrustAllHosts(true);
-		    props.put("mail.smtp.ssl.socketFactory", sf);
-		}
-
 		// Check for Authentication
 		Session session = null;
-		if (mailAuthUser != null && mailAuthUser.length() > 0
-				&& mailAuthPass != null && mailAuthPass.length() > 0) {
+		if (!Strings.isEmpty(mailAuthUser) && !Strings.isEmpty(mailAuthPass)) {
 			// use SMTP Authentication
 			props.put("mail.smtp.auth", "true");
-			session = Session.getInstance(props, new SmtpAuthenticator(mailAuthUser, mailAuthPass));
+			session = Session.getDefaultInstance(props, new Authenticator() {
+				@Override
+				protected PasswordAuthentication getPasswordAuthentication() {
+					return new PasswordAuthentication(mailAuthUser, mailAuthPass);
+				}
+			});
 		} else {
 			// not use SMTP Authentication
 			session = Session.getInstance(props, null);
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/ExportToImage.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/ExportToImage.java
index 113de7b..55270f0 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/ExportToImage.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/servlet/outputhandler/ExportToImage.java
@@ -33,8 +33,8 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.batik.anim.dom.SVGDOMImplementation;
 import org.apache.batik.dom.GenericDOMImplementation;
-import org.apache.batik.dom.svg.SVGDOMImplementation;
 import org.apache.batik.svggen.SVGGraphics2D;
 import org.apache.batik.transcoder.TranscoderInput;
 import org.apache.batik.transcoder.TranscoderOutput;
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java
index 3c09ae6..9379611 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/chat/TestChatLinking.java
@@ -23,13 +23,11 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import junit.framework.TestCase;
-
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-public class TestChatLinking extends TestCase {
+public class TestChatLinking {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestChatLinking.class, webAppRootKey);
 	
 	@Test
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java
index 3817483..17969c2 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestChatParsing.java
@@ -22,13 +22,11 @@
 
 import java.util.LinkedList;
 
-import junit.framework.TestCase;
-
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-public class TestChatParsing extends TestCase {
+public class TestChatParsing {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestChatParsing.class, webAppRootKey);
 	public static LinkedList<LinkedList<String>> emotfilesList = new LinkedList<LinkedList<String>>();
 	
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java
index d9221e2..378f104 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/emotes/TestConvertGifs.java
@@ -18,22 +18,22 @@
  */
 package org.apache.openmeetings.test.emotes;
 
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.io.File;
 import java.io.FileWriter;
 import java.io.PrintWriter;
 import java.util.LinkedList;
 
-import junit.framework.TestCase;
-
-import org.apache.log4j.Logger;
 import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
 
 import com.thoughtworks.xstream.XStream;
 import com.thoughtworks.xstream.io.xml.XppDriver;
 
-public class TestConvertGifs extends TestCase {
-	
-	private static final Logger log = Logger.getLogger(TestConvertGifs.class);
+public class TestConvertGifs {
+	private static final Logger log = Red5LoggerFactory.getLogger(TestConvertGifs.class, webAppRootKey);
 
 	@Test
 	public void testConvertDir(){
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/gui/TestGui.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/gui/TestGui.java
index f6b64bf..e30a44f 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/gui/TestGui.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/gui/TestGui.java
@@ -20,10 +20,8 @@
 
 import org.junit.Test;
 
-import junit.framework.TestCase;
 
-
-public class TestGui  extends TestCase {
+public class TestGui {
 
 	@Test
 	public void testNoop() {
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java
index a4ecb9b..17a8112 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestInterpolation.java
@@ -19,13 +19,12 @@
 package org.apache.openmeetings.test.jai;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import junit.framework.TestCase;
 
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-public class TestInterpolation extends TestCase {
+public class TestInterpolation {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestInterpolation.class, webAppRootKey);
 	
 	@Test
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java
index 14728f6..4e16ed1 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/jai/TestSVGTextExporterArrow.java
@@ -24,10 +24,8 @@
 import java.io.Writer;
 import java.nio.charset.StandardCharsets;
 
-import junit.framework.TestCase;
-
+import org.apache.batik.anim.dom.SVGDOMImplementation;
 import org.apache.batik.dom.GenericDOMImplementation;
-import org.apache.batik.dom.svg.SVGDOMImplementation;
 import org.apache.batik.svggen.SVGGraphics2D;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
@@ -36,7 +34,7 @@
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-public class TestSVGTextExporterArrow extends TestCase {
+public class TestSVGTextExporterArrow {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestSVGTextExporterArrow.class, webAppRootKey);
 	
 	@Test
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java
index b4c7111..50abd12 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestKeyCodesNumber.java
@@ -22,13 +22,11 @@
 
 import java.awt.event.KeyEvent;
 
-import junit.framework.TestCase;
-
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-public class TestKeyCodesNumber extends TestCase {
+public class TestKeyCodesNumber {
 	private static final Logger log = Red5LoggerFactory.getLogger(TestKeyCodesNumber.class, webAppRootKey);
 
 	@Test
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java
index 5a9fc17..ac00aee 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/rdc/TestReadKeyCodesNumber.java
@@ -18,15 +18,14 @@
  */
 package org.apache.openmeetings.test.rdc;
 
-import junit.framework.TestCase;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import org.apache.log4j.Logger;
 import org.junit.Test;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
 
-public class TestReadKeyCodesNumber extends TestCase {
-
-	private static final Logger log = Logger
-			.getLogger(TestReadKeyCodesNumber.class);
+public class TestReadKeyCodesNumber {
+	private static final Logger log = Red5LoggerFactory.getLogger(TestReadKeyCodesNumber.class, webAppRootKey);
 
 	@Test
 	public void testTestKeyCodesNumber() {
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java
index c2348c1..498f2f1 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/user/TestMailSending.java
@@ -21,26 +21,16 @@
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.junit.Assert.assertTrue;
 
-import java.io.IOException;
-import java.util.Date;
-import java.util.Properties;
-
-import javax.activation.DataHandler;
 import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeMessage;
-import javax.mail.util.ByteArrayDataSource;
 
-import org.apache.openmeetings.util.mail.SmtpAuthenticator;
+import org.apache.openmeetings.core.mail.MailHandler;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
-import com.sun.mail.util.MailSSLSocketFactory;
-
 /**
  * 
  * @author swagner
@@ -51,10 +41,10 @@
 	
 	//Example GMail email server data
 	private String smtpServer = "smtp.gmail.com";
-	private String smtpPort = "25";
-	private String from = "test@apache.org";
-	private String mailAuthUser = "test@gmail.com";
-	private String mailAuthPass = "*******";
+	private String smtpPort = "587";
+	private String from = "test-app@apache.org";
+	private String mailAuthUser = "test-app@gmail.com";
+	private String mailAuthPass = "test-pass";
 	private boolean mailTls = true;
 
 	/**
@@ -66,10 +56,8 @@
 	 */
 	@Test
 	public void doTestSendEmail() {
-		try{
-			
+		try {
 			Transport.send(getMimeMessage());
-			
 		} catch (Exception err) {
 			log.error("Error", err);
 		}
@@ -77,57 +65,13 @@
 	}
 	
 	private MimeMessage getMimeMessage() throws Exception {
+		MailHandler h = new MailHandler();
+		h.init(smtpServer, smtpPort, from, mailAuthUser, mailAuthPass, mailTls, true);
 		// Building MimeMessage
-		MimeMessage msg = getBasicMimeMessage();
+		MimeMessage msg = h.getBasicMimeMessage();
 		msg.setSubject("getSubject()");
-		msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse("seba.wagner@gmail.com", false));
+		msg.addRecipients(Message.RecipientType.TO, InternetAddress.parse("test-recipient@gmail.com", false));
 		
-		return appendBody(msg);
-	}
-	
-	private MimeMessage appendBody(MimeMessage msg) throws MessagingException, IOException {
-		// -- Set the subject and body text --
-		msg.setDataHandler(new DataHandler(new ByteArrayDataSource("getBody", "text/html; charset=\"utf-8\"")));
-
-		// -- Set some other header information --
-		msg.setHeader("X-Mailer", "XML-Mail");
-		msg.setSentDate(new Date());
-		
-		return msg;
-	}
-	
-	private MimeMessage getBasicMimeMessage() throws Exception {
-		System.out.println("getBasicMimeMessage");
-		Properties props = new Properties(System.getProperties());
-
-		props.put("mail.smtp.connectiontimeout", 30000); //default timeout is 30 seconds, javaMail default is "infinite"
-		props.put("mail.smtp.timeout", 30000); //default timeout is 30 seconds, javaMail default is "infinite"
-		
-		props.put("mail.smtp.host", smtpServer);
-		props.put("mail.smtp.port", smtpPort);
-		
-		if (mailTls) {
-			props.put("mail.smtp.starttls.enable", "true");
-			MailSSLSocketFactory sf = new MailSSLSocketFactory();
-		    sf.setTrustAllHosts(true);
-		    props.put("mail.smtp.ssl.socketFactory", sf);
-		}
-
-		// Check for Authentication
-		Session session = null;
-		if (mailAuthUser != null && mailAuthUser.length() > 0
-				&& mailAuthPass != null && mailAuthPass.length() > 0) {
-			// use SMTP Authentication
-			props.put("mail.smtp.auth", "true");
-			session = Session.getInstance(props, new SmtpAuthenticator(mailAuthUser, mailAuthPass));
-		} else {
-			// not use SMTP Authentication
-			session = Session.getInstance(props, null);
-		}
-
-		// Building MimeMessage
-		MimeMessage msg = new MimeMessage(session);
-		msg.setFrom(new InternetAddress(from));
-		return msg;
+		return h.appendBody(msg, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");
 	}
 }
diff --git a/openmeetings-core/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java b/openmeetings-core/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java
index 141ee3f..ee9d96a 100644
--- a/openmeetings-core/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java
+++ b/openmeetings-core/src/test/java/org/apache/openmeetings/test/userdata/TestMD5.java
@@ -18,14 +18,12 @@
  */
 package org.apache.openmeetings.test.userdata;
 
-import junit.framework.TestCase;
-
 import org.junit.Test;
 
-public class TestMD5 extends TestCase {
+public class TestMD5 {
 	
 	@Test
-	public void testTestMD5(){
+	public void testTestMD5() {
 		
 	}
 
diff --git a/openmeetings-flash/pom.xml b/openmeetings-flash/pom.xml
index f568c16..401a659 100644
--- a/openmeetings-flash/pom.xml
+++ b/openmeetings-flash/pom.xml
@@ -25,7 +25,6 @@
 		<relativePath>..</relativePath>
 	</parent>
 	<artifactId>openmeetings-flash</artifactId>
-	<!-- packaging>swf</packaging-->
 	<packaging>jar</packaging>
 	<name>Openmeetings Flash</name>
 	<description>TODO</description>
@@ -96,28 +95,6 @@
 					</excludes>
 				</configuration>
 			</plugin>
-			<!-- plugin>
-				<groupId>net.flexmojos.oss</groupId>
-				<artifactId>flexmojos-maven-plugin</artifactId>
-				<version>7.1.0-SNAPSHOT</version>
-				<extensions>true</extensions>
-				<configuration>
-					<sourceFile>main.mxml</sourceFile>
-				</configuration>
-				<dependencies>
-					<dependency>
-						<groupId>net.flexmojos.oss</groupId>
-						<artifactId>flexmojos-threadlocaltoolkit-wrapper</artifactId>
-						<version>7.1.0-SNAPSHOT</version>
-					</dependency>
-					<dependency>
-						<groupId>org.apache.flex</groupId>
-						<artifactId>compiler</artifactId>
-						<version>4.12.1.20140427</version>
-						<type>pom</type>
-					</dependency>
-				</dependencies>
-			</plugin-->
 			<plugin>
 				<artifactId>maven-antrun-plugin</artifactId>
 				<executions>
@@ -173,18 +150,4 @@
 			</plugins>
 		</pluginManagement>
 	</build>
-	<!-- dependencies>
-		<dependency>
-			<groupId>org.apache.flex</groupId>
-			<artifactId>framework</artifactId>
-			<version>4.12.1.20140427</version>
-			<type>pom</type>
-		</dependency>
-		<dependency>
-			<groupId>com.adobe.flash.framework</groupId>
-			<artifactId>playerglobal</artifactId>
-			<version>11.9</version>
-			<type>swc</type>
-		</dependency>
-	</dependencies-->
 </project>
diff --git a/openmeetings-flash/src/main/swf/modules/conference/participants/participantListItem.lzx b/openmeetings-flash/src/main/swf/modules/conference/participants/participantListItem.lzx
index e953245..715b82b 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/participants/participantListItem.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/participants/participantListItem.lzx
@@ -446,13 +446,13 @@
 				
 			</handler>
 			
-			<method name="sendConfirmation" args="yesno" >
+			<method name="sendConfirmation" args="yesno, none" >
 				this.kickUserByPublicSID.publicSID = parent.parent.refObj.publicSID;
 				this.kickUserByPublicSID.doCall();
 			</method>
 			
-			<netRemoteCallHib name="kickUserByPublicSID" funcname="userservice.kickUserByPublicSID" 
-							  remotecontext="$once{ canvas.thishib }" >	
+			<netRemoteCallHib name="kickUserByPublicSID" funcname="userservice.kickUserByPublicSID" showLoading="false"
+				remotecontext="$once{ canvas.thishib }" >	
 				<attribute name="publicSID" value="" type="string" />  
 				<netparam><method name="getValue"> return canvas.sessionId; </method></netparam>
 				<netparam><method name="getValue"> return parent.publicSID; </method></netparam>
diff --git a/openmeetings-flash/src/main/swf/modules/conference/popups/confirmationSingle.lzx b/openmeetings-flash/src/main/swf/modules/conference/popups/confirmationSingle.lzx
index 8638b66..b2a138a 100644
--- a/openmeetings-flash/src/main/swf/modules/conference/popups/confirmationSingle.lzx
+++ b/openmeetings-flash/src/main/swf/modules/conference/popups/confirmationSingle.lzx
@@ -104,6 +104,9 @@
     <simpleLabelButton labelid="60" width="100" x="$once{ parent.width - 210 }" y="$once{ parent.height - 26 }">
     	<handler name="onclick">
     		var t = parent.holddatainSO.getValue();
+    		//if ($debug) Debug.write("t ", t);
+    		//if ($debug) Debug.write("parent ", this.parent);
+    		//if ($debug) Debug.write("refObj ", this.parent.refObj);
     		this.parent.close();
     		if (parent.refReturnMethod == null) {
     		    this.parent.refObj.sendConfirmation(true,t);
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
index 81e2b71..9d8bcf1 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screen/webstart/CoreScreenShare.java
@@ -120,7 +120,7 @@
 				protocol = Protocol.valueOf(url.getScheme());
 				host = url.getHost();
 				port = url.getPort();
-				app = url.getPath();
+				app = url.getPath().substring(1);
 				publishName = args[1];
 				String labelTexts = args[2];
 				defaultQuality = Integer.parseInt(args[3]);
diff --git a/openmeetings-server/src/site/xdoc/BuildInstructions.xml b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
index 120d415..eda9dea 100644
--- a/openmeetings-server/src/site/xdoc/BuildInstructions.xml
+++ b/openmeetings-server/src/site/xdoc/BuildInstructions.xml
@@ -56,7 +56,11 @@
 				<img src="images/eclipse-import-maven-project.png" alt="Import OM into Eclipse" width="526" height="394" />

 			</p>

 		</section>

-

+		<section name="Check for updates">

+			<source>mvn versions:display-dependency-updates</source>

+			<source>mvn versions:display-plugin-updates</source>

+			<source>mvn versions:display-property-updates</source>

+		</section>

 		<section name="Tips and Gotchas">

 			<p>To compile only client you can run following command: </p>

 			<source>

@@ -92,7 +96,6 @@
 					target="_blank" rel="nofollow">https://ctf6latest.collab.net/internal-help/index.jsp?topic=/teamforge610/faq/client_proxy_settings.html

 				</a>

 			</p>

-

 		</section>

 

 	</body>

diff --git a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
index 88ccbf2..92171a7 100644
--- a/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
+++ b/openmeetings-server/src/site/xdoc/ReleaseGuide.xml
@@ -115,7 +115,7 @@
 				<source>

 svn copy -r1453158 https://svn.apache.org/repos/asf/openmeetings/application/trunk \

 	https://svn.apache.org/repos/asf/openmeetings/application/tags/3.1.0RC1 \

-	-m "Release candidate 1"

+	-m "3.1.0 Release candidate 1"

 				</source>

 				

 

@@ -123,25 +123,23 @@
 				<source>svn checkout https://svn.apache.org/repos/asf/openmeetings/application/tags/$BRANCHORTAG/</source>

 				<p>$BRANCHORTAG should be replaced with your new TAG</p>

 

-				<p>Edit the file build.properties change</p>

-				<source>project.status=SNAPSHOT</source>

-				<p>to</p>

-				<source>project.status=RELEASE</source>

+				<p>Update versions of all modules</p>

+				<source>mvn versions:set -DgenerateBackupPoms=false -DnewVersion=3.1.0</source>

 				<p>Run the command: </p>

-				<source>ant dist-release</source>

+				<source>mvn clean install</source>

 				<p>Test building the source on windows and OSx or Linux</p>

 				<p>Test running the binary's</p>

 				<p>Create sha256sum checksums</p>

 				<source>

-#On OSX you might use this command to make a MD5 checksum and store it to a file

-shasum -a 256 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.md5

+#On OSX you might use this command to make a SHA checksum and store it to a file

+shasum -a 256 -r apache-openmeetings-XXX-src.zip >apache-openmeetings-XXX-src.zip.sha

 				</source>

 				<source>

 <![CDATA[

-#To create MD5 hashes On Ubuntu:

+#To create SHA hashes On Ubuntu:

 for f in `ls -1 *.tar.gz *.zip`; do sha256sum $f > $f.sha; done

 

-#To check MD5 hashes On Ubuntu:

+#To check SHA hashes On Ubuntu:

 for f in `ls -1 *.tar.gz *.zip`; do sha256sum -c $f.sha; done

 ]]>

 				</source>

@@ -164,27 +162,27 @@
 				<p>

 					Commit artifacts you have created with KEYS file to the

 					<tt>https://dist.apache.org/repos/dist/dev/openmeetings/</tt>

-					Proposed file structure for "Release Candidate 1" of 2.1 will be:

+					Proposed file structure for "Release Candidate 1" of 3.1.0 will be:

 				</p>

 				<source>

-2.1

-2.1/rc1

-2.1/rc1/src

-2.1/rc1/src/apache-openmeetings-2.1.0-src.zip

-2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz

-2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.md5

-2.1/rc1/src/apache-openmeetings-2.1.0-src.zip.asc

-2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.md5

-2.1/rc1/src/apache-openmeetings-2.1.0-src.tar.gz.asc

-2.1/rc1/bin

-2.1/rc1/bin/apache-openmeetings-2.1.0.zip

-2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz

-2.1/rc1/bin/apache-openmeetings-2.1.0.zip.md5

-2.1/rc1/bin/apache-openmeetings-2.1.0.zip.asc

-2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.md5

-2.1/rc1/bin/apache-openmeetings-2.1.0.tar.gz.asc

-2.1/rc1/CHANGELOG

-2.1/rc1/KEYS

+3.1.0

+3.1.0/rc1

+3.1.0/rc1/src

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.sha

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.zip.asc

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.sha

+3.1.0/rc1/src/apache-openmeetings-3.1.0-src.tar.gz.asc

+3.1.0/rc1/bin

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.sha

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.zip.asc

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.sha

+3.1.0/rc1/bin/apache-openmeetings-3.1.0.tar.gz.asc

+3.1.0/rc1/CHANGELOG

+3.1.0/rc1/KEYS

 				</source>

 			</subsection>

 

diff --git a/openmeetings-util/pom.xml b/openmeetings-util/pom.xml
index 06b92c6..028cdbc 100644
--- a/openmeetings-util/pom.xml
+++ b/openmeetings-util/pom.xml
@@ -31,8 +31,7 @@
 	<description>TODO</description>
 	<properties>
 		<dom4j.version>1.6.1</dom4j.version>
-		<mail.version>1.4.7</mail.version>
-		<commons-codec.version>1.8</commons-codec.version>
+		<commons-codec.version>1.9</commons-codec.version>
 		<site.basedir>${project.parent.basedir}</site.basedir>
 		<skip.site.copy>false</skip.site.copy>
 	</properties>
@@ -63,11 +62,6 @@
 			<artifactId>ical4j</artifactId>
 		</dependency>
 		<dependency>
-			<groupId>javax.mail</groupId>
-			<artifactId>mail</artifactId>
-			<version>${mail.version}</version>
-		</dependency>
-		<dependency>
 			<groupId>commons-codec</groupId>
 			<artifactId>commons-codec</artifactId>
 			<version>${commons-codec.version}</version>
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java
deleted file mode 100644
index 7047f74..0000000
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/SmtpAuthenticator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License") +  you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.openmeetings.util.mail;
-
-import javax.mail.Authenticator;
-import javax.mail.PasswordAuthentication;
-
-/**
- * 
- * @author swagner
- * 
- */
-public class SmtpAuthenticator extends Authenticator {
-
-	private final String username;
-	private final String password;
-
-	public SmtpAuthenticator(String emailUsername, String emailUserpass) {
-		this.username = emailUsername;
-		this.password = emailUserpass;
-	}
-
-	@Override
-	public PasswordAuthentication getPasswordAuthentication() {
-
-		return new PasswordAuthentication(username, password);
-	}
-
-}
diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml
index 0b161ce..f5c9105 100644
--- a/openmeetings-web/pom.xml
+++ b/openmeetings-web/pom.xml
@@ -32,7 +32,7 @@
 	<properties>
 		<wicket-dashboard.version>0.13.0+wicket-7</wicket-dashboard.version>
 		<commons-io.version>2.4</commons-io.version>
-		<commons-fileupload.version>1.3</commons-fileupload.version>
+		<commons-fileupload.version>1.3.1</commons-fileupload.version>
 		<mysql.version>5.1.38</mysql.version>
 		<old-backups.dir>${project.basedir}/test-data</old-backups.dir>
 		<site.basedir>${project.parent.basedir}</site.basedir>
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
index bd22107..21a4406 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/test/calendar/TestSendIcalMessage.java
@@ -28,26 +28,22 @@
 import java.util.Date;
 import java.util.GregorianCalendar;
 import java.util.Map;
-import java.util.Properties;
 import java.util.Vector;
 
 import javax.activation.DataHandler;
 import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.Multipart;
-import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;
 
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.core.mail.MailHandler;
 import org.apache.openmeetings.test.AbstractJUnitDefaults;
 import org.apache.openmeetings.util.mail.ByteArrayDataSource;
 import org.apache.openmeetings.util.mail.IcalHandler;
-import org.apache.openmeetings.util.mail.SmtpAuthenticator;
-import org.apache.wicket.util.string.Strings;
 import org.junit.Test;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
@@ -75,7 +71,7 @@
 	private static final Logger log = Red5LoggerFactory.getLogger(TestSendIcalMessage.class, webAppRootKey);
 
 	@Autowired
-	private ConfigurationDao configurationDao;
+	private MailHandler mailHandler;
 
 	private byte[] iCalMimeBody;
 
@@ -213,38 +209,9 @@
 	private void sendIcalMessage() throws Exception {
 		log.debug("sendIcalMessage");
 
-		// Evaluating Configuration Data
-		String smtpServer = configurationDao.getConfValue("smtp_server", String.class, "");
-		String smtpPort = configurationDao.getConfValue("smtp_port", String.class, "");
-		String from = configurationDao.getConfValue("system_email_addr", String.class, "");
-		String emailUsername = configurationDao.getConfValue("email_username", String.class, "");
-		String emailUserpass = configurationDao.getConfValue("email_userpass", String.class, "");
-
-		Properties props = System.getProperties();
-
-		props.put("mail.smtp.host", smtpServer);
-		props.put("mail.smtp.port", smtpPort);
-
-		boolean isTls = (1 == configurationDao.getConfValue("mail.smtp.starttls.enable", Integer.class, "0"));
-		if (isTls) {
-			props.put("mail.smtp.starttls.enable", "true");
-		}
-
-		// Check for Authentification
-		Session session = null;
-		if (!Strings.isEmpty(emailUsername) && !Strings.isEmpty(emailUserpass)) {
-			// use SMTP Authentication
-			props.put("mail.smtp.auth", "true");
-			session = Session.getDefaultInstance(props, new SmtpAuthenticator(emailUsername, emailUserpass));
-		} else {
-			// not use SMTP Authentication
-			session = Session.getDefaultInstance(props, null);
-		}
-
 		// Building MimeMessage
-		MimeMessage mimeMessage = new MimeMessage(session);
+		MimeMessage mimeMessage = mailHandler.getBasicMimeMessage();
 		mimeMessage.setSubject(subject);
-		mimeMessage.setFrom(new InternetAddress(from));
 		mimeMessage.addRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients, false));
 
 		// -- Create a new message --
diff --git a/pom.xml b/pom.xml
index a718255..f6323f0 100644
--- a/pom.xml
+++ b/pom.xml
@@ -39,20 +39,20 @@
 		<spring.version>4.1.7.RELEASE</spring.version>
 		<junit.version>4.12</junit.version>
 		<maven.javadoc.version>2.10.3</maven.javadoc.version>
-		<maven.surefire.version>2.18.1</maven.surefire.version>
+		<maven.surefire.version>2.19.1</maven.surefire.version>
 		<maven-site.version>3.4</maven-site.version>
 		<wicket.version>7.2.0</wicket.version>
 		<wicketju.version>7.2.0</wicketju.version>
 		<wickets.version>7.2.0</wickets.version>
 		<red5-server.version>1.0.6-RELEASE</red5-server.version>
 		<red5-client.version>1.0.6-RELEASE</red5-client.version>
-		<batik.version>1.7</batik.version>
+		<batik.version>1.8</batik.version>
 		<commons-transaction.version>1.2</commons-transaction.version>
 		<ical4j.version>2.0-beta1</ical4j.version>
-		<cxf.version>3.1.4</cxf.version>
+		<cxf.version>3.1.5</cxf.version>
 		<selenium.version>2.52.0</selenium.version>
 		<simple-xml.version>2.7.1</simple-xml.version>
-		<jettison.version>1.3.5</jettison.version>
+		<jettison.version>1.3.7</jettison.version>
 		<site.basedir>${project.basedir}</site.basedir>
 		<skip.site.copy>true</skip.site.copy>
 		<src.pack.skip>false</src.pack.skip>
@@ -325,10 +325,6 @@
 	</mailingLists>
 	<repositories>
 		<repository>
-			<id>flex-mojos-repository</id>
-			<url>https://oss.sonatype.org/content/groups/staging</url>
-		</repository>
-		<repository>
 			<releases>
 				<enabled>false</enabled>
 			</releases>
@@ -341,10 +337,6 @@
 	</repositories>
 	<pluginRepositories>
 		<pluginRepository>
-			<id>flex-mojos-plugin-repository</id>
-			<url>https://oss.sonatype.org/content/groups/staging</url>
-		</pluginRepository>
-		<pluginRepository>
 			<id>apache-snapshots</id>
 			<url>https://repository.apache.org/content/groups/snapshots</url>
 		</pluginRepository>
@@ -976,7 +968,7 @@
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
 				<artifactId>maven-project-info-reports-plugin</artifactId>
-				<version>2.7</version>
+				<version>2.8.1</version>
 				<configuration>
 					<dependencyLocationsEnabled>false</dependencyLocationsEnabled>
 					<showAvatarImages>true</showAvatarImages>