diff --git a/addons/mass_mailing/wizard/mail_compose_message.py b/addons/mass_mailing/wizard/mail_compose_message.py
index 413415c9f5f2907c20ba9d1fe50a9351d46f0fd0..6c1fc81280e0bc7a53b46c4a7752f42d25be42d3 100644
--- a/addons/mass_mailing/wizard/mail_compose_message.py
+++ b/addons/mass_mailing/wizard/mail_compose_message.py
@@ -61,8 +61,8 @@ class MailComposeMessage(models.TransientModel):
                 mail_values = res[res_id]
                 if mail_values.get('email_to'):
                     recips = tools.email_split(mail_values['email_to'])
-                elif mail_values.get('recipient_ids') and partners_email.get(res_id):
-                    recips = tools.email_split(partners_email[res_id])
+                else:
+                    recips = tools.email_split(partners_email.get(res_id))
                 mail_to = recips[0].lower() if recips else False
                 if (blacklist and mail_to in blacklist) or (seen_list and mail_to in seen_list):
                     # prevent sending to blocked addresses that were included by mistake
diff --git a/addons/web/static/src/js/view_manager.js b/addons/web/static/src/js/view_manager.js
index dd6c235415609cb1426364a70301d9ebdc556d13..a351a813263ef236fc80a253bee65e940367a7b1 100644
--- a/addons/web/static/src/js/view_manager.js
+++ b/addons/web/static/src/js/view_manager.js
@@ -202,17 +202,19 @@ var ViewManager = Widget.extend(ControlPanelMixin, {
                 });
             }
 
+            self.active_search = $.Deferred();
             // Call do_search on the searchview to compute domains, contexts and groupbys
             if (self.search_view_loaded &&
                     self.flags.auto_search &&
                     view.controller.searchable !== false) {
-                self.active_search = $.Deferred();
                 $.when(self.search_view_loaded, view.loaded).done(function() {
                     self.searchview.do_search();
                 });
+            } else {
+                self.active_search.resolve();
             }
 
-            return $.when(view.loaded, self.active_search)
+            return $.when(view.loaded, self.active_search, self.search_view_loaded)
                 .then(function() {
                     return self._display_view(view_options, old_view).then(function() {
                         self.trigger('switch_mode', view_type, view_options);
diff --git a/odoo/addons/base/ir/ir_cron.py b/odoo/addons/base/ir/ir_cron.py
index 2ba0548b48d166815c30faa1cc6aebe94ffd2a8b..a0b8a1cdd7f534af9dc8dc49c58b4c3d884d7340 100644
--- a/odoo/addons/base/ir/ir_cron.py
+++ b/odoo/addons/base/ir/ir_cron.py
@@ -72,8 +72,6 @@ class ir_cron(models.Model):
 
         Simply logs the exception and rollback the transaction. """
         self._cr.rollback()
-        _logger.exception("Call from cron %s for server action %d failed in Job %s",
-                          cron_name, server_action_id, job_id)
 
     @api.model
     def _callback(self, cron_name, server_action_id, job_id):
@@ -97,6 +95,8 @@ class ir_cron(models.Model):
                 _logger.debug('%.3fs (cron %s, server action %d with uid %d)', end_time - start_time, cron_name, server_action_id, self.env.uid)
             self.pool.signal_caches_change()
         except Exception, e:
+            _logger.exception("Call from cron %s for server action #%s failed in Job #%s",
+                              cron_name, server_action_id, job_id)
             self._handle_callback_exception(cron_name, server_action_id, job_id, e)
 
     @classmethod
diff --git a/odoo/tools/convert.py b/odoo/tools/convert.py
index 1301e0352417b7a69e821433fff535ec29f77cdb..c2c25f55fadf00bac2ae687cc87439e58c6836a8 100644
--- a/odoo/tools/convert.py
+++ b/odoo/tools/convert.py
@@ -250,9 +250,6 @@ form: module.record_id""" % (xml_id,)
                 modcnt = self.env['ir.module.module'].search_count([('name', '=', module), ('state', '=', 'installed')])
                 assert modcnt == 1, """The ID "%s" refers to an uninstalled module""" % (xml_id,)
 
-        if len(id) > 64:
-            _logger.error('id: %s is to long (max: 64)', id)
-
     def _tag_delete(self, rec, data_node=None, mode=None):
         d_model = rec.get("model")
         d_search = rec.get("search",'').encode('utf-8')
diff --git a/odoo/tools/yaml_import.py b/odoo/tools/yaml_import.py
index 8e9e1342a7040a4fab53d374ea38d1823c196834..a597a8a44fa3a7817f5ccfcd869400a101820f7b 100644
--- a/odoo/tools/yaml_import.py
+++ b/odoo/tools/yaml_import.py
@@ -136,8 +136,6 @@ class YamlInterpreter(object):
             if module != self.module:
                 module_count = self.env['ir.module.module'].search_count([('name', '=', module), ('state', '=', 'installed')])
                 assert module_count == 1, 'The ID "%s" refers to an uninstalled module.' % (xml_id,)
-        if len(id) > 64: # TODO where does 64 come from (DB is 128)? should be a constant or loaded form DB
-            _logger.error('id: %s is to long (max: 64)', id)
 
     def get_id(self, xml_id):
         if xml_id is False or xml_id is None: