diff --git a/plugins/MobileMessaging/javascripts/MobileMessagingSettings.js b/plugins/MobileMessaging/javascripts/MobileMessagingSettings.js
index 17f4dcc8e3ac0285a466d490495364439c806a3f..caa99f436f6f26066bfc79405e1433518ea52ac7 100644
--- a/plugins/MobileMessaging/javascripts/MobileMessagingSettings.js
+++ b/plugins/MobileMessaging/javascripts/MobileMessagingSettings.js
@@ -84,16 +84,33 @@ var MobileMessagingSettings = MobileMessagingSettings || (function () {
         if (verificationCode != null && verificationCode != '') {
             var success =
                 function (response) {
+
+                    var UI = require('piwik/UI');
+                    var notification = new UI.Notification();
+
                     $(phoneNumberActivatedSelector).hide();
                     if (!response.value) {
-                        $(invalidVerificationCodeAjaxErrorSelector).html($(invalidActivationCodeMsgSelector).html()).fadeIn();
+                        var message = $(invalidActivationCodeMsgSelector).html();
+                        notification.show(message, {
+                            context: 'error',
+                            id: 'MobileMessaging_ValidatePhoneNumber',
+                            style: {marginTop: '10px'}
+                        });
                     }
                     else {
-                        $(phoneNumberActivatedSelector).show();
+                        var message = $(phoneNumberActivatedSelector).html();
+                        notification.show(message, {
+                            context: 'success',
+                            id: 'MobileMessaging_ValidatePhoneNumber',
+                            style: {marginTop: '10px'}
+                        });
+
                         $(verificationCodeContainer).remove();
                         $(phoneNumberContainer).find(validatePhoneNumberSubmitSelector).remove();
                         $(phoneNumberContainer).find(formDescriptionSelector).remove();
                     }
+
+                    notification.scrollToNotification();
                 };
 
             var ajaxHandler = new ajaxHelper();
diff --git a/plugins/MobileMessaging/templates/index.twig b/plugins/MobileMessaging/templates/index.twig
index 570151f1987a03f414a8a2ada9aa2c3b97b56096..082c9e4f3ca98b7f9588338360449a2c22a54674 100644
--- a/plugins/MobileMessaging/templates/index.twig
+++ b/plugins/MobileMessaging/templates/index.twig
@@ -37,7 +37,10 @@
     {% endif %}
 
     {% import 'ajaxMacros.twig' as ajax %}
-    {{ ajax.errorDiv('ajaxErrorMobileMessagingSettings') }}
+
+    <div style="margin-top:10px">
+        {{ ajax.errorDiv('ajaxErrorMobileMessagingSettings') }}
+    </div>
 
     <h2>{{ 'MobileMessaging_PhoneNumbers'|translate }}</h2>
     {% if not credentialSupplied %}
@@ -107,7 +110,7 @@
 
                     {{ ajax.errorDiv('invalidVerificationCodeAjaxError') }}
 
-                    <div id='phoneNumberActivated' class="ajaxSuccess" style="display:none;">
+                    <div id='phoneNumberActivated' style="display:none;">
                         {{ 'MobileMessaging_Settings_PhoneActivated'|translate }}
                     </div>
 
diff --git a/plugins/ScheduledReports/ScheduledReports.php b/plugins/ScheduledReports/ScheduledReports.php
index 11dce0629506aa40c4826d4700b4e74251be1ef4..9d1bbb34b0408903c6c37bc3717eea5e74c58211 100644
--- a/plugins/ScheduledReports/ScheduledReports.php
+++ b/plugins/ScheduledReports/ScheduledReports.php
@@ -96,9 +96,16 @@ class ScheduledReports extends \Piwik\Plugin
             'UsersManager.deleteUser'                   => 'deleteUserReport',
             'SitesManager.deleteSite.end'               => 'deleteSiteReport',
             APISegmentEditor::DEACTIVATE_SEGMENT_EVENT  => 'segmentDeactivation',
+            'Translate.getClientSideTranslationKeys'    => 'getClientSideTranslationKeys',
         );
     }
 
+    public function getClientSideTranslationKeys(&$translationKeys)
+    {
+        $translationKeys[] = "ScheduledReports_ReportSent";
+        $translationKeys[] = "ScheduledReports_ReportUpdated";
+    }
+
     /**
      * Delete reports for the website
      */
diff --git a/plugins/ScheduledReports/javascripts/pdf.js b/plugins/ScheduledReports/javascripts/pdf.js
index 5e2885b12c09067aeda06cc0faaf6e567011b139..49e31013ea88d176f50274a0d7b33a7e5bb27f1f 100644
--- a/plugins/ScheduledReports/javascripts/pdf.js
+++ b/plugins/ScheduledReports/javascripts/pdf.js
@@ -68,13 +68,20 @@ function toggleReportType(reportType) {
     $('.' + reportType).show();
 }
 
-function fadeInOutSuccessMessage(selector) {
-    $(selector).fadeIn('slow', function () {
-        setTimeout(function () {
-            $(selector).fadeOut('slow');
-            piwikHelper.refreshAfter(0);
-        }, 1000);
+function fadeInOutSuccessMessage(selector, message) {
+
+    var UI = require('piwik/UI');
+    var notification = new UI.Notification();
+    notification.show(message, {
+        placeat: selector,
+        context: 'success',
+        noclear: true,
+        type: 'toast',
+        style: {display: 'inline-block', marginTop: '10px'},
+        id: 'usersManagerAccessUpdated'
     });
+
+    piwikHelper.refreshAfter(2);
 }
 
 function initManagePdf() {
@@ -106,7 +113,8 @@ function initManagePdf() {
         ajaxHandler.setLoadingElement();
         if (idReport) {
             ajaxHandler.setCallback(function (response) {
-                fadeInOutSuccessMessage('.reportUpdatedSuccess');
+
+                fadeInOutSuccessMessage('#reportUpdatedSuccess', _pk_translate('ScheduledReports_ReportUpdated'));
             });
         }
         ajaxHandler.send(true);
@@ -123,7 +131,7 @@ function initManagePdf() {
         ajaxHandler.addParams(parameters, 'POST');
         ajaxHandler.setLoadingElement();
         ajaxHandler.setCallback(function (response) {
-            fadeInOutSuccessMessage('.reportSentSuccess');
+            fadeInOutSuccessMessage('#reportSentSuccess', _pk_translate('ScheduledReports_ReportSent'));
         });
         ajaxHandler.send(true);
     });
diff --git a/plugins/ScheduledReports/templates/index.twig b/plugins/ScheduledReports/templates/index.twig
index 66298d04966ac25f42d76a350b63dfed4beb7dc8..15aef1c25ffbd3b459b6b644104b3f04c1df22a8 100644
--- a/plugins/ScheduledReports/templates/index.twig
+++ b/plugins/ScheduledReports/templates/index.twig
@@ -10,8 +10,8 @@
 
 <div class="centerLargeDiv">
     <h2>{{ 'ScheduledReports_ManageEmailReports'|translate }}</h2>
-    <span class="ajaxSuccess reportSentSuccess" style="display:none;">{{ 'ScheduledReports_ReportSent'|translate }}!</span>
-    <span class="ajaxSuccess reportUpdatedSuccess" style="display:none;">{{ 'ScheduledReports_ReportUpdated'|translate }}!</span>
+    <span id="reportSentSuccess"></span>
+    <span id="reportUpdatedSuccess"></span>
 
     <div class="entityContainer">
         {% import 'ajaxMacros.twig' as ajax %}
diff --git a/plugins/UserCountry/javascripts/userCountry.js b/plugins/UserCountry/javascripts/userCountry.js
index 640fec846e6f90c45d6ac44005b29fe6da41e2ea..1da248e16a786a3806ba729e5c8375452801fd49 100755
--- a/plugins/UserCountry/javascripts/userCountry.js
+++ b/plugins/UserCountry/javascripts/userCountry.js
@@ -149,7 +149,16 @@ $(document).ready(function () {
             var updateGeoIPSuccess = function (response) {
                 if (response && response.error) {
                     $('#geoip-progressbar-container').hide();
-                    $('#geoipdb-update-info-error').html(response.error).show();
+
+                    var UI = require('piwik/UI');
+                    var notification = new UI.Notification();
+                    notification.show(response.error, {
+                        placeat: 'geoipdb-update-info-error',
+                        context: 'error',
+                        style: {display: 'inline-block'},
+                        id: 'userCountryGeoIpUpdate'
+                    });
+
                 }
                 else if (response && response.to_download) {
                     var continuing = currentDownloading == response.to_download;
@@ -170,11 +179,15 @@ $(document).ready(function () {
                     $('#geoip-updater-progressbar-label').html('');
                     $('#geoip-progressbar-container').hide();
 
-                    // fade in/out Done message
-                    $('#done-updating-updater').fadeIn(1000, function () {
-                        setTimeout(function () {
-                            $('#done-updating-updater').fadeOut(1000);
-                        }, 3000);
+                    var UI = require('piwik/UI');
+                    var notification = new UI.Notification();
+                    notification.show(_pk_translate('General_Done'), {
+                        placeat: '#done-updating-updater',
+                        context: 'success',
+                        noclear: true,
+                        type: 'toast',
+                        style: {display: 'inline-block'},
+                        id: 'userCountryGeoIpUpdate'
                     });
                 }
             };
diff --git a/plugins/UserCountry/templates/_updaterManage.twig b/plugins/UserCountry/templates/_updaterManage.twig
index 23bf9eb97de4a43ab7568875c1a80458c698f258..8bd6457c21c2eca758b3408e5bf315834992804b 100755
--- a/plugins/UserCountry/templates/_updaterManage.twig
+++ b/plugins/UserCountry/templates/_updaterManage.twig
@@ -57,8 +57,8 @@
 		<input type="button" class="submit" value="{% if not geoIPDatabasesInstalled %}{{ 'General_Continue'|translate }}{% else %}{{ 'General_Save'|translate }}{% endif %}" id="update-geoip-links"/>
 	</p>
 	<div style="display:inline-block;width:700px;">
-		<span style="display:none;" class="ajaxSuccess" id="done-updating-updater">{{ 'General_Done'|translate }}!</span>
-		<span id="geoipdb-update-info-error" style="display:none;" class="error"></span>
+		<span id="done-updating-updater"></span>
+		<span id="geoipdb-update-info-error"></span>
 		<div id="geoip-progressbar-container" style="display:none;">
 			<div id="geoip-updater-progressbar"></div>
 			<span id="geoip-updater-progressbar-label"></span>
diff --git a/plugins/UsersManager/UsersManager.php b/plugins/UsersManager/UsersManager.php
index 64b5716e6bbc59dcbdb6f1ed6d5d2a04d20dcec1..6eb5952338ad705d77741d320e0bff236b08953f 100644
--- a/plugins/UsersManager/UsersManager.php
+++ b/plugins/UsersManager/UsersManager.php
@@ -140,6 +140,7 @@ class UsersManager extends \Piwik\Plugin
     {
         $translationKeys[] = "General_OrCancel";
         $translationKeys[] = "General_Save";
+        $translationKeys[] = "General_Done";
         $translationKeys[] = "UsersManager_DeleteConfirm";
     }
 }
diff --git a/plugins/UsersManager/javascripts/usersManager.js b/plugins/UsersManager/javascripts/usersManager.js
index 0cea74fb115e4a7208b3d1fc042dc22d1d8e4fea..c9606ffea0fd86693088004e9256778f67a0bd9e 100644
--- a/plugins/UsersManager/javascripts/usersManager.js
+++ b/plugins/UsersManager/javascripts/usersManager.js
@@ -97,14 +97,9 @@ function launchAjaxRequest(self, successCallback) {
         successCallback
     );
 }
-function hideAccessUpdated() {
-    setTimeout(function () {
-        $('#accessUpdated').fadeOut(500);
-    }, 2000);
-}
+
 function bindUpdateAccess() {
     var self = this;
-    hideAccessUpdated();
     // callback called when the ajax request Update the user permissions is successful
     function successCallback(response) {
         var mainDiv = $(self).parent().parent();
@@ -118,8 +113,17 @@ function bindUpdateAccess() {
             .attr('src', "plugins/UsersManager/images/ok.png")
             .attr('class', "accessGranted")
         ;
-        $('#accessUpdated').css('display', 'inline-block');
-        hideAccessUpdated();
+
+        var UI = require('piwik/UI');
+        var notification = new UI.Notification();
+        notification.show(_pk_translate('General_Done'), {
+            placeat: '#accessUpdated',
+            context: 'success',
+            noclear: true,
+            type: 'toast',
+            style: {display: 'inline-block', marginTop: '10px'},
+            id: 'usersManagerAccessUpdated'
+        });
 
         // reload if user anonymous was updated, since we display a Notice message when anon has view access
         if (login == 'anonymous') {
diff --git a/plugins/UsersManager/templates/index.twig b/plugins/UsersManager/templates/index.twig
index d0b37d26caca9039aab0ddf333f41e83335b4e26..52dcfc4c4a5989a694f78cfafecc64979a97202c 100644
--- a/plugins/UsersManager/templates/index.twig
+++ b/plugins/UsersManager/templates/index.twig
@@ -64,7 +64,7 @@
         {% endfor %}
         </tbody>
     </table>
-    <div id="accessUpdated" class="ajaxSuccess" style="display:none;vertical-align:top;">{{ 'General_Done'|translate }}!</div>
+    <div id="accessUpdated" style="vertical-align:top;"></div>
 </div>
 
 <div class="ui-confirm" id="confirm">
diff --git a/plugins/UsersManager/templates/userSettings.twig b/plugins/UsersManager/templates/userSettings.twig
index 7dc117e5c23b210da575da7a8fea9d96bd6980dc..21cf13cbeca5e9a3febc9ff797f4fc568302d32e 100644
--- a/plugins/UsersManager/templates/userSettings.twig
+++ b/plugins/UsersManager/templates/userSettings.twig
@@ -83,9 +83,12 @@
     {% endif %}
 </table>
 {% if isValidHost is not defined or not isValidHost %}
-    <div class="ajaxSuccess">
+    <div id="injectedHostCannotChangePwd">
+        {% set injectedHostCannotChangePwd %}
         {{ 'UsersManager_InjectedHostCannotChangePwd'|translate(invalidHost) }}
         &nbsp;{% if not isSuperUser %}{{ 'UsersManager_EmailYourAdministrator'|translate(invalidHostMailLinkStart,'</a>')|raw }}{% endif %}
+        {% endset %}
+        {{ injectedHostCannotChangePwd|notification({'raw': true, 'context': 'error', 'placeat': '#injectedHostCannotChangePwd', 'noclear': true}) }}
     </div>
     <br/>
 {% endif %}