diff --git a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_triggers.sql b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_triggers.sql
index d8df06ab62377c8ca80c3a282eb08a0f5a7e6b89..d9c301f6bcd1a8c77ebc435b97c8feb156bb5447 100644
--- a/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_triggers.sql
+++ b/SAS/ResourceAssignment/ResourceAssignmentDatabase/sql/add_triggers.sql
@@ -143,3 +143,43 @@ CREATE TRIGGER trigger_before_insert_conflict_reason_do_task_status_check
   EXECUTE PROCEDURE resource_allocation.before_insert_conflict_reason_do_task_status_check();
 
 ---------------------------------------------------------------------------------------------------------------------
+
+DROP TRIGGER IF EXISTS trigger_specification_update_successor_startendtimes ON resource_allocation.specification;
+DROP FUNCTION IF EXISTS resource_allocation.update_specification_successor_startendtimes();
+
+CREATE OR REPLACE FUNCTION resource_allocation.update_specification_successor_startendtimes()
+  RETURNS trigger AS
+$BODY$
+DECLARE
+task RECORD;
+suc_task RECORD;
+successor_task_id int;
+moved_end_seconds double precision;
+BEGIN
+    IF NEW.starttime <> OLD.starttime OR NEW.endtime <> OLD.endtime THEN
+        SELECT EXTRACT(epoch FROM age(NEW.endtime, OLD.endtime)) INTO moved_end_seconds;
+	FOR task IN SELECT * FROM resource_allocation.task_view tv WHERE tv.specification_id = NEW.id LOOP
+	    IF task.successor_ids IS NOT NULL THEN
+		    FOREACH successor_task_id IN ARRAY task.successor_ids LOOP
+			FOR suc_task IN SELECT * FROM resource_allocation.task_view tv WHERE tv.id = successor_task_id LOOP
+			    UPDATE resource_allocation.specification SET (starttime, endtime) = (starttime + moved_end_seconds * interval '1 second', endtime + moved_end_seconds * interval '1 second') WHERE id = suc_task.specification_id;
+			END LOOP;
+		    END LOOP;
+	    END IF;
+	END LOOP;
+    END IF;
+RETURN NEW;
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION resource_allocation.update_specification_successor_startendtimes()
+  OWNER TO resourceassignment;
+
+CREATE TRIGGER trigger_specification_update_successor_startendtimes
+  AFTER UPDATE
+  ON resource_allocation.specification
+  FOR EACH ROW
+  EXECUTE PROCEDURE resource_allocation.update_specification_successor_startendtimes();
+
+---------------------------------------------------------------------------------------------------------------------