Unable to import due to "Field 'sourceid2' doesn't have a default value"
Ok, I resolved this issue. I am new to Migrate module and I think the message was not clear enough.

First I have mapped to complex foreign key with two columns:

&lt;?php
    $this-&gt;map = new MigrateSQLMap($this-&gt;machineName,
        array(
          'id' =&gt; array(
            'type' =&gt; 'int',
            'description' =&gt; t('Article Source ID'),
            'alias' =&gt; 'N',
          ),
          'id2' =&gt; array( // no longer exists in my code
            'type' =&gt; 'int',
            'description' =&gt; t('Article Source ID'),
            'alias' =&gt; 'N',
          ),
        ),
        MigrateDestinationNode::getKeySchema()
      );
?&gt;


But then I used only the first foreign key. The database table storing the mapping between source and destination had two columns sourceId, because of first attempt to run migration, but hasn't updated with the new migration in the code.

I dropped the migration_map table and everything was freshly rebuild and works like a charm.