public String insertAndStartRun(String messageBody)
      throws UnsupportedSerializationFormatException, SerializationException {

    try {
      Request requestMessageObject =
          new XMLDeserializer().getObjectFromMessage(messageBody, Request.class);
      RequestMeta meta = requestMessageObject.getRequestMeta();
      ObjectSerializationInformation config = meta.getRequestBodySerializationInformation();

      SerializationFormat format = config.getFormat();
      Deserializer deserializer = DeserializerFactory.getDeserializer(format);

      String className = config.getClassName();
      String classNamespace = config.getClassNameSpace();

      RunMessage object =
          (RunMessage)
              deserializer.getObjectFromMessage(
                  requestMessageObject.getRequestBody(), className, classNamespace);

      RunResult runResult;
      if (object instanceof RunSimulationMessage) {
        runResult = impl.runSimulation((RunSimulationMessage) object);
      } else if (object instanceof RunSimulationsMessage) {
        runResult = impl.runSimulations((RunSimulationsMessage) object);
      } else if (object instanceof RunVisualizationMessage) {
        runResult = impl.runVisualization((RunVisualizationMessage) object);
      } else {
        responseBuilder.setStatus(
            HttpStatus.BAD_REQUEST,
            "The object in the message body was not an instance of a valid run message type. "
                + "The valid types are: RunSimulationMessage, RunSimulationsMessage, RunVisualizationMessage");
        return serializer.serializeObject(responseBuilder.getResponse());
      }

      InsertRunResult insertRunResult = new InsertRunResult();
      insertRunResult.setRunId(runResult.getRunId());

      ObjectSerializationInformation objectSerializationInformation =
          new ObjectSerializationInformation();
      objectSerializationInformation.setClassNameSpace(Serializer.SERVICES_COMMON_NAMESPACE);
      objectSerializationInformation.setClassName(insertRunResult.getClass().getSimpleName());
      objectSerializationInformation.setFormat(SerializationFormat.XML);

      String serializedObject = serializer.serializeObject(runResult);
      responseBuilder
          .setResponseBodySerializationInformation(objectSerializationInformation)
          .addContentToBody(serializedObject)
          .setIsBodySerialized(true);
      responseBuilder.setStatus(HttpStatus.OK, ResponseMessageBuilder.DEFAULT_SUCCESS_MESSAGE);

    } catch (DeserializationException | UnsupportedSerializationFormatException ex) {
      responseBuilder.setStatus(HttpStatus.OK, ex.getMessage());
    }

    return serializer.serializeObject(responseBuilder.getResponse());
  }