diff --git a/acquia_search/acquia_search.install b/acquia_search/acquia_search.install
index c53061e..b08ee4a 100644
--- a/acquia_search/acquia_search.install
+++ b/acquia_search/acquia_search.install
@@ -132,6 +132,7 @@ function _acquia_search_get_default_facets() {
  */
 function acquia_search_uninstall() {
   variable_del('acquia_search_url');
+  variable_del('acquia_search_environments');
 }
 
 /**
@@ -142,3 +143,12 @@ function acquia_search_update_7000() {
   variable_del('acquia_search_port');
   variable_del('acquia_search_path');
 }
+
+/**
+ * Initializes variable storing environments connected to Acquia Search.
+ */
+function acquia_search_update_7001() {
+  if ('AcquiaSearchService' == db_query("SELECT service_class FROM {apachesolr_environment} WHERE env_id = 'acquia_search_server_1'")->fetchField()) {
+    variable_set('acquia_search_environments', array('acquia_search_server_1' => 'acquia_search_server_1'));
+  }
+}
diff --git a/acquia_search/acquia_search.module b/acquia_search/acquia_search.module
index 8ce3ace..c131af9 100644
--- a/acquia_search/acquia_search.module
+++ b/acquia_search/acquia_search.module
@@ -12,7 +12,6 @@ define('ACQUIA_SEARCH_ENVIRONMENT_ID', 'acquia_search_server_1');
  */
 function acquia_search_get_environment() {
   return array(
-    'env_id' => ACQUIA_SEARCH_ENVIRONMENT_ID,
     'name' => t('Acquia Search'),
     // @todo - server URL may depend on region info.
     'url' => variable_get('acquia_search_url', 'http://search.acquia.com/solr/'. acquia_agent_settings('acquia_identifier')),
@@ -38,7 +37,7 @@ function acquia_search_init() {
   if (arg(0) == 'admin' && arg(1) == 'config' && arg(2) == 'search' && arg(3) == 'apachesolr'
       && user_access('administer search')
       && acquia_agent_subscription_is_active()
-      && variable_get('apachesolr_default_environment') == ACQUIA_SEARCH_ENVIRONMENT_ID
+      && acquia_search_get_environment_connected(variable_get('apachesolr_default_environment'))
       && empty($_POST)) {
     $as_link = l(t('Acquia Search'), 'http://acquia.com/products-services/acquia-search');
     drupal_set_message(t("Search is being provided by the !as network service.", array('!as' => $as_link)));
@@ -51,7 +50,9 @@ function acquia_search_init() {
 function acquia_search_enable_acquia_solr_environment() {
   $environment = apachesolr_environment_load(ACQUIA_SEARCH_ENVIRONMENT_ID);
   if ($environment != acquia_search_get_environment()) {
-    apachesolr_environment_save(acquia_search_get_environment());
+    $environment = acquia_search_get_environment();
+    $environment['env_id'] = ACQUIA_SEARCH_ENVIRONMENT_ID;
+    apachesolr_environment_save($environment);
   }
   // Only set the default if we just createdd the environment.
   if (!$environment) {
@@ -95,6 +96,37 @@ function acquia_search_cron() {
 }
 
 /**
+ * Tests whether the environment is connected to Acquia Search.
+ */
+function acquia_search_get_environment_connected($environment) {
+  $env_id = is_array($environment) ? $environment['env_id'] : $environment;
+  $as_environments = variable_get('acquia_search_environments', array());
+  return ($environment) ? isset($as_environments[$env_id]) : FALSE;
+}
+
+/**
+ * Conveniance function that flags the environment as being connected to the
+ * Acquia Search service.
+ */
+function acquia_search_set_environment_connected($environment) {
+  $env_id = is_array($environment) ? $environment['env_id'] : $environment;
+  $as_environments = variable_get('acquia_search_environments', array());
+  $as_environments[$env_id] = $env_id;
+  variable_set('acquia_search_environments', $as_environments);
+}
+
+/**
+ * Conveniance function that un-flags the environment as being connected to the
+ * Acquia Search service.
+ */
+function acquia_search_unset_environment_connected($environment) {
+  $env_id = is_array($environment) ? $environment['env_id'] : $environment;
+  $as_environments = variable_get('acquia_search_environments', array());
+  unset($as_environments[$env_id]);
+  variable_set('acquia_search_environments', $as_environments);
+}
+
+/**
  * Delete environment page access.
  */
 function acquia_search_environment_delete_access($environment) {
@@ -133,24 +165,66 @@ function acquia_search_form_apachesolr_settings_alter(&$form, $form_state) {
  * Implementation of hook_form_[form_id]_alter().
  */
 function acquia_search_form_apachesolr_environment_edit_form_alter(&$form, $form_state) {
-  // Do not allow editing of Acquia Search environment parameters
-  if (isset($form['env_id']['#default_value']) && $form['env_id']['#default_value'] == ACQUIA_SEARCH_ENVIRONMENT_ID ) {
+  // Gets environment from form, gets connection status to Acquia Search.
+  $env_id = isset($form['env_id']['#default_value']) ? $form['env_id']['#default_value'] : '';
+  $environment = ($env_id) ? apachesolr_environment_load($env_id) : FALSE;
+  $connected = acquia_search_get_environment_connected($environment);
+
+  // Add options to connect to Acquia
+  $form['acquia_search'] = array(
+    '#type' => 'checkbox',
+    '#title' => 'Connect to Acquia Search',
+    '#default_value' => $connected,
+    '#weight' => -10,
+    '#disabled' => acquia_search_get_environment_connected($environment),
+    '#access' => (!$environment || $connected),
+  );
+
+  // If we are connecting to Acquia Search, the user shouldn't have to enter
+  // a value into this field. However, it should appear to be required if the
+  // user is not connecting to Acquia search.
+  if (!$connected) {
+    $form['url']['#required'] = FALSE;
+    $form['url']['#title'] .= theme('form_required_marker');
+    // Hide field "Connect to Acquia Search" checkbox is selected by the user.
+    $form['url']['#states'] = array(
+      'visible' => array(
+        ':input[name="acquia_search"]' => array('checked' => FALSE),
+      ),
+    );
+  }
+  else {
+    // Do not allow editing of Acquia Search environment parameters.
     $form['url']['#disabled'] = TRUE;
     $form['name']['#disabled'] = TRUE;
     $form['env_id']['#disabled'] = TRUE;
   }
 
   $form['actions']['delete']['#access'] = FALSE;
-  $form['actions']['save']['#validate'][] = 'acquia_search_environment_edit_form_validate';
+  array_unshift($form['actions']['save']['#validate'], 'acquia_search_environment_edit_form_validate');
+  $form['actions']['save']['#submit'][] = 'acquia_search_environment_edit_form_submit';
 }
 
 function acquia_search_environment_edit_form_validate($form, &$form_state) {
-  if ($form_state['values']['env_id'] == ACQUIA_SEARCH_ENVIRONMENT_ID) {
+  if (!empty($form_state['values']['acquia_search'])) {
     // make sure that the environment parameters have not been changed
     $form_state['values'] = array_merge($form_state['values'], acquia_search_get_environment());
   }
 }
 
+function acquia_search_environment_edit_form_submit($form, &$form_state) {
+  if (!empty($form_state['values']['acquia_search'])) {
+    acquia_search_set_environment_connected($form_state['values']);
+  }
+}
+
+/**
+ * Implements hook_apachesolr_environment_delete().
+ */
+function acquia_search_apachesolr_environment_delete($environment) {
+  acquia_search_unset_environment_connected($environment);
+}
+
 /**
  * Implementation of hook_acquia_subscription_status().
  */
@@ -288,7 +362,7 @@ function acquia_search_extract_hmac($headers) {
  */
 function acquia_search_apachesolr_query_alter($query) {
   // @todo - does it make sense to check $caller too?
-  if ($query->solr('getId') != ACQUIA_SEARCH_ENVIRONMENT_ID || $query->getParam('qt') || $query->getParam('defType')) {
+  if (acquia_search_get_environment_connected($query->solr('getId')) || $query->getParam('qt') || $query->getParam('defType')) {
     // This is a 'mlt' query or something else custom.
     return;
   }
