diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
index f64e521..1d1391c 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/GFacEngineImpl.java
@@ -89,8 +89,8 @@
     @Override
     public ProcessContext populateProcessContext(String processId, String gatewayId, String
             tokenId) throws GFacException {
+        ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
         try {
-            ProcessContext processContext = new ProcessContext(processId, gatewayId, tokenId);
             AppCatalog appCatalog = Factory.getDefaultAppCatalog();
             processContext.setAppCatalog(appCatalog);
             ExperimentCatalog expCatalog = Factory.getDefaultExpCatalog();
@@ -206,12 +206,19 @@
             }
             return processContext;
         } catch (AppCatalogException e) {
-            throw new GFacException("App catalog access exception ", e);
+            String msg = "App catalog access exception ";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         } catch (RegistryException e) {
-            throw new GFacException("Registry access exception", e);
+            String msg = "Registry access exception";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         } catch (AiravataException e) {
-            throw new GFacException("Remote cluster initialization error", e);
+            String msg = "Remote cluster initialization error";
+            updateProcessFailure(processContext, msg);
+            throw new GFacException(msg, e);
         }
+
     }
 
     private void checkRecoveryWithCancel(ProcessContext processContext) throws Exception {
@@ -859,6 +866,17 @@
         });
     }
 
+    private void updateProcessFailure(ProcessContext pc, String reason){
+        ProcessStatus status = new ProcessStatus(ProcessState.FAILED);
+        status.setReason(reason);
+        pc.setProcessStatus(status);
+        try {
+            GFacUtils.saveAndPublishProcessStatus(pc);
+        } catch (GFacException e) {
+            log.error("Error while save and publishing process failed status event");
+        }
+    }
+
     public static ResourceJobManager getResourceJobManager(ProcessContext processCtx) throws AppCatalogException, GFacException {
         List<JobSubmissionInterface> jobSubmissionInterfaces = Factory.getDefaultAppCatalog().getComputeResource()
                 .getComputeResource(processCtx.getComputeResourceId()).getJobSubmissionInterfaces();
diff --git a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
index c59e199..7366a19 100644
--- a/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
+++ b/modules/gfac/gfac-service/src/main/java/org/apache/airavata/gfac/server/GfacServerHandler.java
@@ -161,6 +161,7 @@
 	        executorService.execute(new GFacWorker(processId, gatewayId, tokenId));
         } catch (GFacException e) {
             log.error("Failed to submit process", e);
+
             return false;
         } catch (Exception e) {
 	        log.error("Error creating zookeeper nodes");
