diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
index c35c2c02f7c6eb3ecbfbed6cdb495d79be76bb3f..6264bed1d32e83a3e37dcb4861fe2809a7d0245b 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
+++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/static/app/controllers/datacontroller.js
@@ -340,31 +340,67 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http,
 
     self.getTaskByOTDBId = function(otdb_id) {
         var defer = $q.defer();
-        $http.get('/rest/tasks/otdb/' + otdb_id).success(function(result) {
-            var task = result.task;
-            if(task) {
-                task.starttime = self.convertDatestringToLocalUTCDate(task.starttime);
-                task.endtime = self.convertDatestringToLocalUTCDate(task.endtime);
-            }
-            defer.resolve(task);
-        }).error(function(result) {
-            defer.resolve(undefined);
-        })
+
+        if(typeof(otdb_id) === 'string') {
+            otdb_id = parseInt(otdb_id);
+        }
+
+        var foundTask = self.tasks.find(function(t) { return t.otdb_id == otdb_id; });
+
+        if(foundTask) {
+            defer.resolve(foundTask);
+        } else {
+            $http.get('/rest/tasks/otdb/' + otdb_id).success(function(result) {
+                var task = result.task;
+                if(task) {
+                    task.starttime = self.convertDatestringToLocalUTCDate(task.starttime);
+                    task.endtime = self.convertDatestringToLocalUTCDate(task.endtime);
+
+                    if(!self.taskDict.hasOwnProperty(task.id)) {
+                        self.tasks.push(task);
+                        self.taskDict[task.id] = task;
+                        self.taskChangeCntr++;
+                    }
+                }
+                defer.resolve(task);
+            }).error(function(result) {
+                defer.resolve(undefined);
+            })
+        }
+
         return defer.promise;
     };
 
     self.getTaskByMoMId = function(mom_id) {
         var defer = $q.defer();
-        $http.get('/rest/tasks/mom/' + mom_id).success(function(result) {
-            var task = result.task;
-            if(task) {
-                task.starttime = self.convertDatestringToLocalUTCDate(task.starttime);
-                task.endtime = self.convertDatestringToLocalUTCDate(task.endtime);
-            }
-            defer.resolve(task);
-        }).error(function(result) {
-            defer.resolve(undefined);
-        })
+
+        if(typeof(mom_id) === 'string') {
+            mom_id = parseInt(mom_id);
+        }
+
+        var foundTask = self.tasks.find(function(t) { return t.mom_id == mom_id; });
+
+        if(foundTask) {
+            defer.resolve(foundTask);
+        } else {
+            $http.get('/rest/tasks/mom/' + mom_id).success(function(result) {
+                var task = result.task;
+                if(task) {
+                    task.starttime = self.convertDatestringToLocalUTCDate(task.starttime);
+                    task.endtime = self.convertDatestringToLocalUTCDate(task.endtime);
+
+                    if(!self.taskDict.hasOwnProperty(task.id)) {
+                        self.tasks.push(task);
+                        self.taskDict[task.id] = task;
+                        self.taskChangeCntr++;
+                    }
+                }
+                defer.resolve(task);
+            }).error(function(result) {
+                defer.resolve(undefined);
+            })
+        }
+
         return defer.promise;
     };
 
@@ -748,7 +784,7 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http,
                                     }
                                 }
                             }
-                            
+
                             self.claimChangeCntr++;
                             self.computeMinMaxResourceClaimTimes();
                         } else if(change.objectType == 'resourceCapacity') {
@@ -793,8 +829,8 @@ angular.module('raeApp').factory("dataService", ['$http', '$q', function($http,
 var dataControllerMod = angular.module('DataControllerMod', ['ngResource']);
 
 dataControllerMod.controller('DataController',
-                            ['$scope', 'dataService',
-                            function($scope, dataService) {
+                            ['$scope', '$q', 'dataService',
+                            function($scope, $q, dataService) {
     var self = this;
     $scope.dataService = dataService;
     dataService.dataCtrl = this;
@@ -825,8 +861,6 @@ dataControllerMod.controller('DataController',
         var defer = $q.defer();
         $scope.dataService.getTaskByOTDBId(otdb_id).then(function(task) {
             if(task) {
-                $scope.dataService.tasks.push(task);
-                $scope.dataService.taskDict[task.id] = task;
                 $scope.dataService.setSelectedTaskId(task.id);
                 $scope.jumpToSelectedTask();
                 defer.resolve();
@@ -839,8 +873,6 @@ dataControllerMod.controller('DataController',
         var defer = $q.defer();
         $scope.dataService.getTaskByMoMId(mom_id).then(function(task) {
             if(task) {
-                $scope.dataService.tasks.push(task);
-                $scope.dataService.taskDict[task.id] = task;
                 $scope.dataService.setSelectedTaskId(task.id);
                 $scope.jumpToSelectedTask();
                 defer.resolve();