Currently, the destination bundle is set via a process plugin default_value (or some such manner). This results in some very nasty things and the near impossibility of determining what is the eventual destination bundle. This blocks both core (and contrib ( ) from determining the destination bundle.
The destination bundle currently can be set in a prepareRow, with a default_value process plugin or a static value.
The destination plugin should accept the destination bundle as so:
entity:entity_type:bundle (e.g. entity:node:article)
I'd like to propose that if no bundle is provided, then an exception is thrown (or some rather strong warning)
We still need to account for the possibility of the destination bundle being dynamically set in the process phase, but 95% of the time it should be set in the destination plugin. Use case for proces plugin: term migration that is splitting up a source data of 'tags' into multiple destination vocabularies.
Some of the logic incould be stolen and used here to jump start things.
User interface changes
Yes, add a bundle to the destination plugin definition in the yml
Provide a getter (and associated interface updates) for the bundle. Probably should add an isBundleable() for good measure.
Data model changes