diff --git a/cps.install b/cps.install
index 93170aa..e8a3cc6 100644
--- a/cps.install
+++ b/cps.install
@@ -110,6 +110,13 @@ function cps_schema() {
         'not null' => TRUE,
         'default' => 0,
       ),
+      'lock_in_select' => array(
+        'description' => 'True if this changeset should be locked into all users select bars when open.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('changeset_id'),
   );
@@ -574,3 +581,18 @@ function cps_update_7107() {
     throw $e;
   }
 }
+
+/**
+ * Add lock_in_select field.
+ */
+function cps_update_7108() {
+  $field = array(
+    'description' => 'True if this changeset should be locked into all users select bars when open.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0,
+  );
+
+  db_add_field('cps_changeset', 'lock_in_select', $field);
+}
diff --git a/cps.module b/cps.module
index 5933f38..988e936 100644
--- a/cps.module
+++ b/cps.module
@@ -1113,7 +1113,8 @@ function cps_get_changesets() {
     $query = new EntityFieldQuery();
     $results = $query->entityCondition('entity_type', 'cps_changeset')
       ->propertyCondition('status', CPS_ARCHIVED_STATUS, '<>')
-      ->propertyCondition('uid', $user->uid)
+      // Note that uid and locked check are in a db_or() in a query alter
+      // because EFQ does not support OR.
       ->propertyOrderBy('name')
       // This tag allows another module to modify this list if necessary.
       ->addTag('cps_active_changeset_list')
@@ -1128,6 +1129,13 @@ function cps_get_changesets() {
     $entities = cps_changeset_load_multiple(array_keys($results['cps_changeset']));
     foreach ($entities as $id => $entity) {
       $changesets[$id] = $entity->name;
+      if ($entity->lock_in_select) {
+        $locked[$id] = $entity->name;
+      }
+      // Assume if it's not locked it gets listed under 'mine'.
+      else {
+        $mine[$id] = $entity->name;
+      }
     }
   }
 
@@ -1173,8 +1181,12 @@ function cps_get_changesets() {
   $retval = $published;
 
   // Now my open changesets.
-  if ($changesets) {
-    $retval += array(t('My open site versions') => $changesets);
+  if (!empty($locked)) {
+    $retval += array(t('Locked open site versions') => $locked);
+  }
+
+  if (!empty($mine)) {
+    $retval += array(t('My open site versions') => $mine);
   }
 
   // My published if I've looked at them recently.
@@ -1192,6 +1204,18 @@ function cps_get_changesets() {
 }
 
 /**
+ * Implements hook_query_TAG_alter().
+ */
+function cps_query_cps_active_changeset_list_alter($query) {
+  // Because EFQ doesn't support OR, this hack adds a db_or to() the underlying
+  // query.
+  $query->condition(db_or()
+    ->condition('uid', $GLOBALS['user']->uid)
+    ->condition('lock_in_select', TRUE)
+  );
+}
+
+/**
  * Fetch a list of possible state types for changesets.
  *
  * @return string[]
diff --git a/includes/forms.inc b/includes/forms.inc
index 076c889..532ab04 100644
--- a/includes/forms.inc
+++ b/includes/forms.inc
@@ -85,6 +85,13 @@ function cps_changeset_edit_form($form, &$form_state) {
     '#title' => t('Description'),
     '#default_value' => $entity->description,
   );
+  
+  $form['info']['lock_in_select'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Lock in select'),
+    '#description' => t('If checked all users will see this site version in the site version selector bar while unpublished.'),
+    '#default_value' => $entity->lock_in_select,
+  );
 
   $form['actions'] = array(
     '#type' => 'actions',
@@ -111,6 +118,7 @@ function cps_changeset_edit_form_submit($form, &$form_state) {
   $entity = $form_state['entity'];
   $entity->name = $form_state['values']['name'];
   $entity->description = $form_state['values']['description'];
+  $entity->lock_in_select = $form_state['values']['lock_in_select'];
 
   if (!empty($entity->is_new)) {
     // Automatically move us to the new changeset context.
