diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/product/CharacteristicsData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/CharacteristicsData.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/CharacteristicsData.java
@@ -0,0 +1,125 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2011-2012 Openbravo S.L.U.
+ * All Rights Reserved.
+ * 
+ * This class was automatically generated on 2011-03-09 21:37:13
+ * Contributor(s):
+ *************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.data.masterdata.product;
+
+import java.util.LinkedHashMap;
+
+import com.openbravo.test.integration.erp.data.DataObject;
+
+/**
+ * 
+ * Class for ProductData
+ * 
+ * @author jbueno
+ * 
+ */
+public class CharacteristicsData extends DataObject {
+
+  /**
+   * Class builder
+   * 
+   * @author jbueno
+   * 
+   */
+  public static class Builder {
+
+    /** The data fields. */
+    private LinkedHashMap<String, Object> dataFields = new LinkedHashMap<String, Object>();
+
+    /**
+     * Set the active value
+     * 
+     * Description: A flag indicating whether this record is available for use or de-activated.
+     * 
+     * @param value
+     *          The active value.
+     * @return The builder for this class.
+     */
+    public Builder active(Boolean value) {
+      this.dataFields.put("active", value);
+      return this;
+    }
+
+    /**
+     * Set the characteristic value
+     * 
+     * Description: A non-unique identifier for a record/document often used as a search tool.
+     * 
+     * @param value
+     *          The chracteristic value.
+     * @return The builder for this class.
+     */
+    public Builder characteristic(String value) {
+      this.dataFields.put("characteristic", value);
+      return this;
+    }
+
+    /**
+     * Set the variant value
+     * 
+     * Description: A non-unique identifier for a record/document often used as a search tool.
+     * 
+     * @param value
+     *          The variant value.
+     * @return The builder for this class.
+     */
+    public Builder variant(Boolean value) {
+      this.dataFields.put("variant", value);
+      return this;
+    }
+
+    /**
+     * Set the explode configuration tab value
+     * 
+     * Description: A non-unique identifier for a record/document often used as a search tool.
+     * 
+     * @param value
+     *          The variant value.
+     * @return The builder for this class.
+     */
+    public Builder explode(Boolean value) {
+      this.dataFields.put("explodeConfigurationTab", value);
+      return this;
+    }
+
+    /**
+     * Build the data object.
+     * 
+     * @return The data object
+     */
+    public CharacteristicsData build() {
+      return new CharacteristicsData(this);
+    }
+
+  }
+
+  /**
+   * Build the data object.
+   * 
+   * @param builder
+   *          The object builder
+   */
+  private CharacteristicsData(Builder builder) {
+    dataFields = builder.dataFields;
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicData.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicData.java
@@ -0,0 +1,110 @@
+package com.openbravo.test.integration.erp.data.masterdata.product;
+
+import java.util.LinkedHashMap;
+
+import com.openbravo.test.integration.erp.data.DataObject;
+
+public class ProductCharacteristicData extends DataObject {
+  /**
+   * Class builder
+   * 
+   * @author jbueno
+   * 
+   */
+  public static class Builder {
+
+    /** The data fields. */
+    private LinkedHashMap<String, Object> dataFields = new LinkedHashMap<String, Object>();
+
+    /**
+     * Set the active value
+     * 
+     * Description: A flag indicating whether this record is available for use or de-activated.
+     * 
+     * @param value
+     *          The active value.
+     * @return The builder for this class.
+     */
+    public Builder active(Boolean value) {
+      this.dataFields.put("active", value);
+      return this;
+    }
+
+    /**
+     * Set the name value
+     * 
+     * Description: A non-unique identifier for a record/document often used as a search tool.
+     * 
+     * @param value
+     *          The name value.
+     * @return The builder for this class.
+     */
+    public Builder name(String value) {
+      this.dataFields.put("name", value);
+      return this;
+    }
+
+    /**
+     * Set the description value
+     * 
+     * Description: A space to write additional related information.
+     * 
+     * @param value
+     *          The description value.
+     * @return The builder for this class.
+     */
+    public Builder description(String value) {
+      this.dataFields.put("description", value);
+      return this;
+    }
+
+    /**
+     * Set the variant value
+     * 
+     * Description: Checked if it is a variant characteristic.
+     * 
+     * @param value
+     *          The is variant value.
+     * @return The builder for this class.
+     */
+    public Builder variant(Boolean value) {
+      this.dataFields.put("variant", value);
+      return this;
+    }
+
+    /**
+     * Set the Explode configuration
+     * 
+     * Description: Checked if the characteristic will explode with all its values
+     * 
+     * @param value
+     *          The explode configuration tab value.
+     * @return The builder for this class.
+     */
+    public Builder explode(Boolean value) {
+      this.dataFields.put("explodeConfigurationTab", value);
+      return this;
+    }
+
+    /**
+     * Build the data object.
+     * 
+     * @return The data object
+     */
+    public ProductCharacteristicData build() {
+      return new ProductCharacteristicData(this);
+    }
+
+  }
+
+  /**
+   * Build the data object.
+   * 
+   * @param builder
+   *          The object builder
+   */
+  private ProductCharacteristicData(Builder builder) {
+    dataFields = builder.dataFields;
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicValueData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicValueData.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductCharacteristicValueData.java
@@ -0,0 +1,82 @@
+package com.openbravo.test.integration.erp.data.masterdata.product;
+
+import java.util.LinkedHashMap;
+
+import com.openbravo.test.integration.erp.data.DataObject;
+
+public class ProductCharacteristicValueData extends DataObject {
+  /**
+   * Class builder
+   * 
+   * @author jbueno
+   * 
+   */
+  public static class Builder {
+
+    /** The data fields. */
+    private LinkedHashMap<String, Object> dataFields = new LinkedHashMap<String, Object>();
+
+    /**
+     * Set the active value
+     * 
+     * Description: A flag indicating whether this record is available for use or de-activated.
+     * 
+     * @param value
+     *          The active value.
+     * @return The builder for this class.
+     */
+    public Builder active(Boolean value) {
+      this.dataFields.put("active", value);
+      return this;
+    }
+
+    /**
+     * Set the name value
+     * 
+     * Description: A non-unique identifier for a record/document often used as a search tool.
+     * 
+     * @param value
+     *          The name value.
+     * @return The builder for this class.
+     */
+    public Builder name(String value) {
+      this.dataFields.put("name", value);
+      return this;
+    }
+
+    /**
+     * Set the description value
+     * 
+     * Description: A space to write additional related information.
+     * 
+     * @param value
+     *          The description value.
+     * @return The builder for this class.
+     */
+    public Builder description(String value) {
+      this.dataFields.put("description", value);
+      return this;
+    }
+
+    /**
+     * Build the data object.
+     * 
+     * @return The data object
+     */
+    public ProductCharacteristicValueData build() {
+      return new ProductCharacteristicValueData(this);
+    }
+
+  }
+
+  /**
+   * Build the data object.
+   * 
+   * @param builder
+   *          The object builder
+   */
+  private ProductCharacteristicValueData(Builder builder) {
+    dataFields = builder.dataFields;
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductData.java b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductData.java
--- a/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductData.java
+++ b/src-test/com/openbravo/test/integration/erp/data/masterdata/product/ProductData.java
@@ -285,6 +285,20 @@
     }
 
     /**
+     * Set the is generic value
+     * 
+     * Description: An indication that the product is a generic product.
+     * 
+     * @param value
+     *          True if it is a generic product, false in other case.
+     * @return The builder for this class.
+     */
+    public Builder generic(Boolean value) {
+      this.dataFields.put("isGeneric", value);
+      return this;
+    }
+
+    /**
      * Build the data object.
      * 
      * @return The data object
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/CharacteristicsTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/CharacteristicsTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/CharacteristicsTab.java
@@ -0,0 +1,44 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2015 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *   Jonathan Bueno <jonathan.bueno@openbravo.com>.
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.gui.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.CharacteristicsData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.GeneratedTab;
+
+public class CharacteristicsTab extends GeneratedTab<CharacteristicsData> {
+
+  /** The tab title. */
+  static final String TITLE = "Characteristics";
+  /** The tab identifier. */
+  static final String IDENTIFIER = "769BB4BF6B0B4C39AD28E9A00D260F33";
+  /** The tab level. */
+  private static final int LEVEL = 1;
+
+  /**
+   * Class constructor
+   * 
+   */
+  public CharacteristicsTab(GeneratedTab<?> parentTab) {
+    super(TITLE, IDENTIFIER, LEVEL, parentTab);
+    addChildTab(new ProductCharacteristicConfigurationTab(this));
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicConfigurationTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicConfigurationTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicConfigurationTab.java
@@ -0,0 +1,26 @@
+package com.openbravo.test.integration.erp.gui.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicValueData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.GeneratedTab;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Product Characteristic Configuration tab.
+ * 
+ * @author jbueno
+ * 
+ */
+public class ProductCharacteristicConfigurationTab extends
+    GeneratedTab<ProductCharacteristicValueData> {
+
+  /** The tab title. */
+  public static final String TITLE = "Characteristic Configuration";
+  /** The tab identifier. */
+  public static final String IDENTIFIER = "77B382924865466E8333415AAA1263CC";
+  /** The tab level. */
+  private static final int LEVEL = 2;
+
+  public ProductCharacteristicConfigurationTab(GeneratedTab<?> parentTab) {
+    super(TITLE, IDENTIFIER, LEVEL, parentTab);
+  }
+
+}
\ No newline at end of file
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicTab.java
@@ -0,0 +1,29 @@
+package com.openbravo.test.integration.erp.gui.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.GeneratedTab;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Product tab.
+ * 
+ * @author jbu
+ * 
+ */
+public class ProductCharacteristicTab extends GeneratedTab<ProductCharacteristicData> {
+
+  /** The tab title. */
+  static final String TITLE = "Characteristics";
+  /** The tab identifier. */
+  static final String IDENTIFIER = "A661A0A05DCD4650BCB14B010C87F0AA";
+  /** The tab level. */
+  private static final int LEVEL = 0;
+
+  /**
+   * Class constructor
+   * 
+   */
+  public ProductCharacteristicTab() {
+    super(TITLE, IDENTIFIER);
+  }
+
+}
\ No newline at end of file
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicValueTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicValueTab.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicValueTab.java
@@ -0,0 +1,25 @@
+package com.openbravo.test.integration.erp.gui.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicValueData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.GeneratedTab;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Product Characteristic - Value tab.
+ * 
+ * @author jbueno
+ * 
+ */
+public class ProductCharacteristicValueTab extends GeneratedTab<ProductCharacteristicValueData> {
+
+  /** The tab title. */
+  static final String TITLE = "Value";
+  /** The tab identifier. */
+  static final String IDENTIFIER = "367D9DF685DA42A38CAE641D30A0BEBF";
+  /** The tab level. */
+  private static final int LEVEL = 1;
+
+  public ProductCharacteristicValueTab(GeneratedTab<?> parentTab) {
+    super(TITLE, IDENTIFIER, LEVEL, parentTab);
+  }
+
+}
\ No newline at end of file
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicWindow.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicWindow.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductCharacteristicWindow.java
@@ -0,0 +1,51 @@
+package com.openbravo.test.integration.erp.gui.masterdata.product;
+
+import com.openbravo.test.integration.erp.modules.client.application.gui.StandardWindow;
+import com.openbravo.test.integration.erp.modules.client.application.navigationbarcomponents.gui.Menu;
+
+/**
+ * Executes and verifies actions on OpenbravoERP Product Characteristic window.
+ * 
+ * @author jbueno
+ * 
+ */
+public class ProductCharacteristicWindow extends StandardWindow {
+  /** The window title. */
+  public static final String TITLE = "Product Characteristic";
+  /** The window menu path. */
+  private static final String[] MENU_PATH = new String[] { Menu.MASTER_DATA_MANAGEMENT,
+      Menu.PRODUCT_SETUP, Menu.PRODUCT_CHARACTERISTIC };
+
+  /**
+   * Class constructor.
+   */
+  public ProductCharacteristicWindow() {
+    super(TITLE, MENU_PATH);
+  }
+
+  @Override
+  public void load() {
+    ProductCharacteristicTab productTab = new ProductCharacteristicTab();
+    addTopLevelTab(productTab);
+    super.load();
+  }
+
+  /**
+   * Select and return the Product Characteristic tab.
+   * 
+   * @return the Product Characteristic tab.
+   */
+  public ProductCharacteristicTab selectProductCharacteristicTab() {
+    return (ProductCharacteristicTab) selectTab(ProductCharacteristicTab.IDENTIFIER);
+  }
+
+  /**
+   * Select and return the Product Characteristic Value tab.
+   * 
+   * @return the Product Characteristic Valuetab.
+   */
+  public ProductCharacteristicValueTab selectProductCharacteristicValueTab() {
+    return (ProductCharacteristicValueTab) selectTab(ProductCharacteristicValueTab.IDENTIFIER);
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductTab.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductTab.java
--- a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductTab.java
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductTab.java
@@ -45,6 +45,6 @@
   public ProductTab() {
     super(TITLE, IDENTIFIER);
     addChildTab(new PriceTab(this));
+    addChildTab(new CharacteristicsTab(this));
   }
-
 }
diff --git a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductWindow.java b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductWindow.java
--- a/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductWindow.java
+++ b/src-test/com/openbravo/test/integration/erp/gui/masterdata/product/ProductWindow.java
@@ -64,6 +64,15 @@
   }
 
   /**
+   * Select and return the Characteristic tab.
+   * 
+   * @return the Characteristic tab.
+   */
+  public CharacteristicsTab selectCharacteristicsTab() {
+    return (CharacteristicsTab) selectTab(CharacteristicsTab.IDENTIFIER);
+  }
+
+  /**
    * Select and return the Price tab.
    * 
    * @return the Price tab.
@@ -72,4 +81,13 @@
     return (PriceTab) selectTab(PriceTab.IDENTIFIER);
   }
 
+  /**
+   * Select and return the Characteristic configuration tab.
+   * 
+   * @return the Characteristic configuration tab.
+   */
+  public ProductCharacteristicConfigurationTab selectCharacteristicConfigurationTab() {
+    return (ProductCharacteristicConfigurationTab) selectTab(ProductCharacteristicConfigurationTab.IDENTIFIER);
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/modules/client/application/navigationbarcomponents/gui/Menu.java b/src-test/com/openbravo/test/integration/erp/modules/client/application/navigationbarcomponents/gui/Menu.java
--- a/src-test/com/openbravo/test/integration/erp/modules/client/application/navigationbarcomponents/gui/Menu.java
+++ b/src-test/com/openbravo/test/integration/erp/modules/client/application/navigationbarcomponents/gui/Menu.java
@@ -113,6 +113,9 @@
   public static final String MASTER_DATA_MANAGEMENT = "Master Data Management";
 
   /** Product menu item. */
+  public static final String PRODUCT_CHARACTERISTIC = "Product Characteristic";
+
+  /** Product menu item. */
   public static final String PRODUCT = "Product";
 
   /** Business Partner menu item. */
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/Product.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/Product.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/Product.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/Product.java
@@ -21,8 +21,12 @@
 
 package com.openbravo.test.integration.erp.testscripts.masterdata.product;
 
+import com.openbravo.test.integration.erp.data.masterdata.product.CharacteristicsData;
 import com.openbravo.test.integration.erp.data.masterdata.product.PriceData;
 import com.openbravo.test.integration.erp.data.masterdata.product.ProductData;
+import com.openbravo.test.integration.erp.gui.masterdata.product.CharacteristicsTab;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductCharacteristicConfigurationTab;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductWindow;
 import com.openbravo.test.integration.erp.modules.client.application.gui.MainPage;
 
 /**
@@ -59,6 +63,54 @@
     }
   }
 
+  public static class ProductCharacteristicsValueTab {
+
+    /**
+     * Creates the record.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param productData
+     * 
+     */
+    public static void create(MainPage mainPage, CharacteristicsData productData) {
+      if (mainPage.isOnNewLayout()) {
+        ProductScript.create(mainPage, productData);
+      }
+    }
+
+    /**
+     * Delete some records.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param indexes
+     *          The index of the record that will be deleted.
+     */
+    public static void delete(MainPage mainPage) {
+      ProductWindow productWindow = new ProductWindow();
+      mainPage.openView(productWindow);
+
+      CharacteristicsTab productTab = productWindow.selectCharacteristicsTab();
+      productTab.clearFilters();
+      productTab.deleteMultipleRecordsOneCheckboxOnGrid();
+      productTab.closeMessageIfVisible();
+    }
+
+    public static void select(MainPage mainPage, CharacteristicsData productData) {
+      final ProductWindow productPriceWindow = (ProductWindow) mainPage
+          .getView(ProductWindow.TITLE);
+
+      CharacteristicsTab productTab = productPriceWindow.selectCharacteristicsTab();
+      productTab.select(productData);
+    }
+
+  }
+
   /**
    * Executes and verifies actions on the tab.
    * 
@@ -85,4 +137,27 @@
       }
     }
   }
+
+  public static class CharacteristicsConfiguration {
+
+    /**
+     * Creates the record.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param priceData
+     * 
+     */
+    public static void verifyCount(MainPage mainPage, int count) {
+      final ProductWindow productPriceWindow = (ProductWindow) mainPage
+          .getView(ProductWindow.TITLE);
+      ProductCharacteristicConfigurationTab productCCTab = productPriceWindow
+          .selectCharacteristicConfigurationTab();
+      productCCTab.assertCount(count);
+    }
+
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristic.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristic.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristic.java
@@ -0,0 +1,73 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License.
+ * The Original Code is Openbravo ERP.
+ * The Initial Developer of the Original Code is Openbravo S.L.U.
+ * All portions are Copyright (C) 2009-2015 Openbravo S.L.U.
+ * All Rights Reserved.
+ * Contributor(s):
+ *   Jonathan Bueno <jonathan.bueno@openbravo.com>,
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.testscripts.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicData;
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicValueData;
+import com.openbravo.test.integration.erp.modules.client.application.gui.MainPage;
+
+/**
+ * Executes and verifies actions on the window.
+ * 
+ * @author jbueno
+ */
+public class ProductCharacteristic {
+
+  public static class ProductCharacteristicsTab {
+
+    /**
+     * Creates the record.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param productCharacteristicValueData
+     * 
+     */
+    public static void create(MainPage mainPage, ProductCharacteristicData productCharacteristicData) {
+      if (mainPage.isOnNewLayout()) {
+        ProductCharacteristicScript.create(mainPage, productCharacteristicData);
+      }
+    }
+  }
+
+  public static class ProductCharacteristicValueTab {
+
+    /**
+     * Creates the record.
+     * 
+     * @param selenium
+     *          Object used to execute actions on the application.
+     * @param mainPage
+     *          The application main page.
+     * @param productData
+     * 
+     */
+    public static void create(MainPage mainPage,
+        ProductCharacteristicValueData productCharacteristicValueData) {
+      if (mainPage.isOnNewLayout()) {
+        ProductCharacteristicScript.create(mainPage, productCharacteristicValueData);
+      }
+    }
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristicScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristicScript.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductCharacteristicScript.java
@@ -0,0 +1,78 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2015 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *   Jonathan Bueno <jonathan.bueno@openbravo.com>
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.testscripts.masterdata.product;
+
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicData;
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicValueData;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductCharacteristicTab;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductCharacteristicValueTab;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductCharacteristicWindow;
+import com.openbravo.test.integration.erp.modules.client.application.gui.MainPage;
+
+/**
+ * Executes and verifies actions on the Product Characteristic tab of OpenbravoERP.
+ * 
+ * @author jbueno
+ * 
+ */
+class ProductCharacteristicScript {
+
+  /**
+   * Create a record.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param data
+   *          The data of the record that will be created.
+   */
+  static void create(MainPage mainPage, ProductCharacteristicData data) {
+    ProductCharacteristicWindow productCharacteristicWindow = new ProductCharacteristicWindow();
+    mainPage.openView(productCharacteristicWindow);
+
+    ProductCharacteristicTab productCharacteristicTab = productCharacteristicWindow
+        .selectProductCharacteristicTab();
+    productCharacteristicTab.createRecord(data);
+    productCharacteristicTab.assertSaved();
+  }
+
+  /**
+   * Create a record.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param data
+   *          The data of the record that will be created.
+   */
+  static void create(MainPage mainPage, ProductCharacteristicValueData data) {
+    ProductCharacteristicWindow productCharacteristicWindow = new ProductCharacteristicWindow();
+    mainPage.openView(productCharacteristicWindow);
+
+    ProductCharacteristicValueTab productCharacteristicValueTab = productCharacteristicWindow
+        .selectProductCharacteristicValueTab();
+    productCharacteristicValueTab.createRecord(data);
+    productCharacteristicValueTab.assertSaved();
+  }
+
+}
diff --git a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductScript.java b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductScript.java
--- a/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductScript.java
+++ b/src-test/com/openbravo/test/integration/erp/testscripts/masterdata/product/ProductScript.java
@@ -21,7 +21,10 @@
 
 package com.openbravo.test.integration.erp.testscripts.masterdata.product;
 
+import com.openbravo.test.integration.erp.data.masterdata.product.CharacteristicsData;
 import com.openbravo.test.integration.erp.data.masterdata.product.ProductData;
+import com.openbravo.test.integration.erp.gui.masterdata.product.CharacteristicsTab;
+import com.openbravo.test.integration.erp.gui.masterdata.product.ProductCharacteristicConfigurationTab;
 import com.openbravo.test.integration.erp.gui.masterdata.product.ProductTab;
 import com.openbravo.test.integration.erp.gui.masterdata.product.ProductWindow;
 import com.openbravo.test.integration.erp.modules.client.application.gui.MainPage;
@@ -53,4 +56,42 @@
     productTab.assertSaved();
   }
 
+  /**
+   * Create a record.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param data
+   *          The data of the record that will be created.
+   */
+  static void create(MainPage mainPage, CharacteristicsData data) {
+    ProductWindow productWindow = new ProductWindow();
+    mainPage.openView(productWindow);
+
+    CharacteristicsTab productTab = productWindow.selectCharacteristicsTab();
+    productTab.createRecord(data);
+    productTab.assertSaved();
+  }
+
+  /**
+   * Check number of records in tab.
+   * 
+   * @param selenium
+   *          Object used to execute actions on the application.
+   * @param mainPage
+   *          The application main page.
+   * @param count
+   *          The amount of records that must exist.
+   */
+  static void verifyRecordNumber(MainPage mainPage, int count) {
+    ProductWindow productWindow = new ProductWindow();
+    mainPage.openView(productWindow);
+
+    ProductCharacteristicConfigurationTab productTab = productWindow
+        .selectCharacteristicConfigurationTab();
+    productTab.assertCount(count);
+  }
+
 }
diff --git a/src-test/com/openbravo/test/integration/erp/testsuites/smoke/masterdata/AddExplodeFlagToCharacteristics.java b/src-test/com/openbravo/test/integration/erp/testsuites/smoke/masterdata/AddExplodeFlagToCharacteristics.java
new file mode 100644
--- /dev/null
+++ b/src-test/com/openbravo/test/integration/erp/testsuites/smoke/masterdata/AddExplodeFlagToCharacteristics.java
@@ -0,0 +1,168 @@
+/*
+ *************************************************************************
+ * The contents of this file are subject to the Openbravo  Public  License
+ * Version  1.0  (the  "License"),  being   the  Mozilla   Public  License
+ * Version 1.1  with a permitted attribution clause; you may not  use this
+ * file except in compliance with the License. You  may  obtain  a copy of
+ * the License at http://www.openbravo.com/legal/license.html 
+ * Software distributed under the License  is  distributed  on  an "AS IS"
+ * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
+ * License for the specific  language  governing  rights  and  limitations
+ * under the License. 
+ * The Original Code is Openbravo ERP. 
+ * The Initial Developer of the Original Code is Openbravo S.L.U. 
+ * All portions are Copyright (C) 2010-2015 Openbravo S.L.U. 
+ * All Rights Reserved. 
+ * Contributor(s):
+ *  Jonathan Bueno <jonathan.bueno@openbravo.com>.
+ ************************************************************************
+ */
+
+package com.openbravo.test.integration.erp.testsuites.smoke.masterdata;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collection;
+
+import org.apache.log4j.Logger;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameters;
+
+import com.openbravo.test.integration.erp.data.LogInData;
+import com.openbravo.test.integration.erp.data.masterdata.product.CharacteristicsData;
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicData;
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductCharacteristicValueData;
+import com.openbravo.test.integration.erp.data.masterdata.product.ProductData;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTest;
+import com.openbravo.test.integration.erp.testscripts.OpenbravoERPTestException;
+import com.openbravo.test.integration.erp.testscripts.masterdata.product.Product;
+import com.openbravo.test.integration.erp.testscripts.masterdata.product.ProductCharacteristic;
+
+/**
+ * Execute the Setup User and Role flow of the smoke test suite.
+ * 
+ * @author JBU
+ */
+@RunWith(Parameterized.class)
+public class AddExplodeFlagToCharacteristics extends OpenbravoERPTest {
+
+  /** Log4j logger for this class. */
+  private static Logger logger = Logger.getLogger(AddExplodeFlagToCharacteristics.class);
+
+  /* Data for this test. */
+
+  private ProductData productData;
+  private ProductCharacteristicValueData productCharacteristicValueData;
+  private ProductCharacteristicValueData productCharacteristicValueData2;
+  private ProductCharacteristicData productCharacteristicData;
+  private ProductCharacteristicData productCharacteristicData2;
+  private CharacteristicsData characteristicsData;
+  private CharacteristicsData characteristicsData2;
+  private CharacteristicsData characteristicsData3;
+  private CharacteristicsData characteristicsData4;
+
+  /**
+   * Class constructor.
+   */
+  public AddExplodeFlagToCharacteristics(ProductCharacteristicData productCharacteristicData,
+      ProductCharacteristicValueData productCharacteristicValueData,
+      ProductCharacteristicValueData productCharacteristicValueData2,
+      ProductCharacteristicData productCharacteristicData2, ProductData productData,
+      CharacteristicsData characteristicsData, CharacteristicsData characteristicsData2,
+      CharacteristicsData characteristicsData3, CharacteristicsData characteristicsData4) {
+
+    this.productData = productData;
+    this.productCharacteristicValueData = productCharacteristicValueData;
+    this.productCharacteristicValueData2 = productCharacteristicValueData2;
+    this.productCharacteristicData = productCharacteristicData;
+    this.productCharacteristicData2 = productCharacteristicData2;
+    this.characteristicsData = characteristicsData;
+    this.characteristicsData2 = characteristicsData2;
+    this.characteristicsData3 = characteristicsData3;
+    this.characteristicsData4 = characteristicsData4;
+
+    logInData = new LogInData.Builder().userName("QAAdmin").password("QAAdmin").build();
+  }
+
+  /**
+   * Test parameters.
+   * 
+   * @return collection of object arrays with data for the test
+   * @throws IOException
+   * 
+   */
+  @Parameters
+  public static Collection<Object[]> setupProductValues() throws IOException {
+    return Arrays.asList(new Object[][] { {
+
+        // Create a Product
+        new ProductCharacteristicData.Builder().name("Explode Characteristic").active(true)
+            .variant(true).explode(true).build(),
+        new ProductCharacteristicValueData.Builder().name("Value1").build(),
+        new ProductCharacteristicValueData.Builder().name("Value2").build(),
+        new ProductCharacteristicData.Builder().name("No Explode Characteristic").active(true)
+            .variant(true).explode(false).build(),
+        new ProductData.Builder().searchKey("ECTTP").name("Explode config tab test product")
+            .productCategory("Services").uOM("Unit").productType("Item").purchase(true).sale(true)
+            .taxCategory("VAT 3%").generic(true).build(),
+        new CharacteristicsData.Builder().characteristic("Explode Characteristic").variant(true)
+            .build(),
+        new CharacteristicsData.Builder().characteristic("No Explode Characteristic").variant(true)
+            .build(),
+        new CharacteristicsData.Builder().characteristic("No Explode Characteristic").variant(true)
+            .explode(true).build(),
+        new CharacteristicsData.Builder().characteristic("Explode Characteristic").variant(true)
+            .explode(false).build() } });
+
+  }
+
+  /**
+   * Test the setup client and organization flow.
+   * 
+   * @throws IOException
+   * @throws OpenbravoERPTestException
+   */
+  @Test
+  public void testExplodeFlagInCharacteristics() throws IOException, OpenbravoERPTestException {
+    logger.info("** Test explode config flag **");
+    ProductCharacteristic.ProductCharacteristicsTab.create(mainPage, productCharacteristicData);
+    ProductCharacteristic.ProductCharacteristicValueTab.create(mainPage,
+        productCharacteristicValueData);
+    ProductCharacteristic.ProductCharacteristicValueTab.create(mainPage,
+        productCharacteristicValueData2);
+    ProductCharacteristic.ProductCharacteristicsTab.create(mainPage, productCharacteristicData2);
+    ProductCharacteristic.ProductCharacteristicValueTab.create(mainPage,
+        productCharacteristicValueData);
+    ProductCharacteristic.ProductCharacteristicValueTab.create(mainPage,
+        productCharacteristicValueData2);
+    Product.ProductTab.create(mainPage, productData);
+    // Assign "Explode characteristic" to product
+    Product.ProductCharacteristicsValueTab.create(mainPage, characteristicsData);
+    Product.ProductCharacteristicsValueTab.select(mainPage, characteristicsData);
+    // Check that values have exploded
+    Product.CharacteristicsConfiguration.verifyCount(mainPage, 2);
+
+    // Assign "No Explode characteristic" to product
+    Product.ProductCharacteristicsValueTab.create(mainPage, characteristicsData2);
+    Product.ProductCharacteristicsValueTab.select(mainPage, characteristicsData2);
+    // Check that values have not exploded
+    Product.CharacteristicsConfiguration.verifyCount(mainPage, 0);
+    // Delete characteristics assigned to product
+    Product.ProductCharacteristicsValueTab.delete(mainPage);
+    // Assign "No Explode characteristic" (Explode ->True)to product
+    Product.ProductCharacteristicsValueTab.create(mainPage, characteristicsData3);
+
+    Product.ProductCharacteristicsValueTab.select(mainPage, characteristicsData3);
+    // Check that values have exploded
+    Product.CharacteristicsConfiguration.verifyCount(mainPage, 2);
+
+    // Assign "Explode characteristic" (Explode ->False)to product
+    Product.ProductCharacteristicsValueTab.create(mainPage, characteristicsData4);
+    Product.ProductCharacteristicsValueTab.select(mainPage, characteristicsData4);
+    // Check that values have not exploded
+    Product.CharacteristicsConfiguration.verifyCount(mainPage, 0);
+
+  }
+}
