diff --git a/product/ERP5/Tool/WorkflowTool.py b/product/ERP5/Tool/WorkflowTool.py
index 36a2e1551520319a920e4f05b97abb48aac7986c..069587786897bc9201145421df4dd55cab5de9c6 100644
--- a/product/ERP5/Tool/WorkflowTool.py
+++ b/product/ERP5/Tool/WorkflowTool.py
@@ -428,7 +428,8 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
         variable.edit(title=vdef.title)
         variable.setReference(vdef.id)
         variable.setAutomaticUpdate(vdef.update_always)
-        variable.setDefaultExpr(vdef.default_expr)
+        if getattr(vdef, 'default_expr', None) is not None:
+          variable.setDefaultExpr(vdef.default_expr.text)
         variable.info_guard = vdef.info_guard
         variable.setForCatalog(vdef.for_catalog)
         variable.setForStatus(vdef.for_status)
@@ -598,10 +599,13 @@ class WorkflowTool(BaseTool, OriginalWorkflowTool):
       'Base_getWorklistIgnoredSecurityColumnSet', lambda: ())()
 
   def getTypeCBT(self, pt):
-    return self._chains_by_type.get(pt)
+    return self._chains_by_type[pt]
+
+  def addTypeCBT(self, pt, wf_id):
+    self._chains_by_type[pt] = self._chains_by_type[pt] + (wf_id, )
 
   def delTypeCBT(self, pt, wf_id):
-    self._chains_by_type = tuple(list(self._chains_by_type).remove(wf_id))
+    self._chains_by_type[pt] = tuple(wf for wf in self._chains_by_type[pt] if wf != wf_id)
 
   def listActions(self, info=None, object=None, src__=False):
     """