diff --git a/www/web/templates/two_factor/core/login.html b/www/web/templates/two_factor/core/login.html
index d545b977a12c108ec6f81646d0a48e2dc1dfaa4f..0d36ba517b2f3dbdbdcf4cb3e8057091b125c751 100644
--- a/www/web/templates/two_factor/core/login.html
+++ b/www/web/templates/two_factor/core/login.html
@@ -52,5 +52,6 @@
   </form>
   </div>
 <a class="btn" href="/reset_password">{% trans "Forgot Password?" %}</a><br>
-<a class="btn" href="/register">{% trans "Register" %}</a>
+<a class="btn" href="/account/registration/">{% trans "Register" %}</a><br>
+<a class="btn" href="/account/registration/resend">{% trans "Resend Activation Link" %}</a>
 {% endblock %}
\ No newline at end of file
diff --git a/www/web/warpauth/admin.py b/www/web/warpauth/admin.py
index 52146bcf70acf8edccd27d683178ec3531ca0762..f0e80bb17c435ac50335e496b09f9ad789cc9dff 100644
--- a/www/web/warpauth/admin.py
+++ b/www/web/warpauth/admin.py
@@ -1,13 +1,17 @@
 from django.contrib import admin
 
 # Register your models here.
-from warpauth.models import PasswordResetToken, LdapUser
+from warpauth.models import PasswordResetToken, LdapUser, ActivationToken
 
 
 @admin.register(PasswordResetToken)
 class PasswordResetTokenAdmin(admin.ModelAdmin):
         pass
 
+@admin.register(ActivationToken)
+class ActivationTokenAdmin(admin.ModelAdmin):
+        pass
+        
 @admin.register(LdapUser)
 class LdapUserAdmin(admin.ModelAdmin):
         pass
\ No newline at end of file
diff --git a/www/web/warpauth/models.py b/www/web/warpauth/models.py
index 18108bdf30dc15ce0f26473aaabffa1774885201..2d1096947077d94c883a567c040c4479377ebc3d 100644
--- a/www/web/warpauth/models.py
+++ b/www/web/warpauth/models.py
@@ -12,6 +12,17 @@ class PasswordResetToken(models.Model):
     
     def __str__(self):
         return self.hash
+
+class ActivationToken(models.Model):
+    user = models.CharField(max_length=100)
+    email = models.CharField(max_length=100)
+    token = models.CharField(max_length=100)
+    created = models.DateTimeField(auto_now_add=True)
+    
+    def __str__(self):
+        return self.token
+
+
 # LDAP
 
 
@@ -42,7 +53,7 @@ class LdapUserForm(ModelForm):
 
 
 class LdapGroup(ldapdb.models.Model):
-    base_dn = "ou=groups,dc=nodomain,dc=org"
+    base_dn = "ou=groups,dc=warpzone,dc=ms"
     object_classes = ['posixGroup']
 
     gid = IntegerField(db_column='gidNumber', unique=True)
diff --git a/www/web/warpauth/templates/warpauth/register/activate.html b/www/web/warpauth/templates/warpauth/register/activate.html
new file mode 100644
index 0000000000000000000000000000000000000000..9a8eddb0b6efb251daab27422cae69d90dc0fadd
--- /dev/null
+++ b/www/web/warpauth/templates/warpauth/register/activate.html
@@ -0,0 +1,23 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% block title %}{% trans "Activation" %}{% endblock %}
+
+{% block content %}
+    {% if token_error %}
+        <div class="alert alert-danger">
+            {% blocktrans %}
+                The Token you have provided is invalid.
+            {% endblocktrans %}
+        </div>
+        <br>
+         <a class="btn" href="/">{% trans "Back" %}</a>
+    {% else %}
+        <div class="alert alert-success">
+            {% blocktrans %}
+                Your Account was successfully activated.
+            {% endblocktrans %}
+        </div>
+        <br>
+        <a class="btn" href="/">{% trans "Ok" %}</a>
+    {% endif %}
+{% endblock %}
diff --git a/www/web/warpauth/templates/warpauth/register.html b/www/web/warpauth/templates/warpauth/register/register.html
similarity index 97%
rename from www/web/warpauth/templates/warpauth/register.html
rename to www/web/warpauth/templates/warpauth/register/register.html
index 8d6e6d5af579aa6fcab3350e250b351e271599ce..ef7f4f0f0b78365a23162690e331bd40dd2dd430 100644
--- a/www/web/warpauth/templates/warpauth/register.html
+++ b/www/web/warpauth/templates/warpauth/register/register.html
@@ -36,7 +36,7 @@
         {% endif %}
             <label for="inputUser">{% trans "Username" %}</label>
             <input name="username" type="user" id="inputUser" class="form-control" placeholder="{% trans "Username" %}" required autofocus><br>
-            <label for="inputUser">{% trans "Email" %}</label>
+            <label for="inputEmail">{% trans "Email" %}</label>
             <input name="email" type="email" id="inputEmail" class="form-control" placeholder="{% trans "Email" %}" required><br>
             <label for="inputPassword">{% trans "Password" %}</label>
             <input name="password" type="password" id="inputPassword" class="form-control" placeholder="{% trans "Password" %}" required><br>
diff --git a/www/web/warpauth/templates/warpauth/register/resend_token.html b/www/web/warpauth/templates/warpauth/register/resend_token.html
new file mode 100644
index 0000000000000000000000000000000000000000..584d19ef620ffcfe36574eb95058b14c17c4247e
--- /dev/null
+++ b/www/web/warpauth/templates/warpauth/register/resend_token.html
@@ -0,0 +1,28 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% block title %}{% trans "Registration" %}{% endblock %}
+{% block content %}
+     {% if error %}
+        <div class="alert alert-danger">
+            {% blocktrans %}
+               Error processing your request. Please contact the administrator.
+            {% endblocktrans %}
+        </div>
+    {% elif success %}
+           <div class="alert alert-success">
+            {% blocktrans %}
+               Email resended
+            {% endblocktrans %}
+        </div>
+    {% endif %}
+    <form  class="form" style="max-width: 330px; margin: 0 auto; padding: 40px">
+        {% csrf_token %}
+        <h2 class="form">{% trans "Resend token" %}</h2>
+            <br>
+            <label for="inputUser">{% trans "Username" %}</label>
+            <input name="username" type="user" id="inputUser" class="form-control" placeholder="{% trans "Username" %}" required autofocus><br>
+            <label for="inputEmail">{% trans "Email" %}</label>
+            <input name="email" type="email" id="inputEmail" class="form-control" placeholder="{% trans "Email" %}" required><br>
+            <button class="btn btn-lg btn-primary btn-block" type="submit" formmethod="post" class="btn btn-default">{% trans "Resend" %}</button>
+        </form>
+{% endblock %}
diff --git a/www/web/warpauth/urls.py b/www/web/warpauth/urls.py
index 2e38924105deaacac97628aa30395f110d255fdf..4c294b47194c29431b5448e26287a44469e03dcb 100644
--- a/www/web/warpauth/urls.py
+++ b/www/web/warpauth/urls.py
@@ -9,10 +9,12 @@ from warpauth.views import login, reset_password, profile, register
 urlpatterns = [
     # Authentication Pages
     url(r'', include('two_factor.urls', 'two_factor')),
-    url(r'^logout/$', login.logout_view, name='logout'),
-    url(r'^register/$', register.register, name='register'),
-    url(r'^reset_password/$', reset_password.gen_token, name='reset_password'),
+    url(r'^account/logout/$', login.logout_view, name='logout'),
+    url(r'^account/registration/$', register.register, name='register'),
+    url(r'^account/registration/activate/(?P<token>\w+)/$', register.activate, name='activate'),
+    url(r'^account/registration/resend/$', register.resend_token, name='resend_token'),
 
+    url(r'^reset_password/$', reset_password.gen_token, name='reset_password'),
     url(r'^reset_password/(?P<reset_hash>\w+)/$', reset_password.change_password, name='index'),
 
     url(r'^profile/$', profile.index, name='index'),
diff --git a/www/web/warpauth/views/register.py b/www/web/warpauth/views/register.py
index 4f851ef7b7864e7670144a25be8cea515b542d16..708885c20d7dc2475075c07281cf3f8773fe3f86 100644
--- a/www/web/warpauth/views/register.py
+++ b/www/web/warpauth/views/register.py
@@ -1,12 +1,22 @@
 import re
+import hashlib
+import os
 from django.core.exceptions import ValidationError
 from django import forms
 from django.shortcuts import render
 from django.http import HttpResponse
 from warpauth.ldap_connector import LDAPConnector
-from warpauth.models import LdapUser
+from warpauth.models import LdapUser, ActivationToken, LdapGroup
 from warpauth.util import *
+from django.utils.translation import ugettext as _
+from django.core.exceptions import ObjectDoesNotExist
 
+
+def send_token(token):
+    email_content = _("https://infra.warpzone.ms/activate/%(token)s") % {'token': token.token }
+    ret = send_email(token.email, _("Your registration for WarpInfra"), email_content )
+    return ret
+    
 def register(request):
     pages['success'] = False
     pages['error'] = False
@@ -43,8 +53,47 @@ def register(request):
                 user.save()
                 ldap_connector = LDAPConnector()
                 ldap_connector.change_user_password(user.build_dn(), None, request.POST["password"], True)
-                pages['success'] = True
+                token = ActivationToken()
+                token.user = username
+                token.email = email
+                token.token = hashlib.sha1(os.urandom(128)).hexdigest()
+                token.save()
+                ret = send_token(token)
+                if not ret:
+                    pages["error"] = "Error while sending the email. Please contact the administrator."
+                else:
+                    pages['success'] = True
             else:
                 pages['error'] = "username_not_available"
 
-    return HttpResponse(render(request, 'warpauth/register.html', pages))
+    return HttpResponse(render(request, 'warpauth/register/register.html', pages))
+
+
+def activate(request, token=None):
+    pages["token_error"] = False
+    try:
+        activation_token = ActivationToken.objects.get(token=token)
+        group = LdapGroup.objects.filter(name="active").get()
+        group.members.append(activation_token.user)
+        group.save()
+        activation_token.delete()
+    except ObjectDoesNotExist:
+        pages["token_error"] = True
+
+    return HttpResponse(render(request, 'warpauth/register/activate.html', pages))
+
+def resend_token(request):
+    pages["error"] = False
+    pages["success"] = False
+    if request.method == "POST":
+        try:
+            token = ActivationToken.objects.get(user=request.POST["username"])
+            if token.email == request.POST["email"]:
+                ret = send_token(token)
+                if not ret:
+                    pages["error"] = True
+                pages["success"] = True
+        except ObjectDoesNotExist:
+            pages["error"] = True
+            
+    return HttpResponse(render(request, 'warpauth/register/resend_token.html', pages))
diff --git a/www/web/warpzone/settings.py b/www/web/warpzone/settings.py
index 82d9c3fdf8ef3a2c00030d07e29709aaa752a061..18260803d4579b4dc19ca877b2f8a35fb19c713b 100644
--- a/www/web/warpzone/settings.py
+++ b/www/web/warpzone/settings.py
@@ -69,9 +69,9 @@ INSTALLED_APPS = (
     'warpauth',
     'warpfood',
     # WARPPAY
-#    'rest_framework',
-#    'rest_framework.authtoken',
-#    'warppay'
+    # 'rest_framework',
+    # 'rest_framework.authtoken',
+    # 'warppay'
 )
 
 MIDDLEWARE_CLASSES = (