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));

Comments

rfay’s picture

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

    file_usage_add($file, 'AmazonS3', 'preexisting', $file->fid);
patrick.thurmond@gmail.com’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?

Example:

    $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')
         ->arguments($jpg_arguments);

Patrick Thurmond
patrickthurmond.com