diff --git a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc
index 59e71b383d6778a12961f8e6a81b1b76d206c443..f61d86a7fdfbe207ce81fcbdb68443ccdaaebc0a 100644
--- a/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc
+++ b/SAS/OTB/jOTDB3/src/nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance.cc
@@ -1060,15 +1060,13 @@ JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_sas_otb_jotdb3_jTreeMaintenance_
   const char* ed = env->GetStringUTFChars (anEndTime, 0);
   const string startTime (bd);
   const string endTime (ed);
-  const ptime ts (time_from_string (startTime));
-  const ptime te (time_from_string (endTime));
   jboolean succes;
   try {
-    succes= ((TreeMaintenance*)getCObjectPtr(env,jTreeMaintenance,"_TreeMaintenance"))->setSchedule(treeID,ts,te);
+    succes= ((TreeMaintenance*)getCObjectPtr(env,jTreeMaintenance,"_TreeMaintenance"))->setSchedule(treeID,bd,ed);
     env->ReleaseStringUTFChars (aStartTime, bd);
     env->ReleaseStringUTFChars (anEndTime, ed);
   } catch (exception &ex) {
-    cout << "Exception during TreeMaintenance::setSchedule(" << treeID << "," << ts << "," << te <<  ") " << ex.what() << endl; 
+    cout << "Exception during TreeMaintenance::setSchedule(" << treeID << "," << bd << "," << ed <<  ") " << ex.what() << endl; 
     env->ReleaseStringUTFChars (aStartTime, bd);
     env->ReleaseStringUTFChars (anEndTime, ed);
     env->ThrowNew(env->FindClass("java/lang/Exception"),ex.what());
diff --git a/SAS/OTDB/include/OTDB/TreeMaintenance.h b/SAS/OTDB/include/OTDB/TreeMaintenance.h
index 134a51356dd6477942eb04827ed48b79750fa3ca..8d57d8223ea258f1774286a5b0198e908af31e2d 100644
--- a/SAS/OTDB/include/OTDB/TreeMaintenance.h
+++ b/SAS/OTDB/include/OTDB/TreeMaintenance.h
@@ -219,8 +219,8 @@ public:
 
 	// Set the scheduling times of the tree
 	bool	setSchedule(treeIDType		aTreeID,
-				        const ptime&	aStartTime,
-				        const ptime& 	aStopTime);
+				        const string&	aStartTime,
+				        const string& 	aStopTime);
 
 	// Whenever an error occurs in one the OTDB functions the message can
 	// be retrieved with this function.
diff --git a/SAS/OTDB/sql/setSchedule_func.sql b/SAS/OTDB/sql/setSchedule_func.sql
index 0d9b43e6d835397322a0ca8e829bb8f4fb0267bc..a99ef392d1509d016c5bc4b48f9871e9de6c6981 100644
--- a/SAS/OTDB/sql/setSchedule_func.sql
+++ b/SAS/OTDB/sql/setSchedule_func.sql
@@ -31,8 +31,8 @@
 --
 -- Types:	none
 --
-CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP)
-  RETURNS BOOLEAN AS '
+CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, VARCHAR(20), VARCHAR(20))
+  RETURNS BOOLEAN AS $$
 	DECLARE
 		vFunction				INT2 := 1;
 		TSactive				CONSTANT INT2 := 600;
@@ -42,14 +42,27 @@ CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP)
 		vCampaignID				campaign.id%TYPE;
 		vTreeType				OTDBtree.treetype%TYPE;
 		vState					OTDBtree.state%TYPE;
+		vStartTime				timestamp;
+		vStopTime				timestamp;
 
 	BEGIN
+		-- check Timestamps
+		IF $3 = '' THEN
+			vStartTime := NULL;
+		ELSE
+			vStartTime := $3;
+		END IF;
+		IF $4 = '' THEN
+			vStopTime := NULL;
+		ELSE
+			vStopTime := $4;
+		END IF;
 		-- check authorisation(authToken, treeID, func, none)
 		vIsAuth := FALSE;
 		SELECT isAuthorized(vAuthToken, $2, vFunction, 0) 
 		INTO   vIsAuth;
 		IF NOT vIsAuth THEN
-			RAISE EXCEPTION \'Not authorized.\';
+			RAISE EXCEPTION 'Not authorized.';
 			RETURN FALSE;
 		END IF;
 		
@@ -60,30 +73,30 @@ CREATE OR REPLACE FUNCTION setSchedule(INT4, INT4, TIMESTAMP, TIMESTAMP)
 		WHERE	treeID = $2;
 
         IF vTreeType <> TThierarchy  THEN
-		  RAISE EXCEPTION \'Only VH trees can be scheduled.\';
+		  RAISE EXCEPTION 'Only VH trees can be scheduled.';
 		END IF;
 
 		IF vState = TSactive THEN
-		  RAISE EXCEPTION \'Tree may not be active\';
+		  RAISE EXCEPTION 'Tree may not be active';
 		END IF;
 
 		-- Finally update tree
 		UPDATE	OTDBtree
-		SET		starttime = $3,
-				stoptime  = $4
+		SET		starttime = vStartTime,
+				stoptime  = vStopTime
 		WHERE	treeID = $2;
 
 		UPDATE	vicHierarchy
-		SET		value = $3
+		SET		value = vStartTime
 		WHERE	treeID = $2
-		AND		name LIKE \'%.Observation.startTime\';
+		AND		name LIKE '%.Observation.startTime';
 
 		UPDATE	vicHierarchy
-		SET		value = $4
+		SET		value = vStopTime
 		WHERE	treeID = $2
-		AND		name LIKE \'%.Observation.stopTime\';
+		AND		name LIKE '%.Observation.stopTime';
 
 		RETURN TRUE;
 	END;
-' LANGUAGE plpgsql;
+$$ LANGUAGE plpgsql;
 
diff --git a/SAS/OTDB/src/TreeMaintenance.cc b/SAS/OTDB/src/TreeMaintenance.cc
index 0df883bdb890a0539569ca5d6c0f73cf20b0ccfc..13f5a32038a542ba99b4f300275ff9ac02af0d4a 100644
--- a/SAS/OTDB/src/TreeMaintenance.cc
+++ b/SAS/OTDB/src/TreeMaintenance.cc
@@ -1283,8 +1283,8 @@ bool	TreeMaintenance::setDescription(treeIDType	aTreeID,
 //
 // Set the Executiontime of a tree
 bool	TreeMaintenance::setSchedule(treeIDType		aTreeID,
-								     const ptime&	aStartTime,
-									 const ptime&	aStopTime)
+								     const string&	aStartTime,
+									 const string&	aStopTime)
 {
 	// Check connection
 	if (!itsConn->connect()) {
@@ -1292,9 +1292,7 @@ bool	TreeMaintenance::setSchedule(treeIDType		aTreeID,
 		return (false);
 	}
 
-	LOG_TRACE_FLOW_STR("TM:setSchedule(" << aTreeID << ","
-										 << to_simple_string(aStartTime) << ","
-										 << to_simple_string(aStopTime) << ")");
+	LOG_TRACE_FLOW_STR("TM:setSchedule(" << aTreeID << "," << aStartTime << "," << aStopTime << ")");
 
 	work 	xAction(*(itsConn->getConn()), "setSchedule");
 	try {
@@ -1303,8 +1301,8 @@ bool	TreeMaintenance::setSchedule(treeIDType		aTreeID,
 			formatString("SELECT setSchedule(%d,%d,'%s','%s')",
 				itsConn->getAuthToken(),
 				aTreeID,
-				to_simple_string(aStartTime).c_str(),
-				to_simple_string(aStopTime).c_str()));
+				aStartTime.c_str(),
+				aStopTime.c_str()));
 							
 		// Analyse result.
 		bool		succes;
@@ -1321,19 +1319,6 @@ bool	TreeMaintenance::setSchedule(treeIDType		aTreeID,
 		LOG_FATAL(itsError);
 		return (false);
 	}
-#if 0
-	// update Observation.startTime field
-	vector<OTDBnode>	fieldList = getItemList(aTreeID, "%.Observation.startTime");
-	ASSERTSTR (fieldList.size() == 1, "No uniq Observation.startTime field in tree " << aTreeID);
-	fieldList[0].limits = to_simple_string(aStartTime);
-	saveNode(fieldList[0]);
-
-	// update Observation.stopTime field
-	fieldList = getItemList(aTreeID, "%.Observation.stopTime");
-	ASSERTSTR (fieldList.size() == 1, "No uniq Observation.stopTime field in tree " << aTreeID);
-	fieldList[0].limits = to_simple_string(aStopTime);
-	saveNode(fieldList[0]);
-#endif
 	return (true);
 }
 
diff --git a/SAS/OTDB/test/tVHvalue.cc b/SAS/OTDB/test/tVHvalue.cc
index b7d1a1f6f8b75a93ad1b3849a589bf701f6e3521..7bfb095c59d1bc0272d0e3d0a2814388e14e9351 100644
--- a/SAS/OTDB/test/tVHvalue.cc
+++ b/SAS/OTDB/test/tVHvalue.cc
@@ -177,8 +177,7 @@ int main (int	argc, char*	argv[]) {
 		
 		LOG_INFO("Trying to set the schedule time to 2006-01-20 12:00:00.000");
 		LOG_INFO("THIS SHOULD FAIL BECAUSE STATUS IS ACTIVE");
-		if (tm.setSchedule (treeID, time_from_string("2006-01-20 12:00:00.000"),
-								time_from_string("2006-01-20 14:53:12.000"))) {
+		if (tm.setSchedule (treeID, "2006-01-20 12:00:00.000", "2006-01-20 14:53:12.000")) {
 			ASSERTSTR(false, "THIS SHOULD HAVE FAILED");
 			return(1);
 		}
@@ -190,8 +189,7 @@ int main (int	argc, char*	argv[]) {
 		LOG_INFO_STR(treeInfo);
 		
 		LOG_INFO("Retrying to set the schedule time to 2006-01-20 12:00:00");
-		tm.setSchedule (treeID, time_from_string("2006-01-20 12:00:00.000"),
-								time_from_string("2006-01-20 14:53:12.000"));
+		tm.setSchedule (treeID, "2006-01-20 12:00:00.000", "2006-01-20 14:53:12.000");
 		treeInfo = conn.getTreeInfo(treeID);
 		LOG_INFO_STR(treeInfo);