Skip to content

Map Content Structure

When to Use

After inventory, map D7 content architecture to D11 entity structure. D7 field collections become D11 paragraphs, D7 nodes may become media entities, taxonomy structure may consolidate.

Decision

D7 structure D11 equivalent Notes
Field Collection Paragraph entity Requires separate migration, target_id + target_revision_id
Node with file fields Media entity Use media library, better asset management
Body field with images Media + entity reference Separate media migration, reference in body
Taxonomy terms (simple) Taxonomy terms Direct 1:1 migration
Taxonomy terms (complex fields) Custom entity or content type Consider if taxonomy appropriate

Pattern

Field collection to paragraph migration:

# Migration 1: Create paragraphs
id: d7_paragraph_slide
source:
  plugin: d7_field_collection_item
  field_name: field_slides
process:
  id: item_id
  type:
    plugin: default_value
    default_value: slide
  field_slide_title: field_slide_title
  field_slide_image:
    plugin: migration_lookup
    migration: d7_file
    source: field_slide_image
destination:
  plugin: entity:paragraph

# Migration 2: Reference paragraphs in node
id: d7_node_landing_page
process:
  field_slides:
    -
      plugin: migration_lookup
      migration: d7_paragraph_slide
      source: field_slides
      no_stub: true
    -
      plugin: sub_process
      process:
        target_id:
          - plugin: extract
            index: [0]
        target_revision_id:
          - plugin: extract
            index: [1]

Reference: /modules/contrib/migrate_plus/ for process plugins

Common Mistakes

  • Wrong: Mapping D7 nodes to D11 nodes when media entity better → Right: Use media for files/images, better organization
  • Wrong: Ignoring paragraph revision IDs → Right: Must set both target_id AND target_revision_id for paragraphs
  • Wrong: Not planning migration order → Right: Migrate dependencies first (users, files, taxonomy before nodes)
  • Wrong: Skipping field type changes → Right: Some D7 field types deprecated, require new field types in D11

See Also