Placing a programatically created menu I'm creating a menu programatically using this code
$this-&gt;menu = $this-&gt;entityTypeManager-&gt;getStorage('menu')-&gt;create(
    [
      'id' =&gt; $properties['id'],
      'label' =&gt; $properties['label'],
      'langcode' =&gt; $properties['language'],
      'status' =&gt; TRUE,
    ]
  );
  // Save the menu.
  $this-&gt;menu-&gt;save();

When visiting the block ui I see the block is already created. It appears that I do not have responsibility for creating this block, although I don't seem to be able to load the block straight after creation of the menu. I need to place this block in a specific region programatically. What would be the preferred method of doing this be?
After an intensive debug session I discovered the block is actually created when you place blocks and select the menu you have just created through the Block UI. That didn't fit with my requirements to place the block programatically so I took a look at the structure of an existing menu block and replicated that.
$this-&gt;block = $this-&gt;entityTypeManager-&gt;getStorage('block')-&gt;create(
    [
      'id' =&gt; $this-&gt;getBid($form_state-&gt;getValue('language')),
      'region' =&gt; 'header',
      'plugin' =&gt; 'system_menu_block:' . $this-&gt;menu-&gt;id(),
      'settings' =&gt; [
        'id' =&gt; 'system_menu_block:' . $this-&gt;menu-&gt;id(),
        'label' =&gt; $this-&gt;menu-&gt;label(),
        'provider' =&gt; 'system',
        'level' =&gt; 1,
        'depth' =&gt; 0,
        'expand_all_items' =&gt; FALSE,
      ],
      'theme' =&gt; 'mytheme_base_theme',
      'visibility' =&gt; [
        'language' =&gt; [
          'id' =&gt; 'language',
          'langcodes' =&gt; [
            $form_state-&gt;getValue('language') =&gt; $form_state-&gt;getValue('language'),
          ],
          'negate' =&gt; FALSE,
          'context_mapping' =&gt; [
            'language' =&gt; '@language.current_language_context:language_interface',
          ],
        ],
      ],
      'weight' =&gt; 100,
    ]
  );
  // Save the block.
  $this-&gt;block-&gt;save();

This achieved the result I was looking for. So far so good. I can now create menus and place them immediately after the menu is created.