diff --git a/allocation-manager/Notification-Manager/Notification-Authenticator/pom.xml b/allocation-manager/Notification-Manager/Notification-Authenticator/pom.xml
new file mode 100644
index 0000000..81875d2
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Authenticator/pom.xml
@@ -0,0 +1,27 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>Notification-Manager</groupId>
+    <artifactId>Notification-Manager</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+  <artifactId>Notification-Authenticator</artifactId>
+  	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.thrift</groupId>
+			<artifactId>libthrift</artifactId>
+			<version>0.10.0</version>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.airavata</groupId>
+			<artifactId>airavata-allocation-manager-server</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/allocation-manager/Notification-Manager/Notification-Receiver/pom.xml b/allocation-manager/Notification-Manager/Notification-Receiver/pom.xml
new file mode 100644
index 0000000..17e3bf0
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Receiver/pom.xml
@@ -0,0 +1,33 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+	<modelVersion>4.0.0</modelVersion>
+	<parent>
+		<groupId>Notification-Manager</groupId>
+		<artifactId>Notification-Manager</artifactId>
+		<version>0.0.1-SNAPSHOT</version>
+	</parent>
+	<artifactId>Notification-Receiver</artifactId>
+	<dependencies>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>3.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>Notification-Manager</groupId>
+			<artifactId>Notification-Sender</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>Notification-Manager</groupId>
+			<artifactId>Notification-Authenticator</artifactId>
+			<version>0.0.1-SNAPSHOT</version>
+		</dependency>
+		<dependency>
+			<groupId>org.springframework.amqp</groupId>
+			<artifactId>spring-rabbit</artifactId>
+			<version>1.7.3.RELEASE</version>
+		</dependency>
+	</dependencies>
+</project>
\ No newline at end of file
diff --git a/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationReceiver.java b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationReceiver.java
new file mode 100644
index 0000000..1830128
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationReceiver.java
@@ -0,0 +1,51 @@
+package org.apache.airavata.allocation.manager.notification.receiver;
+
+import org.apache.airavata.allocation.manager.notification.authenticator.server.NotificationRequestDetail;
+import org.apache.airavata.allocation.manager.notification.sender.MailNotification;
+import org.apache.thrift.transport.TServerSocket;
+import com.rabbitmq.client.*;
+import com.rabbitmq.client.Consumer;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.Channel;
+
+import java.io.IOException;
+
+public class NotificationReceiver {
+	public static void StartsimpleServer() {
+		try {
+
+			// Create a connection factory
+			ConnectionFactory factory = new ConnectionFactory();
+			// Set the host to the location of the RabbitMQ server
+			factory.setHost("localHost");
+			// Open a new connection
+			Connection connection = factory.newConnection();
+
+			Channel channel = connection.createChannel();
+
+			channel.queueDeclare("notify", false, false, false, null);
+			// Comfort logging
+			System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
+			System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
+
+			Consumer consumer = new DefaultConsumer(channel) {
+				@Override
+				public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
+						byte[] body) throws IOException {
+					String requestID = new String(body, "UTF-8");
+					(new MailNotification()).sendMail(requestID, (new NotificationRequestDetail()).getStatus(requestID),
+							(new NotificationRequestDetail()).getReceiverList(requestID));
+				}
+			};
+			channel.basicConsume("notify", true, consumer);
+
+		} catch (Exception e) {
+			// Dump any error to the console
+			e.printStackTrace();
+		}
+	}
+
+	public static void main(String[] args) {
+		StartsimpleServer();
+	}
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationSender.java b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationSender.java
new file mode 100644
index 0000000..dfa6345
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/java/org/apache/airavata/allocation/manager/notification/receiver/NotificationSender.java
@@ -0,0 +1,44 @@
+package org.apache.airavata.allocation.manager.notification.receiver;
+
+import com.rabbitmq.client.Channel;
+import com.rabbitmq.client.Connection;
+import com.rabbitmq.client.ConnectionFactory;
+
+public class NotificationSender {
+	private final static String QUEUE_NAME = "notify";
+	public static void main(String[] args) {
+
+	    try {
+	    	   
+	        //Create a connection factory
+	        ConnectionFactory factory = new ConnectionFactory();
+	        //Set the host to the location of the RabbitMQ server
+	        factory.setHost("localhost");
+	        //Open a new connection
+	        Connection connection = factory.newConnection();
+	        //Channel is the abstraction for interacting with a queue
+	        Channel channel = connection.createChannel();
+	        //Create the Queue if it does not exist
+	        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
+	        //assuming this is the request id send
+	        String project_ID  = "1001" ;
+	        
+	      
+	          channel.basicPublish("", QUEUE_NAME, null, project_ID.getBytes());
+	     
+	          System.out.println(
+	             " [x] Sent the request");
+	        
+	       
+	        //Close the channel
+	        channel.close();
+	        //Close the connection
+	        connection.close();
+	       
+	      } catch (Exception e) {
+	        //Dump any exception to the console
+	        e.printStackTrace();
+	      }
+	 }
+
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Receiver/src/main/resources/messages.properties b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/resources/messages.properties
new file mode 100644
index 0000000..694683f
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Receiver/src/main/resources/messages.properties
@@ -0,0 +1,8 @@
+SUBJECT_APPROVED=Request status
+MESSAGE_APPROVED=The request is approved
+SUBJECT_REJECTED=Request status
+MESSAGE_REJECTED=The request is rejected
+SUBJECT_IN_PROCESS=Request status
+MESSAGE_IN_PROCESS=The request is being processed
+SUBJECT_NEW_REQUEST=Request status
+MESSAGE_NEW_REQUEST=New request is submit
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/pom.xml b/allocation-manager/Notification-Manager/Notification-Sender/pom.xml
new file mode 100644
index 0000000..18f68d4
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/pom.xml
@@ -0,0 +1,32 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>Notification-Manager</groupId>
+    <artifactId>Notification-Manager</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+  </parent>
+  <artifactId>Notification-Sender</artifactId>
+    <dependencies>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>3.8.1</version>
+      <scope>test</scope>
+    </dependency>
+   <dependency>
+			<groupId>javax.mail</groupId>
+			<artifactId>mail</artifactId>
+			<version>1.4</version>
+		</dependency>
+		<dependency>
+			<groupId>javax.activation</groupId>
+			<artifactId>activation</artifactId>
+			<version>1.1.1</version>
+		</dependency>
+	 <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-email</artifactId>
+            <version>1.3.2</version>
+        </dependency>
+  </dependencies>
+</project>
\ No newline at end of file
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/EmailCredentials.java b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/EmailCredentials.java
new file mode 100644
index 0000000..a167e45
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/EmailCredentials.java
@@ -0,0 +1,20 @@
+package org.apache.airavata.allocation.manager.notification.models;
+
+public class EmailCredentials {
+	 String userName;
+	 String password;
+	public String getUserName() {
+		return userName;
+	}
+	public void setUserName(String userName) {
+		this.userName = userName;
+	}
+	public String getPassword() {
+		return password;
+	}
+	public void setPassword(String password) {
+		this.password = password;
+	}
+	
+	
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/NotificationMessage.java b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/NotificationMessage.java
new file mode 100644
index 0000000..aa6d333
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/models/NotificationMessage.java
@@ -0,0 +1,21 @@
+/*The program in this file works to fetch a notification message for the given status from a resource file*/
+package org.apache.airavata.allocation.manager.notification.models ;
+
+public class NotificationMessage {
+	
+	private String subject;
+	private String message;
+	
+	public String getSubject() {
+		return subject;
+	}
+	public void setSubject(String subject) {
+		this.subject = subject;
+	}
+	public String getMessage() {
+		return message;
+	}
+	public void setMessage(String message) {
+		this.message = message;
+	}
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationConfiguration.java b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationConfiguration.java
new file mode 100644
index 0000000..376aeee
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationConfiguration.java
@@ -0,0 +1,42 @@
+package org.apache.airavata.allocation.manager.notification.sender;
+
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.airavata.allocation.manager.notification.models.EmailCredentials;
+
+public class EmailNotificationConfiguration {
+public static void main(String args[]) {
+	EmailNotificationConfiguration obj = new EmailNotificationConfiguration();
+
+}
+
+	public EmailCredentials getCredentials() 
+	{
+		EmailCredentials result = new EmailCredentials();
+		Properties prop = new Properties();
+		InputStream input = null;
+
+		try {
+			InputStream input2 = new FileInputStream("./config.properties");
+			prop.load(input2);
+
+			result.setUserName(prop.getProperty("username"));
+			result.setPassword(prop.getProperty("password"));
+
+		} catch (Exception ex) {
+			ex.printStackTrace();
+		} finally {
+			if (input != null) {
+				try {
+					input.close();
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+		return result;
+	}
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationMessage.java b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationMessage.java
new file mode 100644
index 0000000..06a1083
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/EmailNotificationMessage.java
@@ -0,0 +1,52 @@
+package org.apache.airavata.allocation.manager.notification.sender;
+
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.Properties;
+
+import org.apache.airavata.allocation.manager.notification.models.NotificationMessage;
+
+public class EmailNotificationMessage {
+	public NotificationMessage getEmailMessage(String status) {
+		NotificationMessage result = new NotificationMessage();
+		Properties prop = new Properties();
+		InputStream input = null;
+
+		try {
+			InputStream input2 = new FileInputStream("./src/main/resources/messages.properties");
+			prop.load(input2);
+
+			switch (status) {
+			case "APRROVED":
+				result.setMessage(prop.getProperty("SUBJECT_APPROVED"));
+				result.setSubject(prop.getProperty("MESSAGE_APPROVED"));
+				break;
+			case "REJECTED":
+				result.setMessage(prop.getProperty("SUBJECT_REJECTED"));
+				result.setSubject(prop.getProperty("MESSAGE_REJECTED"));
+				break;
+			case "IN_PROGRESS":
+				result.setMessage(prop.getProperty("SUBJECT_IN_PROCESS"));
+				result.setSubject(prop.getProperty("MESSAGE_IN_PROCESS"));
+				break;
+			case "NEW_REQUEST":
+				result.setMessage(prop.getProperty("SUBJECT_NEW_REQUEST"));
+				result.setSubject(prop.getProperty("MESSAGE_NEW_REQUEST"));
+				break;
+			}
+
+		} catch (Exception ex) {
+			ex.printStackTrace();
+		} finally {
+			if (input != null) {
+				try {
+					input.close();
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+
+		return result;
+	}
+}
diff --git a/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/MailNotification.java b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/MailNotification.java
new file mode 100644
index 0000000..a3bfecb
--- /dev/null
+++ b/allocation-manager/Notification-Manager/Notification-Sender/src/main/java/org/apache/airavata/allocation/manager/notification/sender/MailNotification.java
@@ -0,0 +1,48 @@
+package org.apache.airavata.allocation.manager.notification.sender;
+
+
+import java.util.ArrayList;
+
+import org.apache.commons.mail.DefaultAuthenticator;
+import org.apache.commons.mail.Email;
+import org.apache.commons.mail.EmailException;
+import org.apache.commons.mail.SimpleEmail;
+
+public class MailNotification {
+
+	public void sendMail(String requestId, String status, ArrayList<String> senderList) {
+
+		EmailNotificationMessage message = new EmailNotificationMessage();
+		EmailNotificationConfiguration emailConfiguration = new EmailNotificationConfiguration();
+
+		String username = emailConfiguration.getCredentials().getUserName();
+		String password = emailConfiguration.getCredentials().getPassword();
+		
+		String subject = message.getEmailMessage(status).getSubject();
+		String body = message.getEmailMessage(status).getMessage();
+		
+		mail( username,  password,  subject,  body,  senderList);
+
+	}
+	
+	public void mail(String username, String password, String subject, String body, ArrayList<String> senderList) {
+		Email email = new SimpleEmail();
+		email.setHostName("smtp.googlemail.com");
+		email.setSmtpPort(465);
+
+		email.setAuthenticator(new DefaultAuthenticator(username, password));
+		email.setSSLOnConnect(true);
+		try {
+			email.setFrom(username);
+			email.setSubject(subject);
+			email.setMsg(body);
+			for(String s : senderList) {
+				email.addTo(s);
+			}
+			email.send();
+		} catch (EmailException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+	}
+}
diff --git a/allocation-manager/Notification-Manager/pom.xml b/allocation-manager/Notification-Manager/pom.xml
new file mode 100644
index 0000000..8f3cdb2
--- /dev/null
+++ b/allocation-manager/Notification-Manager/pom.xml
@@ -0,0 +1,13 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>Notification-Manager</groupId>
+  <artifactId>Notification-Manager</artifactId>
+  <version>0.0.1-SNAPSHOT</version>
+  <packaging>pom</packaging>
+  <name>Notification-Manager</name>
+  <modules>
+  	<module>Notification-Receiver</module>
+  	<module>Notification-Sender</module>
+  	<module>Notification-Authenticator</module>
+  </modules>
+</project>
\ No newline at end of file
