diff --git a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml
index af61555a17af29539e8786564f17c3b94eb70746..e93af90e380a0d206dd113925d141253676f0906 100644
--- a/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml
+++ b/bt5/erp5_data_notebook/SkinTemplateItem/portal_skins/erp5_data_notebook/Base_executeJupyter.xml
@@ -61,12 +61,9 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string>from Products.CMFActivity.ActiveResult import ActiveResult\n
-import json\n
+            <value> <string>import json\n
 \n
-selection_id = \'python_shell_selection\'\n
 portal = context.getPortalObject()\n
-portal_selections = portal.portal_selections\n
 \n
 # The boolean values via requests are received as \n
 request_reference = {\'True\': True, \'False\': False}.get(request_reference, False)\n
@@ -129,9 +126,20 @@ result = {\n
   u\'status\': status\n
 }\n
 \n
-data_notebook_message.edit(notebook_code_result=code_result)\n
-\n
-return json.dumps(result)\n
+try:\n
+  serialized_result = json.dumps(result)\n
+  data_notebook_message.edit(notebook_code_result=code_result)\n
+except UnicodeDecodeError:\n
+  result = {\n
+    u\'code_result\': None,\n
+    u\'ename\': u\'UnicodeDecodeError\',\n
+    u\'evalue\': None,\n
+    u\'traceback\': None,\n
+    u\'status\': u\'error\'\n
+  }\n
+  serialized_result = json.dumps(result)\n
+  \n
+return serialized_result\n
 </string> </value>
         </item>
         <item>
diff --git a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py
index 715a494f4813e40ad4277e73cbc6c4dfce7654c0..c12e7022ffd55a84d1cb033ee2c6ffb788e17bdf 100644
--- a/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py
+++ b/bt5/erp5_data_notebook/TestTemplateItem/portal_components/test.erp5.testExecuteJupyter.py
@@ -39,7 +39,7 @@ class TestExecuteJupyter(SecurityTestCase):
     """
     self.notebook_module = self.portal.getDefaultModule(portal_type='Data Notebook')
     self.assertTrue(self.notebook_module is not None)
-    
+
     # Create user to be used in tests
     user_folder = self.getPortal().acl_users
     user_folder._doAddUser('dev_user', '', ['Manager',], [])
@@ -96,7 +96,7 @@ class TestExecuteJupyter(SecurityTestCase):
     result_title = [obj.getTitle() for obj in notebook_search_result]
     if result_title:
       self.assertEquals(notebook.getTitle(), result_title[0])
-  
+
   def testUserCanCreateNotebookWithCode(self):
     """
     Test if user can create Data Notebook Message object or not
@@ -105,8 +105,8 @@ class TestExecuteJupyter(SecurityTestCase):
 
     notebook = self._newNotebook(reference='new_notebook_with_code')
     self.tic()
-  
-    notebook_code='some_random_invalid_notebook_code %s' % time.time() 
+
+    notebook_code='some_random_invalid_notebook_code %s' % time.time()
     self._newNotebookMessage(
                             notebook_module=notebook,
                             notebook_code=notebook_code
@@ -155,7 +155,7 @@ class TestExecuteJupyter(SecurityTestCase):
     python_expression = "print 52"
     reference = 'Test.Notebook.AddNewNotebookMessage %s' % time.time()
     title = 'Test NB Title %s' % time.time()
-    
+
     # Calling the function twice, first to create a new notebook and then
     # sending python_expression to check if it adds to the same notebook
     portal.Base_executeJupyter(title=title, reference=reference)