@Override
 public void execute(Caso caso) throws ActionExecutionException {
   if (caso.getTipoCaso().equals(EnumTipoCaso.PREVENTA.getTipoCaso())) {
     Cliente cliente = caso.getEmailCliente().getCliente();
     List<Caso> lista =
         getJpaController().getCasoJpa().findDuplicatedCasosPreventaByClient(cliente);
     if (lista == null) {
       return;
     }
     Caso casoPreventaUnico = lista.get(0);
     lista.remove(0);
     if (casoPreventaUnico.getCasosHijosList() == null) {
       casoPreventaUnico.setCasosHijosList(new LinkedList<Caso>());
     }
     while (!lista.isEmpty()) {
       Caso casoPreventa = lista.get(0);
       lista.remove(0);
       if ((casoPreventa.getCasosHijosList() != null)
           && (!casoPreventa.getCasosHijosList().isEmpty())) {
         for (Caso casoHijo : casoPreventa.getCasosHijosList()) {
           casoHijo.setIdCasoPadre(casoPreventaUnico);
           if (!casoPreventaUnico.getCasosHijosList().contains(casoHijo)) {
             casoPreventaUnico.getCasosHijosList().add(casoHijo);
           }
           try {
             getJpaController().mergeCasoWithoutNotify(casoPreventaUnico);
             getJpaController().mergeCasoWithoutNotify(casoHijo);
           } catch (Exception ex) {
             Logger.getLogger(RemoveDuplicatedCasoPreventaAction.class.getName())
                 .log(Level.SEVERE, null, ex);
           }
         }
       }
       casoPreventa.setCasosHijosList(null);
       try {
         getJpaController().mergeCasoWithoutNotify(casoPreventa);
         getJpaController().getCasoJpa().destroy(casoPreventa.getIdCaso());
       } catch (Exception ex) {
         Logger.getLogger(RemoveDuplicatedCasoPreventaAction.class.getName())
             .log(Level.SEVERE, null, ex);
       }
     }
   }
 }