private void putDynamicEvent(Map<String, List<DBObject>> eventMap, Event event) {
    String eventCollection;
    Map<String, String> headers = event.getHeaders();
    String eventDb = headers.get(DB_NAME);
    eventCollection = headers.get(COLLECTION);

    if (!StringUtils.isEmpty(eventDb)) {
      eventCollection = eventDb + NAMESPACE_SEPARATOR + eventCollection;
    } else {
      eventCollection = dbName + NAMESPACE_SEPARATOR + eventCollection;
    }

    if (!eventMap.containsKey(eventCollection)) {
      eventMap.put(eventCollection, new ArrayList<DBObject>());
    }

    List<DBObject> documents = eventMap.get(eventCollection);
    addEventToList(documents, event);
  }
  private List<DBObject> addEventToList(List<DBObject> documents, Event event) {
    if (documents == null) {
      documents = new ArrayList<DBObject>(batchSize);
    }

    DBObject eventJson;
    byte[] body = event.getBody();
    if (autoWrap) {
      eventJson = new BasicDBObject(wrapField, new String(body));
    } else {
      try {
        eventJson = (DBObject) JSON.parse(new String(body));
      } catch (Exception e) {
        logger.error("Can't parse events: " + new String(body), e);
        return documents;
      }
    }
    documents.add(eventJson);

    return documents;
  }