Problem/Motivation
On a migration I'm doing from D7 to D9, it seems like the media types are not migrating properly. Currently my migration is failing in upgrade_d7_field_formatter_settings because one of the field formatters refers to a view mode which doesn't exist, resulting in this error:
[error] Error: Call to a member function getConfigDependencyName() on null in Drupal\Core\Entity\EntityDisplayBase->calculateDependencies() (line 289 of /var/www/html/web/core/lib/Drupal/Core/Entity/EntityDisplayBase.php) #0 /var/www/html/web/core/lib/Drupal/Core/Config/Entity/ConfigEntityBase.php(318): Drupal\Core\Entity\EntityDisplayBase->calculateDependencies()
Looking at the D7 site there are five media types and the image file type has three view modes configured in addition to the default. At the point the failure happens only one media type exists ("image") and none of the custom view modes for the media type exist on the D9 site (they don't just as view modes which can be enabled on the Image media type).
Right now I'm using the current dev snapshot of media_migration with #3181174 and #3181180 applied.
My suspicion is that the view modes are not being generated properly, and that maybe the media types should be migrated before it gets to the fields, field widgets and formatters.
For what it's worth, here's the list of migration plugins per the migrate:status command:
- upgrade_book_settings
- upgrade_commerce1_cart_settings
- upgrade_commerce1_shipping_flat_rate
- upgrade_commerce1_tax_type
- upgrade_d6_book_settings
- upgrade_d7_dblog_settings
- upgrade_d7_filter_settings
- upgrade_d7_global_theme_settings
- upgrade_d7_image_settings
- upgrade_d7_image_styles
- upgrade_d7_language_content_menu_settings
- upgrade_d7_language_types
- upgrade_d7_node_settings
- upgrade_d7_pathauto_settings
- upgrade_d7_search_settings
- upgrade_d7_system_authorize
- upgrade_d7_system_cron
- upgrade_d7_system_date
- upgrade_d7_system_file
- upgrade_d7_system_mail
- upgrade_d7_system_performance
- upgrade_d7_theme_settings
- upgrade_d7_user_flood
- upgrade_d7_user_mail
- upgrade_d7_user_settings
- upgrade_file_settings
- upgrade_menu_settings
- upgrade_system_image
- upgrade_system_image_gd
- upgrade_system_logging
- upgrade_system_maintenance
- upgrade_system_rss
- upgrade_system_site
- upgrade_taxonomy_settings
- upgrade_text_settings
- upgrade_update_settings
- upgrade_block_content_type
- upgrade_d7_field_collection_type
- upgrade_block_content_body_field
- upgrade_block_content_entity_display
- upgrade_block_content_entity_form_display
- upgrade_commerce1_currency
- upgrade_d7_filter_format
- upgrade_d7_user_role
- upgrade_d7_metatag_field_user
- upgrade_d7_metatag_field_instance_user
- upgrade_d7_metatag_field_instance_widget_settings_user
- upgrade_commerce1_product_type
- upgrade_commerce1_product_variation_type
- upgrade_d7_field
- upgrade_d7_file_entity_type_image
- upgrade_d7_node_type
- upgrade_d7_taxonomy_vocabulary
- upgrade_d7_field_instance
- upgrade_d7_file
- upgrade_language
- upgrade_default_language
- upgrade_user_picture_field
- upgrade_user_picture_field_instance
- upgrade_user_picture_entity_display
- upgrade_user_picture_entity_form_display
- upgrade_d7_user
- upgrade_commerce1_store
- upgrade_commerce1_product_variation_donation
- upgrade_commerce1_product_variation_product
- upgrade_commerce1_order_item_type
- upgrade_commerce1_order_item_product
- upgrade_commerce1_profile_type
- upgrade_commerce1_profile_billing
- upgrade_commerce1_profile_shipping
- upgrade_commerce1_order
- upgrade_commerce1_payment_gateway
- upgrade_commerce1_payment
- upgrade_d7_field_collection_related_links
- upgrade_commerce1_product_article
- upgrade_commerce1_product_attribute
- upgrade_commerce1_product_product_display
- upgrade_commerce1_profile_revision_billing
- upgrade_commerce1_profile_revision_shipping
- upgrade_d7_custom_block
- upgrade_d7_block
- upgrade_d7_metatag_field_node
- upgrade_d7_metatag_field_instance_node_advice
- upgrade_d7_metatag_field_instance_widget_settings_node_advice
- upgrade_d7_node_complete_advice
- upgrade_d7_field_collection_revisions_related_links
- upgrade_d7_metatag_field_instance_node_advice_topic
- upgrade_d7_metatag_field_instance_widget_settings_node_advice_topic
- upgrade_d7_node_complete_advice_topic
- upgrade_d7_metatag_field_instance_node_archive
- upgrade_d7_metatag_field_instance_widget_settings_node_archive
- upgrade_d7_node_complete_archive
- upgrade_d7_metatag_field_instance_node_chapter
- upgrade_d7_metatag_field_instance_widget_settings_node_chapter
- upgrade_d7_node_complete_chapter
- upgrade_d7_node_complete_e_letter
- upgrade_d7_metatag_field_instance_node_gallery
- upgrade_d7_metatag_field_instance_widget_settings_node_gallery
- upgrade_d7_node_complete_gallery
- upgrade_d7_metatag_field_instance_node_glossary_term
- upgrade_d7_metatag_field_instance_widget_settings_node_glossary_term
- upgrade_d7_node_complete_glossary_term
- upgrade_d7_metatag_field_instance_node_page
- upgrade_d7_metatag_field_instance_widget_settings_node_page
- upgrade_d7_node_complete_page
- upgrade_d7_node_complete_panel
- upgrade_d7_metatag_field_instance_node_teacher
- upgrade_d7_metatag_field_instance_widget_settings_node_teacher
- upgrade_d7_node_complete_teacher
- upgrade_d7_node_complete_webform
- upgrade_d7_book
- upgrade_d7_view_modes
- upgrade_d7_field_formatter_settings
- upgrade_d7_field_instance_widget_settings
- upgrade_d7_file_entity_type_audio
- upgrade_d7_file_entity_source_field_audio
- upgrade_d7_file_entity_source_field_config_audio
- upgrade_d7_file_entity_audio_public
- upgrade_d7_file_entity_type_document_private
- upgrade_d7_file_entity_source_field_document_private
- upgrade_d7_file_entity_source_field_config_document_private
- upgrade_d7_file_private
- upgrade_d7_file_entity_document_private
- upgrade_d7_file_entity_type_document
- upgrade_d7_file_entity_source_field_document
- upgrade_d7_file_entity_source_field_config_document
- upgrade_d7_file_entity_document_public
- upgrade_d7_file_entity_formatter_audio
- upgrade_d7_file_entity_formatter_document
- upgrade_d7_file_entity_formatter_document_private
- upgrade_d7_file_entity_source_field_image
- upgrade_d7_file_entity_source_field_config_image
- upgrade_d7_file_entity_formatter_image
- upgrade_d7_file_entity_type_remote_video
- upgrade_d7_file_entity_source_field_remote_video
- upgrade_d7_file_entity_source_field_config_remote_video
- upgrade_d7_file_entity_formatter_remote_video
- upgrade_d7_file_entity_image_public
- upgrade_d7_file_entity_video_youtube
- upgrade_d7_file_entity_widget_audio
- upgrade_d7_file_entity_widget_document
- upgrade_d7_file_entity_widget_document_private
- upgrade_d7_file_entity_widget_image
- upgrade_d7_file_entity_widget_remote_video
- upgrade_d7_file_plain_type_document_private
- upgrade_d7_file_plain_source_field_document_private
- upgrade_d7_file_plain_source_field_config_document_private
- upgrade_d7_file_plain_formatter_document_private
- upgrade_d7_file_plain_private_text
- upgrade_d7_file_plain_widget_document_private
- upgrade_d7_language_content_settings
- upgrade_d7_language_negotiation_settings
- upgrade_d7_media_view_modes
- upgrade_d7_menu
- upgrade_d7_menu_links
- upgrade_d7_metatag_field_instance_node_article
- upgrade_d7_metatag_field_instance_node_product_display
- upgrade_d7_metatag_field_taxonomy_term
- upgrade_d7_metatag_field_instance_taxonomy_term_shop_categories
- upgrade_d7_metatag_field_instance_taxonomy_term_topics
- upgrade_d7_metatag_field_instance_widget_settings_node_article
- upgrade_d7_metatag_field_instance_widget_settings_node_product_display
- upgrade_d7_metatag_field_instance_widget_settings_taxonomy_term_shop_categories
- upgrade_d7_metatag_field_instance_widget_settings_taxonomy_term_topics
- upgrade_d7_node_title_label
- upgrade_d7_pathauto_patterns
- upgrade_d7_shortcut_set
- upgrade_d7_shortcut
- upgrade_d7_shortcut_set_users
- upgrade_d7_taxonomy_term_shop_categories
- upgrade_d7_taxonomy_term_topics
- upgrade_d7_taxonomy_term_tags
- upgrade_d7_taxonomy_term_gallery_metadata
- upgrade_d7_url_alias
- upgrade_language_prefixes_and_domains
Proposed resolution
?
Remaining tasks
?
User interface changes
?
API changes
?
Data model changes
?
Comments
Comment #2
wim leersCan you please test with #3198938: Harden \Drupal\media_migration\MigratePluginAlterer::alterFieldMigrations(): dependency on d7_file_entity_type is not always added when necessary to d7_field_instance applied? It's at minimum tangentially related.
Comment #3
damienmckennaThat patch did not make any difference, it still failed when it tried to migrate field formatter settings for a view mode that didn't exist.
Comment #4
damienmckennaI manually exported the config, changed upgrade_d7_field_formatter_settings to the following:
I ran upgrade_d7_media_view_modes first, then reset-status and rollback'd upgrade_d7_field_formatter_settings before running it again, but it didn't fix the problem, it still failed with the same error :-\
Comment #5
damienmckennaNote: after upgrade_d7_media_view_modes ran it *did* at least have the view modes available. I wonder if the view mode needs to be enabled first, because none of them were?
Comment #6
damienmckennaI managed to get phpstorm debugging the migrate:import process.. when it fails it is processing a "link" field named "field_link" on the "image" media type.
Is there anything I could provide that might help identify the source of this problem?
Comment #7
damienmckennaPer huzooka during the 2021-03-18 migrate meeting:
Changing this to a feature request.
Comment #8
damienmckennaHere's what I'm using to work around this: