From 7aa75453b125e2f331a1809185f6dbc2051610d6 Mon Sep 17 00:00:00 2001
From: Jean-Paul Smets <jp@nexedi.com>
Date: Tue, 20 Dec 2011 12:27:50 +0100
Subject: [PATCH] Initial upload of ZODB source prototype

---
 bt5/erp5_core_component/bt/comment            |  20 +++
 bt5/erp5_core_component/bt/copyright_list     |   1 +
 bt5/erp5_core_component/bt/dependency_list    |   1 +
 bt5/erp5_core_component/bt/description        |   1 +
 bt5/erp5_core_component/bt/license            |   1 +
 bt5/erp5_core_component/bt/maintainer_list    |   2 +
 bt5/erp5_core_component/bt/revision           |   1 +
 .../bt/template_format_version                |   1 +
 bt5/erp5_core_component/bt/title              |   1 +
 bt5/erp5_core_component/bt/version            |   1 +
 .../Accessor%20Component/view.xml             |  96 ++++++++++++
 .../portal_types/Component%20Tool/view.xml    |  81 ++++++++++
 .../Document%20Component/view.xml             |  96 ++++++++++++
 .../Extension%20Component/view.xml            |  96 ++++++++++++
 .../Interface%20Component/view.xml            |  96 ++++++++++++
 .../portal_types/Mixin%20Component/view.xml   |  96 ++++++++++++
 .../portal_types/Test%20Component/view.xml    |  96 ++++++++++++
 .../allowed_content_types.xml                 |   8 +
 .../property_sheet_list.xml                   |   6 +
 .../portal_types/Accessor%20Component.xml     | 142 ++++++++++++++++++
 .../portal_types/Component%20Tool.xml         | 139 +++++++++++++++++
 .../portal_types/Document%20Component.xml     | 142 ++++++++++++++++++
 .../portal_types/Extension%20Component.xml    | 142 ++++++++++++++++++
 .../portal_types/Interface%20Component.xml    | 142 ++++++++++++++++++
 .../portal_types/Mixin%20Component.xml        | 142 ++++++++++++++++++
 .../portal_types/Test%20Component.xml         | 142 ++++++++++++++++++
 .../workflow_chain_type.xml                   |   4 +
 .../ToolTemplateItem/portal_components.xml    |  96 ++++++++++++
 .../ERP5/bootstrap/erp5_core/bt/change_log    |   3 +
 product/ERP5/bootstrap/erp5_core/bt/revision  |   2 +-
 .../erp5_core/bt/template_action_path_list    |   7 +
 ...late_portal_type_allowed_content_type_list |   6 +
 .../erp5_core/bt/template_portal_type_id_list |   7 +
 .../template_portal_type_property_sheet_list  |   4 +
 .../template_portal_type_workflow_chain_list  |   2 +
 .../erp5_core/bt/template_tool_id_list        |   1 +
 36 files changed, 1823 insertions(+), 1 deletion(-)
 create mode 100644 bt5/erp5_core_component/bt/comment
 create mode 100644 bt5/erp5_core_component/bt/copyright_list
 create mode 100644 bt5/erp5_core_component/bt/dependency_list
 create mode 100644 bt5/erp5_core_component/bt/description
 create mode 100644 bt5/erp5_core_component/bt/license
 create mode 100644 bt5/erp5_core_component/bt/maintainer_list
 create mode 100644 bt5/erp5_core_component/bt/revision
 create mode 100644 bt5/erp5_core_component/bt/template_format_version
 create mode 100644 bt5/erp5_core_component/bt/title
 create mode 100644 bt5/erp5_core_component/bt/version
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Accessor%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Component%20Tool/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Document%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Extension%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Interface%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Mixin%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Test%20Component/view.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Accessor%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Component%20Tool.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Document%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Extension%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Interface%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Mixin%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Test%20Component.xml
 create mode 100644 product/ERP5/bootstrap/erp5_core/ToolTemplateItem/portal_components.xml

diff --git a/bt5/erp5_core_component/bt/comment b/bt5/erp5_core_component/bt/comment
new file mode 100644
index 0000000000..b33f4ad849
--- /dev/null
+++ b/bt5/erp5_core_component/bt/comment
@@ -0,0 +1,20 @@
+A prototype of pure ZODB source code management for ERP5 (mostly required for Cloud deployments and 24/7 operation).
+
+Migration idea:
+
+Anything which looks like source code in ERP5 (HTML, py, etc.) should be serialized automatically with 2 forks (à la MacOS 6/7/8/9). One fork represents the source code (ex. Order.py) and another fork represents extra metadata which is managed by ZODB (ex. Order.xml).
+
+ERP5 source code is thus moved (in the sens of git) from Products/ERP5/Document/Order.py to bt5/erp5_core_component/.../Order.py. No history is thus lost. It also leads to a quite simple structure since everything which was in Products is now moved to bt5 without any dependency problem.
+
+In the end, only ERP5Type remains. Everything else in ERP5 can be hot updated with nice transactional feature.
+
+First we have to start with Extensions and Documents (present in bt5). Then we should add all files present in Productrs/*/Document and Productrs/*/Tool. Then Mixins and Interfaces. At the end, Accessors. The core of ERP5.
+
+The core of ERP5 will eventually move from ERP5Type to a python library. A wrapper product (ERP5Site) main remain though for compatibility with Zope 2.X.
+
+How to develop in this environment:
+- all coding, debuging and testing should be handled TTW with a good AJAX editor or with external editor. The ERP5 runtime is supposed to be located remotely on the Cloud, no longer on a laptop or local server
+- users of kate, emacs, vi, etc. should remote mount ZODB to edit text files through WebDAV. FUSE/DAVS works well enough these days for this purpose
+
+git integration
+- this topic is still under discussion since ZODB plays here the role 
diff --git a/bt5/erp5_core_component/bt/copyright_list b/bt5/erp5_core_component/bt/copyright_list
new file mode 100644
index 0000000000..833de3039f
--- /dev/null
+++ b/bt5/erp5_core_component/bt/copyright_list
@@ -0,0 +1 @@
+Nexedi SA
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/dependency_list b/bt5/erp5_core_component/bt/dependency_list
new file mode 100644
index 0000000000..d0ca7aef23
--- /dev/null
+++ b/bt5/erp5_core_component/bt/dependency_list
@@ -0,0 +1 @@
+erp5_core
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/description b/bt5/erp5_core_component/bt/description
new file mode 100644
index 0000000000..cc9902aea1
--- /dev/null
+++ b/bt5/erp5_core_component/bt/description
@@ -0,0 +1 @@
+ZODB based component system for ERP5.
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/license b/bt5/erp5_core_component/bt/license
new file mode 100644
index 0000000000..3a3e12bcad
--- /dev/null
+++ b/bt5/erp5_core_component/bt/license
@@ -0,0 +1 @@
+GPL
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/maintainer_list b/bt5/erp5_core_component/bt/maintainer_list
new file mode 100644
index 0000000000..4565a022a4
--- /dev/null
+++ b/bt5/erp5_core_component/bt/maintainer_list
@@ -0,0 +1,2 @@
+Arnaud
+jp
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/revision b/bt5/erp5_core_component/bt/revision
new file mode 100644
index 0000000000..d8263ee986
--- /dev/null
+++ b/bt5/erp5_core_component/bt/revision
@@ -0,0 +1 @@
+2
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/template_format_version b/bt5/erp5_core_component/bt/template_format_version
new file mode 100644
index 0000000000..56a6051ca2
--- /dev/null
+++ b/bt5/erp5_core_component/bt/template_format_version
@@ -0,0 +1 @@
+1
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/title b/bt5/erp5_core_component/bt/title
new file mode 100644
index 0000000000..e37d3494de
--- /dev/null
+++ b/bt5/erp5_core_component/bt/title
@@ -0,0 +1 @@
+erp5_core_component
\ No newline at end of file
diff --git a/bt5/erp5_core_component/bt/version b/bt5/erp5_core_component/bt/version
new file mode 100644
index 0000000000..ceab6e11ec
--- /dev/null
+++ b/bt5/erp5_core_component/bt/version
@@ -0,0 +1 @@
+0.1
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Accessor%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Accessor%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Accessor%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Component%20Tool/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Component%20Tool/view.xml
new file mode 100644
index 0000000000..7affec390a
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Component%20Tool/view.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/ComponentTool_viewComponentValueList</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Document%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Document%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Document%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Extension%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Extension%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Extension%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Interface%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Interface%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Interface%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Mixin%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Mixin%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Mixin%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Test%20Component/view.xml b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Test%20Component/view.xml
new file mode 100644
index 0000000000..798a3b3b31
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ActionTemplateItem/portal_types/Test%20Component/view.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ActionInformation" module="Products.CMFCore.ActionInformation"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>action</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>categories</string> </key>
+            <value>
+              <tuple>
+                <string>action_type/object_view</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>category</string> </key>
+            <value> <string>object_view</string> </value>
+        </item>
+        <item>
+            <key> <string>condition</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>icon</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>view</string> </value>
+        </item>
+        <item>
+            <key> <string>permissions</string> </key>
+            <value>
+              <tuple>
+                <string>View</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>priority</string> </key>
+            <value> <float>1.0</float> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>View</string> </value>
+        </item>
+        <item>
+            <key> <string>visible</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>string:${object_url}/DocumentComponent_view</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="Expression" module="Products.CMFCore.Expression"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>text</string> </key>
+            <value> <string>python: object is not None and not object.isWebMode()</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
index 5d89a90763..d8299e3173 100644
--- a/product/ERP5/bootstrap/erp5_core/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeAllowedContentTypeTemplateItem/allowed_content_types.xml
@@ -32,6 +32,14 @@
  <portal_type id="Category Tool">
   <item>Base Category</item>
  </portal_type>
+ <portal_type id="Component Tool">
+  <item>Accessor Component</item>
+  <item>Document Component</item>
+  <item>Extension Component</item>
+  <item>Interface Component</item>
+  <item>Mixin Component</item>
+  <item>Test Component</item>
+ </portal_type>
  <portal_type id="Contribution Registry Tool">
   <item>Contribution Predicate</item>
  </portal_type>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypePropertySheetTemplateItem/property_sheet_list.xml b/product/ERP5/bootstrap/erp5_core/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
index 75d44d9474..8ee4fa2ce1 100644
--- a/product/ERP5/bootstrap/erp5_core/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypePropertySheetTemplateItem/property_sheet_list.xml
@@ -1,4 +1,10 @@
 <property_sheet_list>
+ <portal_type id="Document Component">
+  <item>DocumentConstraint</item>
+  <item>Reference</item>
+  <item>SortIndex</item>
+  <item>Version</item>
+ </portal_type>
  <portal_type id="Trash Bin">
   <item>Base</item>
   <item>SimpleItem</item>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Accessor%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Accessor%20Component.xml
new file mode 100644
index 0000000000..5d19a8c37c
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Accessor%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>An Accessor Component defines how to get and set properties of a document. It is used usually by Document Classes which implement properties of a property sheet.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Accessor Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>DocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Component%20Tool.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Component%20Tool.xml
new file mode 100644
index 0000000000..276e07baf4
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Component%20Tool.xml
@@ -0,0 +1,139 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>folder_icon.gif</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Rule Tool</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>Component Tool includes source code of all ERP5 components of a system.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addFolder</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>module</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Component Tool</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>ComponentTool</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Document%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Document%20Component.xml
new file mode 100644
index 0000000000..a135f772be
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Document%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>All persistent ERP5 objects with a user interface are documents. A Document Component contains a python class which defines the behaviour of persistent ERP5 documents stored in ZODB. </string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Document Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>DocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Extension%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Extension%20Component.xml
new file mode 100644
index 0000000000..0d9fe94b59
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Extension%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>An Extension Component may contain arbitrary python code. Each function defined in an Extension Component can be published in ERP5 through so-called "External Method" objects. The use of Extension Component and External Methods is not recommended and will eventually be replaced with a more document centric approach.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Extension Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>DocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Interface%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Interface%20Component.xml
new file mode 100644
index 0000000000..b1556ce935
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Interface%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>An Interface Component defines the methods and property sheets which a portal type is expected to provide. </string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Interface Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>TestDocument</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Mixin%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Mixin%20Component.xml
new file mode 100644
index 0000000000..0927178a6d
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Mixin%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>A mixin component usually provides a complete or partial, reusable and extensible implementation of an interface. By subclassing a mixin, a Document Component can provide an interface.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Mixin Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>DocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Test%20Component.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Test%20Component.xml
new file mode 100644
index 0000000000..dbb053ecc5
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeTemplateItem/portal_types/Test%20Component.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Base Type" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_property_domain_dict</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>short_title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+                    </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>acquire_local_roles</string> </key>
+            <value> <int>0</int> </value>
+        </item>
+        <item>
+            <key> <string>content_icon</string> </key>
+            <value> <string>web_page.png</string> </value>
+        </item>
+        <item>
+            <key> <string>content_meta_type</string> </key>
+            <value> <string>ERP5 Text Document</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value> <string>A test component is a collection of subclasses of ERP5TestCase which define abstract tests to cover unit, functional or naming specifications.</string> </value>
+        </item>
+        <item>
+            <key> <string>factory</string> </key>
+            <value> <string>addDocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>filter_content_types</string> </key>
+            <value> <int>1</int> </value>
+        </item>
+        <item>
+            <key> <string>group_list</string> </key>
+            <value>
+              <tuple>
+                <string>document</string>
+                <string>my_document</string>
+                <string>recent_document</string>
+                <string>web_document</string>
+              </tuple>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Test Component</string> </value>
+        </item>
+        <item>
+            <key> <string>init_script</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>permission</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>type_class</string> </key>
+            <value> <string>DocumentComponent</string> </value>
+        </item>
+        <item>
+            <key> <string>type_interface</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>type_mixin</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>short_title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <tuple>
+        <global name="TranslationInformation" module="Products.ERP5Type.TranslationProviderBase"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>domain_name</string> </key>
+            <value> <string>erp5_content</string> </value>
+        </item>
+        <item>
+            <key> <string>property_name</string> </key>
+            <value> <string>title</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml b/product/ERP5/bootstrap/erp5_core/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
index 3d73004af4..ca2bd886b2 100644
--- a/product/ERP5/bootstrap/erp5_core/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
+++ b/product/ERP5/bootstrap/erp5_core/PortalTypeWorkflowChainTemplateItem/workflow_chain_type.xml
@@ -83,6 +83,10 @@
   <type>Document</type>
   <workflow>edit_workflow</workflow>
  </chain>
+ <chain>
+  <type>Document Component</type>
+  <workflow>edit_workflow, validation_workflow</workflow>
+ </chain>
  <chain>
   <type>Dynamic Category Property</type>
   <workflow>dynamic_class_generation_interaction_workflow</workflow>
diff --git a/product/ERP5/bootstrap/erp5_core/ToolTemplateItem/portal_components.xml b/product/ERP5/bootstrap/erp5_core/ToolTemplateItem/portal_components.xml
new file mode 100644
index 0000000000..62296c363e
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_core/ToolTemplateItem/portal_components.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Component Tool" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_count</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_mt_index</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>_tree</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>portal_components</string> </value>
+        </item>
+        <item>
+            <key> <string>last_id</string> </key>
+            <value> <string>4</string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string>Components</string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="Length" module="BTrees.Length"/>
+    </pickle>
+    <pickle> <int>0</int> </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <tuple>
+          <tuple>
+            <tuple>
+              <string>ERP5 Document Component</string>
+              <persistent> <string encoding="base64">AAAAAAAAAAU=</string> </persistent>
+            </tuple>
+          </tuple>
+        </tuple>
+      </tuple>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="OOBTree" module="BTrees.OOBTree"/>
+    </pickle>
+    <pickle>
+      <none/>
+    </pickle>
+  </record>
+  <record id="5" aka="AAAAAAAAAAU=">
+    <pickle>
+      <global name="OIBTree" module="BTrees.OIBTree"/>
+    </pickle>
+    <pickle>
+      <tuple>
+        <tuple>
+          <tuple>
+            <tuple>
+              <string>erp5.interface.test_document</string>
+              <int>1</int>
+            </tuple>
+          </tuple>
+        </tuple>
+      </tuple>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_core/bt/change_log b/product/ERP5/bootstrap/erp5_core/bt/change_log
index 6239b39f87..57f29a07b2 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/change_log
+++ b/product/ERP5/bootstrap/erp5_core/bt/change_log
@@ -1,3 +1,6 @@
+2012-12-20 arnaud.fontaine
+* Add initial ZODB component prototype.
+
 2011-10-25 yusei
 * Fix Base_resetListSetting. It did not work with "Set List Setting" dialog. Now it accepts any parameters.
 
diff --git a/product/ERP5/bootstrap/erp5_core/bt/revision b/product/ERP5/bootstrap/erp5_core/bt/revision
index 6cc24b52ec..67c2a132aa 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/revision
+++ b/product/ERP5/bootstrap/erp5_core/bt/revision
@@ -1 +1 @@
-40988
\ No newline at end of file
+40989
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list b/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list
index a5661254f8..db2775ff0b 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_action_path_list
@@ -1,3 +1,4 @@
+Accessor Component | view
 Acquired Property | view
 Action Information | view
 Alarm Tool | alarm_report
@@ -57,6 +58,7 @@ Category Tool | view
 Category | view
 Class Tool | run_live_test
 Class Tool | view
+Component Tool | view
 Conceptual Id Generator | view
 Content Existence Constraint | predicate
 Content Existence Constraint | view
@@ -64,14 +66,18 @@ Contribution Predicate | view
 Contribution Registry Tool | view
 Distributed Ram Cache | view
 Document | view
+Document Component | view
 Domain Generator | view
 Domain Tool | view
 Domain | view
 Dynamic Category Property | view
+Extension Component | view
 Folder | view
 Id Tool | view
+Interface Component | view
 Memcached Plugin | view
 Memcached Tool | view
+Mixin Component | view
 Predicate | view
 Preference Tool Type | view
 Preference Tool | advanced
@@ -116,6 +122,7 @@ Template Tool | jump_trash_bins
 Template Tool | update
 Template Tool | upgrade_from_repository
 Template Tool | view
+Test Component | view
 Trash Bin | jump_bt5
 Trash Bin | view
 Trash Folder | view
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_allowed_content_type_list b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_allowed_content_type_list
index 3913ce8634..233e562720 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_allowed_content_type_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_allowed_content_type_list
@@ -11,6 +11,12 @@ Cache Factory | Ram Cache
 Cache Tool | Cache Factory
 Category Tool | Base Category
 Category | Category
+Component Tool | Accessor Component
+Component Tool | Document Component
+Component Tool | Extension Component
+Component Tool | Interface Component
+Component Tool | Mixin Component
+Component Tool | Test Component
 Contribution Registry Tool | Contribution Predicate
 Domain Tool | Base Domain
 Domain | Domain
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_id_list b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_id_list
index 35060fd27b..9c6b17a2ef 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_id_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_id_list
@@ -1,3 +1,4 @@
+Accessor Component
 Acknowledgement Tool
 Acquired Property
 Action Information
@@ -27,6 +28,7 @@ Category Related Membership Arity Constraint
 Category Related Membership State Constraint
 Category Tool
 Class Tool
+Component Tool
 Conceptual Id Generator
 Content Existence Constraint
 Contribution Predicate
@@ -34,6 +36,7 @@ Contribution Registry Tool
 Delivery Tool
 Distributed Ram Cache
 Document
+Document Component
 Documentation Helper
 Domain
 Domain Generator
@@ -41,11 +44,14 @@ Domain Tool
 Dummy Class Tool
 Dynamic Category Property
 Event
+Extension Component
 Folder
 Id Tool
+Interface Component
 Mapped Value
 Memcached Plugin
 Memcached Tool
+Mixin Component
 Movement
 Notification Tool
 Order Tool
@@ -74,6 +80,7 @@ Synchronization Tool
 System Preference
 TALES Constraint
 Template Tool
+Test Component
 Test Tool
 Trash Bin
 Trash Folder
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_property_sheet_list b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_property_sheet_list
index 59afc64f14..27bc033b31 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_property_sheet_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_property_sheet_list
@@ -1,3 +1,7 @@
+Document Component | DocumentConstraint
+Document Component | Reference
+Document Component | SortIndex
+Document Component | Version
 Trash Bin | Base
 Trash Bin | SimpleItem
 Trash Bin | Task
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_workflow_chain_list b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_workflow_chain_list
index da58e125eb..549c0c225a 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_workflow_chain_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_portal_type_workflow_chain_list
@@ -22,6 +22,8 @@ Category | edit_workflow
 Content Existence Constraint | dynamic_class_generation_interaction_workflow
 Distributed Ram Cache | distributed_ram_cache_interaction_workflow
 Document | edit_workflow
+Document Component | edit_workflow
+Document Component | validation_workflow
 Dynamic Category Property | dynamic_class_generation_interaction_workflow
 Mapped Value | edit_workflow
 Memcached Plugin | memcached_plugin_interaction_workflow
diff --git a/product/ERP5/bootstrap/erp5_core/bt/template_tool_id_list b/product/ERP5/bootstrap/erp5_core/bt/template_tool_id_list
index 0e6ab25ecf..d505820902 100644
--- a/product/ERP5/bootstrap/erp5_core/bt/template_tool_id_list
+++ b/product/ERP5/bootstrap/erp5_core/bt/template_tool_id_list
@@ -1,4 +1,5 @@
 mimetypes_registry
+portal_components
 portal_contribution_registry
 portal_notifications
 portal_sessions
-- 
2.30.9