diff --git a/core/modules/migrate/src/Plugin/migrate/process/Migration.php b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
index 8520a5e..2aa1899 100644
--- a/core/modules/migrate/src/Plugin/migrate/process/Migration.php
+++ b/core/modules/migrate/src/Plugin/migrate/process/Migration.php
@@ -16,7 +16,122 @@
 /**
  * Calculates the value of a property based on a previous migration.
  *
- * @link https://www.drupal.org/node/2149801 Online handbook documentation for migration process plugin @endlink
+ * It is important to maintain relationships among content coming from the
+ * source site, but in most instances the unique identifiers of the content
+ * change in the process of migration. For example, on the source site a given
+ * user account may have an "author" ID of 123, but the Drupal user account
+ * created from it may have a uid of 456. The migration process maintains the
+ * relationships between source and destination identifiers in map tables, and
+ * this information is leveraged by the migration process plugin.
+ *
+ * Available configuration keys
+ * - migration: An array of migration ids.
+ * - source_ids: (optional) An array keyed by migration ids with values that are
+ *   a list of source properties.
+ * - stub_id: (optional) Identifies which entry in the migration array will be
+ *   used to create any stub entities.
+ *
+ * Examples:
+ *
+ * Consider a node migration, where you want to maintain authorship. If you have
+ * migrated the user accounts in a migration named "users", you would specify
+ * the following:
+ *
+ * @code
+ * process:
+ *   uid:
+ *     plugin: migration
+ *     migration: users
+ *     source: author
+ * @endcode
+ *
+ * This takes the value of the author property in the source data, and looks it
+ * up in the map table associated with the users migration, returning the
+ * resulting user ID and assigning it to the destination uid property.
+ *
+ * The value of migration can be a list of migration ids. When using multiple
+ * migrations it is possible each use different source identifiers. In this
+ * case one can use source_ids which is an array keyed by the migration ids
+ * and the value is a list of source properties with the same features as normal
+ * source (see the get plugin for more on this).
+ *
+ * @code
+ * process:
+ *   uid:
+ *   plugin: migration
+ *   migration:
+ *     - users
+ *     - members
+ *   source_ids:
+ *     users:
+ *       - author
+ *     members:
+ *       - author
+ * @endcode
+ *
+ * If the migration does not find the source ID in the migration map it will
+ * create a stub entity for the relationship to use. This stub is generated by
+ * the migration provided. In the case of multiple migrations the first value of
+ * migration list will be used, but you can select the migration you wish to
+ * use to create the stub:
+ *
+ * @code
+ * process:
+ *   uid:
+ *     plugin: migration
+ *     migration:
+ *       - users
+ *       - members
+ *     source_ids:
+ *       users:
+ *         - author
+ *       members:
+ *         - author
+ *     stub_id: members
+ * @endcode
+ *
+ * Here, the value of stub_id selects the members migration to create any stub
+ * entities, overriding the default of the users migration.
+ *
+ * To prevent the creation of a stub entity when no relationship is found in the
+ * migration map, use no_stub. It can be set to any non-empty value:
+ *
+ * @code
+ * process:
+ *   uid:
+ *   plugin: migration
+ *   migration: users
+ *   no_stub: true
+ *   source: author
+ * @endcode
+ *
+ * Scenario:
+ *   - field_drupal6_pages is a drupal 6 node reference field.
+ *   - field_drupal8_pages is a drupal 8 entity reference field.
+ *
+ * @code
+ * field_drupal8_pages:
+ *   plugin: migration
+ *   migration: ya_node_page
+ *   source: field_drupal6_pages
+ * @endcode
+ *
+ * Scenario:
+ *   - field_drupal7_pages is a drupal 7 entity reference field.
+ *   - field_drupal8_pages is a drupal 8 entity reference field.
+ *
+ * @code
+ * field_drupal8_pages:
+ *   plugin: iterator
+ *   source: field_drupal7_pages
+ *   process:
+ *     target_id:
+ *       plugin: migration
+ *       migration: ya_node_page
+ *       source: target_id
+ * @endcode
+ *
+ * @see \Drupal\migrate\Plugin\MigrateProcessInterface
  *
  * @MigrateProcessPlugin(
  *   id = "migration"
