diff --git a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/AcknowledgementTool_getUserUnreadAcknowledgementJSON.xml b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/AcknowledgementTool_getUserUnreadAcknowledgementJSON.xml
new file mode 100644
index 0000000000000000000000000000000000000000..8a84333499ee54f8d21190c33675ed4ea249e533
--- /dev/null
+++ b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/AcknowledgementTool_getUserUnreadAcknowledgementJSON.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string>result_list = context.AcknowledgementTool_getUserUnreadAcknowledgementList()\n
+if len(result_list):\n
+  result_list = [result_list[0]]\n
+result_list = [\'{"text_content": "%s", "acknowledge_url": "%s"}\' % (x[\'text_content\'], x[\'acknowledge_url\']) for x in result_list]\n
+\n
+context.REQUEST.RESPONSE.setHeader(\'Content-Type\', \'application/json\')\n
+return \'{"result": [%s]}\' % \', \'.join(result_list)\n
+</string> </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>AcknowledgementTool_getUserUnreadAcknowledgementJSON</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/ERP5Site_getJavaScriptRelativeUrlList.xml b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/ERP5Site_getJavaScriptRelativeUrlList.xml
index 6a5913c46b3e1d4c6baa1d8bd4e993b1395d6905..cc84e87c101cc4d12f3271883fb93c0afd04ae8b 100644
--- a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/ERP5Site_getJavaScriptRelativeUrlList.xml
+++ b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/ERP5Site_getJavaScriptRelativeUrlList.xml
@@ -53,6 +53,7 @@
             <value> <string># This script returns an iterable of the paths to standard JavaScript objects.\n
 \n
 return (\'jquery/core/jquery.js\',\n
+        \'vifib_hosting_js/erp5_acknowledgement.js\',\n
         \'vifib_hosting_js/vifib_hosting.js\',)\n
 </string> </value>
         </item>
diff --git a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_js/erp5_acknowledgement.js.xml b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_js/erp5_acknowledgement.js.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81cf56cfc88181442669fe39dce48799f6772a4a
--- /dev/null
+++ b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_hosting_theme/vifib_hosting_js/erp5_acknowledgement.js.xml
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="DTMLMethod" module="OFS.DTMLMethod"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value> <string>http_cache</string> </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>erp5_acknowledgement.js</string> </value>
+        </item>
+        <item>
+            <key> <string>_vars</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>globals</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+        <item>
+            <key> <string>raw</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+/*\n
+Copyright (c) 2012 Nexedi SA and Contributors. All Rights Reserved.\n
+\n
+This program is Free Software; you can redistribute it and/or\n
+modify it under the terms of the GNU General Public License\n
+as published by the Free Software Foundation; either version 2\n
+of the License, or (at your option) any later version.\n
+\n
+This program is distributed in the hope that it will be useful,\n
+but WITHOUT ANY WARRANTY; without even the implied warranty of\n
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n
+GNU General Public License for more details.\n
+\n
+You should have received a copy of the GNU General Public License\n
+along with this program; if not, write to the Free Software\n
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.\n
+*/\n
+"use strict";\n
+(function (window, $) {\n
+\n
+  var notificationload,\n
+    notificationdisplay,\n
+    notificationsettimeout,\n
+    notificationhide,\n
+    notificationdismiss,\n
+    methods;\n
+\n
+  notificationload = function (context) {\n
+    $.ajax({\n
+      url: \'AcknowledgementTool_getUserUnreadAcknowledgementJSON\',\n
+      dataType: \'json\',\n
+      context: context,\n
+      success: function (data) {\n
+        notificationhide($(this));\n
+        var result = data.result;\n
+        if (result.length === 0) {\n
+          notificationsettimeout($(this));\n
+        } else {\n
+          notificationdisplay($(this), data.result[0]);\n
+        }\n
+      },\n
+      error: function () {\n
+        notificationsettimeout($(this));\n
+      },\n
+    });\n
+  };\n
+\n
+  notificationdisplay = function (context, acknowledgement_json) {\n
+    context\n
+      .css({\n
+        "width": "300px",\n
+        "min-height": "5em",\n
+        "z-index": "9999",\n
+        "position": "fixed",\n
+        "top": "1em",\n
+        "left": "1em",\n
+        "text-align": "center",\n
+        "color": "#eee",\n
+        "font-weight": "bold",\n
+        "font-size": "14px",\n
+        "text-shadow": "1px 1px 0 #000",\n
+        "background-color": "#59bae2",\n
+        "padding": "2px 11px 8px 11px",\n
+        "border-radius": "15px",\n
+      })\n
+      .show()\n
+      .html(acknowledgement_json.text_content)\n
+      .append("<br/><br/><button id=\'acknowledgement_button\'>Mark as read</button>")\n
+      .find("#acknowledgement_button")\n
+      .attr("data-acknowledgement-url", encodeURIComponent(acknowledgement_json.acknowledge_url))\n
+      .click(function () {\n
+        var url = decodeURIComponent($(this).attr("data-acknowledgement-url"));\n
+        notificationdismiss($(this).parent(), url);\n
+        return false;\n
+\n
+      })\n
+      ;\n
+  };\n
+\n
+  notificationhide = function (context) {\n
+    context.hide();\n
+  };\n
+\n
+  notificationdismiss = function (context, url) {\n
+    notificationhide(context);\n
+    $.ajax({\n
+      type: \'POST\',\n
+      url: url,\n
+      context: context,\n
+      async: true,\n
+      complete: function () {\n
+        notificationload($(this));\n
+      },\n
+    });\n
+  };\n
+\n
+  notificationsettimeout = function (context) {\n
+    setTimeout(function () {\n
+      notificationload(context);\n
+    }, 600000);\n
+  };\n
+\n
+  methods = {\n
+    init: function () {\n
+      notificationload($(this));\n
+      return $(this);\n
+    },\n
+  };\n
+\n
+  $.fn.slaposnotification = function (method) {\n
+    var result;\n
+    if (methods.hasOwnProperty(method)) {\n
+      result = methods[method].apply(\n
+        this,\n
+        Array.prototype.slice.call(arguments, 1)\n
+      );\n
+    } else {\n
+      $.error(\'Method \' + method +\n
+              \' does not exist on jQuery.slaposnotification\');\n
+    }\n
+    return result;\n
+  };\n
+}(window, jQuery));\n
+\n
+$(document).ready(function () {\n
+  $("#acknowledgement_zone").slaposnotification("init");\n
+});\n
+\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_widget_library/WebSite_viewTopBarWidget.xml b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_widget_library/WebSite_viewTopBarWidget.xml
index c8c17b7098f242df48d597c6b82e630fbb5b0153..5454c5f1dcfadaa3354e70e4c09261f71c6606a3 100644
--- a/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_widget_library/WebSite_viewTopBarWidget.xml
+++ b/master/bt5/vifib_web/SkinTemplateItem/portal_skins/vifib_jauks_widget_library/WebSite_viewTopBarWidget.xml
@@ -51,6 +51,7 @@
                        logout_form_id python:current_web_site.getLayoutProperty(\'layout_logout_form_id\',\'WebSite_logout\');\n
                        login_form_id python:current_web_site.getLayoutProperty(\'layout_login_form_id\',\'login_form\')">\n
 \n
+<div id="acknowledgement_zone"></div>\n
 <a tal:attributes="href current_web_site_url"><div id="vifib_logo"></div></a>\n
 \n
 <div id="login_menu">\n
@@ -86,8 +87,7 @@
   </ul>\n
 </div>\n
 \n
-</tal:block>\n
-
+</tal:block>
 
 ]]></unicode> </value>
         </item>
diff --git a/master/bt5/vifib_web/bt/revision b/master/bt5/vifib_web/bt/revision
index 26f5507e837387d5f30037c3850049232da923a6..59b8937b629180cffe8cf31af5964f5b31c90fb7 100644
--- a/master/bt5/vifib_web/bt/revision
+++ b/master/bt5/vifib_web/bt/revision
@@ -1 +1 @@
-423
\ No newline at end of file
+424
\ No newline at end of file