Migrating to a Field Collection I'm working on a project that requires a CSV of speaking engagements to be migrated to Drupal. With Migrate, I've been able to migrate over basic fields, like name, title, etc. 

However, the speaker field is a field collection, which is driving me nuts. While the field collection allows unlimited speakers, the CSV only has one per event. I've tried using the node_insert hook, as described here but to no avail. Is there a better/easier way to migrate a single speaker into the speaker field collection?
There is a Field Collection issue with a Field Collection Migrate destination (in the patch in comment #222). The added field_collection.migrate.inc file contain a bit of documentation on how to use it.

In you case, I guess you have a speaking engagements migration class which load your CSV file and create Speaking engagement nodes. You will then need a speaker migration class to load the same CSV file and create Speaker field collections. This second migration class depends on the first one, so when a Speaker is created, it will be linked to its Speaking engagement.

Something like

class SpeakerMigration extends Migration {

  public function __construct($arguments) {
    parent::__construct($arguments);
    $this-&gt;dependencies = array('SpeakingEngagementMigration');
    $this-&gt;source = new MigrateSourceCSV('path/to/speaking/engagement.csv', array(), array());
    $this-&gt;destination = new MigrateDestinationFieldCollection('field_speakers',array('host_entity_type' =&gt; 'node'));
    $this-&gt;map = new MigrateSQLMap($this-&gt;machineName, array(
      'id' =&gt; array(
        'type' =&gt; 'char',
        'length' =&gt; 40,
        'not null' =&gt; TRUE,
        'description' =&gt; t("Speaking Engagement's identifier"),
      )), MigrateDestinationFieldCollection::getKeySchema());
    $this-&gt;addFieldMapping('host_entity_id', 'id')
      -&gt;sourceMigration('SpeakingEngagementMigration');

    // ... Add field mapping here.
  }
}