diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml
index e11734200936f80d932c29d8deafa142c44e8e7a..ad204483f4623fcd8239bd69df0d54711c71f988 100644
--- a/ansible/roles/stack-sunbird/defaults/main.yml
+++ b/ansible/roles/stack-sunbird/defaults/main.yml
@@ -25,6 +25,11 @@ config_limit_memory: 1024M
 config_limit_cpu: 1
 config_reservation_cpu: 1
 
+# Notification Service vars
+notification_replicas: 1
+notification_limit_memory: 500MB
+notification_limit_cpu: 1
+
 # This variable is not to access learner service but to call the api
 # learner-service:9000/org/v1/search
 sunbird_learner_service_base_url: http://api-manager_kong:8000/
@@ -80,8 +85,8 @@ user_org_limit_cpu: 1
 user_org_reservation_cpu: 1
 
 cert_replicas: 1
-cert_reservation_memory: 750MB
-cert_limit_memory: 800MB
+cert_reservation_memory: 500MB
+cert_limit_memory: 550MB
 cert_limit_cpu: 1
 cert_reservation_cpu: 1
 
diff --git a/ansible/roles/stack-sunbird/tasks/cert_service.yml b/ansible/roles/stack-sunbird/tasks/cert_service.yml
index 849e040e3aa0f68c9afda58d4053dc275824a11c..8bdfc6149f9185f5b480f300442a12302fecf630 100644
--- a/ansible/roles/stack-sunbird/tasks/cert_service.yml
+++ b/ansible/roles/stack-sunbird/tasks/cert_service.yml
@@ -1,7 +1,7 @@
 ---
-- name: Remove user org service
+- name: Remove cert service
   shell: "docker service rm cert-service"
   ignore_errors: yes
 
-- name: Deploy user org service
-  shell: "docker service create --with-registry-auth --replicas {{ cert_replicas }} -p 9011:9000  --name cert-service --hostname cert-service --reserve-memory {{ cert_reservation_memory }} --limit-memory {{ cert_limit_memory }} --limit-cpu {{ cert_limit_cpu }} --reserve-cpu {{ cert_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_cert-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
+- name: Deploy cert service
+  shell: "docker service create --with-registry-auth --replicas {{ cert_replicas }} -p 9011:9000  --name cert-service --hostname cert-service --limit-memory {{ cert_limit_memory }} --limit-cpu {{ cert_limit_cpu }} --health-cmd 'wget -qO- cert-service:9000/service/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_cert-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
diff --git a/ansible/roles/stack-sunbird/tasks/enc_service.yml b/ansible/roles/stack-sunbird/tasks/enc_service.yml
index 495a9ad6cbb093d51b8e260c391dfa3bdf68c380..1ca81400142e4a1b3a2e912ff1772c21accd0f12 100644
--- a/ansible/roles/stack-sunbird/tasks/enc_service.yml
+++ b/ansible/roles/stack-sunbird/tasks/enc_service.yml
@@ -4,4 +4,4 @@
   ignore_errors: yes
 
 - name: Deploy enc service
-  shell: "docker service create --with-registry-auth --replicas {{ enc_replicas }} -p 9010:8013  --name enc-service --hostname enc-service --reserve-memory {{ enc_reservation_memory }} --limit-memory {{ enc_limit_memory }} --limit-cpu {{ enc_limit_cpu }} --reserve-cpu {{ enc_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_enc-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
+  shell: "docker service create --with-registry-auth --replicas {{ enc_replicas }} -p 9010:8013  --name enc-service --hostname enc-service --limit-memory {{ enc_limit_memory }} --limit-cpu {{ enc_limit_cpu }} --health-cmd 'wget -qO- enc-service:8013/service/health || exit 1' --health-timeout 3s --health-retries 3  --network application_default --env-file /home/deployer/env/sunbird_enc-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
diff --git a/ansible/roles/stack-sunbird/tasks/main.yml b/ansible/roles/stack-sunbird/tasks/main.yml
index 775cc9b0f66eb70968b79157c99e111d67f2cb81..353e68a04039ab368a00d14447bf461a45ab9bdb 100644
--- a/ansible/roles/stack-sunbird/tasks/main.yml
+++ b/ansible/roles/stack-sunbird/tasks/main.yml
@@ -19,6 +19,9 @@
   - include: cert_service.yml
     when: deploy_cert is defined
 
+  - include: notification_service.yml
+    when: deploy_notification is defined
+
   - include: content_service.yml
     when: deploy_content is defined
 
diff --git a/ansible/roles/stack-sunbird/tasks/notification_service.yml b/ansible/roles/stack-sunbird/tasks/notification_service.yml
new file mode 100644
index 0000000000000000000000000000000000000000..22f3b42d5965fad26501874b6ea4f3afef469c75
--- /dev/null
+++ b/ansible/roles/stack-sunbird/tasks/notification_service.yml
@@ -0,0 +1,7 @@
+---
+- name: Remove notification service
+  shell: "docker service rm notification-service"
+  ignore_errors: yes
+
+- name: Deploy notification service
+  shell: "docker service create --with-registry-auth --replicas {{ notification_replicas }} -p 9012:9000  --name notification-service --hostname notification-service --limit-memory {{ notification_limit_memory }} --limit-cpu {{ notification_limit_cpu }} --network application_default --env-file /home/deployer/env/sunbird_notification-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
diff --git a/ansible/roles/stack-sunbird/tasks/user_org_service.yml b/ansible/roles/stack-sunbird/tasks/user_org_service.yml
index fcc0cc1f85497e8d564c3bb4776ddbbf0bf4a7bf..24ab18ebe902a6a6947ec5cc0d6a1b198a52278f 100644
--- a/ansible/roles/stack-sunbird/tasks/user_org_service.yml
+++ b/ansible/roles/stack-sunbird/tasks/user_org_service.yml
@@ -4,4 +4,4 @@
   ignore_errors: yes
 
 - name: Deploy user org service
-  shell: "docker service create --with-registry-auth --replicas {{ user_org_replicas }} -p 9009:9000  --name user-org-service --hostname user-org-service --reserve-memory {{ user_org_reservation_memory }} --limit-memory {{ user_org_limit_memory }} --limit-cpu {{ user_org_limit_cpu }} --reserve-cpu {{ user_org_reservation_cpu }} --network application_default --env-file /home/deployer/env/sunbird_user-org-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
+  shell: "docker service create --with-registry-auth --replicas {{ user_org_replicas }} -p 9009:9000  --name user-org-service --hostname user-org-service --limit-memory {{ user_org_limit_memory }} --limit-cpu {{ user_org_limit_cpu }}  --health-cmd 'wget -qO- user-org-service:9000/service/health || exit 1' --health-timeout 3s --health-retries 3 --network application_default --env-file /home/deployer/env/sunbird_user-org-service.env  {{hub_org}}/{{image_name}}:{{image_tag}}"
diff --git a/ansible/roles/stack-sunbird/templates/sunbird_notification-service.env b/ansible/roles/stack-sunbird/templates/sunbird_notification-service.env
new file mode 100644
index 0000000000000000000000000000000000000000..ab975eb3cc6ed54d1e5b2435227168db28ef6000
--- /dev/null
+++ b/ansible/roles/stack-sunbird/templates/sunbird_notification-service.env
@@ -0,0 +1 @@
+sunbird_enc_service_url=http://enc-service:8013
diff --git a/pipelines/deploy/notification/Jenkinsfile b/pipelines/deploy/notification/Jenkinsfile
new file mode 100644
index 0000000000000000000000000000000000000000..2bf9be183775a119631581b9c4e284dd0b33ed07
--- /dev/null
+++ b/pipelines/deploy/notification/Jenkinsfile
@@ -0,0 +1,30 @@
+@Library('deploy-conf') _
+node() {
+    try {
+        stage('checkout public repo') {
+            cleanWs()
+            checkout scm
+        }
+
+        stage('deploy') {
+            values = docker_params()
+            currentWs = sh(returnStdout: true, script: 'pwd').trim()
+            ansiblePlaybook = "$currentWs/ansible/deploy.yml"
+            ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=notification-service deploy_notification=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+            values.put('currentWs', currentWs)
+            values.put('ansiblePlaybook', ansiblePlaybook)
+            values.put('ansibleExtraArgs', ansibleExtraArgs)
+            ansible_playbook_run(values)
+            archiveArtifacts 'metadata.json'
+            currentBuild.description = "Image: ${values.image_tag}, Private: ${params.private_branch}, Public: ${params.branch_or_tag}"
+        }
+    }
+    catch (err) {
+        currentBuild.result = "FAILURE"
+        throw err
+    }
+    finally {
+        slack_notify(currentBuild.result)
+        email_notify()
+    }
+}