diff --git a/www/conf/config.example.ini b/www/conf/config.example.ini
index 8748096ad5dac32d6892feb03f2210b25054dfa6..cf6b5691fca6db839723e20886c385832a809cee 100644
--- a/www/conf/config.example.ini
+++ b/www/conf/config.example.ini
@@ -8,7 +8,7 @@ PW_RESET_TOKEN_LIFETIME = 5
 [ldap]
 LDAP_HOST = ldap
 LDAP_BIND_DN = cn=admin,dc=warpzone,dc=ms
-LDAP_PASSWORD = k7dAw8j2
+LDAP_PASSWORD = 
 
 LDAP_USER_SEARCH_PATH = ou=users,dc=warpzone,dc=ms
 LDAP_GROUP_SEARCH_PATH = dc=warpzone,dc=ms
@@ -18,5 +18,14 @@ LDAP_GROUP_IS_ACTIVE = cn=active,ou=groups,dc=warpzone,dc=ms
 LDAP_GROUP_IS_STAFF = cn=superuser,ou=groups,ou=warpauth,ou=infrastructure,dc=warpzone,dc=ms
 LDAP_GROUP_SUPERUSER = cn=superuser,ou=groups,ou=warpauth,ou=infrastructure,dc=warpzone,dc=ms
 
+[email]
+SMTP_HOST = smtp.warpzone.ms
+SMTP_PORT = 25
+SMTP_USERNAME = noreply@warpzone.ms
+SMTP_PASSWORD = 
+SMTP_EMAIL_FROM = noreply@warpzone.ms
+SMTP_USE_TLS = True
+SUBJECT_PREFIX = '[WarpInfra] '
+
 [misc]
 LOG_PATH = /var/log/
\ No newline at end of file
diff --git a/www/web/warpauth/models.py b/www/web/warpauth/models.py
index 65090caa6f9285ce830ddabd2aeb15f1a1f43912..18108bdf30dc15ce0f26473aaabffa1774885201 100644
--- a/www/web/warpauth/models.py
+++ b/www/web/warpauth/models.py
@@ -9,7 +9,9 @@ class PasswordResetToken(models.Model):
     email = models.CharField(max_length=100)
     hash = models.CharField(max_length=100)
     created = models.DateTimeField(auto_now_add=True)
-
+    
+    def __str__(self):
+        return self.hash
 # LDAP
 
 
@@ -22,7 +24,7 @@ class LdapUser(ldapdb.models.Model):
     last_name = CharField(db_column='sn', max_length=200)
     email = CharField(db_column='mail', max_length=200)
     cn = CharField(db_column='cn', max_length=200)
-    card_id = CharField(db_column='pager', max_length=200)
+    card_id = CharField(db_column='employeeNumber', max_length=200)
     uidNumber = CharField(db_column='uidNumber', max_length=200)
     gidNumber = CharField(db_column='gidNumber', max_length=200)
     homeDirectory = CharField(db_column='homeDirectory', max_length=200)
diff --git a/www/web/warpauth/templates/warpauth/profile.html b/www/web/warpauth/templates/warpauth/profile.html
index 5445ae78f93b7b7010746da21d2c4bd3c8029618..7d35d14b6c49725e3e3cfc552d4da2fc15bb06ff 100644
--- a/www/web/warpauth/templates/warpauth/profile.html
+++ b/www/web/warpauth/templates/warpauth/profile.html
@@ -26,5 +26,7 @@
         </div>
     </div>
 </div>
-
+<script>
+$('a[href="{{ selected_tab }}"]').tab('show');
+</script>
 {% endblock %}
\ No newline at end of file
diff --git a/www/web/warpauth/templates/warpauth/profile/change_password.html b/www/web/warpauth/templates/warpauth/profile/change_password.html
index 6ede004e1177ac09c8148e5b47ab8307acf7a09b..f42f79e2d0ff08bb39cd4534d9453302e9442e71 100644
--- a/www/web/warpauth/templates/warpauth/profile/change_password.html
+++ b/www/web/warpauth/templates/warpauth/profile/change_password.html
@@ -2,9 +2,13 @@
 
 <div>
     <br />
-    {% if error %}
-        <div class="alert alert-danger">{{ error }}</div><br>
+    {% if error_passwd %}
+        <div class="alert alert-danger">{{ error_passwd }}</div><br>
     {% endif %}
+    {% if success_passwd %}
+        <div class="alert alert-success">{% trans "Password changed successfully" %}</div><br>
+    {% endif %}
+    
     <form class="form-horizontal" method="POST" action="/profile/change_password/" role="form">
         {% csrf_token %}
         <div class="form-group">
diff --git a/www/web/warpauth/templates/warpauth/profile/information.html b/www/web/warpauth/templates/warpauth/profile/information.html
index 438dc5eedb4466bad3776f3120bd2ef69713498f..4fd7fb1c03bdc48a8a5f318c533a5ff63d558b20 100644
--- a/www/web/warpauth/templates/warpauth/profile/information.html
+++ b/www/web/warpauth/templates/warpauth/profile/information.html
@@ -2,10 +2,16 @@
 {% load bootstrap %}
 <div>
     <br/>
-    <p class="lead">{% trans "Groups" %}</p><p />
+    <p class="lead">{% trans "User data" %}</p><p />
 
     <div class="panel panel-default">
         <div class="panel-body">
+        {% if error_info %}
+            <div class="alert alert-danger">{{ error_info }}</div><br>
+        {% endif %}
+        {% if success_info %}
+            <div class="alert alert-success">{% trans "Information changed successfully" %}</div><br>
+        {% endif %}
             <form class="form-horizontal" action="/profile/change_information/" method="POST" role="form">
                  {{ ldap_user_form | bootstrap_horizontal }}
                 <div class="form-group">
@@ -18,7 +24,9 @@
         </div>
     </div>
     <div class="panel panel-default">
+        
         <div class="panel-body">
+        <p class="lead">{% trans "Groups" %}</p><p />
             <table class="table">
             {% for ldap_group in ldap_groups %}
                 <tr><td>{{ ldap_group }}</td></tr>
diff --git a/www/web/warpauth/templates/warpauth/reset_password/change_password.html b/www/web/warpauth/templates/warpauth/reset_password/change_password.html
index bd1fdd86d7de2ced74497947766ca9a7e085d88d..cdeb539aaa855eff01b07c9a5bb3e54193401548 100644
--- a/www/web/warpauth/templates/warpauth/reset_password/change_password.html
+++ b/www/web/warpauth/templates/warpauth/reset_password/change_password.html
@@ -8,7 +8,7 @@
         <div class="alert alert-success">
             {% trans "Your password was sucessfully changed. You will be redirected within 5 seconds. If not please click" %}
             <a href="/login">{% trans "here" %}</a>
-            <meta refresh>
+            <meta http-equiv="refresh" content="5; url=/login">
         </div>
     {% else %}
         <form  class="form" style="max-width: 330px; margin: 0 auto; padding: 40px">
diff --git a/www/web/warpauth/templates/warpauth/reset_password/token_gen.html b/www/web/warpauth/templates/warpauth/reset_password/token_gen.html
index b38577f3aa619badde49ae422c8b1c0c010a5856..c4c521b77351db0ebffd08d1cddb56ca3b6d1356 100644
--- a/www/web/warpauth/templates/warpauth/reset_password/token_gen.html
+++ b/www/web/warpauth/templates/warpauth/reset_password/token_gen.html
@@ -3,10 +3,11 @@
 {% block title %}{% trans "Reset Password" %}{% endblock %}
 {% block content %}
     {% if request.POST %}
-        <h2 class="form-signin-heading">{% trans "If your information were right, you've got an Email" %}</h2>
-
-        Token is: <a href="{{ debug }}">{{ debug }}</a>
-
+        {% if error %}
+            <div class="alert alert-danger">{{ error }}</div><br>
+        {% else %}
+        <div class="alert alert-success">{% trans "If your information were right, you've got an Email" %}</div><br>
+        {% endif %}
     {% else %}
         <form  class="form" style="max-width: 330px; margin: 0 auto; padding: 40px">
             {% csrf_token %}
diff --git a/www/web/warpauth/urls.py b/www/web/warpauth/urls.py
index c7b5d79a2c18dc7f496d159854e6a3c166a1ad52..1bec8cad1af8cb8bdb0f001a4e1ab77503667f19 100644
--- a/www/web/warpauth/urls.py
+++ b/www/web/warpauth/urls.py
@@ -13,7 +13,7 @@ urlpatterns = [
     url(r'^register/$', register.register, name='index'),
     url(r'^reset_password/$', reset_password.gen_token, name='index'),
 
-#    url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'),
+    url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'),
 
     url(r'^profile/$', profile.index, name='index'),
     url(r'^profile/change_password/$', profile.change_password, name='change_password'),
diff --git a/www/web/warpauth/views/profile.py b/www/web/warpauth/views/profile.py
index fb099d5ae5e9f627c34a6f5dcdc91ce190bea72c..dc9aab87551f249d15ae048947ad37356ebca648 100644
--- a/www/web/warpauth/views/profile.py
+++ b/www/web/warpauth/views/profile.py
@@ -14,10 +14,21 @@ import logging
 # ToDo: first- and lastname, email, public?
 ##
 
+
+def setUserObject(request):
+    pages['ldap_groups'] = request.user.ldap_user.group_names
+    pages['ldap_user_form'] = LdapUserForm(instance=LdapUser.objects.get(uid=str(request.user)))        
+ 
+def clear_error_messages():
+    pages["error_info"] = ""
+    pages["success_info"] = False
+    pages["error_passwd"] = ""
+    pages["success_passwd"] = False
+    pages["selected_tab"]=""
+    
 @login_required(login_url='/login/', redirect_field_name=None)
 def index(request):
-    pages["error"] = ""
-    pages["success"] = False
+    clear_error_messages()
     pages['ldap_groups'] = request.user.ldap_user.group_names
     pages['ldap_user_form'] = LdapUserForm(instance=LdapUser.objects.get(uid=str(request.user)))
     return HttpResponse(render(request, 'warpauth/profile.html', pages))
@@ -25,7 +36,8 @@ def index(request):
 
 @login_required(login_url='/login/', redirect_field_name=None)
 def change_information(request):
-    pages["error"] = ""
+    clear_error_messages()
+    setUserObject(request)
     if request.method != 'POST':
         return redirect("/profile")
 
@@ -33,13 +45,13 @@ def change_information(request):
     first_name = request.POST["first_name"]
     last_name = request.POST["last_name"]
     email = request.POST["email"]
-
+    card_id = request.POST["card_id"]
     f = forms.EmailField()
     try:
         f.clean(email)
     except ValidationError as e:
-        pages["error"] = "Invalid Email"
-        return redirect("/profile")
+        pages["error_info"] = "Invalid Email"
+        return HttpResponse(render(request, 'warpauth/profile.html', pages))
     cn = first_name + " " + last_name
     cn = cn.strip()
     if first_name == "":
@@ -48,32 +60,38 @@ def change_information(request):
         last_name = "None"
     if cn == "":
         cn = "None"
+
     user.first_name = first_name
     user.last_name = last_name
     user.cn = cn
     user.email = email
+    user.card_id=card_id
     user.save()
 
-    return redirect("/profile")
+    pages["success_info"] = True
+    setUserObject(request)
+    return HttpResponse(render(request, 'warpauth/profile.html', pages))
 
 
 @login_required(login_url='/login/', redirect_field_name=None)
 def change_password(request):
-    pages["error"] = ""
-    pages["success"] = False
-
+    clear_error_messages()
+    pages["selected_tab"]="#change_passwd"
     if request.method != 'POST':
-        return redirect("/")
-
-    if "old_pw" not in request.POST or "new_pw" not in request.POST or "new_pw_confirm" not in request.POST:
-        pages["error"] = "Please fill in all fields"
+        return redirect("/profile")
+    print("old_pw" == "")
+    if request.POST["old_pw"] == "" or request.POST["new_pw"]  == "" or request.POST["new_pw_confirm"] == "":
+        pages["error_passwd"] = "Please fill in all fields"
     elif request.POST["new_pw"] != request.POST["new_pw_confirm"]:
-        pages["error"] = "Password confirmation did not match"
+        pages["error_passwd"] = "Password confirmation did not match"
     else:
         ldap_connector = LDAPConnector()
-        ret = ldap_connector.change_password(request.user.ldap_user.dn, request.POST["old_pw"], request.POST["new_pw"])
+        ret = ldap_connector.change_user_password(request.user.ldap_user.dn, request.POST["old_pw"], request.POST["new_pw"])
         if ret == -1:
-            pages["error"] = "Old password did not match"
+            pages["error_passwd"] = "Old password did not match"
         else:
-            pages["success"] = True
+            pages["success_passwd"] = True
+    pages['ldap_groups'] = request.user.ldap_user.group_names
+    pages['ldap_user_form'] = LdapUserForm(instance=LdapUser.objects.get(uid=str(request.user)))        
     return HttpResponse(render(request, 'warpauth/profile.html', pages))
+    
diff --git a/www/web/warpauth/views/reset_password.py b/www/web/warpauth/views/reset_password.py
index 9e903884435921677adfac3171c6c78f2edfa7d3..7dad01c081f15f1ed10acd716b62b0233833dd34 100644
--- a/www/web/warpauth/views/reset_password.py
+++ b/www/web/warpauth/views/reset_password.py
@@ -7,6 +7,7 @@ from django.core.exceptions import ObjectDoesNotExist, ValidationError
 from django.http import HttpResponse
 from django.shortcuts import render
 from warpauth.ldap_connector import LDAPConnector
+from warpzone.utils import send_email
 
 from warpauth.util import *
 from warpauth.models import PasswordResetToken, LdapUser
@@ -21,6 +22,7 @@ from warpzone.settings import PW_RESET_TOKEN_LIFETIME
 
 def gen_token(request):
     logger = logging.getLogger("reset_password")
+    pages["error"] = ""
     if request.POST:
         try:
             usr = LdapUser.objects.get(uid=request.POST["username"])
@@ -30,7 +32,9 @@ def gen_token(request):
                 p.email = usr.email
                 p.hash = hashlib.sha1(os.urandom(128)).hexdigest()
                 p.save()
-                pages["debug"] = "http://localhost/reset_password/%s" % p.hash
+                ret = send_email(p.email, "Requested Password Reset", "http://localhost/reset_password/%s" % p.hash)
+                if not ret:
+                    pages["error"] = "Error while sending the email. Please contact the administrator."
                 logger.info("Success for %s", usr.uid)
         except Exception as e:
             print(e)
@@ -42,19 +46,14 @@ def gen_token(request):
 #
 # Function to change user password with a reset Token
 # ToDo: Implement Email after password change
-# ToDo: Implement automatic redirection if succeeded in template
 #
 
 def change_password(request, reset_hash=None):
-    # logger = logging.getLogger("reset_password")
-    # Debug
-    for pw in PasswordResetToken.objects.all():
-        print(pw.hash)
-    #
+    pages["token_error"] = False
     try:
         pw_reset_token = PasswordResetToken.objects.get(hash=reset_hash)
         time_difference = datetime.datetime.now() - pw_reset_token.created
-        if time_difference.seconds/60 > PW_RESET_TOKEN_LIFETIME:
+        if time_difference.seconds/60 > int(PW_RESET_TOKEN_LIFETIME):
             pw_reset_token.delete()
             raise ValidationError("Token not valid")
 
@@ -72,7 +71,5 @@ def change_password(request, reset_hash=None):
     except (ObjectDoesNotExist, ValidationError) as e:
         print(e)
         pages["token_error"] = True
-    except Exception as e:
-        print(e)
 
     return HttpResponse(render(request, 'warpauth/reset_password/change_password.html', pages))
diff --git a/www/web/warpzone/settings.py b/www/web/warpzone/settings.py
index c669ff6d785170dcb542a199a69062c6c34b47a2..508d25b576d0acbf673bd135ba9e28a8111eb177 100644
--- a/www/web/warpzone/settings.py
+++ b/www/web/warpzone/settings.py
@@ -25,6 +25,15 @@ LDAP_GROUP_IS_ACTIVE = config.get('ldap','LDAP_GROUP_IS_ACTIVE')
 LDAP_GROUP_IS_STAFF = config.get('ldap','LDAP_GROUP_IS_STAFF')
 LDAP_GROUP_SUPERUSER = config.get('ldap','LDAP_GROUP_SUPERUSER')
 
+# SMTP
+EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
+EMAIL_HOST = config.get('email','SMTP_HOST')
+EMAIL_HOST_USER = config.get('email','SMTP_USERNAME')
+EMAIL_FROM = config.get('email','SMTP_EMAIL_FROM')
+EMAIL_HOST_PASSWORD = config.get('email','SMTP_PASSWORD')
+EMAIL_USE_TLS = config.get('email','SMTP_USE_TLS')
+EMAIL_SUBJECT_PREFIX = config.get('email','SUBJECT_PREFIX')
+
 # SECURITY
 PW_RESET_TOKEN_LIFETIME = config.get('security','PW_RESET_TOKEN_LIFETIME')
 SECRET_KEY = config.get('security','SECRET_KEY')
@@ -53,7 +62,7 @@ INSTALLED_APPS = (
     # WARPPAY
     'rest_framework',
     'rest_framework.authtoken',
-  #  'warppay'
+    'warppay'
 )
 
 MIDDLEWARE_CLASSES = (
@@ -97,7 +106,7 @@ LOCALE_PATHS = (
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': '/opt/database/warpzone.db'
+        'NAME': 'warpzone.db'
     },
     'ldap': {
         'ENGINE': 'ldapdb.backends.ldap',
diff --git a/www/web/warpzone/utils.py b/www/web/warpzone/utils.py
new file mode 100644
index 0000000000000000000000000000000000000000..88962dcf355554ce44c9c44564266a4ed877f3ae
--- /dev/null
+++ b/www/web/warpzone/utils.py
@@ -0,0 +1,17 @@
+from django.core.mail import send_mail
+from django.conf import settings
+
+def send_email(to_address, subject, content):
+    try:
+        send_mail(
+            '[WarpInfra] %s' % subject,
+            content,
+            settings.EMAIL_FROM,
+            [to_address],
+            fail_silently=False,
+        )
+        return True
+    except Exception as e:
+        print(e)
+    
+    return False
\ No newline at end of file