/**
   * Lookup and copy all in migration events from one individual to another
   *
   * @param primary the individual who will receive the copied events
   * @param toMergeFrom the individual to lookup events on
   * @return a copy of any in migrations from the toMergeFrom individual
   */
  private List<InMigration> getInMigrationEvents(Individual primary, Individual toMergeFrom) {

    List<InMigration> events = new ArrayList<InMigration>();

    // first attempt to merge any in migration events
    List<InMigration> inMigrations =
        genericDao.findListByProperty(InMigration.class, "individual", toMergeFrom);

    for (InMigration inMig : inMigrations) {
      // make a copy of the in migration & residency
      InMigration inMigNew = copyInMigration(primary, inMig);
      Residency residencyNew = copyResidency(primary, inMig.getResidency());
      inMigNew.setResidency(residencyNew);
      events.add(inMigNew);
    }

    return events;
  }