diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/CategoryTool_importCategoryFile.py b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/CategoryTool_importCategoryFile.py
index 6516eb5a8bc87a76af180326376c630bf159fed7..0fc26dece3b719e571d9e6bab590d77dcd9e0ca0 100644
--- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/CategoryTool_importCategoryFile.py
+++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/CategoryTool_importCategoryFile.py
@@ -1,3 +1,5 @@
+from transaction import doom
+from zExceptions import Success
 from Products.ERP5Type.Message import translateString
 from Products.ERP5Type.Document import newTempBase
 
@@ -57,8 +59,9 @@ category_list_spreadsheet_dict = context.Base_getCategoriesSpreadSheetMapping(
 if detailed_report_result:
   REQUEST.other['portal_status_message'] = translateString('Spreasheet contains errors')
   REQUEST.other['category_import_report'] = detailed_report_result
-  REQUEST.RESPONSE.write(portal_categories.CategoryTool_viewImportReport().encode('utf-8'))
-  raise Exception('Spreadsheet contains errors')
+  # Spreadsheet contains errors
+  doom()
+  raise Success(portal_categories.CategoryTool_viewImportReport().encode('utf-8'))
 
 for base_category, category_list in category_list_spreadsheet_dict.iteritems():
   total_category_counter += len(category_list)
@@ -211,8 +214,9 @@ if detailed_report:
   REQUEST.other['category_import_report'] = detailed_report_result
   result = portal_categories.CategoryTool_viewImportReport().encode('utf-8')
   if simulation_mode:
-    REQUEST.RESPONSE.write(result)
-    raise Exception('Dry run')  
+    # Dry run
+    doom()
+    raise Success(result)
   return result
 portal_categories.Base_redirect(
   keep_items={