Migrate custom source plugin not found I have a fairly simple D6->D8 migration, and I need a custom source plugin for one of my node migrations. As far as I can tell, I have everything written and structured properly, but when I click on the migration group in the admin UI, I get a message that my source plugin doesn't exist.

Here's the relevant part of my node migration config:

In /my-module/config/install/migrate_plus.migration.video.yml:  

id: video
label: Video
migration_tags:
  - Drupal 6
deriver: Drupal\node\Plugin\migrate\D6NodeDeriver
migration_group: node
source:
  plugin: mrctvVideoSource
  node_type: video
process:


and my source plugin in /my_module/src/Plugin/migrate/source/mrctvVideoSource.php:

namespace Drupal\migrate_mrctv\Plugin\migrate\source;

use Drupal\migrate\Plugin\migrate\source\SqlBase;
use Drupal\migrate\Row;

/**
 * Source plugin for MRCTV video nodes.
 *
 */
class mrctvVideoSource extends SqlBase {

  /**
   * @MigrateSource(
   *   id = "mrctvVideoSource"
   * )
   */
  public function query() {
    return $this-&gt;select('view_videos', 'vv')
                -&gt;fields('vv', array_keys($this-&gt;fields()));
  }

  /**
   * {@inheritdoc}
   */
  public function fields() {
    $fields = [
      'video_data' =&gt; $this-&gt;t('Video Data'),
      'thumbnail_data' =&gt; $this-&gt;t('Thumbnail Data'),
      'show_ads' =&gt; $this-&gt;t('Show Ads'),
      'raw_s3_file' =&gt; $this-&gt;t('Raw S3 File'),
      'nid' =&gt; $this-&gt;t('Node ID'),
      'vid' =&gt; $this-&gt;t('Version ID'),
      'title' =&gt; $this-&gt;t('Nond Title'),
      'node_created' =&gt; $this-&gt;t('Created'),
      'node_changed' =&gt; $this-&gt;t('Changed'),
      'node_uid' =&gt; $this-&gt;t('Node User'),
      'node_body' =&gt; $this-&gt;t('Body'),
      'teaser' =&gt; $this-&gt;t('Teaser'),
      'revsion_uid' =&gt; $this-&gt;t('Revision UID'),
      'log' =&gt; $this-&gt;t('Revision Log'),
      'timestamp' =&gt; $this-&gt;t('Revision Timestamp'),
    ];

    return $fields;
  }
}


From what I can tell, I have everything named and annotated properly and in the correct locations, but I'm obviously missing something.  What is it?

Thanks.

UPDATE: Per Mike Ryans'suggestion below, I changed the id of my plugin (after clearing cache) from 'mrctvVideoSource' to 'mrctv_video_source', both in the migration yml file and the id annotation in my plugin definition (is there anywhere else I need to change it?). But now, after uninstalling my module (and having to manually delete the config records in the config database again, config_devel doesn't seem to be clearing anything out), my node migrations are not even listed on the Migration page. Sigh. Still troubleshooting...
I think you need to have your annotation outside of the class

/**
 * Source plugin for MRCTV video nodes.
 *
 * @MigrateSource(
 *   id = "mrctvVideoSource"
 * )
 */
class mrctvVideoSource extends SqlBase {