@Util
  // Este @Util es necesario porque en determinadas circunstancias crear(..) llama a editar(..).
  public static void frmRegistrar(
      Long idSolicitud, Long idRegistroModificacion, Long idRegistro, String botonRegistrar) {
    checkAuthenticity();
    if (!permisoFrmRegistrar("editar")) {
      Messages.error("No tiene permisos suficientes para realizar la acción");
    }

    SolicitudGenerica dbSolicitud =
        SolicitudPresentarModificacionFAPController.getSolicitudGenerica(idSolicitud);
    idRegistroModificacion =
        dbSolicitud.registroModificacion.get(dbSolicitud.registroModificacion.size() - 1).id;
    RegistroModificacion registroModificacion =
        RegistroModificacion.findById(idRegistroModificacion);
    Registro dbRegistro =
        SolicitudPresentarModificacionFAPController.getRegistro(idRegistroModificacion, idRegistro);

    if (!Messages.hasErrors()) {
      try {
        PresentacionModificacionFapController.invoke(
            "comprobarFechaLimitePresentacion", idSolicitud);
      } catch (Throwable e1) {
        log.error(
            "Hubo un problema al invocar los métodos comprobarFechaLimitePresentacion: "
                + e1.getMessage());
        Messages.error("Error al validar las comprobaciones de la Fecha Límite de Presentación");
      }
    }

    if (!Messages.hasErrors()) {
      try {
        PresentacionModificacionFapController.invoke("beforeRegistro", idSolicitud);
      } catch (Throwable e1) {
        log.error("Hubo un problema al invocar los métodos beforeRegistro: " + e1.getMessage());
        Messages.error("Error al validar elementos previos al Registro");
      }
    }

    if (!Messages.hasErrors()) {

      try {
        TramiteBase tramite =
            PresentacionModificacionFapController.invoke("getTramiteObject", idSolicitud);
        try {
          dbRegistro.fasesRegistro.borrador = true;
          dbRegistro.fasesRegistro.firmada = true;
          tramite.registrar();
          if (dbRegistro.fasesRegistro.clasificarAed) {
            tramite.cambiarEstadoSolicitud();
            registroModificacion.fechaRegistro = dbRegistro.informacionRegistro.fechaRegistro;
            registroModificacion.save();
          } else {
            play.Logger.error(
                "No se registro la solicitud de modificación correctamente por lo que no se cambiara el estado de la misma.");
            Messages.error("Error al intentar sólo registrar.");
          }
          if (!Messages.hasErrors()) {
            try {
              PresentacionModificacionFapController.invoke("afterRegistro", idSolicitud);
            } catch (Throwable e1) {
              log.error(
                  "Hubo un problema al invocar los métodos afterRegistro: " + e1.getMessage());
              Messages.error("Error al validar elementos posteriores al registro");
            }
          }
        } catch (RegistroServiceException e) {
          log.error(
              "Error al intentar registrar en la presentacion en frmRegistrar: " + e.getMessage());
          Messages.error("Error al intentar sólo registrar");
        }
      } catch (Throwable e1) {
        log.error(
            "Error al invocar al TramiteBase en frmRegistrar de SolicitudPresentarModificacionFAPController: "
                + e1.getMessage());
        Messages.error("Error al intentar sólo registrar");
      }
    }

    if (!Messages.hasErrors()) {
      SolicitudPresentarModificacionFAPController.frmRegistrarValidateRules();
    }
    if (!Messages.hasErrors()) {
      dbSolicitud.save();
      Messages.ok("Solicitud Registrada correctamente");
      log.info(
          "Acción Editar de página: "
              + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html"
              + " , intentada con éxito");
      redirect("PresentarFAPController.index", "editar", idSolicitud, dbSolicitud.registro.id);
    } else
      log.info(
          "Acción Editar de página: "
              + "gen/SolicitudPresentarModificacionFAP/SolicitudPresentarModificacionFAP.html"
              + " , intentada sin éxito (Problemas de Validación)");
    SolicitudPresentarModificacionFAPController.frmRegistrarRender(
        idSolicitud, idRegistroModificacion, idRegistro);
  }