private void checkPendingEvent(String eventId)
        throws UnexpectedResultReturnedFromDatabaseException {
      try {
        String eventTypeCode = openContractBusinessTransactionDao.getEventType(eventId);
        String contractHash;
        String negotiationId;
        String negotiationIdFromDatabase;
        ContractType contractType;
        BusinessTransactionMetadata businessTransactionMetadata;
        ContractTransactionStatus contractTransactionStatus;
        if (eventTypeCode.equals(EventType.INCOMING_BUSINESS_TRANSACTION_CONTRACT_HASH.getCode())) {
          // Check if contract is created:
          List<Transaction<BusinessTransactionMetadata>> pendingTransactionList =
              transactionTransmissionManager.getPendingTransactions(Specialist.UNKNOWN_SPECIALIST);
          for (Transaction<BusinessTransactionMetadata> record : pendingTransactionList) {
            businessTransactionMetadata = record.getInformation();
            contractHash = businessTransactionMetadata.getContractHash();
            if (openContractBusinessTransactionDao.isContractHashExists(contractHash)) {
              negotiationId = businessTransactionMetadata.getNegotiationId();
              negotiationIdFromDatabase = businessTransactionMetadata.getNegotiationId();
              if (negotiationId.equals(negotiationIdFromDatabase)) {
                contractTransactionStatus = ContractTransactionStatus.PENDING_CONFIRMATION;
              } else {
                contractTransactionStatus = ContractTransactionStatus.HASH_REJECTED;
              }
              openContractBusinessTransactionDao.updateContractTransactionStatus(
                  contractHash, contractTransactionStatus);
              openContractBusinessTransactionDao.updateEventStatus(
                  contractHash, EventStatus.NOTIFIED);
              transactionTransmissionManager.confirmReception(record.getTransactionID());
            }
          }
        }

        if (eventTypeCode.equals(
            EventType.INCOMING_CONFIRM_BUSINESS_TRANSACTION_CONTRACT.getCode())) {
          // Check if contract hash was sent.
          List<Transaction<BusinessTransactionMetadata>> pendingTransactionList =
              transactionTransmissionManager.getPendingTransactions(Specialist.UNKNOWN_SPECIALIST);
          for (Transaction<BusinessTransactionMetadata> record : pendingTransactionList) {
            businessTransactionMetadata = record.getInformation();
            contractHash = businessTransactionMetadata.getContractHash();
            if (openContractBusinessTransactionDao.isContractHashSentConfirmation(contractHash)) {
              openContractBusinessTransactionDao.updateContractTransactionStatus(
                  contractHash, ContractTransactionStatus.PENDING_RESPONSE);
              openContractBusinessTransactionDao.updateEventStatus(
                  contractHash, EventStatus.NOTIFIED);
              transactionTransmissionManager.confirmReception(record.getTransactionID());
            }
          }
        }

        if (eventTypeCode.equals(
            EventType.INCOMING_CONFIRM_BUSINESS_TRANSACTION_RESPONSE.getCode())) {
          // TODO: check if contract hash was sent.
          List<Transaction<BusinessTransactionMetadata>> pendingTransactionList =
              transactionTransmissionManager.getPendingTransactions(Specialist.UNKNOWN_SPECIALIST);
          for (Transaction<BusinessTransactionMetadata> record : pendingTransactionList) {
            businessTransactionMetadata = record.getInformation();
            contractHash = businessTransactionMetadata.getContractHash();
            if (openContractBusinessTransactionDao.isContractHashPendingResponse(contractHash)) {
              openContractBusinessTransactionDao.updateContractTransactionStatus(
                  contractHash, ContractTransactionStatus.CONTRACT_OPENED);
              openContractBusinessTransactionDao.updateEventStatus(
                  contractHash, EventStatus.NOTIFIED);
              contractType = openContractBusinessTransactionDao.getContractType(contractHash);
              switch (contractType) {
                case PURCHASE:
                  customerBrokerContractPurchaseManager
                      .updateStatusCustomerBrokerPurchaseContractStatus(
                          contractHash, ContractStatus.PENDING_PAYMENT);
              }
              transactionTransmissionManager.confirmReception(record.getTransactionID());
              raiseNewContractEvent();
            }
          }
        }
        // TODO: look a better way to deal with this exceptions
      } catch (CantDeliverPendingTransactionsException e) {
        e.printStackTrace();
      } catch (CantUpdateRecordException e) {
        e.printStackTrace();
      } catch (CantupdateCustomerBrokerContractPurchaseException e) {
        e.printStackTrace();
      } catch (CantConfirmTransactionException e) {
        e.printStackTrace();
      }
    }