diff --git a/product/ERP5/Tool/TemplateTool.py b/product/ERP5/Tool/TemplateTool.py
index 039093797e21e7b8f27a4292de0d3c4bb12b1b2a..d59d054401e37d5ea5a657038931e533899814e6 100755
--- a/product/ERP5/Tool/TemplateTool.py
+++ b/product/ERP5/Tool/TemplateTool.py
@@ -26,17 +26,30 @@
 #
 ##############################################################################
 
+import cStringIO
+from webdav.client import Resource
 from Products.CMFCore.utils import UniqueObject
 
+from Acquisition import Implicit
 from AccessControl import ClassSecurityInfo
-from Globals import InitializeClass, DTMLFile
-from Products.ERP5Type.Document.Folder import Folder
+from Globals import InitializeClass, DTMLFile, PersistentMapping
+from Products.ERP5Type.Document import Folder
 from Products.ERP5Type import Permissions
 
 from Products.ERP5 import _dtmldir
 
 from zLOG import LOG
 
+class LocalConfiguration(Implicit):
+  """
+    Holds local configuration information
+  """
+  def __init__(self, **kw):
+    self.__dict__.update(kw)
+
+  def update(self, **kw):
+    self.__dict__.update(kw)
+
 class TemplateTool (UniqueObject, Folder):
     """
     The RulesTool implements portal object
@@ -116,17 +129,58 @@ class TemplateTool (UniqueObject, Folder):
                 meta_types.append(meta_type)
         return meta_types
 
-    def importDocumentClass(self, path):
+    # Import a business template
+    def importURL(self, url):
       """
-        Imports a document class
+        Import a business template
       """
-      import imp
-      from Products.ERP5Type.Utils import importLocalDocumentClass
-      local_product = self.Control_Panel.Products.ERP5
-      app = local_product._p_jar.root()['Application']
-      importLocalDocumentClass('Test')
-
+      # Copy it to import directory
+      # and import in self
+
+    def updateLocalConfiguration(self, template, **kw):
+      template_id = template.getId()
+      if not hasattr(self, '_local_configuration'): self._local_configuration = PersistentMapping()
+      if not self._local_configuration.has_key(template_id):
+        self._local_configuration[template_id] = LocalConfiguration(**kw)
+      else:
+        self._local_configuration[template_id].update(**kw)
+
+    def getLocalConfiguration(self, template):
+      template_id = template.getId()
+      if not hasattr(self, '_local_configuration'): self._local_configuration = PersistentMapping()
+      local_configuration = self._local_configuration.get(template_id, None)
+      if local_configuration is not None:
+        return local_configuration.__of__(self)
+      return None
+
+    def publish(self, business_template, url, username=None, password=None):
+      """
+        Publish in a format or another
+      """
+      business_template.build()
+      export_string = self.manage_exportObject(id=business_template.getId(), download=1)
+      bt = Resource(url, username=username, password=password)
+      bt.put(file=export_string, content_type='application/erp5-business-template')
+      business_template.setPublicationUrl(url)
 
-      #__import__('Document.Test')
+    def update(self, business_template):
+      """
+        Update an existing template
+      """
+      url = business_template.getPublicationUrl()
+      id = business_template.getId()
+      bt = Resource(url)
+      export_string = bt.get().get_body()
+      self.deleteContent(id)
+      self._importObjectFromFile(cStringIO.StringIO(export_string), id=id)
+
+    def download(self, url, id=None):
+      """
+        Update an existing template
+      """
+      from urllib import urlretrieve
+      file, headers = urlretrieve(url)
+      if id is None: id = self.generateNewId()      
+      self._importObjectFromFile(file, id=id)
 
 InitializeClass(TemplateTool)