/** general history event insert behavior */
  protected void insertOrUpdate(HistoryEvent historyEvent) {

    final DbSqlSession dbSqlSession = getDbSqlSession();

    String eventType = historyEvent.getEventType();
    if (isInitialEvent(eventType)) {
      dbSqlSession.insert(historyEvent);
    } else {
      if (dbSqlSession.findInCache(historyEvent.getClass(), historyEvent.getId()) == null) {
        dbSqlSession.update(historyEvent);
      }
    }
  }