Score:0

Cannot set subscriptions_status on migration from csv

us flag

Modules used: Simplenews and Migrate.

I have a single newsletter, to which I want to subscribe all users imported from the csv file.

This is my csv file content:

id,email,date_submitted

This is my yml import file

langcode: en
status: true
dependencies: {  }
id: test_subscriber
class: null
field_plugin_method: null
cck_plugin_method: null
migration_tags:
   - CSV
migration_group: test
label: 'Test Subscriber'
source:
  plugin: csv
  path: sites/default/import/subscriber.csv
  delimiter: ','
  enclosure: '"'
  header_row_count: 1
  track_changes: true
  ids:
    - id
process:
  type:
    plugin: default_value
    default_value: simplenews_subscriber
  created: date_submitted
  mail: email
  status:
    plugin: default_value
    default_value: 1
  subscriptions:
    plugin: sub_process
    source: subscriptions
    process:
      target_id:
        plugin: default_value
        default_value: my_newsletter
      status:
        plugin: default_value
        default_value: 1
      timestamp: date_submitted
      source:
        plugin: default_value
        default_value: website
destination:
  plugin: 'entity:simplenews_subscriber'
migration_dependencies:
  required: {  }
  optional: {  }

I can successfully import all the user with email and timestamp but the users are not subscribed to the newsletter (my_newsletter).

In database I have the table "simplenews_subscriber__subscriptions but the columns: "entity_id", "subscription_target_id", "subscription_status", "subscription_timestamp" and "subscriptions_source" doesn't get populated.

If I change the subscription setting in the yml file as follow:

    subscriptions:
      target_id:
        plugin: default_value
        default_value: my_newsletter
      status:
        plugin: default_value
        default_value: 1
      timestamp:
        plugin: default_value
        default_value: date_submitted
      source:
        plugin: default_value
        default_value: website

In database table "simplenews_subscriber__subscriptions, the columns: "entity_id" and "subscription_target_id" get populated but the columns: "subscription_status", "subscription_timestamp" and "subscriptions_source" are filled with null instead of data.

The end result is a list of user unsubscribed to my_newsletter (from subscriber edit page the my_newsletter checkbox is unchecked)

Thanks in advance to anybody willing to give me a tip.

Score:0
us flag

I finally was able to solve the issue. Instead of this yml section code

subscriptions:
  target_id:
    plugin: default_value
    default_value: my_newsletter

I changed to this code

subscriptions/target_id:
  plugin: default_value
  default_value: my_newsletter

Here the full code

langcode: en
status: true
dependencies: {  }
id: test_subscriber
class: null
field_plugin_method: null
cck_plugin_method: null
migration_tags:
  - CSV
migration_group: test
label: 'Test Subscriber'
source:
  plugin: csv
  path: sites/default/import/subscriber.csv
  delimiter: ','
  enclosure: '"'
  header_row_count: 1
  track_changes: true
  ids:
    - id
process:
  type:
    plugin: default_value
    default_value: simplenews_subscriber
  created: date_submitted
  mail: email
  status:
    plugin: default_value
    default_value: 1
  subscriptions/target_id:
    plugin: default_value
    default_value: my_newsletter
  subscriptions/status:
    plugin: default_value
    default_value: 1
  subscriptions/timestamp:
    plugin: default_value
    default_value: date_submitted
  subscriptions/source:
    plugin: default_value
    default_value: website
destination:
  plugin: 'entity:simplenews_subscriber'
migration_dependencies:
  required: {  }
  optional: {  }
mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.