#StackBounty: #migration #plugins Skip_on_empty row method working, but entity still created

Bounty: 50

I am migrating a field in a node to a paragraph. I am trying to only create the paragraphs where the field has values. That field is an entity reference to another node.

source:
  plugin: d7_node
  node_type: my_node
process:
  target_id:
    -
      plugin: get
      source: node_er_field/0/target_id
  parent_id:
    -
      plugin: get
      source: nid
  parent_type:
    -
      plugin: default_value
      default_value: node
  er_paragraph_field:
    -
      plugin: skip_on_empty
      method: row
      source: '@target_id'
      message: 'node skipped'
    -
      plugin: get
      source: node_er_field
destination:
  plugin: 'entity_reference_revisions:paragraph'
  default_bundle: paragraph_er
migration_dependencies: null

When I run the migration, I get a strange reported result though. Of the first two nodes, one has something in the field, and one doesn’t.
drush mim group_paragraph_field_node –limit=2
Processed 3 items (2 created, 0 updated, 0 failed, 1 ignored)

When I look at messages. The skip_on_empty message appears. But the field that it supposedly skipped is still created. I can’t for the life of me understand why this is happening. The row method is being fired. I’ve tried every permutation I can think of in terms of doing the skip_on_empty, within the same pipeline or like this one. With the target id or just with the field as is. I’ve tried another custom plugin skip_on_empty_array. Either its 2 created and 0 or 1 ignored, but I always get 2 paragraphs out of it.

I’ve gotten skip_on_empty to work in other contexts. I don’t understand why it is not working here. Had a hard time finding a similar example as well.

Any thoughts?


Get this bounty!!!

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.