diff --git a/repository/src/main/java/org/apache/atlas/tasks/TaskRegistry.java b/repository/src/main/java/org/apache/atlas/tasks/TaskRegistry.java
index 32e0ad9..6f770ed 100644
--- a/repository/src/main/java/org/apache/atlas/tasks/TaskRegistry.java
+++ b/repository/src/main/java/org/apache/atlas/tasks/TaskRegistry.java
@@ -181,10 +181,25 @@
     private AtlasTask toAtlasTask(AtlasVertex v) {
         AtlasTask ret = new AtlasTask();
 
-        ret.setGuid(v.getProperty(Constants.TASK_GUID, String.class));
-        ret.setType(v.getProperty(Constants.TASK_TYPE, String.class));
-        ret.setStatus(v.getProperty(Constants.TASK_STATUS, String.class));
-        ret.setCreatedBy(v.getProperty(Constants.TASK_CREATED_BY, String.class));
+        String guid = v.getProperty(Constants.TASK_GUID, String.class);
+        if (guid != null) {
+            ret.setGuid(guid);
+        }
+
+        String type = v.getProperty(Constants.TASK_TYPE, String.class);
+        if (type != null) {
+            ret.setType(type);
+        }
+
+        String status = v.getProperty(Constants.TASK_STATUS, String.class);
+        if (status != null) {
+            ret.setStatus(status);
+        }
+
+        String createdBy = v.getProperty(Constants.TASK_CREATED_BY, String.class);
+        if (createdBy != null) {
+            ret.setCreatedBy(createdBy);
+        }
 
         Long createdTime = v.getProperty(Constants.TASK_CREATED_TIME, Long.class);
         if (createdTime != null) {
@@ -207,10 +222,19 @@
         }
 
         String parametersJson = v.getProperty(Constants.TASK_PARAMETERS, String.class);
-        ret.setParameters(AtlasType.fromJson(parametersJson, Map.class));
+        if (parametersJson != null) {
+            ret.setParameters(AtlasType.fromJson(parametersJson, Map.class));
+        }
 
-        ret.setAttemptCount(v.getProperty(Constants.TASK_ATTEMPT_COUNT, Integer.class));
-        ret.setErrorMessage(v.getProperty(Constants.TASK_ERROR_MESSAGE, String.class));
+        Integer attemptCount = v.getProperty(Constants.TASK_ATTEMPT_COUNT, Integer.class);
+        if (attemptCount != null) {
+            ret.setAttemptCount(attemptCount);
+        }
+
+        String errorMessage = v.getProperty(Constants.TASK_ERROR_MESSAGE, String.class);
+        if (errorMessage != null) {
+            ret.setErrorMessage(errorMessage);
+        }
 
         return ret;
     }
