I haven't done a D7 to D8 migration, but for a migration to D8 from an sql source, I find it's best to do a "child" migration before its "parent. So do the users, terms, and files before migrating the articles. And then if you roll back, do that in the reverse order: parents before children.
This blog post was helpful to me: http://www.mediacurrent.com/blog/migrating-content-references-drupal-8
This is the way I organize things in my migrations...
In the child migration:
In the parent migration:
# for the label field and any other non-reference fields, create 'stub' values in this manner:
default_value: 'Stub Label'
Note: if some of your parent entities don't have any child items, you can use the skip_on_empty process plugin as follows to make sure those parent entities are still migrated properly. (If child items are required for all parent entities, you can omit from the migration any parent entities with missing children by changing the 'method' from 'process' to 'row'.)