diff --git a/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.py b/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.py
new file mode 100644
index 0000000000000000000000000000000000000000..76fa52b587e0214eb72aa611332d8ecce3727ddb
--- /dev/null
+++ b/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.py
@@ -0,0 +1,52 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2020 Nexedi SA and Contributors. All Rights Reserved.
+#                    Klaus Wölfel <klaus@nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+from erp5.component.document.Amount import Amount
+from erp5.component.document.Transformation import Transformation
+
+
+class DataTransformation(Transformation):
+  """
+  Contains a list of transformed data operations and the data operation used
+  """
+  meta_type = 'ERP5 Data Transformation'
+  portal_type = 'Data Transformation'
+
+  # Use Amount implementation of *VariationCategoryList
+  # instead of the one VariatedMixin used by Transformation so that we can set Variation
+  # on Initial Product
+  getVariationBaseCategoryList = Amount.getVariationBaseCategoryList
+  getVariationBaseCategoryItemList = Amount.getVariationBaseCategoryItemList
+  getVariationCategoryList = Amount.getVariationCategoryList
+  getVariationCategoryItemList = Amount.getVariationCategoryItemList
+  getVariationRangeBaseCategoryList = Amount.getVariationRangeBaseCategoryList
+  getVariationRangeCategoryList = Amount.getVariationRangeCategoryList
+  getVariationRangeCategoryItemList = Amount.getVariationRangeCategoryItemList
+  setVariationBaseCategoryList = Amount.setVariationBaseCategoryList
+  setVariationCategoryList = Amount.setVariationCategoryList
+  _setVariationCategoryList = Amount._setVariationCategoryList
diff --git a/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.xml b/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.xml
new file mode 100644
index 0000000000000000000000000000000000000000..338a7c896c26e9abd3a0caeab36355831e816e0f
--- /dev/null
+++ b/bt5/erp5_wendelin/DocumentTemplateItem/portal_components/document.erp5.DataTransformation.xml
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="Document Component" module="erp5.portal_type"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_recorded_property_dict</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAI=</string> </persistent>
+            </value>
+        </item>
+        <item>
+            <key> <string>default_reference</string> </key>
+            <value> <string>DataTransformation</string> </value>
+        </item>
+        <item>
+            <key> <string>default_source_reference</string> </key>
+            <value> <string>Products.ERP5.Document.Transformation</string> </value>
+        </item>
+        <item>
+            <key> <string>description</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>document.erp5.DataTransformation</string> </value>
+        </item>
+        <item>
+            <key> <string>portal_type</string> </key>
+            <value> <string>Document Component</string> </value>
+        </item>
+        <item>
+            <key> <string>sid</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_error_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>text_content_warning_message</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>version</string> </key>
+            <value> <string>erp5</string> </value>
+        </item>
+        <item>
+            <key> <string>workflow_history</string> </key>
+            <value>
+              <persistent> <string encoding="base64">AAAAAAAAAAM=</string> </persistent>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="2" aka="AAAAAAAAAAI=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="3" aka="AAAAAAAAAAM=">
+    <pickle>
+      <global name="PersistentMapping" module="Persistence.mapping"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>data</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>component_validation_workflow</string> </key>
+                    <value>
+                      <persistent> <string encoding="base64">AAAAAAAAAAQ=</string> </persistent>
+                    </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+  <record id="4" aka="AAAAAAAAAAQ=">
+    <pickle>
+      <global name="WorkflowHistoryList" module="Products.ERP5Type.Workflow"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_log</string> </key>
+            <value>
+              <list>
+                <dictionary>
+                  <item>
+                      <key> <string>action</string> </key>
+                      <value> <string>validate</string> </value>
+                  </item>
+                  <item>
+                      <key> <string>validation_state</string> </key>
+                      <value> <string>validated</string> </value>
+                  </item>
+                </dictionary>
+              </list>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_wendelin/PortalTypeTemplateItem/portal_types/Data%20Transformation.xml b/bt5/erp5_wendelin/PortalTypeTemplateItem/portal_types/Data%20Transformation.xml
index bcaca8f27d314c3647937665dfcd4fdb723feac3..e13dd00e62de062d760c5be625b6b98c347343b9 100644
--- a/bt5/erp5_wendelin/PortalTypeTemplateItem/portal_types/Data%20Transformation.xml
+++ b/bt5/erp5_wendelin/PortalTypeTemplateItem/portal_types/Data%20Transformation.xml
@@ -53,7 +53,7 @@
         </item>
         <item>
             <key> <string>type_class</string> </key>
-            <value> <string>Transformation</string> </value>
+            <value> <string>DataTransformation</string> </value>
         </item>
         <item>
             <key> <string>type_interface</string> </key>
diff --git a/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view.xml b/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view.xml
index a0b6f7eb92ea4f8be6f186d7814e8bac7643fb95..464225cc3bdb023a2d33d422158b93072541de1d 100644
--- a/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view.xml
+++ b/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view.xml
@@ -87,6 +87,7 @@
                         <string>my_title</string>
                         <string>my_reference</string>
                         <string>my_resource_title</string>
+                        <string>my_variation_category_list</string>
                         <string>my_template_transformation_title_list</string>
                       </list>
                     </value>
diff --git a/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view/my_variation_category_list.xml b/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view/my_variation_category_list.xml
new file mode 100644
index 0000000000000000000000000000000000000000..78047ecfdb081b25d0b7dc40cff37ad8ad436397
--- /dev/null
+++ b/bt5/erp5_wendelin/SkinTemplateItem/portal_skins/erp5_wendelin/DataTransformation_view/my_variation_category_list.xml
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="ProxyField" module="Products.ERP5Form.ProxyField"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>delegated_list</string> </key>
+            <value>
+              <list>
+                <string>title</string>
+              </list>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>my_variation_category_list</string> </value>
+        </item>
+        <item>
+            <key> <string>message_values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>external_validator_failed</string> </key>
+                    <value> <string>The input failed the external validator.</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>overrides</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>tales</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string></string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string></string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+        <item>
+            <key> <string>values</string> </key>
+            <value>
+              <dictionary>
+                <item>
+                    <key> <string>field_id</string> </key>
+                    <value> <string>my_variation_category_list</string> </value>
+                </item>
+                <item>
+                    <key> <string>form_id</string> </key>
+                    <value> <string>TransformationTransformedResource_viewFieldLibrary</string> </value>
+                </item>
+                <item>
+                    <key> <string>target</string> </key>
+                    <value> <string>Click to edit the target</string> </value>
+                </item>
+                <item>
+                    <key> <string>title</string> </key>
+                    <value> <string>Initial Product Variation</string> </value>
+                </item>
+              </dictionary>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/bt5/erp5_wendelin/TestTemplateItem/portal_components/test.erp5.testWendelin.py b/bt5/erp5_wendelin/TestTemplateItem/portal_components/test.erp5.testWendelin.py
index 7b29e84f05a2ebbaed5229dacf2d0e8e8b08d45d..4f492a22e198bd54c43a361bac95a2ddb96dddb1 100644
--- a/bt5/erp5_wendelin/TestTemplateItem/portal_components/test.erp5.testWendelin.py
+++ b/bt5/erp5_wendelin/TestTemplateItem/portal_components/test.erp5.testWendelin.py
@@ -325,4 +325,20 @@ class Test(ERP5TypeTestCase):
     self.assertSameSet(data_stream_2.getRecursivePredecessorValueList(), \
                        [data_stream_1])
     self.assertSameSet(data_stream_5.getRecursivePredecessorValueList(), \
-                       [data_stream_4, data_stream_3, data_stream_2, data_stream_1])
\ No newline at end of file
+                       [data_stream_4, data_stream_3, data_stream_2, data_stream_1])
+
+  def test_08_ImportSklearn(self):
+    """
+      Test import of Scikit-learn and minimal example of usage.
+    """
+
+    from sklearn.linear_model import LinearRegression
+    X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
+
+    # y = 1 * x_0 + 2 * x_1 + 3
+    y = np.dot(X, np.array([1, 2])) + 3
+
+    reg = LinearRegression().fit(X, y)
+    predicted = reg.predict(np.array([[4, 10]]))
+    self.assertEqual(predicted.all(),np.array([27.]).all())
+    
\ No newline at end of file
diff --git a/bt5/erp5_wendelin/bt/template_document_id_list b/bt5/erp5_wendelin/bt/template_document_id_list
index efde4cd739b9a04c3b385324931d64e9e9924a08..faa5e5a167bb01a1e32a0565e8f308d47cf991bb 100644
--- a/bt5/erp5_wendelin/bt/template_document_id_list
+++ b/bt5/erp5_wendelin/bt/template_document_id_list
@@ -4,4 +4,5 @@ document.erp5.DataArray
 document.erp5.DataArrayLine
 document.erp5.DataArrayLineExistenceConstraint
 document.erp5.DataBucketStream
-document.erp5.DataStream
\ No newline at end of file
+document.erp5.DataStream
+document.erp5.DataTransformation
\ No newline at end of file
diff --git a/product/Wendelin/__init__.py b/product/Wendelin/__init__.py
index 569359cf0bef5a0834587510c57d87f86c44182b..2f56087941ccfa17adce1c071ed4cc7ebe3eae00 100644
--- a/product/Wendelin/__init__.py
+++ b/product/Wendelin/__init__.py
@@ -57,6 +57,8 @@ sz = np.array([('2017-07-12T12:30:20',)], dtype=[('date', 'M8[s]')])
 allow_type(type(sz[0]['date']))
 
 allow_module('sklearn')
+allow_module('sklearn.model_selection')
+allow_module('sklearn.linear_model')
 allow_module('scipy')
 
 allow_module('wendelin.bigarray.array_zodb')
@@ -76,6 +78,8 @@ allow_type(pd.Index)
 allow_type(pd.core.groupby.DataFrameGroupBy)
 allow_class(pd.DataFrame)
 
+import sklearn.linear_model
+allow_class(sklearn.linear_model.LinearRegression)
 
 # Modify 'safetype' dict in full_write_guard function
 # of RestrictedPython (closure) directly To allow