diff --git a/app/__init__.py b/app/__init__.py
index 7a3e0619adc844d665b12a44ab231245e2aa28a5..dffb23cf3c50424e70d77d173274de04b6cbd4d8 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -58,8 +58,13 @@ def create_app(config_name):
             return render_template('errors/blocked.html')
 
         elif rc_util.check_state(session['user'].get('username')) == "certification":
-            return render_template('errors/certification.html')
-        
+              return render_template('errors/certify.html', room_id=session['uid'],
+                               username=session['user'].get('username'),
+                               fullname=session['user'].get('fullname'), email=session['user'].get('email'),
+                               referrer=session['return_url'], cancel_url=vars.default_referrer,
+                               welcome_msg=messages.welcome_message,
+                               cancel_msg=messages.cancel_message,
+                               error_msg=messages.error_message)
         else:
             return render_template('auth/SignUp.html', room_id=session['uid'],
                                username=session['user'].get('username'),
diff --git a/app/static/scripts/function.js b/app/static/scripts/function.js
index ae406d73e8eb8bcb12bab94c16088026b3ca4c0b..8848dae83c5dc8d75c3e78401fc230dc87e43dab 100644
--- a/app/static/scripts/function.js
+++ b/app/static/scripts/function.js
@@ -16,6 +16,14 @@ function request_account() {
     })
 }
 
+function certify_account() {
+    socket.emit('request certification', {
+        fullname: document.getElementById("fullname").value,
+        email: document.getElementById("email").value,
+        username: document.getElementById("username").value
+    })
+}
+
 function renderDom(title, message, error_msg) {
     document.getElementById("form-wrapper").innerHTML = "<h3>" + title + "</h3><br>";
     document.getElementById("form-wrapper").innerHTML += "<p>" +  message + "</p><br>";
diff --git a/run.py b/run.py
index f69a20825a47ab2d526807240273a5737a878ac5..d68af7680ea9fe04320aacde2022edf8cae3dae8 100644
--- a/run.py
+++ b/run.py
@@ -35,5 +35,16 @@ def request_account(json, methods=['GET', 'POST']):
         print(time.strftime("%m-%d-%Y_%H:%M:%S") + "\tError in account creation: ", e)
         socketio.emit("Account creation failed", room)
 
+@socketio.on('request certification')
+def certify_account(json, methods=['GET', 'POST']):
+    print (time.strftime("%m-%d-%Y_%H:%M:%S") + '\tQueue request received: ' + str(json))
+    room = str(session['uid'])
+    print("CERTIFY Room: {}".format(room))
+    try:
+        tasks.celery_certify_account(json, session=room )
+    except Exception as e:
+        print(time.strftime("%m-%d-%Y_%H:%M:%S") + "\tError in account certification: ", e)
+        socketio.emit("Account certification failed", room)
+
 if __name__ == '__main__':
     socketio.run(app, host='0.0.0.0')
diff --git a/tasks.py b/tasks.py
index acf38186af98bb565c808bbd72c59b32e9d12faf..5721e470dbfa34a61b51663f7a7179f61d02c025 100644
--- a/tasks.py
+++ b/tasks.py
@@ -59,4 +59,20 @@ def celery_create_account(json, session):
     rc_util.add_account(username, queuename, email, fullname, reason)
     print('sent account info')
     print('Waiting for completion...')
-    rc_util.consume(queuename, routing_key=f'complete.{queuename}', callback=gen_f(room))    
+    rc_util.consume(queuename, routing_key=f'complete.{queuename}', callback=gen_f(room))
+
+@celery.task
+def celery_certify_account(json, session):
+    room = session
+    username= json['username']
+    email= json['email']
+    fullname= json['fullname']
+    queuename= rc_util.encode_name(username)
+
+    print("CERTIFY : "+time.strftime("%m-%d-%Y_%H:%M:%S") + '\tUser ' + username + ' added to queue')
+    send_msg('certifying account', room)
+    print(username)
+    rc_util.update_state(username, 'ok')
+    print('sent account info')
+    print('Waiting for certification...')
+    send_msg('certified', room)