diff --git a/product/ERP5Type/Base.py b/product/ERP5Type/Base.py
index 9a735981ad8831c1e9aa77ae1f993a68af6e40f0..0f6127388978236d3542676e9260c995d5731932 100755
--- a/product/ERP5Type/Base.py
+++ b/product/ERP5Type/Base.py
@@ -182,13 +182,7 @@ def initializePortalTypeDynamicProperties(self, klass, ptype, recursive=0):
       else:
         prop_holder.security = ClassSecurityInfo() # Is this OK for security XXX ?
       from Utils import initializeDefaultProperties
-      #LOG('initializeDefaultProperties: %s' % ptype, 0, str(prop_holder.__dict__))
-      try:
-        initializeDefaultProperties([prop_holder], object=self)
-      except:
-        LOG('Base', ERROR,
-            'Could not generate default properties on portal type %s.' % ptype,
-              error=sys.exc_info())
+      initializeDefaultProperties([prop_holder], object=self)
       #LOG('initializeDefaultProperties: %s' % ptype, 0, str(prop_holder.__dict__))
       # We should now make sure workflow methods are defined
       # and also make sure simulation state is defined
@@ -196,81 +190,71 @@ def initializePortalTypeDynamicProperties(self, klass, ptype, recursive=0):
       #LOG('getWorkflowsFor', 0, str((self, [wf.id for wf in portal_workflow.getWorkflowsFor(self)])))
       for wf in portal_workflow.getWorkflowsFor(self):
         wf_id = wf.id
-        try:
-          #LOG('in aq_portal_type %s' % id, 0, "found state workflow %s" % wf.id)
-          if wf.__class__.__name__ in ('DCWorkflowDefinition', ):
-            # Create state var accessor
-            state_var = wf.variables.getStateVar()
-            method_id = 'get%s' % UpperCase(state_var)
-            if not hasattr(prop_holder, method_id):
-              method = WorkflowState.Getter(method_id, wf_id)
-              setattr(prop_holder, method_id, method) # Attach to portal_type
-              prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
-            method_id = 'get%sTitle' % UpperCase(state_var)
-            if not hasattr(prop_holder, method_id):
-              method = WorkflowState.TitleGetter(method_id, wf_id)
-              setattr(prop_holder, method_id, method) # Attach to portal_type
-              prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
-              #LOG('in aq_portal_type %s' % id, 0, "added state method %s" % method_id)
-        except:
-          LOG('Base', ERROR,
-              'Could not generate worklow state method for workflow %s on class %s.' % (wf_id, ptype),
-                error=sys.exc_info())
-        try:
-          #LOG('in aq_portal_type %s' % id, 0, "found transition workflow %s" % wf.id)
-          if wf.__class__.__name__ in ('DCWorkflowDefinition', ):
-            for tr_id in wf.transitions.objectIds():
-              tdef = wf.transitions.get(tr_id, None)
-              if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
-                method_id = convertToMixedCase(tr_id)
-                # We have to make a difference between a method which is on
-                # the prop_holder or on the klass, if the method is on the
-                # klass, then the WorkflowMethod created also need to be on the klass
+        #LOG('in aq_portal_type %s' % id, 0, "found state workflow %s" % wf.id)
+        if wf.__class__.__name__ in ('DCWorkflowDefinition', ):
+          # Create state var accessor
+          state_var = wf.variables.getStateVar()
+          method_id = 'get%s' % UpperCase(state_var)
+          if not hasattr(prop_holder, method_id):
+            method = WorkflowState.Getter(method_id, wf_id)
+            setattr(prop_holder, method_id, method) # Attach to portal_type
+            prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
+          method_id = 'get%sTitle' % UpperCase(state_var)
+          if not hasattr(prop_holder, method_id):
+            method = WorkflowState.TitleGetter(method_id, wf_id)
+            setattr(prop_holder, method_id, method) # Attach to portal_type
+            prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
+            #LOG('in aq_portal_type %s' % id, 0, "added state method %s" % method_id)
+        #LOG('in aq_portal_type %s' % id, 0, "found transition workflow %s" % wf.id)
+        if wf.__class__.__name__ in ('DCWorkflowDefinition', ):
+          for tr_id in wf.transitions.objectIds():
+            tdef = wf.transitions.get(tr_id, None)
+            if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
+              method_id = convertToMixedCase(tr_id)
+              # We have to make a difference between a method which is on
+              # the prop_holder or on the klass, if the method is on the
+              # klass, then the WorkflowMethod created also need to be on the klass
+              if not hasattr(prop_holder, method_id) and not hasattr(klass,method_id):
+                method = WorkflowMethod(klass._doNothing, tr_id)
+                setattr(prop_holder, method_id, method) # Attach to portal_type
+                prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
+                #LOG('in aq_portal_type %s' % id, 0, "added transition method %s" % method_id)
+              else:
+                # Wrap method into WorkflowMethod is needed
+                if getattr(klass,method_id,None) is not None:
+                  method = getattr(klass, method_id)
+                  if callable(method):
+                    if not isinstance(method, WorkflowMethod):
+                      setattr(klass, method_id, WorkflowMethod(method, method_id))
+                else:
+                  method = getattr(prop_holder, method_id)
+                  if callable(method):
+                    if not isinstance(method, WorkflowMethod):
+                      setattr(prop_holder, method_id, WorkflowMethod(method, method_id))
+        elif wf.__class__.__name__ in ('InteractionWorkflowDefinition', ):
+          for tr_id in wf.interactions.objectIds():
+            tdef = wf.interactions.get(tr_id, None)
+            if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
+              for imethod_id in tdef.method_id:
+                method_id = imethod_id
                 if not hasattr(prop_holder, method_id) and not hasattr(klass,method_id):
-                  method = WorkflowMethod(klass._doNothing, tr_id)
+                  method = WorkflowMethod(klass._doNothing, imethod_id)
                   setattr(prop_holder, method_id, method) # Attach to portal_type
                   prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
-                  #LOG('in aq_portal_type %s' % id, 0, "added transition method %s" % method_id)
                 else:
                   # Wrap method into WorkflowMethod is needed
                   if getattr(klass,method_id,None) is not None:
                     method = getattr(klass, method_id)
                     if callable(method):
                       if not isinstance(method, WorkflowMethod):
-                        setattr(klass, method_id, WorkflowMethod(method, method_id))
+                        method = WorkflowMethod(method, method_id)
+                        setattr(klass, method_id, method)
                   else:
                     method = getattr(prop_holder, method_id)
                     if callable(method):
                       if not isinstance(method, WorkflowMethod):
-                        setattr(prop_holder, method_id, WorkflowMethod(method, method_id))
-          elif wf.__class__.__name__ in ('InteractionWorkflowDefinition', ):
-            for tr_id in wf.interactions.objectIds():
-              tdef = wf.interactions.get(tr_id, None)
-              if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
-                for imethod_id in tdef.method_id:
-                  method_id = imethod_id
-                  if not hasattr(prop_holder, method_id) and not hasattr(klass,method_id):
-                    method = WorkflowMethod(klass._doNothing, imethod_id)
-                    setattr(prop_holder, method_id, method) # Attach to portal_type
-                    prop_holder.security.declareProtected( Permissions.AccessContentsInformation, method_id )
-                  else:
-                    # Wrap method into WorkflowMethod is needed
-                    if getattr(klass,method_id,None) is not None:
-                      method = getattr(klass, method_id)
-                      if callable(method):
-                        if not isinstance(method, WorkflowMethod):
-                          method = WorkflowMethod(method, method_id)
-                          setattr(klass, method_id, method)
-                    else:
-                      method = getattr(prop_holder, method_id)
-                      if callable(method):
-                        if not isinstance(method, WorkflowMethod):
-                          method = WorkflowMethod(method, method_id)
-                          setattr(prop_holder, method_id, method)
-        except:
-          LOG('Base', ERROR,
-              'Could not generate worklow transition methods for workflow %s on class %s.' % (wf_id, klass),
-                error=sys.exc_info())
+                        method = WorkflowMethod(method, method_id)
+                        setattr(prop_holder, method_id, method)
     
     # We can now associate it
     Base.aq_portal_type[ptype] = prop_holder
@@ -368,19 +352,12 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
 
     # Generate class methods
     if not Base.aq_method_generated.has_key(klass):
-      try:
-        initializeClassDynamicProperties(self, klass)
-      except:
-        LOG('_aq_dynamic',0,'error in initializeClassDynamicProperties', error=sys.exc_info())
+      initializeClassDynamicProperties(self, klass)
       generated = 1
 
     # Generate portal_type methods
     if not Base.aq_portal_type.has_key(ptype):
-      try:
-        initializePortalTypeDynamicProperties(self, klass, ptype)
-        #LOG('_aq_dynamic for %s' % ptype,0, aq_portal_type[ptype].__dict__.keys())
-      except:
-        LOG('_aq_dynamic',0,'error in initializePortalTypeDynamicProperties', error=sys.exc_info())
+      initializePortalTypeDynamicProperties(self, klass, ptype)
       generated = 1
 
     # Generate Related Accessors
@@ -967,6 +944,13 @@ class Base( CopyContainer, PortalContent, ActiveObject, ERP5PropertyManager ):
     """
     return self
 
+  def getDocumentInstance(self):
+    """
+      Returns self
+      Returns instance if catehory throughdocument_instance relation
+    """
+    return self
+    
   security.declareProtected( Permissions.AccessContentsInformation, 'asParentSqlExpression' )
   def getParentSqlExpression(self, table = 'catalog', strict_membership = 0):
     """