Creating a page per bundle I am trying to create multiple bundles for a given entity.

However, when I'm doing this, all of my manage field and manage displays are on the same page, and it doesn't appear like any of the other pages are working.

Here's one of the bundles:

  $info['gov_data'] = array(
    'label' =&gt; t('Government Data'),
    'base table' =&gt; 'gov_data',
    'entity keys' =&gt; array(
      'id' =&gt; 'gid',
      'label' =&gt; 'type',
    ),
    'module' =&gt; 'gov_data_entities',
    'access callback' =&gt; 'gov_data_access_callback',
    'fieldable' =&gt; TRUE,
    'bundles' =&gt; array(
      'bill' =&gt; array(
        'label' =&gt; t('Bills'),
        'admin' =&gt; array(
          'path' =&gt; 'admin/structure/gov-data/bill',
          'real path' =&gt; 'admin/structure/gov-data/bills',
          'access arguments' =&gt; array('administer site configuration'),
        ),
      ),
  'committee' =&gt; array(
    'label' =&gt; t('Committee'),
    'admin' =&gt; array(
      'path' =&gt; 'admin/structure/gov-data/committee',
      'real path' =&gt; 'admin/structure/gov-data/committee',
      'access arguments' =&gt; array('administer site configuration'),
    ),
  ),
),
    'admin ui' =&gt; array(
      'path' =&gt; 'admin/structure/gov-data',
      'controller class' =&gt; 'EntityDefaultUIController',
    )
  );


There are about 6 or 7 more exactly like that.

Why are they all showing up on the main entity page?

How do I organize this so that it looks like content types?

EDIT: Here's my hook_menu() for the person asking:

function gov_data_menu() {
  $items = array();

  $items['admin/config/services/gov-data'] = array(
    'title' =&gt; 'Government Data settings',
    'description' =&gt; 'Configure settings for Government Data',
    'page callback' =&gt; 'drupal_get_form',
    'page arguments' =&gt; array('gov_data_admin_settings'),
    'access arguments' =&gt; array('administer site configuration'),
  );
  return $items;
}
Why are they all showing up on the main entity page?


This is the easy part. I had the same issue with https://www.drupal.org/node/2299755, but I was dealing with several modules that were each defining a single entity.  Your configuration is a bit more complicated.

You are seeing the UI elements for Manage Display and Manage Field at admin/structure because admin/structure/gov-data doesn't exist. admin/structure is inheriting everything you've defined after admin/structure/gov-data like admin/structure/gov-data/bill/fields and admin/structure/gov-data/bill/display,  First you need to define a menu path for admin/structure/gov-data in your module, but this will only push all of the fields and display tabs up to that level.  You'll also need to either define a redirect for each entity so admin/structure/gov-data/bill goes to admin/structure/gov-data/bill/fields or alter the admin/structure/gov-data/bill/fields and display menus so they aren't tabs.


  How do I organize this so that it looks like content types?


This is a bit more complicated.  The display of node types found at admin/structure/types doesn't just automagically appear.  It is defined in the Node moduels's menu hook http://cgit.drupalcode.org/drupal/tree/modules/node/node.module?h=7.x#n2004.  To get something that looks like the content type list, you'll need to create a customized version of the node_overview_types() function found in http://cgit.drupalcode.org/drupal/tree/modules/node/content_types.inc?h=7.x#n8

So for your configuration, alter your hook_menu to add something like...

function gov_data_menu() {
    $items = array();

    $items['admin/config/services/gov-data'] = array(
        'title' =&gt; 'Government Data settings',
        'description' =&gt; 'Configure settings for Government Data',
        'page callback' =&gt; 'drupal_get_form',
        'page arguments' =&gt; array('gov_data_admin_settings'),
        'access arguments' =&gt; array('administer site configuration'),
    );

    // returns list of entities with menus "under" gov-data.
    $items['admin/structure/gov-data'] = array(
        'title' =&gt; 'Manage Government Data Entities',
        'description' =&gt; 'Links to manage field and display of entities',
        'page callback' =&gt; 'gov_data_overview_types',
        'access arguments' =&gt; array('administer gov data'),
        'weight' =&gt; -50,
    );  

    return $items;
}
/**
 * Displays an entity type admin overview page.
 * Borrow from node/content_types.inc
 */
function gov_data_overview_types() {
  // This requires a lot more work
}


There is a lot of code you can repurpose from node_overview_types(), but that is something you can figure to meet your specific needs.  You biggest issues here are undefined menu paths being displayed at a level you didn't expect because the deeper, custom menu paths aren't defined anywhere.