diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index 1d93a0e..b5d9296 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -28,6 +28,7 @@
 import org.apache.stratos.autoscaler.applications.ClusterInformation;
 import org.apache.stratos.autoscaler.applications.MTClusterInformation;
 import org.apache.stratos.autoscaler.applications.STClusterInformation;
+import org.apache.stratos.autoscaler.applications.ApplicationHolder;
 import org.apache.stratos.autoscaler.applications.payload.PayloadData;
 import org.apache.stratos.autoscaler.applications.pojo.*;
 import org.apache.stratos.autoscaler.client.IdentityApplicationManagementServiceClient;
@@ -270,7 +271,19 @@
                                                    Map<String, SubscribableInfoContext> subscribableInfoCtxts)
             throws ApplicationDefinitionException, CartridgeGroupNotFoundException, CartridgeNotFoundException {
 
-        Application application = new Application(applicationContext.getApplicationId());
+        Application application;
+
+        // check if application already exists, and get existing key if true
+        ApplicationHolder.acquireReadLock();
+        Applications persistedApplications = ApplicationHolder.getApplications();
+        if (persistedApplications != null && persistedApplications.applicationExists(applicationContext.getApplicationId())) {
+            String existingKey = persistedApplications.getApplication(applicationContext.getApplicationId()).getKey();
+            application = new Application(applicationContext.getApplicationId(), existingKey);
+        } else {
+            application = new Application(applicationContext.getApplicationId());
+        }
+
+        ApplicationHolder.releaseReadLock();
 
         // Set tenant information
         application.setTenantId(applicationContext.getTenantId());
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
index 5dcea72..9c49883 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
@@ -61,6 +61,13 @@
         this.setInstanceIdToInstanceContextMap(new HashMap<String, ApplicationInstance>());
     }
 
+    public Application(String id, String key) {
+        super();
+        this.id = id;
+        this.key = key;
+        this.setInstanceIdToInstanceContextMap(new HashMap<String, ApplicationInstance>());
+    }
+
     public String getUniqueIdentifier() {
         return id;
     }
