diff --git a/ansible/roles/stack-sunbird/defaults/main.yml b/ansible/roles/stack-sunbird/defaults/main.yml
index 2b038206fc597b2f1ba0e76b454655dabe36c178..573900b2b5965959726473b272e3201bbfcceb4b 100644
--- a/ansible/roles/stack-sunbird/defaults/main.yml
+++ b/ansible/roles/stack-sunbird/defaults/main.yml
@@ -102,3 +102,4 @@ sunbird_analytics_blob_account_name:
 sunbird_analytics_blob_account_key:
 sunbird_portal_player_cdn_enabled: 
 sunbird_portal_preview_cdn_url:
+cdn_file_path:
diff --git a/ansible/roles/stack-sunbird/tasks/service_stack.yml b/ansible/roles/stack-sunbird/tasks/service_stack.yml
index ec763dd0c1be8a3677a027e3d69c2c5f138da3bc..92daab1e8f7ef0ccc6bf4351f7f90a2234cb2e9b 100644
--- a/ansible/roles/stack-sunbird/tasks/service_stack.yml
+++ b/ansible/roles/stack-sunbird/tasks/service_stack.yml
@@ -3,42 +3,43 @@
   template: src="stack_{{service_name}}.yml" dest="/home/deployer/stack/stack_{{service_name}}.yml" mode=0644
 
 - name: Save config file
-  copy: src="{{inventory_dir}}/../../../sunbird-portal/src/app/dist/index_cdn.ejs" dest="/home/deployer/config/index_cdn.ejs" mode=0644
+  copy: src="{{cdn_file_path}}" dest="/home/deployer/config/index_cdn.ejs" mode=0644
   when: sunbird_portal_cdn_url is defined
   register: copy_file
   ignore_errors: yes
 
-- name: Remove the cdn file from  player if it's present
-  shell: docker service update --config-rm index.ejs player_player
-  when: copy_file.changed
+- debug:
+    msg: "{{copy_file}}"
+
+- name: check if player is running
+  shell: docker service ps player_player
+  become: yes
+  register: playerRunning
   ignore_errors: yes
 
+- name: Remove the cdn file from  player if it's present
+  shell: docker service update --config-rm index_cdn.ejs player_player
+  when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined
+
 - name: Remove the existing config if it is present
   shell: docker config rm index_cdn.ejs
-  when: copy_file.changed
-  ignore_errors: yes
+  when: copy_file.changed and playerRunning.rc == 0 and sunbird_portal_cdn_url is defined
 
 - name: Create the index_cdn.ejs file as a config
   shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs"
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  ignore_errors: yes
-
-- name: Create the index_cdn.ejs file as a config
-  shell: "docker config create index_cdn.ejs /home/deployer/config/index_cdn.ejs"
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  ignore_errors: yes
+  when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0
 
 - name: Deploy Player with updated player config
-  shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs
-  when: sunbird_portal_cdn_url is defined and copy_file.changed
-  register: update_player
+  shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player
+  when: sunbird_portal_cdn_url is defined and copy_file.changed and playerRunning.rc == 0
 
 - name: Deploy stack
   shell: "docker stack deploy -c stack_{{service_name}}.yml {{service_name}} --with-registry-auth"
   args:
     chdir: /home/deployer/stack
-  when: not update_player.changed
+  register: stackDeployed
 
 - name: Inject config file for the first player deploy
-  shell: docker service update --config-add source=index.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs
-  when: sunbird_portal_cdn_url is defined and not update_player.changed
+  shell: docker service update --config-add source=index_cdn.ejs,target=/home/sunbird/app_dist/dist/index_cdn.ejs player_player
+  when: stackDeployed.changed
+
diff --git a/pipelines/deploy/player/Jenkinsfile b/pipelines/deploy/player/Jenkinsfile
index e5ce7eb37a08d259f1903589e65d69c8c4ec36b4..ec5895aad6bedc87a30e60b9545070d8a9da38f2 100644
--- a/pipelines/deploy/player/Jenkinsfile
+++ b/pipelines/deploy/player/Jenkinsfile
@@ -49,7 +49,7 @@ node() {
                     }
                     // Uploading cdn assets to blob
                     ansiblePlaybook = "$currentWs/ansible/assets-upload.yml"
-                    ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+                    ansibleExtraArgs = "--extra-vars assets=$currentWs/sunbird-portal/src/app/dist --extra-vars cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs --vault-password-file /var/lib/jenkins/secrets/vault-pass"
                     values.put('ansiblePlaybook', ansiblePlaybook)
                     values.put('ansibleExtraArgs', ansibleExtraArgs)
                     ansible_playbook_run(values)
@@ -58,7 +58,12 @@ node() {
         }
         stage('deploy') {
             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=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+	    if ( cdnUrl == '' ) {
+		    ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+                }
+                else {
+		    ansibleExtraArgs = "--tags \"stack-sunbird\" --extra-vars \"hub_org=$hub_org image_name=$values.image_name image_tag=$values.image_tag service_name=player deploy_stack=True cdn_file_path=$currentWs/sunbird-portal/src/app/dist/index_cdn.ejs\" --vault-password-file /var/lib/jenkins/secrets/vault-pass"
+		}
             values.put('ansiblePlaybook', ansiblePlaybook)
             values.put('ansibleExtraArgs', ansibleExtraArgs)
             ansible_playbook_run(values)