Last updated 7 October 2011. Created on 14 February 2011.
Edited by eporama, mikeryan, rfay. Log in to edit this page.

If you are populating file fields on migration, and don't want the files to be deleted on rollback (e.g., you copied the files manually into the Drupal files directory and are using file_link to point to the pre-existing file), use the 'preserve_files' argument in your mapping:

    $this->addFieldMapping('field_commerce_file_s3', 'commerce_file_s3')
      ->arguments(array('preserve_files' => TRUE));

Similarly, to keep files imported by a migration into MigrateDestinationFile, pass the 'preserve_files' option to the constructor:

    $this->destination = new MigrateDestinationFile(array('preserve_files' => TRUE));

Looking for support? Visit the forums, or join #drupal-support in IRC.


rfay’s picture

I'm attempting to deal with this in a custom MigrateCommerceFileFieldHandler::buildFileArray() using:

    file_usage_add($file, 'AmazonS3', 'preexisting', $file->fid);
pthurmond’s picture

I am using MigrateFileFieldHandler to generate my arguments. How do I work this parameter in with that? Do I chain another argument call onto this?


    $jpg_arguments = MigrateFileFieldHandler::arguments(NULL,
      'file_link', FILE_EXISTS_RENAME, 'en', array('source_field' => 'jpg_name'),
      array('source_field' => 'jpg_filename'), array('source_field' => 'jpg_filename'));
    $this->addFieldMapping('field_image', 'jpg_uri')

Patrick Thurmond