diff --git a/profiles/unl_profile/unl_profile.install b/profiles/unl_profile/unl_profile.install
index 2eb5c146dfc4c199f451679dc34f513f91f28237..10ad169a2a7a6f9537f7bc42ea025eb1b8054acf 100644
--- a/profiles/unl_profile/unl_profile.install
+++ b/profiles/unl_profile/unl_profile.install
@@ -295,16 +295,15 @@ EOF;
     );
     foreach ($data as $row) {
       if ($row->site_admin) {
+        $account = unl_cas_import_user($row->site_admin);
         $userData = array(
-          'name'     => $row->site_admin,
-          'status'   => 1,
-          'timezone' => variable_get('date_default_timezone', @date_default_timezone_get()),
           'roles'    => array($site_admin_role->rid => $site_admin_role->name),
         );
-        user_save(NULL, $userData);
+        user_save($account, $userData);
       }
 
       if ($row->migration_url) {
+        // If there's a site to migrate, add the job to the queue.
         require_once DRUPAL_ROOT . '/sites/all/modules/unl/unl_migration.php';
         $migration = new Unl_Migration_Tool(
           $row->migration_url,
@@ -316,6 +315,10 @@ EOF;
         DrupalQueue::get('unl_migration', TRUE)
           ->createItem(Unl_Migration_Tool::save_to_disk($migration));
       }
+      else {
+        // If there's no migration to be done, we can send the site created email now.
+        unl_send_site_created_email($row);
+      }
     }
   }
 
diff --git a/sites/all/modules/unl/cron.php b/sites/all/modules/unl/cron.php
index f04a230e4ab3b58adff372eb8f6ed97c260aa6ce..ef13733ecffe2153eecee1613056749cc4f439a4 100644
--- a/sites/all/modules/unl/cron.php
+++ b/sites/all/modules/unl/cron.php
@@ -160,8 +160,12 @@ function unl_add_site($site_path, $uri, $clean_url, $db_prefix, $site_id) {
   $sites_subdir = escapeshellarg($sites_subdir);
   $db_url = escapeshellarg($db_url);
   $db_prefix = escapeshellarg($db_prefix);
+  $site_mail    = escapeshellarg(variable_get('site_mail'));
   
   $command = "$php_path sites/all/modules/drush/drush.php -y --uri=$uri site-install unl_profile --sites-subdir=$sites_subdir --db-url=$db_url --db-prefix=$db_prefix --clean-url=$clean_url";
+  if ($site_mail) {
+    $command .= " --site-mail=$site_mail"; 
+  }
   shell_exec($command);
   
   unl_add_site_to_htaccess($site_id, $site_path, FALSE);
diff --git a/sites/all/modules/unl/unl.module b/sites/all/modules/unl/unl.module
index 29d479fe61bdbc3866fda78c185525cfaeb2a391..30c4f8bb01f4c4be181dde3e9a64ba4c08f29e1f 100644
--- a/sites/all/modules/unl/unl.module
+++ b/sites/all/modules/unl/unl.module
@@ -437,7 +437,9 @@ function unl_cron() {
     require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'unl_migration.php';
     $item = $queue->claimItem(120);
     $queue->deleteItem($item);
-    unl_migration_queue_step($item->data);
+    if (unl_migration_queue_step($item->data)) {
+      unl_send_site_created_email();
+    }
   }
 
   if (conf_path() == 'sites/default') {
@@ -484,9 +486,7 @@ function unl_cron() {
       $path = $department . '/' . $site_name;
 
       $db_prefix = unl_create_db_prefix($site);
-
-      $path = 'incubator/' . $path;
-
+      
       $sites_to_create[] = array(
         'site_path'      => $path,
         'uri'            => url($path),
@@ -599,3 +599,81 @@ function unl_init() {
     drupal_goto($primary_base_url . current_path());
   }
 }
+
+function unl_mail($key, &$message, $params) {
+  if ($key == 'site_created') {
+    $site = $params['site'];
+    $message['subject'] = 'New Site!';
+    $message['body'][] = 'A site has been set up!';
+    $message['body'][] = print_r($site, TRUE);
+  }
+}
+
+function unl_send_site_created_email($site = NULL) {
+  $shared_prefix = unl_get_shared_db_prefix();
+
+  // If no site was specified, get the current site.
+  if (!$site) {
+    if (!is_array($GLOBALS['databases']['default']['default']['prefix'])) {
+      return;
+    }
+    
+    $db_prefix = $GLOBALS['databases']['default']['default']['prefix']['default'];
+    $db_prefix = substr($db_prefix, 0, 0 - strlen($shared_prefix) - 1);
+    $data = db_query(
+      "SELECT * "
+      . "FROM {$shared_prefix}unl_sites "
+      . "WHERE db_prefix = :prefix ",
+      array(':prefix' => $db_prefix)
+    )->fetchAll();
+    if (count($data) == 0) {
+      return;
+    }
+    $site = $data[0];
+  }
+  
+  $unl_site_created_email_address = unl_shared_variable_get('unl_site_created_email_address');
+  $unl_site_created_alert_admins = unl_shared_variable_get('unl_site_created_alert_admins');
+  
+  $recipients = array();
+  
+  if ($unl_site_created_email_address) {
+    $recipients[] = $unl_site_created_email_address;
+  }
+  
+  if ($unl_site_created_alert_admins) {
+    $role = user_role_load_by_name('Site Admin');
+    $select = db_select('users_roles', 'r');
+    $select->fields('r', array('uid'));
+    $select->condition('r.rid', $role->rid);
+    $uids = $select->execute()->fetchCol();
+    
+    $users = user_load_multiple($uids);
+    foreach ($users as $user) {
+      if (!$user->mail) {
+        continue;
+      }
+      $recipients[] = $user->mail;
+    }
+  }
+
+  foreach ($recipients as $recipient) {
+    drupal_mail('unl', 'site_created', $recipient, language_default(), array('site' => $site), unl_shared_variable_get('site_mail'));
+  }
+}
+
+function unl_shared_variable_get($name, $default = NULL) {
+  $shared_prefix = unl_get_shared_db_prefix();
+  $data = db_query(
+    "SELECT * "
+    . "FROM {$shared_prefix}variable "
+    . "WHERE name = :name",
+    array(':name' => $name)
+  )->fetchAll();
+  
+  if (count($data) == 0) {
+    return $default;
+  }
+  
+  return unserialize($data[0]->value);
+}
diff --git a/sites/all/modules/unl/unl_cas.module b/sites/all/modules/unl/unl_cas.module
index d0b6175447cc26b316470cecfa7ee3e865307830..78e23f8c0703ed6a2b128a2894bd0b9311915cda 100644
--- a/sites/all/modules/unl/unl_cas.module
+++ b/sites/all/modules/unl/unl_cas.module
@@ -1,12 +1,13 @@
 <?php
 
+require_once dirname(__FILE__) . '/unl_loader.php';
+unl_load_zend_framework();
+  
 function unl_cas_enable() {
   variable_set('user_register', 0);
 }
 
 function unl_cas_init() {
-  require_once dirname(__FILE__) . '/unl_loader.php';
-  unl_load_zend_framework();
   drupal_session_start();
 
   if (isset($_SESSION['unl_cas']['current_path'])) {
@@ -254,6 +255,9 @@ function unl_cas_user_presave(&$edit, $account, $category) {
 
   if (_unl_cas_is_user_default_site_administrator($username)) {
     $local_admin_role = user_role_load($local_admin_role_id);
+    if (!isset($edit['roles'])) {
+      $edit['roles'] = $account->roles;
+    }
     $edit['roles'][$local_admin_role_id] = $local_admin_role->name;
   }
   else {
diff --git a/sites/all/modules/unl/unl_migration.php b/sites/all/modules/unl/unl_migration.php
index 8d27a059a7f7dfae7e29d571341ad4c3ff21e781..a39750e4443164a9888edfc55d6777a89191702f 100644
--- a/sites/all/modules/unl/unl_migration.php
+++ b/sites/all/modules/unl/unl_migration.php
@@ -108,10 +108,11 @@ function unl_migration_step($migration, &$context)
 function unl_migration_queue_step($migration_storage_file) {
   $migration = Unl_Migration_Tool::load_from_disk($migration_storage_file);
   if ($migration->migrate(30)) {
-    return;
+    return TRUE;
   }
   DrupalQueue::get('unl_migration', TRUE)
     ->createItem(Unl_Migration_Tool::save_to_disk($migration));
+  return FALSE;
 }
 
 
diff --git a/sites/all/modules/unl/unl_site_creation.php b/sites/all/modules/unl/unl_site_creation.php
index fa8ce3d052692c38d60f615b2081da72bc30339c..040fd538b2cdd4335bcd1697775c5b0773d607bb 100644
--- a/sites/all/modules/unl/unl_site_creation.php
+++ b/sites/all/modules/unl/unl_site_creation.php
@@ -9,6 +9,7 @@ function unl_sites_page() {
   $page[] = drupal_get_form('unl_site_create');
   $page[] = drupal_get_form('unl_site_list');
   $page[] = drupal_get_form('unl_site_updates');
+  $page[] = drupal_get_form('unl_site_email_settings');
   
   return $page;
 }
@@ -206,6 +207,40 @@ function unl_site_updates_step($site_uri, &$context) {
 }
 
 
+function unl_site_email_settings($form, &$form_state) {
+  $form['root'] = array(
+    '#type' => 'fieldset',
+    '#title' => 'Email Alert Settings',
+    '#description' => 'When a new site is created, who should be emailed?',
+  );
+  
+  $form['root']['unl_site_created_email_address'] = array(
+    '#type' => 'textfield',
+    '#title' => 'Address for Notification',
+    '#description' => 'When a site has been been created and migrated, send an email to this address.',
+    '#default_value' => variable_get('unl_site_created_email_address'),
+  );
+  
+  $form['root']['unl_site_created_alert_admins'] = array(
+    '#type' => 'checkbox',
+    '#title' => 'Email Site Admins',
+    '#description' => 'When a site has been created and migrated, send an email to the Site Admins.',
+    '#default_value' => variable_get('unl_site_created_alert_admins'),
+  );
+  
+  $form['root']['submit'] = array(
+    '#type'  => 'submit',
+    '#value' => 'Update Settings',
+  );
+  
+  return $form;
+}
+
+function unl_site_email_settings_submit($form, &$form_state) {
+  variable_set('unl_site_created_email_address', $form_state['values']['unl_site_created_email_address']);
+  variable_set('unl_site_created_alert_admins',  $form_state['values']['unl_site_created_alert_admins']);
+}
+
 
 function unl_site_remove($site_id) {
   $uri = db_select('unl_sites', 's')