diff --git a/requirements.txt b/requirements.txt
index 7b66147ed058c2a42f68c6daa4803d843b3d9ff7..63ef8fefebe0b5105e49983b26ee38a0248359cd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -30,3 +30,4 @@ grpcio-tools # Apache 2
 parse # MIT
 mergedeep # MIT
 getmac # MIT
+python-dateutil # remove when on python 3.12
\ No newline at end of file
diff --git a/tangostationcontrol/configuration/observation_field_settings.py b/tangostationcontrol/configuration/observation_field_settings.py
index 8988fa8c50bedbdf1082e506778921c79021027d..b56ad4264a0a26db6cd18938035a6c214de1e085 100644
--- a/tangostationcontrol/configuration/observation_field_settings.py
+++ b/tangostationcontrol/configuration/observation_field_settings.py
@@ -3,6 +3,7 @@
 
 from datetime import datetime
 from typing import Sequence
+from dateutil import parser
 
 from tangostationcontrol.configuration.configuration_base import _ConfigurationBase
 from tangostationcontrol.configuration.dithering import Dithering
@@ -11,7 +12,6 @@ from tangostationcontrol.configuration.sap import Sap
 from tangostationcontrol.configuration.sst import SST
 from tangostationcontrol.configuration.xst import XST
 
-
 class ObservationFieldSettings(_ConfigurationBase):
     def __init__(
         self,
@@ -48,7 +48,7 @@ class ObservationFieldSettings(_ConfigurationBase):
         """Transparently convert datetime to string in isoformat"""
         if time and not isinstance(time, datetime):
             try:
-                datetime.fromisoformat(time)
+                parser.isoparse(time)
             except ValueError as ex:
                 raise ex
         if time and isinstance(time, datetime):
diff --git a/tangostationcontrol/rpc/observation.py b/tangostationcontrol/rpc/observation.py
index 62d049574f1bd8985bb150b49d375c6625701dd1..c769b43aeb6ccb14d4bf4555677539feece9db24 100644
--- a/tangostationcontrol/rpc/observation.py
+++ b/tangostationcontrol/rpc/observation.py
@@ -9,6 +9,7 @@ from tangostationcontrol.rpc.common import (
     reply_on_exception,
 )
 from tangostationcontrol.common.proxies.proxy import create_device_proxy
+from tangostationcontrol.configuration import ObservationSettings
 
 logger = logging.getLogger()
 
@@ -21,10 +22,43 @@ class Observation(observation_pb2_grpc.ObservationServicer):
     def StartObservation(
         self, request: observation_pb2.StartObservationRequest, context
     ):
+        logger.info("Start observation request incomming  %s", request.configuration)
+        # Validate before handing over to Observation Control
+
+        observation_id = ""
+        # guard against empty jsons incomming
+        if request.configuration is not None and request.configuration.strip() != "{}" :
+            observationsettings = ObservationSettings.from_json(request.configuration)
+            logger.info("Converted ObservationSettings   %s", observationsettings)
+            if  observationsettings.antenna_fields:
+                primary_antenna = observationsettings.antenna_fields[0]
+                observation_id = primary_antenna.observation_id
+                logger.info(
+                    "Creating device proxy. ",
+                    extra={
+                        "observation_id": observation_id,
+                        "start_time": primary_antenna.start_time,
+                        "stop_time": primary_antenna.stop_time,
+                    },
+                )
+            else:
+                logger.error(
+                    "No Observation Id found in observation  %s", request.configuration
+                )
+        else:
+            logger.error(
+               "No Observation configuration found  %s", request.configuration
+             )
+
+
         observation_control = create_device_proxy(
             "STAT/ObservationControl/1", self.TIMEOUT
         )
         observation_control.add_observation(request.configuration)
+        logger.info(
+            "Start observation request added to Add observation.",
+            extra={"observation_id": observation_id},
+        )
         return observation_pb2.ObservationReply(success=True)
 
     @reply_on_exception(observation_pb2.ObservationReply)