diff --git a/product/ERP5Form/SelectionTool.py b/product/ERP5Form/SelectionTool.py
index fc2d0bc05ca62484c31819beea44ef7160fb5bcb..c99bc8f18d5f30479e223e300f6fdd353cd26f22 100644
--- a/product/ERP5Form/SelectionTool.py
+++ b/product/ERP5Form/SelectionTool.py
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 ##############################################################################
 #
 # Copyright (c) 2002,2007 Nexedi SARL and Contributors. All Rights Reserved.
@@ -113,14 +114,24 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
                 (self.absolute_url(), 'manage_viewSelections'))
 
     # storages of SelectionTool
-    storage_list = ('Persistent Mapping', 'Memcached Tool')
+    security.declareProtected(ERP5Permissions.ManagePortal
+                              , 'getStorageItemList')
+    def getStorageItemList(self):
+      """Return the list of available storages
+      """
+      #storage_item_list = [('Persistent Mapping', 'selection_data',)]
+      #list of tuple may fail dtml code: zope/documenttemplate/dt_in.py +578
+      storage_item_list = [['Persistent Mapping', 'selection_data']]
+      memcached_plugin_list = self.portal_memcached.contentValues(portal_type='Memcached Plugin', sort_on='int_index')
+      storage_item_list.extend([['/'.join((mp.getParentValue().getTitle(), mp.getTitle(),)), mp.getRelativeUrl()] for mp in memcached_plugin_list])
+      return storage_item_list
 
     security.declareProtected( ERP5Permissions.ManagePortal, 'setStorage')
     def setStorage(self, value, RESPONSE=None):
       """
         Set the storage of Selection Tool.
       """
-      if value in self.storage_list:
+      if value in [item[1] for item in self.getStorageItemList()]:
         self.storage = value
       else:
         raise ValueError, 'Given storage type (%s) is now supported.' % (value,)
@@ -128,15 +139,22 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
         RESPONSE.redirect('%s/manage_configure' % (self.absolute_url()))
 
     def getStorage(self, default=None):
+      """return the selected storage
+      """
       if default is None:
-        default = self.storage_list[0]
+        default = self.getStorageItemList()[0][1]
       storage = getattr(aq_base(self), 'storage', default)
-      if storage is not default and storage not in self.storage_list:
-        storage = self.storage_list[0]
+      if storage is not default and storage not in [item[1] for item in self.getStorageItemList()]:
+        #Backward compatibility
+        if storage == 'Persistent Mapping':
+          storage = 'selection_data'
+        elif storage == 'Memcached Tool':
+          memcached_plugin_list = self.portal_memcached.contentValues(portal_type='Memcached Plugin', sort_on='int_index')
+          storage = memcached_plugin_list[0].getRelativeUrl()
       return storage
 
     def isMemcachedUsed(self):
-      return self.getStorage() == 'Memcached Tool'
+      return 'portal_memcached' in self.getStorage()
 
     def _redirectToOriginalForm(self, REQUEST=None, form_id=None, dialog_id=None,
                                 query_string=None,
@@ -1340,7 +1358,10 @@ class SelectionTool( BaseTool, UniqueObject, SimpleItem ):
     def _getMemcachedContainer(self):
       value = getattr(aq_base(self), '_v_selection_data', None)
       if value is None:
-        value = self.getPortalObject().portal_memcached.getMemcachedDict(key_prefix='selection_tool')
+        plugin_path = self.getStorage()
+        value = self.getPortalObject().\
+                portal_memcached.getMemcachedDict(key_prefix='selection_tool',
+                                                  plugin_path=plugin_path)
         setattr(self, '_v_selection_data', value)
       return value
 
diff --git a/product/ERP5Form/dtml/SelectionTool_configure.dtml b/product/ERP5Form/dtml/SelectionTool_configure.dtml
index 59621e70b5a26df035972704a2fed1f4df54c4d0..9dddef6a36f478feb5497a30d187b6ad2a2cdd83 100644
--- a/product/ERP5Form/dtml/SelectionTool_configure.dtml
+++ b/product/ERP5Form/dtml/SelectionTool_configure.dtml
@@ -6,16 +6,30 @@
   Selection Tool supports Memcached Tool and Persistent Mapping for its storage.
 </p>
 <div>
-  Current setting: <dtml-var getStorage html_quote>
+  <dtml-let storage_item_list="getStorageItemList()">
+    <dtml-in prefix="store" name="storage_item_list">
+      <dtml-let storage="store_item[1]"
+                  storage_title="store_item[0]"
+                  selected="storage == getStorage()">
+        <dtml-if selected>
+          Current setting: <dtml-var storage_title html_quote>
+        </dtml-if>
+      </dtml-let>
+    </dtml-in>
+  </dtml-let>
 </div>
 
 <form action="setStorage" method="post">
   <select name="value">
-    <dtml-in "storage_list">
-      <dtml-let selected="_['sequence-item'] == getStorage() and ' selected' or ''">
-        <option value="&dtml-sequence-item;"&dtml-selected;>&dtml-sequence-item;</option>
-      </dtml-let>
-    </dtml-in>
+    <dtml-let storage_item_list="getStorageItemList()">
+      <dtml-in prefix="store" name="storage_item_list">
+        <dtml-let storage="store_item[1]"
+                  storage_title="store_item[0]"
+                  selected="storage == getStorage() and 'selected' or ''">
+          <option value="&dtml-storage;" &dtml-selected;>&dtml-storage_title;</option>
+        </dtml-let>
+      </dtml-in>
+    </dtml-let>
   </select>
   <input type="submit" value="Change"/>
 </form>