diff --git a/ambari-web/app/controllers/main/service/info/configs.js b/ambari-web/app/controllers/main/service/info/configs.js
index 5e3e444..105f21d 100644
--- a/ambari-web/app/controllers/main/service/info/configs.js
+++ b/ambari-web/app/controllers/main/service/info/configs.js
@@ -33,6 +33,8 @@
   customConfig: [],
   serviceConfigsData: require('data/service_configs'),
   isApplyingChanges: false,
+  // contain Service Config Property, when user proceed from Select Config Group dialog
+  overrideToAdd: null,
   serviceConfigs: function () {
     return App.config.get('preDefinedServiceConfigs');
   }.property('App.config.preDefinedServiceConfigs'),
@@ -628,6 +630,14 @@
       componentConfig.configs.pushObject(serviceConfigProperty);
       serviceConfigProperty.validate();
     }, this);
+    var overrideToAdd = this.get('overrideToAdd');
+    if (overrideToAdd) {
+      overrideToAdd = componentConfig.configs.findProperty('name', overrideToAdd.name);
+      if (overrideToAdd) {
+        this.addOverrideProperty(overrideToAdd);
+        this.set('overrideToAdd', null);
+      }
+    }
   },
 
   /**
@@ -1725,6 +1735,22 @@
     });
   },
 
+  addOverrideProperty: function(serviceConfigProperty) {
+    var overrides = serviceConfigProperty.get('overrides');
+    if (!overrides) {
+      overrides = [];
+      serviceConfigProperty.set('overrides', overrides);
+    }
+    // create new override with new value
+    var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
+    newSCP.set('value', '');
+    newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
+    newSCP.set('parentSCP', serviceConfigProperty);
+    newSCP.set('isEditable', true);
+    console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
+    overrides.pushObject(newSCP);
+  },
+
   selectConfigGroup: function (event) {
     this.set('selectedConfigGroup', event.context);
   }
diff --git a/ambari-web/app/views/common/configs/services_config.js b/ambari-web/app/views/common/configs/services_config.js
index 0ffd5bf..3a501cb 100644
--- a/ambari-web/app/views/common/configs/services_config.js
+++ b/ambari-web/app/views/common/configs/services_config.js
@@ -488,7 +488,6 @@
 
   createOverrideProperty: function (event) {
     var serviceConfigProperty = event.contexts[0];
-    var self = this;
     var serviceConfigController = this.get('controller');
     var selectedConfigGroup = serviceConfigController.get('selectedConfigGroup');
     if (selectedConfigGroup.get('isDefault')) {
@@ -497,31 +496,15 @@
           serviceConfigController.get('configGroups'), function (selectedGroupInPopup) {
             console.log("launchConfigGroupSelectionCreationDialog(): Selected/Created:", selectedGroupInPopup);
             if (selectedGroupInPopup) {
+              serviceConfigController.set('overrideToAdd', serviceConfigProperty);
               serviceConfigController.set('selectedConfigGroup', selectedGroupInPopup);
-              self.addOverrideProperty(serviceConfigProperty);
             }
           });
     } else {
-      this.addOverrideProperty(serviceConfigProperty);
+      serviceConfigController.addOverrideProperty(serviceConfigProperty);
     }
   },
 
-  addOverrideProperty: function(serviceConfigProperty) {
-    var overrides = serviceConfigProperty.get('overrides');
-    if (!overrides) {
-      overrides = [];
-      serviceConfigProperty.set('overrides', overrides);
-    }
-    // create new override with new value
-    var newSCP = App.ServiceConfigProperty.create(serviceConfigProperty);
-    newSCP.set('value', '');
-    newSCP.set('isOriginalSCP', false); // indicated this is overridden value,
-    newSCP.set('parentSCP', serviceConfigProperty);
-    newSCP.set('isEditable', true);
-    console.debug("createOverrideProperty(): Added:", newSCP, " to main-property:", serviceConfigProperty);
-    overrides.pushObject(newSCP);
-  },
-
   showOverrideWindow: function (event) {
     // argument 1
     var serviceConfigProperty = event.contexts[0];
