@Override
  @Transactional
  public String persist() {
    info("Atempt to persist request {0} for user {1}", getInstance(), utilisateurCourant);
    try {
      // Verification du pseudo
      if (!annonceHome.validerDates(false)) {
        return "dates_incorrectes";
      }
      // Maj du lieu
      getInstance().setLieuDepart(annonceHome.getLieuDepart().getLieu());
      getInstance().setLieuArrivee(annonceHome.getLieuArrivee().getLieu());

      getInstance().setDateMaj(new Date());
      getInstance().setUtilisateur(utilisateurCourant);
      getInstance().setNote(demandeHelper.getNote(getInstance()));
      // Enregistrement de la demande
      String retour = super.persist();
      if (!PERSISTED.equals(retour)) {
        throw new BSException("error.demande.create");
      }

      // Add it to the home list
      events.raiseTransactionSuccessEvent("demandeAdded", getInstance());

      info("Persisted request {0} for user {1}", getInstance(), utilisateurCourant);

      return PERSISTED;
    } catch (BSException bse) {
      error(
          "Error while persisting request {0} for user {1} : {2} ",
          getInstance(), utilisateurCourant, bse.getMessage());
      throw bse;
    } catch (Exception e) {
      error(
          "Error while persisting request {0} for user {1} : {2} ",
          getInstance(), utilisateurCourant, e.getMessage());
      throw new BSException("error.demande.create");
    }
  }