diff --git a/product/ERP5/skins/erp5_core/SupplyLine_asCellRange.py b/product/ERP5/skins/erp5_core/SupplyLine_asCellRange.py
new file mode 100755
index 0000000000000000000000000000000000000000..1655f13e6cdcd89f616eee0358a41dfbba1521ac
--- /dev/null
+++ b/product/ERP5/skins/erp5_core/SupplyLine_asCellRange.py
@@ -0,0 +1,9 @@
+## Script (Python) "SupplyLine_asCellRange"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
diff --git a/product/ERP5/skins/erp5_core/TemplateTool_baseCategoriesAsCSV.py b/product/ERP5/skins/erp5_core/TemplateTool_baseCategoriesAsCSV.py
new file mode 100755
index 0000000000000000000000000000000000000000..ae644dc3a1969cc211d1574ebefffe2d38dea0be
--- /dev/null
+++ b/product/ERP5/skins/erp5_core/TemplateTool_baseCategoriesAsCSV.py
@@ -0,0 +1,32 @@
+## Script (Python) "TemplateTool_baseCategoriesAsCSV"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+category_dict = {}
+
+for bt in context.portal_templates.contentValues(filter={'portal_type':'Business Template'}):
+  category_dict[bt.getTitle()] = {}
+  for category in bt.getTemplateBaseCategoryList():
+    category_dict[bt.getTitle()][category] = 1
+
+bt_list = category_dict.keys()
+bt_list.sort()
+
+category_list = []
+for category in context.portal_categories.objectValues():
+  category_list.append(category.getId())
+category_list.sort()
+
+msg = ','.join([''] + bt_list) + '\n'
+for category in category_list:
+  msg += category
+  for bt in bt_list:
+    msg += category in category_dict[bt] and ',X' or ','
+  msg += '\n'
+
+return msg
diff --git a/product/ERP5/skins/erp5_core/TemplateTool_modulesAsCSV.py b/product/ERP5/skins/erp5_core/TemplateTool_modulesAsCSV.py
new file mode 100755
index 0000000000000000000000000000000000000000..a2d7066f8dd03f43bf6b59486a8b1805a08e2a8a
--- /dev/null
+++ b/product/ERP5/skins/erp5_core/TemplateTool_modulesAsCSV.py
@@ -0,0 +1,32 @@
+## Script (Python) "TemplateTool_modulesAsCSV"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+module_dict = {}
+
+for bt in context.portal_templates.contentValues(filter={'portal_type':'Business Template'}):
+  module_dict[bt.getTitle()] = {}
+  for id in bt.getTemplateModuleIdList():
+    module_dict[bt.getTitle()][id] = 1
+
+bt_list = module_dict.keys()
+bt_list.sort()
+
+module_list = []
+for module in context.getPortalObject().contentValues(filter={'meta_type':'ERP5 Folder'}):
+  module_list.append(module.getId())
+module_list.sort()
+
+msg = ','.join([''] + bt_list) + '\n'
+for module in module_list:
+  msg += module
+  for bt in bt_list:
+    msg += module in module_dict[bt] and ',X' or ','
+  msg += '\n'
+
+return msg
diff --git a/product/ERP5/skins/erp5_core/TemplateTool_portalTypesAsCSV.py b/product/ERP5/skins/erp5_core/TemplateTool_portalTypesAsCSV.py
new file mode 100755
index 0000000000000000000000000000000000000000..497c51cb0603bae4ce3a01f576711801a7dbd67a
--- /dev/null
+++ b/product/ERP5/skins/erp5_core/TemplateTool_portalTypesAsCSV.py
@@ -0,0 +1,32 @@
+## Script (Python) "TemplateTool_portalTypesAsCSV"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+portal_type_dict = {}
+
+for bt in context.portal_templates.contentValues(filter={'portal_type':'Business Template'}):
+  portal_type_dict[bt.getTitle()] = {}
+  for id in bt.getTemplatePortalTypeIdList():
+    portal_type_dict[bt.getTitle()][id] = 1
+
+bt_list = portal_type_dict.keys()
+bt_list.sort()
+
+portal_type_list = []
+for t in context.portal_types.objectValues():
+  portal_type_list.append(t.id)
+portal_type_list.sort()
+
+msg = ','.join([''] + bt_list) + '\n'
+for type in portal_type_list:
+  msg += type
+  for bt in bt_list:
+    msg += type in portal_type_dict[bt] and ',X' or ','
+  msg += '\n'
+
+return msg
diff --git a/product/ERP5/skins/erp5_core/TemplateTool_workflowsAsCSV.py b/product/ERP5/skins/erp5_core/TemplateTool_workflowsAsCSV.py
new file mode 100755
index 0000000000000000000000000000000000000000..d4dc61bdadec72c77e146f9569bdd77738427290
--- /dev/null
+++ b/product/ERP5/skins/erp5_core/TemplateTool_workflowsAsCSV.py
@@ -0,0 +1,32 @@
+## Script (Python) "TemplateTool_workflowsAsCSV"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind subpath=traverse_subpath
+##parameters=
+##title=
+##
+workflow_dict = {}
+
+for bt in context.portal_templates.contentValues(filter={'portal_type':'Business Template'}):
+  workflow_dict[bt.getTitle()] = {}
+  for id in bt.getTemplateWorkflowIdList():
+    workflow_dict[bt.getTitle()][id] = 1
+
+bt_list = workflow_dict.keys()
+bt_list.sort()
+
+workflow_list = []
+for wf in context.portal_workflow.objectValues():
+  workflow_list.append(wf.getId())
+workflow_list.sort()
+
+msg = ','.join([''] + bt_list) + '\n'
+for wf in workflow_list:
+  msg += wf
+  for bt in bt_list:
+    msg += wf in workflow_dict[bt] and ',X' or ','
+  msg += '\n'
+
+return msg